hlmod.hu

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



Jelenlévő felhasználók

Jelenleg 529 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 528 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  [ 9 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Dr Gomb
HozzászólásElküldve: 2013.02.22. 14:40 
Offline
Fanatikus
Avatar

Csatlakozott: 2012.11.02. 17:32
Hozzászólások: 182
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 4 alkalommal
Sziasztok.

Nekem egy olyan plugin kellene ,hogy DeathRun Mód v3.0 -ban csak 1x lehessen megnyomni a gombot.
Az amxx-est leteszteltem ,nem működik ,ne is linkeljétek...
Aki elkésztíti annak nagyon hálás leszek :)
Köszönöm...

Ők köszönték meg Puma nek ezt a hozzászólást: Lacer.cfg (2013.03.09. 17:55)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dr Gomb
HozzászólásElküldve: 2013.02.22. 15:34 
Offline
Beavatott
Avatar

Csatlakozott: 2013.02.20. 16:01
Hozzászólások: 74
Megköszönt másnak: 3 alkalommal
Megköszönték neki: 21 alkalommal
Parancsolj!

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

_________________
Ha segítettem akkor nyomd meg a Köszönöm gombot! :)
Kép

Ők köszönték meg dontercfg nek ezt a hozzászólást: Puma (2013.02.22. 16:59)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dr Gomb
HozzászólásElküldve: 2013.02.22. 15:40 
Offline
Veterán
Avatar

Csatlakozott: 2012.09.01. 22:19
Hozzászólások: 1697
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 302 alkalommal
dontercfg írta:
Parancsolj!

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



ha már adsz valamit, úgy add hogy meg legyen hozzá minden!

_________________
Valami új kezdete...
Kép
Egyedi pluginok készítése pénzért (Banki átutalás, PayPal) -> Privát üzenet


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dr Gomb
HozzászólásElküldve: 2013.02.22. 15:43 
Offline
Beavatott
Avatar

Csatlakozott: 2013.02.20. 16:01
Hozzászólások: 74
Megköszönt másnak: 3 alkalommal
Megköszönték neki: 21 alkalommal
Parancsolj, és bocsi!


Csatolmányok:
use_button_once.zip [34.69 KiB]
Letöltve 58 alkalommal.

_________________
Ha segítettem akkor nyomd meg a Köszönöm gombot! :)
Kép
Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dr Gomb
HozzászólásElküldve: 2013.02.22. 15:53 
Offline
Veterán
Avatar

Csatlakozott: 2012.09.01. 22:19
Hozzászólások: 1697
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 302 alkalommal
dontercfg írta:
Parancsolj, és bocsi!


semmi gond csak szóltam hogy tudja majd használni:)

_________________
Valami új kezdete...
Kép
Egyedi pluginok készítése pénzért (Banki átutalás, PayPal) -> Privát üzenet


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dr Gomb
HozzászólásElküldve: 2013.02.22. 16:59 
Offline
Fanatikus
Avatar

Csatlakozott: 2012.11.02. 17:32
Hozzászólások: 182
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 4 alkalommal
Puma írta:
Sziasztok.

Nekem egy olyan plugin kellene ,hogy DeathRun Mód v3.0 -ban csak 1x lehessen megnyomni a gombot.
Az amxx-est leteszteltem ,nem működik ,ne is linkeljétek...
Aki elkésztíti annak nagyon hálás leszek :)
Köszönöm...


Köszönöm a segítséget crazy ,illetve aki belinkelte a .txt-t Megy a like :D


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dr Gomb
HozzászólásElküldve: 2013.02.22. 17:01 
Offline
Fanatikus
Avatar

Csatlakozott: 2012.11.02. 17:32
Hozzászólások: 182
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 4 alkalommal
dontercfg írta:
Parancsolj!

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


Forras mentese sikeres. (ID: 5127964b375f1)

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

5127964b375f1.sma(174) : error 017: undefined symbol "eventInGame"
5127964b375f1.sma(319) : error 017: undefined symbol "fm_get_brush_entity_origin"
5127964b375f1.sma(321) : error 017: undefined symbol "Create_TE_BEAMPOINTS"
5127964b375f1.sma(483) : error 017: undefined symbol "fm_get_brush_entity_origin"
5127964b375f1.sma(488) : error 017: undefined symbol "fm_get_brush_entity_origin"
5127964b375f1.sma(503) : warning 209: function "go2Button" should return a value
5127964b375f1.sma(506) : error 017: undefined symbol "fm_get_brush_entity_origin"
5127964b375f1.sma(508) : error 029: invalid expression, assumed zero
5127964b375f1.sma(508) : error 017: undefined symbol "SMILIES_PATH"
5127964b375f1.sma(508) : error 029: invalid expression, assumed zero
5127964b375f1.sma(508) : fatal error 107: too many error messages on one line

Compilation aborted.
10 Errors.

Hiba! - Az atalakitas sikertelen. (Forras fajlok torolve.)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dr Gomb
HozzászólásElküldve: 2013.02.22. 17:05 
Offline
Tiszteletbeli

Csatlakozott: 2010.02.04. 19:12
Hozzászólások: 3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
http://forums.alliedmods.net/showthread.php?p=873614
zipben van amxx

_________________
http://www.ebateam.eu/


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dr Gomb
HozzászólásElküldve: 2013.03.08. 20:59 
Offline
Beavatott
Avatar

Csatlakozott: 2012.08.22. 19:47
Hozzászólások: 72
Megköszönt másnak: 2 alkalommal
Megköszönték neki: 5 alkalommal
IrOn123 írta:
http://forums.alliedmods.net/showthread.php?p=873614
zipben van amxx

wtf? kiki írt

_________________
Témát / Hozzászólást írta:
Kép


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


Ki van itt

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