HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <hamsandwich>
  4. #include <engine>
  5. #include <cstrike>
  6. #include <fun>
  7.  
  8. new const PLUGIN[] = "Easter Eggs";
  9. new const VERSION[] = "1.0";
  10. new const AUTHOR[] = "mforce"; // With lot of helps from tuty's plugin.
  11.  
  12.  
  13.  
  14. #define IS_PLAYER(%1) (1 <= %1 <= gMaxPlayers)
  15.  
  16. enum _: iGifts {
  17. GIFT_ARMOR_KEVLAR,
  18. GIFT_AMMO,
  19. GIFT_BONUS_HEALTH,
  20. GIFT_RANDOM_GRENADE,
  21. GIFT_FRAG,
  22. GIFT_DEFUSER,
  23. GIFT_MONEY,
  24. GIFT_DRINK
  25. };
  26.  
  27. new const szGiftNames[iGifts][] = {
  28. "Kevlár",
  29. "Töltény",
  30. "Bónusz Élet",
  31. "Random Gránát",
  32. "Bónusz Frag",
  33. "Hatástalanító készlet",
  34. "Pénz",
  35. "Pálinka"
  36. };
  37.  
  38. new const gGiftModels[][] = {
  39. "models/easter_eggs/matyo1.mdl",
  40. "models/easter_eggs/matyo2.mdl",
  41. "models/easter_eggs/matyo3.mdl",
  42. "models/easter_eggs/matyo4.mdl",
  43. "models/easter_eggs/matyo5.mdl",
  44. "models/easter_eggs/matyo6.mdl",
  45. "models/easter_eggs/matyo7.mdl"
  46. };
  47.  
  48. new const szPluginTag[] = "[Easter Eggs]";
  49.  
  50. new const szGiftClassname[] = "Present_Entity";
  51.  
  52. new const szPickupArmorSound[] = "items/ammopickup2.wav";
  53. new const szHealthPickUpSound[] = "items/medshot4.wav";
  54. new const szBonusFragsPickupSound[] = "bullchicken/bc_bite1.wav";
  55. new const szDefuserPickupSound[] = "items/gunpickup3.wav";
  56. new const szDrinkSound[] = "barney/whatisthat.wav";
  57.  
  58. new gMaxPlayers;
  59. new gHudSync;
  60. new gMessageScoreInfo;
  61. new gInfoTarget;
  62. new g_iMsgSetFOV;
  63.  
  64.  
  65. public plugin_init()
  66. {
  67. register_plugin(PLUGIN, VERSION, AUTHOR);
  68.  
  69. register_event("DeathMsg", "EVENT_DeathMsg", "a");
  70.  
  71. register_event("HLTV", "EVENT_RoundStart", "a", "1=0", "2=0")
  72. register_think(szGiftClassname, "forward_GiftThink");
  73.  
  74. register_touch(szGiftClassname, "player", "forward_TouchGift");
  75.  
  76. gHudSync = CreateHudSyncObj();
  77. gMaxPlayers = get_maxplayers();
  78.  
  79. gMessageScoreInfo = get_user_msgid("ScoreInfo");
  80. g_iMsgSetFOV = get_user_msgid("SetFOV");
  81.  
  82. gInfoTarget = engfunc(EngFunc_AllocString, "info_target");
  83. }
  84.  
  85. public plugin_precache()
  86. {
  87. for(new i = 0; i < sizeof gGiftModels; i++) {
  88. precache_model(gGiftModels[i]);
  89. }
  90.  
  91. precache_sound(szPickupArmorSound);
  92. precache_sound(szHealthPickUpSound);
  93. precache_sound(szBonusFragsPickupSound);
  94. precache_sound(szDefuserPickupSound);
  95. precache_sound(szDrinkSound);
  96. }
  97.  
  98. public EVENT_RoundStart()
  99. {
  100. new players[32], num, tempid;
  101. get_players(players, num, "c");
  102.  
  103. for(new i = 0; i < num; i++) {
  104. tempid = players[i]
  105. remove_task(tempid);
  106. removedrug(tempid);
  107. }
  108.  
  109. RemoveEntities(szGiftClassname);
  110. }
  111.  
  112. public EVENT_DeathMsg()
  113. {
  114. new iKiller = read_data(1);
  115. new iVictim = read_data(2);
  116.  
  117. if(!IS_PLAYER(iVictim)) return;
  118.  
  119. remove_task(iVictim);
  120. removedrug(iVictim);
  121.  
  122. if(iVictim == iKiller) return;
  123.  
  124. new Float:flOrigin[3];
  125. pev(iVictim, pev_origin, flOrigin);
  126.  
  127. flOrigin[2] += -34.0;
  128.  
  129. new Float:flAngles[3];
  130. pev(iVictim, pev_angles, flAngles);
  131.  
  132. new iEntity = engfunc(EngFunc_CreateNamedEntity, gInfoTarget);
  133.  
  134. if(!pev_valid(iEntity)) return;
  135.  
  136. set_pev(iEntity, pev_classname, szGiftClassname);
  137. set_pev(iEntity, pev_angles, flAngles);
  138.  
  139. engfunc(EngFunc_SetOrigin, iEntity, flOrigin);
  140. engfunc(EngFunc_SetModel, iEntity, gGiftModels[random_num(0, charsmax(gGiftModels))]);
  141.  
  142. ExecuteHam(Ham_Spawn, iEntity);
  143.  
  144. set_pev(iEntity, pev_solid, SOLID_BBOX);
  145. set_pev(iEntity, pev_movetype, MOVETYPE_NONE);
  146. set_pev(iEntity, pev_nextthink, get_gametime() + 2.0);
  147.  
  148. engfunc(EngFunc_SetSize, iEntity, Float:{ -23.160000, -13.660000, -0.050000 }, Float:{ 11.470000, 12.780000, 6.720000 });
  149. engfunc(EngFunc_DropToFloor, iEntity);
  150.  
  151. set_rendering(iEntity, kRenderFxGlowShell, random(256), random(256), random(256), kRenderFxNone, 23);
  152.  
  153. return;
  154. }
  155.  
  156. public forward_GiftThink(iEntity) {
  157. if(pev_valid(iEntity)) {
  158. set_rendering(iEntity, kRenderFxGlowShell, random(256), random(256), random(256), kRenderFxNone, random_num(5, 20));
  159. set_pev(iEntity, pev_nextthink, get_gametime() + 2.0);
  160. }
  161. }
  162.  
  163. public forward_TouchGift(iEntity, id) {
  164. if(!pev_valid(iEntity) || !is_user_alive(id)) return PLUGIN_HANDLED;
  165.  
  166. set_hudmessage(random(256), random(256), random(256), -1.0, 0.72, 1, 6.0, 6.0);
  167.  
  168. switch(random(iGifts)) {
  169. case GIFT_ARMOR_KEVLAR: {
  170. new iArmor = 100;
  171. cs_set_user_armor(id, iArmor, CS_ARMOR_VESTHELM);
  172.  
  173. ShowSyncHudMsg(id, gHudSync, "%s^nFelvetted:^n%s (%d)", szPluginTag, szGiftNames[GIFT_ARMOR_KEVLAR], iArmor);
  174. emit_sound(id, CHAN_ITEM, szPickupArmorSound, VOL_NORM, ATTN_NORM, 0 , PITCH_NORM);
  175. }
  176.  
  177. case GIFT_AMMO: {
  178. GiveWeaponAmmo(id);
  179. ShowSyncHudMsg(id, gHudSync, "%s^nFelvetted:^n%s", szPluginTag, szGiftNames[GIFT_AMMO]);
  180. }
  181.  
  182. case GIFT_BONUS_HEALTH: {
  183. new iBonusHealth = 15;
  184. set_user_health(id, get_user_health(id) + iBonusHealth);
  185.  
  186. ShowSyncHudMsg(id, gHudSync, "%s^nFelvetted:^n%s + (%d HP)", szPluginTag, szGiftNames[GIFT_BONUS_HEALTH], iBonusHealth);
  187. emit_sound(id, CHAN_ITEM, szHealthPickUpSound, VOL_NORM, ATTN_NORM, 0 , PITCH_NORM);
  188. }
  189.  
  190. case GIFT_RANDOM_GRENADE: {
  191. switch(random_num(1, 3)) {
  192. case 1: {
  193. give_item(id, "weapon_hegrenade");
  194. ShowSyncHudMsg(id, gHudSync, "%s^nFelvetted:^n%s (HE Gránát)", szPluginTag, szGiftNames[GIFT_RANDOM_GRENADE]);
  195. }
  196.  
  197. case 2: {
  198. give_item(id, "weapon_flashbang");
  199. ShowSyncHudMsg(id, gHudSync, "%s^nFelvetted:^n%s (Flash Gránát)", szPluginTag, szGiftNames[GIFT_RANDOM_GRENADE]);
  200. }
  201.  
  202. case 3: {
  203. give_item(id, "weapon_smokegrenade");
  204. ShowSyncHudMsg(id, gHudSync, "%s^nFelvetted:^n%s (Smoke Gránát)", szPluginTag, szGiftNames[GIFT_RANDOM_GRENADE]);
  205. }
  206. }
  207.  
  208. emit_sound(id, CHAN_ITEM, szPickupArmorSound, VOL_NORM, ATTN_NORM, 0 , PITCH_NORM);
  209. }
  210.  
  211. case GIFT_FRAG: {
  212. new iBonusFrags = 2;
  213.  
  214. set_user_frags(id, get_user_frags(id) + iBonusFrags);
  215. UpdateScoreboard(id);
  216.  
  217. ShowSyncHudMsg(id, gHudSync, "%s^nFelvetted:^n%s (%d Frag)", szPluginTag, szGiftNames[GIFT_FRAG], iBonusFrags);
  218. emit_sound(id, CHAN_ITEM, szBonusFragsPickupSound, VOL_NORM, ATTN_NORM, 0 , PITCH_NORM);
  219. }
  220.  
  221. case GIFT_DEFUSER: {
  222. if(get_user_team(id) == 2) {
  223. cs_set_user_defuse(id, 1);
  224. ShowSyncHudMsg(id, gHudSync, "%s^nFelvetted:^n%s", szPluginTag, szGiftNames[GIFT_DEFUSER]);
  225.  
  226. emit_sound(id, CHAN_ITEM, szDefuserPickupSound, VOL_NORM, ATTN_NORM, 0 , PITCH_NORM);
  227. }
  228.  
  229. else {
  230. ShowSyncHudMsg(id, gHudSync, "%s^nDefuser volt a tojásban, de te Terrorista vagy!", szPluginTag);
  231.  
  232. emit_sound(id, CHAN_ITEM, szDefuserPickupSound, VOL_NORM, ATTN_NORM, 0 , PITCH_NORM);
  233. }
  234. }
  235.  
  236. case GIFT_MONEY: {
  237. new iMoney = cs_get_user_money(id);
  238. new iMoneyGift = 1000;
  239.  
  240. cs_set_user_money(id, (iMoney >= 16000) ? 16000 : iMoney + iMoneyGift, 1);
  241. ShowSyncHudMsg(id, gHudSync, "%s^nFelvetted:^n%s + (%d$)", szPluginTag, szGiftNames[GIFT_MONEY], iMoneyGift);
  242.  
  243. }
  244.  
  245. case GIFT_DRINK: {
  246. new iDrinkMinus = 5;
  247. set_user_health(id, get_user_health(id) - iDrinkMinus);
  248. makedrug(id);
  249.  
  250. ShowSyncHudMsg(id, gHudSync, "%s^nFelvetted:^n%s (-%d HP)", szPluginTag, szGiftNames[GIFT_DRINK], iDrinkMinus);
  251. emit_sound(id, CHAN_ITEM, szDrinkSound, VOL_NORM, ATTN_NORM, 0 , PITCH_NORM);
  252. }
  253. }
  254.  
  255. engfunc(EngFunc_RemoveEntity, iEntity);
  256.  
  257. return PLUGIN_CONTINUE;
  258. }
  259.  
  260. RemoveEntities(const szClassname[]) {
  261. new iEntity = FM_NULLENT;
  262.  
  263. while((iEntity = engfunc(EngFunc_FindEntityByString, FM_NULLENT, "classname", szClassname))) {
  264. engfunc(EngFunc_RemoveEntity, iEntity);
  265. }
  266. }
  267.  
  268. UpdateScoreboard(id) {
  269. message_begin(MSG_ALL, gMessageScoreInfo);
  270. write_byte(id);
  271. write_short(get_user_frags(id));
  272. write_short(get_user_deaths(id));
  273. write_short(0);
  274. write_short(get_user_team(id));
  275. message_end();
  276. }
  277.  
  278. GiveWeaponAmmo(index) {
  279. new szCopyAmmoData[40];
  280.  
  281. switch(get_user_weapon(index))
  282. {
  283. case CSW_P228: copy(szCopyAmmoData, charsmax(szCopyAmmoData), "ammo_357sig");
  284. case CSW_SCOUT, CSW_G3SG1, CSW_AK47: copy(szCopyAmmoData, charsmax(szCopyAmmoData), "ammo_762nato");
  285. case CSW_XM1014, CSW_M3: copy(szCopyAmmoData, charsmax(szCopyAmmoData), "ammo_buckshot");
  286. case CSW_MAC10, CSW_UMP45, CSW_USP: copy(szCopyAmmoData, charsmax(szCopyAmmoData), "ammo_45acp");
  287. case CSW_SG550, CSW_GALIL, CSW_FAMAS, CSW_M4A1, CSW_SG552, CSW_AUG: copy(szCopyAmmoData, charsmax(szCopyAmmoData), "ammo_556nato");
  288. case CSW_ELITE, CSW_GLOCK18, CSW_MP5NAVY, CSW_TMP: copy(szCopyAmmoData, charsmax(szCopyAmmoData), "ammo_9mm");
  289. case CSW_AWP: copy(szCopyAmmoData, charsmax(szCopyAmmoData), "ammo_338magnum");
  290. case CSW_M249: copy(szCopyAmmoData, charsmax(szCopyAmmoData), "ammo_556natobox");
  291. case CSW_FIVESEVEN, CSW_P90: copy(szCopyAmmoData, charsmax(szCopyAmmoData), "ammo_57mm");
  292. case CSW_DEAGLE: copy(szCopyAmmoData, charsmax(szCopyAmmoData), "ammo_50ae");
  293. }
  294.  
  295. give_item(index, szCopyAmmoData);
  296. give_item(index, szCopyAmmoData);
  297. give_item(index, szCopyAmmoData);
  298. }
  299.  
  300. public makedrug(id) {
  301. message_begin(MSG_ONE, g_iMsgSetFOV, {0, 0, 0}, id);
  302. write_byte(135);
  303. message_end();
  304.  
  305. set_task(3.0, "removedrug", id);
  306. }
  307.  
  308. public removedrug(id) {
  309. message_begin(MSG_ONE, g_iMsgSetFOV, { 0, 0, 0 }, id);
  310. write_byte(90);
  311. message_end();
  312. }
  313.  
  314. public client_disconnect(id) {
  315. remove_task(id);
  316. removedrug(id);
  317. }