hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.17. 01:41



Jelenlévő felhasználók

Jelenleg 356 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 355 vendég

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot]az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása Hozzászólás a témához  [1 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: deathrun freerun
HozzászólásElküldve:2012.09.03. 13:16 
Offline
Újonc

Csatlakozott:2011.07.22. 18:39
Hozzászólások:11
Hali

valaki megtundá nekem ugy csinálni hogy Freerun modba elvegye a ct k fegyverét és felse tudjanak venni
és hogy a terror csak 10mp ig tudja beirn hogy free

SMA Forráskód: [ Mindet kijelol ]
  1. /*
  2. Manager of Buttons
  3. for DeathRun
  4.  
  5. Licence: GPL
  6. Description:
  7. Allow admin to define how many times every button could be used by Menu.
  8. Add to game (cvar controlled) FreeRun mode - during round with FR traps can`t
  9. be used by defined teams (default Te).
  10.  
  11. */
  12. #include <amxmodx>
  13. #include <amxmisc>
  14. #include <hamsandwich>
  15. #include <fakemeta>
  16. #include <colorchat>
  17.  
  18. #define PLUGIN "Use button once"
  19. #define VERSION "1.3"
  20. #define AUTHOR "R3X"
  21.  
  22. #define MAX_BUTTONS 100
  23. #define KeysButtonsMenu (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) // Keys: 137890
  24. #define KeysOptionsMenu (1<<0)|(1<<1)|(1<<8) //129
  25. #define KeysDelayMenu (1<<0)|(1<<1)|(1<<2)|(1<<8) //1239
  26.  
  27. #define ANNOUNCE_TASK 10000
  28.  
  29. #define m_flWait 44
  30.  
  31. //Main
  32.  
  33. new gEnt[MAX_BUTTONS];
  34. new gUsed[MAX_BUTTONS];
  35. new giPointer=0;
  36. new gOnStart[MAX_BUTTONS];
  37. new Float:gDefaultDelay[MAX_BUTTONS];
  38. new Float:gDelay[MAX_BUTTONS];
  39.  
  40. new gInMenu[33];
  41.  
  42. new gszFile[128];
  43.  
  44. new giSprite;
  45.  
  46. new gcvarDefault, gcvarTeam, gcvarFreeRun;
  47. new gcvarLimit, gcvarLimitMode, gcvarPrivilege;
  48. new gcvarMessage, gcvarRestore;
  49.  
  50. //VOTE
  51.  
  52. #define TASK_SHOWMENU 432
  53. #define TASK_RES 123
  54.  
  55. #define MAX_ROUNDS 999
  56.  
  57. #define KeysFFVote (1<<0)|(1<<1) // Keys: 12
  58.  
  59. new gcvarFRVoteTime;
  60.  
  61. new giVoteStart, giVoteTime;
  62.  
  63. new bool:gbFreeRun=false;
  64. new bool:gbVote=false;
  65.  
  66. #define VOTE_ON 0
  67. #define VOTE_OFF 1
  68.  
  69. new giVotes[33][2];
  70.  
  71. new giRounds=MAX_ROUNDS, giTime=0;
  72.  
  73. public plugin_init() {
  74. register_plugin(PLUGIN, VERSION, AUTHOR);
  75.  
  76. register_dictionary("common.txt");
  77. register_dictionary("adminvote.txt");
  78. register_dictionary("use_button_once.txt");
  79.  
  80. register_menucmd(register_menuid("FRVote"), KeysFFVote, "PressedFRVote");
  81. register_menucmd(register_menuid("ButtonsMenu"), KeysButtonsMenu, "PressedButtonsMenu");
  82. register_menucmd(register_menuid("OptionsMenu"), KeysOptionsMenu, "PressedOptionsMenu");
  83. register_menucmd(register_menuid("DelayMenu"), KeysDelayMenu, "PressedDelayMenu");
  84.  
  85. register_clcmd("amx_buttons","cmd_amx_buttons",ADMIN_CFG,": Buttons Menu");
  86.  
  87. //Default count of uses
  88. gcvarDefault=register_cvar("amx_buttons_default","1");
  89. //Who plugin analyze
  90. //0 - anyone(plugin disabled?)
  91. //1 - Te
  92. //2 - Ct
  93. //3 - Te+Ct
  94. gcvarTeam=register_cvar("amx_buttons_team","1");
  95. //Enabled FreeRun mode?
  96. gcvarFreeRun=register_cvar("amx_buttons_freerun","1");
  97. //Vote time
  98. gcvarFRVoteTime=register_cvar("amx_freerun_votetime","10");
  99.  
  100. //Type of limit
  101. //0 - enabled after 'amx_freerun_limit' rounds
  102. //1 - enabled after 'amx_freerun_limit' minutes
  103. gcvarLimitMode=register_cvar("amx_freerun_limit_mode","0");
  104. //Size of Limit
  105. gcvarLimit=register_cvar("amx_freerun_limit","5");
  106.  
  107. //Interval of message
  108. gcvarMessage=register_cvar("amx_freerun_info","120.0",0,120.0);
  109.  
  110. //Terrorist`s privilege
  111. //if he use /free FreeRun will start without vote, can he?
  112. gcvarPrivilege=register_cvar("amx_freerun_tt_privilege","1");
  113.  
  114. //restore buttons on new round
  115. gcvarRestore=register_cvar("amx_restore_buttons","1");
  116.  
  117. register_clcmd("say /free","cmdVoteFreeRun");
  118. register_clcmd("say_team /free","cmdVoteFreeRun");
  119. register_clcmd("say free","cmdVoteFreeRun");
  120. register_clcmd("say_team free","cmdVoteFreeRun");
  121.  
  122. register_clcmd("say /freerun","cmdVoteFreeRun");
  123. register_clcmd("say_team /freerun","cmdVoteFreeRun");
  124. register_clcmd("say freerun","cmdVoteFreeRun");
  125. register_clcmd("say_team freerun","cmdVoteFreeRun");
  126.  
  127. register_clcmd("say /fr","cmdVoteFreeRun");
  128. register_clcmd("say_team /fr","cmdVoteFreeRun");
  129. register_clcmd("say fr","cmdVoteFreeRun");
  130. register_clcmd("say_team fr","cmdVoteFreeRun");
  131.  
  132. if( engfunc(EngFunc_FindEntityByString,-1 ,"classname", "func_button"))
  133. RegisterHam(Ham_Use, "func_button", "fwButtonUsed");
  134.  
  135. if(engfunc(EngFunc_FindEntityByString,-1 ,"classname","func_rot_button"))
  136. RegisterHam(Ham_Use, "func_rot_button", "fwButtonUsed");
  137.  
  138. if(engfunc(EngFunc_FindEntityByString,-1 ,"classname", "button_target"))
  139. RegisterHam(Ham_Use, "button_target", "fwButtonUsed");
  140.  
  141. register_logevent( "ResetButtons", 2, "0=World triggered", "1=Round_Start");
  142.  
  143. fillButtons("func_button");
  144. fillButtons("func_rot_button");
  145. fillButtons("button_target");
  146. }
  147. public plugin_cfg(){
  148. setButtons();
  149.  
  150. new iLen=0, iMax=charsmax(gszFile);
  151. iLen=get_configsdir(gszFile, iMax );
  152. iLen+=copy(gszFile[iLen], iMax-iLen, "/dr_buttons/");
  153.  
  154. if(!dir_exists(gszFile)){
  155. set_fail_state("Not found dir: configs/dr_buttons");
  156. return;
  157. }
  158. new szMap[32];
  159. get_mapname(szMap, 31);
  160. formatex(gszFile[iLen], charsmax(gszFile)-iLen, "%s.ini", szMap);
  161. if(!file_exists(gszFile)){
  162. return;
  163. }
  164. new szLine[51];
  165. new szButton[4], szTimes[3], szDelay[5];
  166. new Float:fDelay;
  167. for(new i=0;read_file(gszFile, i, szLine, 50, iLen);i++){
  168. if(iLen==0) continue;
  169. trim(szLine);
  170. if(szLine[0]==';') continue;
  171. parse(szLine, szButton, 3, szTimes, 2, szDelay, 4);
  172. fDelay=szDelay[0]?str_to_float(szDelay):-1.0;
  173. set_start_value(str_to_num(szButton), str_to_num(szTimes), fDelay);
  174. }
  175. new Float:fInterval=get_pcvar_float(gcvarMessage);
  176. if(fInterval > 0.0)
  177. set_task(120.0, "announceVote",ANNOUNCE_TASK,_,_,"b");
  178. }
  179. public plugin_precache(){
  180. giSprite=precache_model("sprites/flare1.spr");
  181.  
  182. }
  183. public client_putinserver(id){
  184. if(!is_user_bot(id))
  185. eventInGame(id);
  186. }
  187. public client_connect(id){
  188. giVotes[id][VOTE_ON]=0;
  189. giVotes[id][VOTE_OFF]=0;
  190. }
  191. public announceVote(){
  192. if(get_pcvar_num(gcvarFreeRun))
  193. ColorChat(0,GREEN, "[FreeRun]^x01 %L",LANG_SERVER, "ANNOUNCE");
  194. }
  195. setButtons(){
  196. new iDef=get_pcvar_num(gcvarDefault);
  197. for(new i=0;i<giPointer;i++){
  198. gUsed[i]=iDef;
  199. gOnStart[i]=iDef;
  200. gDelay[i]=get_pdata_float(gEnt[i],m_flWait);
  201. gDefaultDelay[i]=gDelay[i];
  202. }
  203. }
  204. fillButtons(const szClass[]){
  205. new ent = -1;
  206. while((ent = engfunc(EngFunc_FindEntityByString,ent ,"classname", szClass)) != 0){
  207. gEnt[giPointer++]=ent;
  208. set_pev(ent, pev_iuser4, giPointer);
  209. }
  210. }
  211. set_start_value(ent, times, Float:delay){
  212. new index=get_ent_index(ent);
  213. if(index!=-1){
  214. gOnStart[index]=times;
  215. if(delay>=0.0)
  216. gDelay[index]=delay;
  217. }
  218. }
  219. get_ent_index(ent){
  220. /*
  221. for(new i=0;i<giPointer;i++)
  222. if(gEnt[i]==ent) return i;
  223. return -1;
  224. */
  225. return pev(ent, pev_iuser4)-1;
  226. }
  227. restoreButton(ent){
  228. if(pev(ent, pev_frame) > 0.0){
  229. new Float:Life;
  230. pev(ent, pev_nextthink, Life);
  231. set_pev(ent, pev_ltime, Life-0.01);
  232. }
  233. }
  234. public ResetButtons(){
  235. gbFreeRun=false;
  236. gbVote=false;
  237. new bool:bRestore=get_pcvar_num(gcvarRestore)!=0;
  238. for(new i=0;i<MAX_BUTTONS;i++){
  239. gUsed[i]=gOnStart[i];
  240. if(bRestore){
  241. restoreButton(gEnt[i]);
  242. }
  243. }
  244. giRounds++;
  245. }
  246. public fwButtonUsed(this, idcaller, idactivator, use_type, Float:value){
  247. if(idcaller!=idactivator) return HAM_IGNORED;
  248.  
  249. if(pev(this, pev_frame) > 0.0)
  250. return HAM_IGNORED;
  251. new index=get_ent_index(this);
  252. if(index==-1)
  253. return HAM_IGNORED;
  254. if(get_user_team(idcaller)&get_pcvar_num(gcvarTeam)){
  255.  
  256. if(gbFreeRun){
  257. ColorChat(idcaller,GREEN, "[FreeRun]^x01 %L",idcaller, "BUTTON_FREERUN");
  258. return HAM_SUPERCEDE;
  259. }
  260. else if(gUsed[index]<=0 && gOnStart[index]!=-1){
  261. ColorChat(idcaller,GREEN, "[Info]^x01 %L",idcaller,"BUTTON_NOMORE");
  262. return HAM_SUPERCEDE;
  263. }
  264. else{
  265. if(gUsed[index]>0)
  266. if(--gUsed[index]){
  267. ColorChat(idcaller, GREEN, "[Info]^x01 %L", idcaller, "BUTTON_LEFT", gUsed[index]);
  268. }else
  269. ColorChat(idcaller, GREEN, "[Info]^x01 %L", idcaller, "BUTTON_ENDOFLIMIT");
  270. }
  271. }
  272.  
  273. set_task(0.1,"setDelay",this);
  274.  
  275. return HAM_IGNORED;
  276. }
  277. public setDelay(this){
  278. new index=get_ent_index(this);
  279. set_pev(this, pev_nextthink, pev(this, pev_ltime)+gDelay[index]+0.01);
  280. }
  281.  
  282. //MENU--------------
  283. public cmd_amx_buttons(id, level, cid){
  284. if(!cmd_access(id, level, cid, 1))
  285. return PLUGIN_HANDLED;
  286. if(giPointer==0)
  287. client_print(id, print_chat, "%L", id,"NO_BUTTONS");
  288. else
  289. ShowButtonsMenu(id);
  290. return PLUGIN_HANDLED;
  291. }
  292. ShowButtonsMenu(id, trace=1){
  293. if(!is_user_alive(id)){
  294. client_print(id, print_center, "%L",id, "MUST_B_ALIVE");
  295. return;
  296. }
  297. new iNow=gInMenu[id];
  298. new iKeys=(1<<0)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<9);
  299. new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;
  300. new szNoLimit[32];
  301. formatex(szNoLimit,31,"(%L)",id,"NOLIMIT");
  302. iLen=copy(szMenu, iMax,"\yButtons Menu^n");
  303. iLen+=formatex(szMenu[iLen], iMax-iLen,"\wEnt#%d^n^n",gEnt[iNow]);
  304. iLen+=formatex(szMenu[iLen], iMax-iLen,"%L: %d %s^n\y1\w. %L ",id, "USAGE",gOnStart[iNow],(gOnStart[iNow]==-1)?szNoLimit:"", id, "MORE");
  305.  
  306. if(gOnStart[iNow]>=0){
  307. iLen+=formatex(szMenu[iLen], iMax-iLen,"\y2\w. %L",id, "WORD_LESS");
  308. iKeys|=(1<<1);
  309. }else
  310. iLen+=formatex(szMenu[iLen], iMax-iLen,"\d2. %L\w",id,"WORD_LESS");
  311. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n^n3. %L^n^n4. %L^n^n",id, "DELAY_EDITOR",id,"OPTIONS");
  312.  
  313. iLen+=formatex(szMenu[iLen], iMax-iLen,"5. %sNo Clip\w^n",isNoClip(id)?"\r":"");
  314. iLen+=formatex(szMenu[iLen], iMax-iLen,"6. %sGodMode\w^n",isGodMode(id)?"\r":"");
  315.  
  316. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n7. \r%L^n\w",id, "WORD_SAVE");
  317.  
  318. if(iNow>0){
  319. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n8. %L",id, "BACK");
  320. iKeys|=(1<<7);
  321. }
  322. if(iNow<giPointer-1){
  323. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n9. %L",id, "WORD_NEXT");
  324. iKeys|=(1<<8);
  325. }
  326. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n0. %L", id, "EXIT");
  327. show_menu(id, iKeys, szMenu, -1, "ButtonsMenu");
  328. if(trace){
  329. new Float:fOrigin[3], Float:fOrigin2[3];
  330. fm_get_brush_entity_origin(gEnt[gInMenu[id]], fOrigin);
  331. pev(id, pev_origin, fOrigin2);
  332. Create_TE_BEAMPOINTS(fOrigin, fOrigin2, giSprite, 0, 10, 20, 5, 1, 255, 0, 0, 100, 50);
  333. }
  334. }
  335. bool:isNoClip(id)
  336. return pev(id, pev_movetype)==MOVETYPE_NOCLIP;
  337.  
  338. bool:isGodMode(id)
  339. return pev(id, pev_takedamage)==0.0;
  340.  
  341. public PressedButtonsMenu(id, key) {
  342. if(!is_user_alive(id)){
  343. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  344. return;
  345. }
  346. /* Menu:
  347. * Buttons Menu
  348. * Ent#<ent>
  349. *
  350. * Uzyc: <ile>
  351. * 1. Wiecej 2. Mniej
  352. *
  353. * 3. Editor
  354. *
  355. * 4. Options
  356. *
  357. * 5. NoClip
  358. * 6. GodMode
  359. *
  360. * 7. Zapisz
  361. *
  362. * 8. Poprzedni
  363. * 9. Nastepny
  364. * 0. Wyjdz
  365. */
  366. new trace=0;
  367. switch (key) {
  368. case 0: { // 1
  369. gOnStart[gInMenu[id]]++;
  370. }
  371. case 1: { // 2
  372. gOnStart[gInMenu[id]]--;
  373. }
  374. case 2: { // 3
  375. ShowDelayMenu(id);
  376. return;
  377. }
  378. case 3:{ //4
  379. ShowOptionsMenu(id);
  380. return;
  381. }
  382. case 4:{ //5
  383. set_pev(id, pev_movetype, isNoClip(id)?MOVETYPE_WALK:MOVETYPE_NOCLIP);
  384. }
  385. case 5:{ //6
  386. set_pev(id, pev_takedamage, isGodMode(id)?1.0:0.0);
  387. }
  388. case 6: { // 7
  389. save2File(id);
  390. }
  391. case 7: { // 8
  392. gInMenu[id]--;
  393. trace=1;
  394. }
  395. case 8: { // 9
  396. gInMenu[id]++;
  397. trace=1;
  398. }
  399. case 9: { // 0
  400. return;
  401. }
  402. }
  403. ShowButtonsMenu(id, trace);
  404. }
  405. //--------------
  406. ShowOptionsMenu(id){
  407. if(!is_user_alive(id)){
  408. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  409. return;
  410. }
  411. new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;
  412. iLen+=formatex(szMenu[iLen], iMax-iLen,"\yOptions^n^n");
  413. iLen+=formatex(szMenu[iLen], iMax-iLen,"\w1. %L^n",id, "GOTO");
  414. iLen+=formatex(szMenu[iLen], iMax-iLen,"2. %L^n^n",id, "NEAREST");
  415. iLen+=formatex(szMenu[iLen], iMax-iLen,"9. %L",id, "BACK");
  416. show_menu(id, KeysOptionsMenu, szMenu, -1, "OptionsMenu");
  417. }
  418. public PressedOptionsMenu(id, key){
  419. if(!is_user_alive(id)){
  420. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  421. return;
  422. }
  423. new trace=0;
  424. switch (key) {
  425. case 0: { // 1
  426. go2Button(id);
  427. }
  428. case 1: { // 2
  429. gInMenu[id]=findTheClosest(id);
  430. trace=1;
  431. }
  432. }
  433. ShowButtonsMenu(id, trace);
  434. }
  435. //-------------
  436. ShowDelayMenu(id){
  437. if(!is_user_alive(id)){
  438. client_print(id, print_center, "%L",id,"MUST_B_ALIVE");
  439. return;
  440. }
  441. new iNow=gInMenu[id];
  442. new iKeys=(1<<0)|(1<<2)|(1<<8);
  443. new szMenu[196], iLen, iMax=(sizeof szMenu) - 1;
  444. iLen=copy(szMenu, iMax,"\yDelay Menu^n");
  445. iLen+=formatex(szMenu[iLen], iMax-iLen,"\wEnt#%d^n^n",gEnt[iNow]);
  446. iLen+=formatex(szMenu[iLen], iMax-iLen,"%L: %.1f^n",id, "CURRENT_DELAY", gDelay[iNow]);
  447. iLen+=formatex(szMenu[iLen], iMax-iLen,"\y1\w. %L ",id, "MORE");
  448. if(gDelay[iNow]>0.0){
  449. iLen+=formatex(szMenu[iLen], iMax-iLen,"\y2\w. %L",id, "WORD_LESS");
  450. iKeys|=(1<<1);
  451. }else
  452. iLen+=formatex(szMenu[iLen], iMax-iLen,"\d2. %L\w",id,"WORD_LESS");
  453. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n3. %L",id, "DEFAULT");
  454. iLen+=formatex(szMenu[iLen], iMax-iLen,"^n^n9. %L",id, "BACK");
  455. show_menu(id, iKeys, szMenu, -1, "DelayMenu");
  456. }
  457. public PressedDelayMenu(id, key){
  458. new iNow=gInMenu[id];
  459. switch(key){
  460. case 0:{
  461. gDelay[iNow]+=1.0;
  462. }
  463. case 1:{
  464. gDelay[iNow]-=1.0;
  465. if(gDelay[iNow] < 0.0)
  466. gDelay[iNow]=0.0;
  467. }
  468. case 2:{
  469. gDelay[iNow]=gDefaultDelay[iNow];
  470. }
  471. case 8:{
  472. ShowButtonsMenu(id, 0);
  473. return;
  474. }
  475. }
  476. ShowDelayMenu(id);
  477. }
  478. //-------------
  479. save2File(id){
  480. if(file_exists(gszFile))
  481. delete_file(gszFile);
  482. write_file(gszFile, ";<ent> <count> <delay>");
  483. new szLine[35];
  484. for(new i=0;i<giPointer;i++){
  485. formatex(szLine, 34, "%d %d %.1f",gEnt[i], gOnStart[i], gDelay[i]);
  486. write_file(gszFile, szLine);
  487. }
  488. client_print(id, print_center, "%L!",id,"WORD_SAVED");
  489. }
  490. findTheClosest(id){
  491. new Float:fPlayerOrig[3];
  492. pev(id, pev_origin, fPlayerOrig);
  493. new Float:fOrigin[3];
  494. fm_get_brush_entity_origin(gEnt[0], fOrigin);
  495.  
  496. new Float:fRange=get_distance_f(fOrigin, fPlayerOrig), index=0;
  497. new Float:fNewRange;
  498. for(new i=1;i<giPointer;i++){
  499. fm_get_brush_entity_origin(gEnt[i], fOrigin);
  500. fNewRange=get_distance_f( fOrigin, fPlayerOrig);
  501. if(fNewRange < fRange){
  502. fRange=fNewRange;
  503. index=i;
  504. }
  505. }
  506. return index;
  507. }
  508. go2Button(id, ent=-1){
  509. if(ent==-1)
  510. ent=gInMenu[id];
  511. ent=gEnt[ent];
  512. if(!pev_valid(ent)){
  513. client_print(id, print_center, "%L",id,"NOTARGET");
  514. return;
  515. }
  516. new Float:fOrigin[3];
  517. fm_get_brush_entity_origin(ent, fOrigin);
  518. set_pev(id, pev_origin, fOrigin);
  519. client_print(id, print_chat, "PS. No Clip <!-- s:) --><img src=\"{SMILIES_PATH}/icon_e_smile.gif\" alt=\":)\" title=\"mosoly\" /><!-- s:) -->");
  520. }
  521. //FreeRun
  522. public cmdVoteFreeRun(id){
  523. if(get_pcvar_num(gcvarFreeRun)==0){
  524. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_DISABLED");
  525. return PLUGIN_HANDLED;
  526. }
  527. if(gbVote){
  528. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_VOTE_IS_NOW");
  529. return PLUGIN_HANDLED;
  530. }
  531. if(!is_user_alive(id)){
  532. client_print(id, print_center, "%L",id, "MUST_B_ALIVE");
  533. return PLUGIN_HANDLED;
  534. }
  535. if(get_pcvar_num(gcvarPrivilege)!=0 && !gbFreeRun && get_user_team(id)==1){
  536. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_TT_DECIDED");
  537. makeFreeRun(true);
  538. return PLUGIN_HANDLED;
  539. }
  540. new iLimit=get_pcvar_num(gcvarLimit);
  541. new iOffset=0;
  542. if(get_pcvar_num(gcvarLimitMode)){
  543. iOffset = ( giTime + iLimit * 60 ) - get_systime();
  544. if( iOffset > 0 ){
  545. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_NEXT_VOTE_TIME", iOffset/60, iOffset%60);
  546. return PLUGIN_HANDLED;
  547. }
  548. }
  549. else{
  550. iOffset = min(MAX_ROUNDS, iLimit) - giRounds;
  551. if( iOffset > 0 ){
  552. ColorChat(id, GREEN, "[FreeRun]^x01 %L",id,"FREERUN_NEXT_VOTE_ROUNDS", iOffset);
  553. return PLUGIN_HANDLED;
  554. }
  555. }
  556.  
  557. makeVote();
  558. return PLUGIN_CONTINUE;
  559. }
  560. //FREERUN
  561. public makeVote(){
  562. giVoteTime=get_pcvar_num(gcvarFRVoteTime);
  563. gbVote=true;
  564. giVoteStart=get_systime();
  565. set_task(float(giVoteTime), "resultsOfVote", TASK_RES);
  566. new Players[32], playerCount;
  567. new id;
  568. get_players(Players, playerCount);
  569. for (new i=0; i<playerCount; i++){
  570. id = Players[i];
  571. eventInGame(id);
  572. }
  573.  
  574. }
  575. public resultsOfVote(tid){
  576. gbVote=false;
  577.  
  578. new giVotesOn=count(VOTE_ON);
  579. new giVotesOff=count(VOTE_OFF);
  580.  
  581. ColorChat(0,GREEN, "[FreeRun]^x01 %L %L(%d) vs %L(%d)",LANG_SERVER,"FREERUN_RESULTS",LANG_SERVER,"YES",giVotesOn,LANG_SERVER,"NO", giVotesOff);
  582.  
  583. if( giVotesOn == giVotesOff ){
  584. ColorChat(0,GREEN, "[FreeRun]^x01 %L",LANG_SERVER,"FREERUN_TIE");
  585. return;
  586. }
  587. makeFreeRun((giVotesOn > giVotesOff));
  588. ColorChat(0,GREEN, "[FreeRun]^x01 %L ^x03%L",LANG_SERVER,"FREERUN_WINOPTION",LANG_SERVER, gbFreeRun?"YES":"NO");
  589. }
  590. makeFreeRun(bool:bFR=true){
  591. gbFreeRun=bFR;
  592. reset();
  593. giRounds=0;
  594. giTime=get_systime();
  595.  
  596. if(gbFreeRun){
  597. set_hudmessage(0, 255, 255, 0.02, -1.0);
  598. show_hudmessage(0, "FreeRun!");
  599. }
  600.  
  601. }
  602. count(VOTE_STATE){
  603. new iCounter=0;
  604. for(new i=1;i<33;i++)
  605. if(giVotes[i][VOTE_STATE])
  606. iCounter++;
  607. return iCounter;
  608. }
  609. reset(){
  610. for(new i=1;i<33;i++){
  611. giVotes[i][VOTE_ON]=0;
  612. giVotes[i][VOTE_OFF]=0;
  613. }
  614. }
  615. public show_menu_(tid){
  616. new id=tid-TASK_SHOWMENU;
  617. new iTeam=get_user_team(id);
  618. new menu_id, keys;
  619. new menuUp = player_menu_info( id, menu_id, keys );
  620. // Only display menu if another isn't shown
  621. if ( iTeam && (menuUp <= 0 || menu_id < 0) ){
  622. new iTime=get_pcvar_num(gcvarFRVoteTime);
  623. new iOffset=get_systime()-giVoteStart;
  624. iTime-=iOffset;
  625. new szMenu[128];
  626. formatex(szMenu, 127, "\y%L^n^n\w1. %L^n2. %L",id,"FREERUN_VOTEMENU",id,"YES",id,"NO");
  627. show_menu(id, KeysFFVote, szMenu, iTime, "FRVote");
  628. }else
  629. set_task(1.0, "show_menu_", tid);
  630. }
  631. public eventInGame(id){
  632. if(giVotes[id][VOTE_ON] || giVotes[id][VOTE_OFF])
  633. return;
  634. if(gbVote)
  635. set_task(1.0, "show_menu_", id+TASK_SHOWMENU);
  636. }
  637. public PressedFRVote(id, key) {
  638. if(gbVote==false) return;
  639. switch (key) {
  640. case VOTE_ON: { // 1
  641. giVotes[id][VOTE_ON]=1;
  642. }
  643. case VOTE_OFF: { // 2
  644. giVotes[id][VOTE_OFF]=1;
  645. }
  646. default:{
  647. return;
  648. }
  649. }
  650. new szName[32];
  651. get_user_name(id, szName, 31);
  652.  
  653. client_print(0, print_chat, "* %L",LANG_PLAYER,(key==VOTE_ON)?"VOTED_FOR":"VOTED_AGAINST", szName);
  654. }
  655.  
  656. stock Create_TE_BEAMPOINTS(Float:start[3], Float:end[3], iSprite, startFrame, frameRate, life, width, noise, red, green, blue, alpha, speed){
  657. message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
  658. write_byte( TE_BEAMPOINTS )
  659. write_coord( floatround(start[0]) )
  660. write_coord( floatround(start[1]) )
  661. write_coord( floatround(start[2]) )
  662. write_coord( floatround(end[0]) )
  663. write_coord( floatround(end[1]) )
  664. write_coord( floatround(end[2]) )
  665. write_short( iSprite ) // model
  666. write_byte( startFrame ) // start frame
  667. write_byte( frameRate ) // framerate
  668. write_byte( life ) // life
  669. write_byte( width ) // width
  670. write_byte( noise ) // noise
  671. write_byte( red) // red
  672. write_byte( green ) // green
  673. write_byte( blue ) // blue
  674. write_byte( alpha ) // brightness
  675. write_byte( speed ) // speed
  676. message_end()
  677. }
  678. stock fm_get_brush_entity_origin(ent, Float:fOrigin[3]){
  679. new Float:fMins[3], Float:fMaxs[3];
  680. pev(ent, pev_mins, fMins);
  681. pev(ent, pev_maxs, fMaxs);
  682.  
  683. for(new i=0;i<3;i++)
  684. fOrigin[i]=(fMins[i]+fMaxs[i])/2;
  685. }
  686.  


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése: Rendezés 
Új téma nyitása Hozzászólás a témához  [1 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 4 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole