hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.29. 15:39



Jelenlévő felhasználók

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

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-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  [ 2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Free
HozzászólásElküldve: 2013.09.27. 13:16 
Offline
Tud valamit

Csatlakozott: 2012.06.23. 16:22
Hozzászólások: 111
Megköszönt másnak: 11 alkalommal
Megköszönték neki: 2 alkalommal
Hello,1 olyan plugint szeretnék kérni amikor ha egy t beírja hogy free akkor ne índítson szavazást felülre írja hogy Free van chatbe hogy Free van csináld azt amit a terror kér.( Ne vegye el a fegyvereket és lehessen felvenni fegyvert)

_________________
Kocka vagyok.:)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Free
HozzászólásElküldve: 2013.09.27. 13:25 
Offline
Felfüggesztve

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

Ők köszönték meg stupid nek ezt a hozzászólást: asd (2013.09.27. 13:39)
  Népszerűség: 2.27%


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  [ 2 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 16 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