HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <hamsandwich>
  5. #include <cstrike>
  6. #include <colorchat>
  7. #include <fun>
  8. #include <nvault>
  9. #include <fakemeta>
  10. #include <engine>
  11.  
  12. #define PLUGIN "BaseBuilder Shop"
  13. #define VERSION "1.0"
  14. #define AUTHOR "N*Joy^^"
  15.  
  16. #define VIPJOG ADMIN_RESERVATION
  17.  
  18. //Tároló
  19. new pont[33]
  20. new g_vault
  21. new name[33][32]
  22. new x_tempid
  23.  
  24. //Arany fegyverek
  25. new bool:aranyak[33]
  26. new bool:aranym4[33]
  27.  
  28. //Bolt itemek
  29. new bool:orokloszer[33]
  30. new bool:sebesseg[33]
  31. new bool:gravitacio[33]
  32. new hasznalta[33]
  33.  
  34. //Bolt cvarok
  35. new killp
  36. new killhsp
  37. new vipkillp
  38. new vipkillhsp
  39. new g_lehetmeg
  40.  
  41. //Öröklõszer
  42. // weapons offsets
  43. #define OFFSET_CLIPAMMO 51
  44. #define OFFSET_LINUX_WEAPONS 4
  45. #define fm_cs_set_weapon_ammo(%1,%2) set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)
  46.  
  47. // players offsets
  48. #define m_pActiveItem 373
  49.  
  50. const NOCLIP_WPN_BS = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
  51.  
  52. new const g_MaxClipAmmo[] =
  53. {
  54. 0,
  55. 13, //CSW_P228
  56. 0,
  57. 10, //CSW_SCOUT
  58. 0, //CSW_HEGRENADE
  59. 7, //CSW_XM1014
  60. 0, //CSW_C4
  61. 30,//CSW_MAC10
  62. 30, //CSW_AUG
  63. 0, //CSW_SMOKEGRENADE
  64. 15,//CSW_ELITE
  65. 20,//CSW_FIVESEVEN
  66. 25,//CSW_UMP45
  67. 30, //CSW_SG550
  68. 35, //CSW_GALIL
  69. 25, //CSW_FAMAS
  70. 12,//CSW_USP
  71. 20,//CSW_GLOCK18
  72. 10, //CSW_AWP
  73. 30,//CSW_MP5NAVY
  74. 100,//CSW_M249
  75. 8, //CSW_M3
  76. 30, //CSW_M4A1
  77. 30,//CSW_TMP
  78. 20, //CSW_G3SG1
  79. 0, //CSW_FLASHBANG
  80. 7, //CSW_DEAGLE
  81. 30, //CSW_SG552
  82. 30, //CSW_AK47
  83. 0, //CSW_KNIFE
  84. 50//CSW_P90
  85. }
  86.  
  87.  
  88. public plugin_init() {
  89. register_plugin(PLUGIN, VERSION, AUTHOR)
  90.  
  91. register_clcmd("say /bolt", "fomenu")
  92. register_clcmd("say /shop", "fomenu")
  93.  
  94. register_clcmd("say /netudjadallitsdat", "kuldesmenu")
  95.  
  96. RegisterHam(Ham_TakeDamage , "player" , "PlayerHurt", 0);
  97. RegisterHam(Ham_Killed, "player", "fw_player_killed", 1)
  98.  
  99. register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
  100. register_event("ResetHUD", "newRound", "b")
  101.  
  102. killp = register_cvar("pont_kill", "5")
  103. killhsp = register_cvar("pont_killhs", "8")
  104.  
  105. vipkillp = register_cvar("pont_killvip", "10")
  106. vipkillhsp = register_cvar("pont_killhsvip", "12")
  107.  
  108. g_lehetmeg = register_cvar("amx_lehetvenni", "2")
  109.  
  110. register_clcmd("MENNYISEG", "ponts")
  111.  
  112. g_vault = nvault_open("BasebuilderPont")
  113. }
  114. //Hud üzenet
  115. public client_PreThink(id)
  116. {
  117. set_hudmessage(0, 255, 0, 0.0, 0.16, 0, 6.0, 1.0)
  118. show_hudmessage(id, " Pontjaid: %d", pont[id])
  119.  
  120. }
  121. //Ölés pontokért
  122. public fw_player_killed(victim, attacker, shouldgib)
  123. {
  124. if(get_user_flags(attacker) & VIPJOG && attacker != victim)
  125. {
  126. if(get_pdata_int(victim, 75) == HIT_HEAD)
  127. {
  128. pont[attacker] += get_pcvar_num(vipkillhsp)
  129. set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
  130. show_hudmessage(attacker, "[+%d pont - Fejloves]", get_pcvar_num(vipkillhsp))
  131. }
  132. else
  133. {
  134. pont[attacker] += get_pcvar_num(vipkillp)
  135. set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
  136. show_hudmessage(attacker, "[+%d pont]", get_pcvar_num(vipkillp))
  137. }
  138. }
  139. else if(attacker != victim)
  140. {
  141. if(get_pdata_int(victim, 75) == HIT_HEAD)
  142. {
  143. pont[attacker] += get_pcvar_num(killhsp)
  144. set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
  145. show_hudmessage(attacker, "[+%d pont - Fejloves]", get_pcvar_num(killhsp))
  146. }
  147. else
  148. {
  149. pont[attacker] += get_pcvar_num(killp)
  150. set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
  151. show_hudmessage(attacker, "[+%d pont]", get_pcvar_num(killp))
  152. }
  153. }
  154. return PLUGIN_CONTINUE
  155. }
  156. //Új kör
  157. public newRound()
  158. {
  159. new players[32], num
  160. get_players(players, num)
  161. for(new i; i<get_maxplayers(); i++)
  162. {
  163. new id = players[i]
  164. orokloszer[id] = false
  165. sebesseg[id] = false
  166. gravitacio[id] = false
  167. aranym4[id] = false
  168. aranyak[id] = false
  169. hasznalta[id] = 0
  170. }
  171. }
  172. //Letöltések
  173. public plugin_precache()
  174. {
  175. precache_model("models/aranyak.mdl")
  176. precache_model("models/p_aranyak.mdl")
  177.  
  178. precache_model("models/aranym4.mdl")
  179. precache_model("models/p_aranym4.mdl")
  180.  
  181. }
  182. //Fomenu
  183. public fomenu(id)
  184. {
  185. static CsTeams: team ; team = cs_get_user_team(id)
  186. if (team == CS_TEAM_T)
  187. {
  188. new menu = menu_create("\yBaseBuilder [T] Bolt \w[By: N*Joy^^]", "fomenut_handler");
  189.  
  190. new szoveg[192]
  191. formatex(szoveg, 191, "1000 HP [20 pont] \w[%d/%d]",hasznalta[id],get_pcvar_num(g_lehetmeg))
  192. menu_additem(menu, szoveg, "", 0); // case 0
  193. menu_additem(menu, "Kisebb gravitacio [20 pont]", "", 0); // case 1
  194. menu_additem(menu, "Gyorsasag [15 pont]", "", 0); // case 2
  195.  
  196. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  197.  
  198. menu_display(id, menu, 0);
  199.  
  200. return PLUGIN_HANDLED;
  201. }
  202. else
  203. {
  204. new menu = menu_create("\yBaseBuilder [CT] Bolt \w[By: N*Joy^^`]", "fomenuct_handler");
  205.  
  206. menu_additem(menu, "+50 HP [20 pont]", "", 0); // case 0
  207. menu_additem(menu, "Gyorsasag [15 pont]", "", 0); // case 1
  208. menu_additem(menu, "Kisebb gravitacio [20 pont]", "", 0); // case 2
  209. menu_additem(menu, "Orok tolteny [120 pont]", "", 0); // case 3
  210. menu_additem(menu, "\rArany M4A1 [120 pont]", "", 0); // case 4
  211. menu_additem(menu, "\rArany AK47 [120 pont]", "", 0); // case 5
  212. menu_additem(menu, "Minigun [65 pont]", "", 0); // case 6
  213. menu_additem(menu, "CT magozo [45 pont]", "", 0); // case 7
  214. menu_additem(menu, "T magozo [45 pont]", "", 0); // case 8
  215.  
  216. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  217.  
  218. menu_display(id, menu, 0);
  219.  
  220. }
  221. return PLUGIN_HANDLED;
  222. }
  223. public fomenut_handler(id, menu, item)
  224. {
  225. if(item == MENU_EXIT)
  226. {
  227. menu_cancel(id);
  228. return PLUGIN_HANDLED;
  229. }
  230.  
  231. new command[6], name[64], access, callback;
  232.  
  233. menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
  234.  
  235. switch(item)
  236. {
  237. case 0: {
  238. if(pont[id] >= 20)
  239. {
  240. if(hasznalta[id] < get_pcvar_num(g_lehetmeg))
  241. {
  242. hasznalta[id]++
  243. set_user_health(id, get_user_health(id)+1000)
  244. pont[id] -= 20
  245. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  246. fomenu(id)
  247. }
  248. else
  249. {
  250. ColorChat(id, GREEN, "[Bolt]^1 Csak %dx hasznalhatod ezt a menupontot!",get_pcvar_num(g_lehetmeg))
  251. }
  252. fomenu(id)
  253. }
  254. else
  255. {
  256. ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
  257. }
  258. fomenu(id)
  259. }
  260. case 1: {
  261. if(pont[id] >= 20)
  262. {
  263. set_user_gravity(id, 0.5)
  264. gravitacio[id] = true
  265. pont[id] -= 20
  266. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  267. fomenu(id)
  268. }
  269. else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
  270. }
  271. case 2: {
  272. if(pont[id] >= 20)
  273. {
  274. set_user_maxspeed(id, 550.0)
  275. sebesseg[id] = true
  276. pont[id] -= 15
  277. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  278. fomenu(id)
  279. }
  280. else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
  281. }
  282.  
  283. }
  284.  
  285. menu_destroy(menu);
  286.  
  287. return PLUGIN_HANDLED;
  288. }
  289. public fomenuct_handler(id, menu, item)
  290. {
  291. if(item == MENU_EXIT)
  292. {
  293. menu_cancel(id);
  294. return PLUGIN_HANDLED;
  295. }
  296.  
  297. new command[6], name[64], access, callback;
  298.  
  299. menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
  300.  
  301. switch(item)
  302. {
  303. case 0: {
  304. if(pont[id] >= 20)
  305. {
  306. set_user_health(id, get_user_health(id)+50)
  307. pont[id] -= 20
  308. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  309. fomenu(id)
  310. }
  311. else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
  312. }
  313. case 1: {
  314. if(pont[id] >= 15)
  315. {
  316. set_user_maxspeed(id, 700.0)
  317. sebesseg[id] = true
  318. pont[id] -= 15
  319. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  320. fomenu(id)
  321. }
  322. else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
  323. }
  324. case 2: {
  325. if(pont[id] >= 20)
  326. {
  327. set_user_gravity(id, 0.5)
  328. gravitacio[id] = true
  329. pont[id] -= 20
  330. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  331. fomenu(id)
  332. }
  333. else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
  334. }
  335. case 3: {
  336. if(pont[id] >= 120)
  337. {
  338. orokloszer[id] = true
  339. pont[id] -= 120
  340. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  341. fomenu(id)
  342. }
  343. else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
  344. }
  345. case 4: {
  346. if(pont[id] >= 120)
  347. {
  348. pont[id] -= 120
  349. give_item(id, "weapon_m4a1")
  350. cs_set_user_bpammo(id, CSW_M4A1, 90)
  351. aranym4[id] = true
  352. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  353. fomenu(id)
  354. }
  355. else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
  356. }
  357. case 5: {
  358. if(pont[id] >= 120)
  359. {
  360. give_item(id, "weapon_ak47")
  361. cs_set_user_bpammo(id, CSW_AK47, 90)
  362. aranyak[id] = true
  363. pont[id] -= 120
  364. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  365. fomenu(id)
  366. }
  367. else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
  368. }
  369. case 6:{
  370. if(pont[id] >= 65)
  371. {
  372. give_item(id,"weapon_m249")
  373. cs_set_user_bpammo(id, CSW_M249, 200)
  374. pont[id] -= 65
  375. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  376. fomenu(id)
  377. }
  378. else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
  379. }
  380. case 7: {
  381. if(pont[id] >= 45)
  382. {
  383. give_item(id, "weapon_g3sg1")
  384. cs_set_user_bpammo(id, CSW_G3SG1, 90)
  385. pont[id] -= 45
  386. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  387. fomenu(id)
  388. }
  389. else ColorChat(id, GREEN, "[Bolt]^n Sajnos nincs eleg pontod")
  390. }
  391. case 8: {
  392. if(pont[id] >= 45)
  393. {
  394. give_item(id, "weapon_sg550")
  395. cs_set_user_bpammo(id, CSW_SG550, 90)
  396. pont[id] -= 45
  397. ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
  398. fomenu(id)
  399. }
  400. else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
  401. }
  402. }
  403.  
  404. menu_destroy(menu);
  405.  
  406. return PLUGIN_HANDLED;
  407. }
  408. //Modellek
  409. public Event_CurWeapon(id)
  410. {
  411. new weap = get_user_weapon(id)
  412. if(weap == CSW_AK47 && aranyak[id] == true)
  413. {
  414. entity_set_string(id, EV_SZ_viewmodel, "models/redak.mdl")
  415. entity_set_string(id, EV_SZ_weaponmodel, "models/p_aranyak.mdl")
  416. }
  417. else if(weap == CSW_M4A1 && aranym4[id] == true)
  418. {
  419. entity_set_string(id, EV_SZ_viewmodel, "models/redm4.mdl")
  420. entity_set_string(id, EV_SZ_weaponmodel, "models/p_aranym4.mdl")
  421. }
  422. if(orokloszer[id] == true)
  423. {
  424. fm_cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ weap ] )
  425. }
  426. }
  427. //sebzés
  428. public PlayerHurt( victim,inflictor,attacker,Float:damage, DamageBits )
  429. {
  430. new weap = get_user_weapon(attacker)
  431. if(weap == CSW_AK47 && aranyak[attacker] == true || weap == CSW_M4A1 && aranym4[attacker] == true)
  432. {
  433. SetHamParamFloat(4, damage * 2.0);
  434. }
  435. return HAM_IGNORED;
  436. }
  437. //Nvault, mentés
  438. public mentes(id)
  439. {
  440. new vaultkey[64],vaultdata[256]
  441.  
  442. format(vaultkey,63,"%s-PONTOK", name[id])
  443. format(vaultdata,255,"%d", pont[id])
  444.  
  445. nvault_set(g_vault,vaultkey,vaultdata)
  446. return PLUGIN_CONTINUE
  447. }
  448. public betoltes(id)
  449. {
  450. new vaultkey[64],vaultdata[256]
  451.  
  452. format(vaultkey,63,"%s-PONTOK", name[id])
  453.  
  454. nvault_get(g_vault,vaultkey,vaultdata,255)
  455.  
  456. pont[id] = str_to_num(vaultdata)
  457. return PLUGIN_CONTINUE;
  458. }
  459. public client_disconnect(id)
  460. {
  461. mentes(id);
  462. remove_task(id);
  463. pont[id] = 0;
  464. orokloszer[id] = false
  465. sebesseg[id] = false
  466. gravitacio[id] = false
  467. aranym4[id] = false
  468. aranyak[id] = false
  469. hasznalta[id] = 0
  470. }
  471.  
  472. public client_connect(id)
  473. {
  474. get_user_name(id, name[id], 31)
  475. betoltes(id);
  476. }
  477. public kuldesmenu(id)
  478. {
  479. new menu = menu_create("\y[Pont Kuldes]", "kuldes_handler");
  480. new players[32], pnum, tempid;
  481. new szName[32], szTempid[10];
  482. get_players(players, pnum);
  483. for( new i; i<pnum; i++ )
  484. {
  485. tempid = players[i];
  486. {
  487. get_user_name(tempid, szName, charsmax(szName));
  488. num_to_str(tempid, szTempid, charsmax(szTempid));
  489. menu_additem(menu, szName, szTempid, 0);
  490. }
  491. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  492. menu_display(id, menu, 0);
  493. }
  494.  
  495. }
  496. public kuldes_handler(id, menu, item)
  497. {
  498. if( item == MENU_EXIT )
  499. {
  500. menu_destroy(menu);
  501. return PLUGIN_HANDLED;
  502. }
  503. new data[6], szName[64];
  504. new access, callback;
  505. menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  506. x_tempid = str_to_num(data);
  507. client_cmd(id, "messagemode MENNYISEG");
  508. menu_destroy(menu);
  509. return PLUGIN_HANDLED;
  510. }
  511. public ponts(id)
  512. {
  513. new uzenet[121];
  514. new kuldoneve[32], tempname[32]
  515. read_args(uzenet, charsmax(uzenet))
  516. remove_quotes(uzenet)
  517. get_user_name(id, kuldoneve, 31)
  518. get_user_name(x_tempid, tempname, 31)
  519.  
  520. pont[x_tempid] += str_to_num(uzenet)
  521. ColorChat(0, GREEN, "[Pontrendszer] ^3%s ^1adott ^4%d ^1pontot ^3%s^1-nek!", kuldoneve,str_to_num(uzenet),tempname)
  522.  
  523. }
  524.