HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <fun>
  5. #include <engine>
  6. #include <fakemeta>
  7. #include <hamsandwich>
  8. #include <fakemeta_util>
  9. #include <colorchat>
  10. #include <fvault>
  11.  
  12. #define PLUGIN "Weapon Skin System [WSS]"
  13. #define VERSION "1.0"
  14. #define AUTHOR "6almasok"
  15.  
  16. #define IsValidPlayers(%1,%2) ((1 <= %1 <= 32) && (1 <= %2 <= 32))
  17.  
  18. new oles[33],csomag[33], kredit[33],switchbutton[33],knife[33],getfrag[3][33]
  19. new ModelData[40][64], ModelNum, MaximumBtton
  20.  
  21. new const File[] = "addons/amxmodx/configs/wss_models.ini"
  22. new const szVaultName[] = "wss_vault"
  23. new const prefix[] = "WSS"
  24.  
  25. /*Rust Kills | Silver Kills | Gold Kills | Veteran Kills | Knife Kredit*/
  26. new const need_kills[] = { 500, 1000, 2000, 4000, 500 }
  27.  
  28. /*Pack Names*/
  29. new const csomagmsg[6][] = { "Nincs","Rozsdás Csomag","Ezüst Csomag","Arany Csomag","Veterán Csomag","Speed Knife" }
  30.  
  31. new const knifedisenable[2][] = { "Kikapcsolva", "Bekapcsolva" }
  32.  
  33. new const menuszoveg[][][] = {
  34. {"Rozsdás Csomag \r[MEGSZEREZVE]", "\dRozsdás Csomag \r[%i/%i Ölés]"}, //0
  35. {"Ezüst Csomag \r[MEGSZEREZVE]", "\dEzüst Csomag \r[%i/%i Ölés]"}, //1
  36. {"Arany Csomag \r[MEGSZEREZVE]", "\dArany Csomag \r[%i/%i Ölés]"}, //2
  37. {"Veterán Csomag \r[MEGSZEREZVE]", "\dVeterán Csomag \r[%i/%i Ölés]"}, //3
  38. {"Speed Knife \r[MEGSZEREZVE]^n", "\dSpeed Knife \r[%i/%i Ölés]^n"}, //4
  39. {"\ySkin Csomagok \r[KIKAPCSOLVA]", "\ySkin Csomagok \r[BEKAPCSOLVA]"} //5
  40. }
  41. new const chatszoveg[10][] =
  42. {
  43. "^4[%s]^1 FEJLÖVÉS!^3 %s ^1megöléséért kaptál ^3+%i^1 ölést!",
  44. "^4[%s]^3 %s ^1megöléséért kaptál ^3+%i^1 ölést!",
  45. "^4[%s]^3 %s ^1kapott ^3+1 ^1ölést ember lesebzésért!",
  46. "^4[%s]^1 Találtál^3 +%i^1 kreditet a csomagbol!",
  47. "^4[%s]^1 Kiválasztottad a(z)^3 %s^1-ot!",
  48. "^4[%s]^1 Sajnos nincs elég ölésed!",
  49. "^4[%s]^1 Kikapcsoltad a Skin Csomagokat!",
  50. "^4[%s]^1 Bekapcsoltad a Skin Csomagokat!",
  51. "^4[%s]^1 A Szerveren Jelenleg a(z) ^3Weapon Skin System^1 fut. Megnyitáshoz írd be ^3/menu^1.",
  52. "^4[%s]^1 Sajnos nincs elég kredited!"
  53. }
  54. public plugin_init() {
  55. register_plugin(PLUGIN, VERSION, AUTHOR)
  56.  
  57. /* Client Command */
  58. register_clcmd("say /menu" , "fomenu")
  59.  
  60. /* Events */
  61. register_event("CurWeapon", "changeweapon", "be", "1=1")
  62. register_event("Damage", "sebzes_event", "be", "2!0", "3=0", "4!0")
  63. register_event("DeathMsg","Halal","a")
  64.  
  65. /* Cvars */
  66. register_cvar("wss_hudenable", "1");
  67. register_cvar("wss_advertmp", "40.0");
  68. register_cvar("kill_recived", "1");
  69. register_cvar("hs_recived", "2");
  70. register_cvar("found_kredit", "1");
  71.  
  72. /* Other */
  73. register_forward(FM_Touch,"ForwardTouch" );
  74. RegisterHam(Ham_Spawn, "player", "spawn_event", 1)
  75. set_task(1.0, "infohud", 0, _, _, "b")
  76. set_task(get_cvar_float("wss_advertmp"), "advertist", 0, "", 0, "b", 0)
  77.  
  78. LoadModel();
  79. }
  80. public advertist(){
  81. ColorChat(0, GREEN, chatszoveg[8],prefix);
  82. return PLUGIN_HANDLED;
  83. }
  84. public plugin_precache() {
  85.  
  86. new Len, btton[196], Data[64], Letoltes[40][64];
  87. MaximumBtton = file_size(File, 1);
  88.  
  89. for(new Num = 0; Num < MaximumBtton; Num++){
  90. read_file(File, Num, btton, 196, Len);
  91. parse(btton, Data, 63);
  92. remove_quotes(btton);
  93. if(btton[0] == ';')
  94. {
  95. continue;
  96. }
  97. remove_quotes(Data);
  98. format(Letoltes[Num], 63, "%s", Data);
  99. precache_model(Letoltes[Num]);
  100. }
  101. precache_model("models/wss/pack/kredit.mdl");
  102. }
  103. public LoadModel()
  104. {
  105. new Len, btton[196], Data[64];
  106. MaximumBtton = file_size(File, 1);
  107. for(new Num; Num < MaximumBtton; Num++){
  108. ModelNum++;
  109. read_file(File, Num, btton, 196, Len);
  110. parse(btton, Data, 63);
  111. remove_quotes(btton);
  112. if(btton[0] == ';')
  113. {
  114. continue;
  115. }
  116. remove_quotes(Data);
  117. format(ModelData[ModelNum], 63, "%s", Data);
  118. }
  119. }
  120. public changeweapon(id)
  121. {
  122. if(!is_user_alive(id) || !is_user_connected(id) || id < 1 || id > 32 || switchbutton[id] == 1)
  123. return
  124.  
  125. new fegyver = get_user_weapon(id)
  126.  
  127. if(csomag[id] == 1){
  128. if(fegyver == CSW_AK47)set_pev(id, pev_viewmodel2, ModelData[1]) //Rozsdas ak
  129. if(fegyver == CSW_AWP)set_pev(id, pev_viewmodel2, ModelData[2]) //Rozsdas awp
  130. if(fegyver == CSW_DEAGLE)set_pev(id, pev_viewmodel2, ModelData[3]) //Rozsdas desi
  131. if(fegyver == CSW_M4A1)set_pev(id, pev_viewmodel2, ModelData[4]) //Rozsdas m4
  132. }
  133. else if(csomag[id] == 2){
  134. if(fegyver == CSW_AK47)set_pev(id, pev_viewmodel2, ModelData[5]) //ezust ak
  135. if(fegyver == CSW_AWP)set_pev(id, pev_viewmodel2, ModelData[6]) //ezust awp
  136. if(fegyver == CSW_DEAGLE)set_pev(id, pev_viewmodel2, ModelData[7]) //ezust desi
  137. if(fegyver == CSW_M4A1)set_pev(id, pev_viewmodel2, ModelData[8]) //ezust m4
  138. }
  139. else if(csomag[id] == 3){
  140. if(fegyver == CSW_AK47)set_pev(id, pev_viewmodel2, ModelData[9]) //arany ak
  141. if(fegyver == CSW_AWP)set_pev(id, pev_viewmodel2, ModelData[10]) //arany awp
  142. if(fegyver == CSW_DEAGLE)set_pev(id, pev_viewmodel2, ModelData[11]) //arany desi
  143. if(fegyver == CSW_M4A1)set_pev(id, pev_viewmodel2, ModelData[12]) //arany m4
  144. }
  145. else if(csomag[id] == 4){
  146. if(fegyver == CSW_AK47)set_pev(id, pev_viewmodel2, ModelData[13]) //veteran ak
  147. if(fegyver == CSW_AWP)set_pev(id, pev_viewmodel2, ModelData[14]) //veteran awp
  148. if(fegyver == CSW_DEAGLE)set_pev(id, pev_viewmodel2, ModelData[15]) //veteran desi
  149. if(fegyver == CSW_M4A1)set_pev(id, pev_viewmodel2, ModelData[16]) //veteran m4
  150. }
  151. if(knife[id] == 1 && fegyver == CSW_KNIFE){
  152.  
  153. set_user_maxspeed(id, Float:320.0)
  154. set_pev(id, pev_viewmodel2, ModelData[17]) //knife
  155. }
  156.  
  157. }
  158. public spawn_event(id){
  159. getfrag[0][id] = 0;
  160. getfrag[1][id] = 0;
  161. getfrag[2][id] = 0;
  162. }
  163. public sebzes_event(id)
  164. {
  165. new tamado = get_user_attacker(id);
  166. if(id == tamado || !IsValidPlayers(id, tamado )) return;
  167. getfrag[1][tamado] += read_data(2);
  168.  
  169. if(!getfrag[2][id] && getfrag[1][tamado] >= 50)
  170. {
  171. getfrag[0][tamado] = id;
  172. getfrag[2][id] = tamado;
  173. }
  174. }
  175. public Halal() {
  176.  
  177. new attacker = read_data(1)
  178. new victim = read_data(2)
  179.  
  180. new nev[32]
  181. get_user_name(victim, nev, charsmax(nev))
  182.  
  183. if(attacker == victim || attacker == 0)
  184. return PLUGIN_HANDLED
  185.  
  186. if(read_data( 3 )){
  187. oles[attacker] += get_cvar_num("hs_recived");
  188. ColorChat(attacker, GREEN, chatszoveg[0] ,prefix ,nev, get_cvar_num("hs_recived"))
  189. }
  190. else{
  191. oles[attacker] += get_cvar_num("kill_recived");
  192. ColorChat(attacker, GREEN, chatszoveg[1],prefix, nev, get_cvar_num("kill_recived"))
  193. }
  194. if(getfrag[2][victim] && getfrag[2][victim] != attacker){
  195. new fragetkap = getfrag[2][victim];
  196. new fragetkapneve[32];
  197. getfrag[0][fragetkap] = 0;
  198. getfrag[1][fragetkap] = 0;
  199. getfrag[2][victim] = 0;
  200. get_user_name(fragetkap, fragetkapneve, charsmax(fragetkapneve));
  201. oles[fragetkap]++
  202. ColorChat(0, GREEN, chatszoveg[2],prefix ,fragetkapneve);
  203. }
  204. switch(random_num(1,3)){
  205. case 1: dropdobas()
  206. }
  207. return PLUGIN_HANDLED;
  208. }
  209. public dropdobas()
  210. {
  211. new victim = read_data( 2 );
  212.  
  213. static Float:origin[ 3 ];
  214. pev( victim, pev_origin, origin );
  215.  
  216. new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
  217. origin[ 2 ] -= 36;
  218. engfunc( EngFunc_SetOrigin, ent, origin );
  219.  
  220. if( !pev_valid( ent ) )
  221. {
  222. return PLUGIN_HANDLED;
  223. }
  224.  
  225. set_pev( ent, pev_classname, "kredit" );
  226. engfunc( EngFunc_SetModel, ent, "models/wss/pack/kredit.mdl" );
  227. dllfunc( DLLFunc_Spawn, ent );
  228. set_pev( ent, pev_solid, SOLID_BBOX );
  229. set_pev( ent, pev_movetype, MOVETYPE_NONE );
  230. engfunc( EngFunc_SetSize, ent, Float:{ -23.160000, -13.660000, -0.050000 }, Float:{ 11.470000, 12.780000, 6.720000 } );
  231. engfunc( EngFunc_DropToFloor, ent );
  232.  
  233. return PLUGIN_HANDLED;
  234. }
  235. public ForwardTouch( ent, id )
  236. {
  237. if(pev_valid(ent))
  238. {
  239. new classname[ 32 ];
  240. pev( ent, pev_classname, classname, charsmax( classname ) );
  241.  
  242. if( !equal( classname, "kredit") )
  243. {
  244. return FMRES_IGNORED;
  245. }
  246.  
  247. kredit[id] += get_cvar_num("found_kredit");
  248. ColorChat(id, GREEN, chatszoveg[3],prefix, get_cvar_num("found_kredit"));
  249.  
  250. engfunc( EngFunc_RemoveEntity, ent );
  251. }
  252. return FMRES_IGNORED
  253. }
  254. public logevent_round_start()
  255. {
  256. new hkt = FM_NULLENT;
  257. while ( ( hkt = fm_find_ent_by_class( hkt, "kredit") ) )
  258. {
  259. engfunc( EngFunc_RemoveEntity, hkt );
  260. }
  261. }
  262. public fomenu(id)
  263. {
  264. new String[96]
  265. format(String, charsmax(String), "\r[Weapon Skin System] \wFőmenü^n\yÖlések: \d%i \w|\y Kreditek: \d%i", oles[id],kredit[id])
  266. new menu = menu_create(String, "fomenu_MyMenu");
  267.  
  268. menu_additem(menu, "Fegyver Skin Csomagok", "0");
  269. menu_additem(menu, "Játékos Infók", "1");
  270. menu_additem(menu, "Pack Információk", "2");
  271.  
  272. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  273. menu_setprop(menu, MPROP_EXITNAME, "\rKilépés");
  274.  
  275. menu_display(id, menu, 0);
  276.  
  277. return PLUGIN_HANDLED;
  278. }
  279. public fomenu_MyMenu(id, menu, item)
  280. {
  281. if(item == MENU_EXIT)
  282. {
  283. menu_destroy(menu);
  284. return PLUGIN_HANDLED;
  285. }
  286.  
  287. new command[6], name[64], access, callback;
  288. menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
  289.  
  290. switch(item)
  291. {
  292. case 0: fegymenu(id)
  293. case 1: playerinfo(id)
  294. case 2: show_motd(id, "addons/amxmodx/configs/wssinfo.txt", "[WSS] Infok")
  295. }
  296.  
  297. menu_destroy(menu);
  298.  
  299. return PLUGIN_HANDLED;
  300. }
  301. public playerinfo(id)
  302. {
  303. new some[256], menu
  304. static players[32],szTemp[10],pnum
  305. get_players(players,pnum,"ch");
  306.  
  307. formatex(some,255,"\r[Weapon Skin System] \wJátékos \d|\w Ölés \d|\w Kredit");
  308. menu = menu_create(some,"pinfo_Handler");
  309.  
  310. for (new i; i < pnum; i++)
  311. {
  312. formatex(some,256,"%s \r(\yÖlése: \w%i \d| \yKreditje: \w%i\r)",get_player_name(players[i]), oles[players[i]],kredit[players[i]]);
  313. num_to_str(players[i],szTemp,charsmax(szTemp));
  314. menu_additem(menu, some, szTemp);
  315. }
  316.  
  317. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL );
  318. menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
  319. menu_display(id, menu);
  320. return PLUGIN_HANDLED;
  321. }
  322. public pinfo_Handler(id,menu, item)
  323. {
  324. if(item == MENU_EXIT)
  325. {
  326. menu_destroy(menu);
  327. return;
  328. }
  329.  
  330. playerinfo(id)
  331. }
  332. public fegymenu(id)
  333. {
  334. new String[96]
  335. format(String, charsmax(String), "\r[Weapon Skin System] \wSkin csomagok^n\yKiválasztott Csomag: \d[%s]", csomagmsg[csomag[id]])
  336. new menu = menu_create(String, "fegymenu_handler" )
  337.  
  338. format(String, charsmax(String), oles[id] >= need_kills[0] ? (menuszoveg[0][0]):(menuszoveg[0][1]), oles[id], need_kills[0]);
  339. menu_additem(menu, String, "0" );
  340. formatex(String, charsmax(String), oles[id] >= need_kills[1] ? (menuszoveg[1][0]):(menuszoveg[1][1]), oles[id], need_kills[1]);
  341. menu_additem(menu, String, "1");
  342. formatex(String, charsmax(String), oles[id] >= need_kills[2] ? (menuszoveg[2][0]):(menuszoveg[2][1]), oles[id], need_kills[2]);
  343. menu_additem(menu, String, "2");
  344. format(String, charsmax(String), oles[id] >= need_kills[3] ? (menuszoveg[3][0]):(menuszoveg[3][1]), oles[id], need_kills[3]);
  345. menu_additem(menu, String, "3");
  346. formatex(String, charsmax(String), kredit[id] >= need_kills[4] ? (menuszoveg[4][0]):(menuszoveg[4][1]), kredit[id], need_kills[4]);
  347. menu_additem(menu, String, "4");
  348. menu_additem(menu, switchbutton[id] == 1 ? (menuszoveg[5][0]):(menuszoveg[5][1]), "5");
  349.  
  350. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  351. menu_setprop(menu, MPROP_BACKNAME, "Vissza");
  352. menu_setprop(menu, MPROP_NEXTNAME, "Előre");
  353. menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
  354.  
  355. menu_display(id, menu, 0);
  356. return PLUGIN_HANDLED;
  357. }
  358. public fegymenu_handler(id, menu, item)
  359. {
  360. if(item == MENU_EXIT)
  361. {
  362. menu_destroy(menu)
  363. return PLUGIN_HANDLED;
  364. }
  365.  
  366. new command[6], name[64], access, callback;
  367. menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
  368.  
  369. switch(item)
  370. {
  371. case 0: {
  372. if(oles[id] >= need_kills[0]) {
  373. csomag[id] = 1
  374. ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]);
  375. }
  376. else {
  377. ColorChat(id, GREEN, chatszoveg[5],prefix);
  378. }
  379. }
  380. case 1: {
  381. if(oles[id] >= need_kills[1]) {
  382. csomag[id] = 2
  383. ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]);
  384. }
  385. else {
  386. ColorChat(id, GREEN, chatszoveg[5],prefix);
  387. }
  388. }
  389. case 2: {
  390. if(oles[id] >= need_kills[2]) {
  391. csomag[id] = 3
  392. ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]);
  393. }
  394. else {
  395. ColorChat(id, GREEN, chatszoveg[5],prefix);
  396. }
  397. }
  398. case 3: {
  399. if(oles[id] >= need_kills[3]) {
  400. csomag[id] = 4
  401. ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[csomag[id]]);
  402. }
  403. else {
  404. ColorChat(id, GREEN, chatszoveg[5],prefix);
  405. }
  406. }
  407. case 4: {
  408. if(kredit[id] >= need_kills[4]) {
  409. knife[id] = 1
  410. ColorChat(id, GREEN, chatszoveg[4],prefix, csomagmsg[5]);
  411. }
  412. else {
  413. ColorChat(id, GREEN, chatszoveg[9],prefix);
  414. }
  415. }
  416. case 5: {
  417. if(switchbutton[id] == 0){
  418. switchbutton[id] = 1
  419. csomag[id] = 0
  420. knife[id] = 0
  421. ColorChat(id, GREEN, chatszoveg[6],prefix);
  422. }
  423. else {
  424. switchbutton[id] = 0
  425. ColorChat(id, GREEN, chatszoveg[7],prefix);
  426. }
  427. }
  428. case 6: {
  429. ColorChat(id, GREEN, chatszoveg[5],prefix);
  430. }
  431. }
  432.  
  433. fegymenu(id)
  434. return PLUGIN_HANDLED;
  435. }
  436. public infohud() {
  437.  
  438. if(!get_cvar_num("wss_hudenable")) return PLUGIN_HANDLED
  439.  
  440. static id
  441. for(id = 1; id <= get_maxplayers(); id++)
  442. {
  443. if(is_user_alive(id)){
  444. set_hudmessage(0, 127, 255, 0.01, 0.20, 0, 6.0, 1.0)
  445. show_hudmessage(id, "[Ölés: %i]^n[Kredit: %i]^n[Kiválasztott Csomag: %s]^n[Speed Knife: %s]", oles[id],kredit[id],csomagmsg[csomag[id]], knifedisenable[knife[id]])
  446. }
  447. else{
  448. new target = entity_get_int(id, EV_INT_iuser2);
  449.  
  450. if(!target)
  451. return PLUGIN_CONTINUE;
  452.  
  453. set_hudmessage(255, 255, 255, 0.01, 0.20, 0, 6.0, 1.0)
  454. show_hudmessage(id, "[Ölés: %i]^n[Kredit: %i]^n[Kiválasztott Csomag: %s]^n[Speed Knife: %s]", oles[target],kredit[target],csomagmsg[csomag[target]], knifedisenable[knife[target]])
  455. }
  456. }
  457. return PLUGIN_CONTINUE;
  458. }
  459. stock get_player_name(id){
  460. static szName[32];
  461. get_user_name(id,szName,31);
  462. return szName;
  463. }
  464. public client_disconnect(id){
  465. if(is_user_bot(id)) return;
  466.  
  467. save(id);
  468. }
  469. public client_putinserver( id ) {
  470. if(is_user_bot(id)) return;
  471.  
  472. oles[id] = 0;
  473. kredit[id] = 0;
  474. csomag[id] = 0;
  475. switchbutton[id] = 0;
  476. load(id);
  477. }
  478. load(id) {
  479. new szAuthid[32], szData[32];
  480. get_user_name( id, szAuthid, charsmax(szAuthid));
  481. new s1[16],s2[16],s3[16],s4[16]
  482. fvault_get_data( szVaultName, szAuthid, szData, 31 );
  483. parse( szData, s1, 15, s2, 15 , s3 , 15, s4 ,15);
  484. oles[id] = str_to_num(s1);
  485. kredit[id] = str_to_num(s2);
  486. csomag[id] = str_to_num(s3);
  487. switchbutton[id] = str_to_num(s4);
  488. }
  489. save(id) {
  490. new szAuthid[ 32 ], szData[ 32 ];
  491. get_user_name( id, szAuthid, charsmax(szAuthid));
  492.  
  493. formatex( szData, 31, "%i %i %i %i", oles[id], kredit[id], csomag[id], switchbutton[id]);
  494. fvault_set_data( szVaultName, szAuthid, szData );
  495. }
  496.