hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.07.04. 18:06



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Google [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: Use Button Once
HozzászólásElküldve:2012.09.07. 17:22 
Offline
Őskövület
Avatar

Csatlakozott:2013.01.01. 17:48
Hozzászólások:2441
Megköszönt másnak: 18 alkalommal
Megköszönték neki: 21 alkalommal
Hali!

Valaki tudja hogy mi a baj ezzel a pluginnal? Az lenne a baj, hogy nem írja ki a FreeRun hud uzenetet! Valaki javítaná légyszi?


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

Köszi előre is!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Use Button Once
HozzászólásElküldve:2012.09.08. 20:31 
Offline
Őskövület
Avatar

Csatlakozott:2011.12.28. 00:35
Hozzászólások:2736
Megköszönt másnak: 56 alkalommal
Megköszönték neki: 275 alkalommal
Az már régi plugin annak van egy újabbik verziója:

http://forum.kgb-hosting.com/showthread.php?9608-MOD-DeathRun-v2&attempt=1

_________________
****


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 14 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