Advertisement
Guest User

Untitled

a guest
Dec 12th, 2015
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.23 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <hamsandwich>
  3. #include <fakemeta>
  4. #include <cstrike>
  5. #include <engine>
  6. #include <jailbreak>
  7.  
  8. #define XO_WEAPON           4
  9. #define m_pPlayer           41
  10. #define m_flTimeWeaponIdle  48
  11.  
  12. new g_pTextMsgForward, g_pSendAudioForward;
  13. new g_pTextMsgID, g_pSendAudioID, g_pSprite;
  14. new HamHook:g_pHamForwards[3];
  15. new cvar_snowday_velocity;
  16. new g_pMyNewDay, g_szDayName[JAIL_MENUITEM];
  17. new const g_szModels[][] = {"models/suprjail/v_snowball.mdl", "models/suprjail/p_snowball.mdl", "models/suprjail/w_snowball.mdl"};
  18.  
  19. public plugin_precache()
  20. {
  21.   for(new i = 0; i < sizeof(g_szModels); i++)
  22.     precache_model(g_szModels[i]);
  23.  
  24.   g_pSprite = precache_model("sprites/blood.spr");
  25.   precache_sound("player/pl_snow1.wav");
  26. }
  27.  
  28. public plugin_init()
  29. {
  30.   register_plugin("[JAIL] Snow day", JAIL_VERSION, JAIL_AUTHOR);
  31.  
  32.   cvar_snowday_velocity = my_register_cvar("jail_snowday_velocity", "1300", "Snowballs velocity. (Default: 1300)");
  33.   g_pTextMsgID = get_user_msgid("TextMsg");
  34.   g_pSendAudioID = get_user_msgid("SendAudio");
  35.  
  36.   DisableHamForward((g_pHamForwards[0] = RegisterHam(Ham_Think, "grenade", "Ham_Think_pre", 0)));
  37.   DisableHamForward((g_pHamForwards[1] = RegisterHam(Ham_Touch, "grenade", "Ham_Touch_pre", 0)));
  38.   DisableHamForward((g_pHamForwards[2] = RegisterHam(Ham_Item_Deploy, "weapon_hegrenade", "Ham_Item_Deploy_post", 1)));
  39.  
  40.   formatex(g_szDayName, charsmax(g_szDayName), "%L", LANG_PLAYER, "JAIL_DAY3");
  41.   g_pMyNewDay = jail_day_add(g_szDayName, "snow", 1);
  42. }
  43.  
  44. public jail_freebie_join(id, event, type)
  45. {
  46.   if(type == GI_DAY && event == g_pMyNewDay)
  47.   {
  48.     set_player_attributes(id);
  49.     return PLUGIN_HANDLED;
  50.   }
  51.  
  52.   return PLUGIN_CONTINUE;
  53. }
  54.  
  55. public jail_day_start(simon, day, dayname[])
  56. {
  57.   if(day == g_pMyNewDay)
  58.   {
  59.     start_snowday(simon);
  60.     return PLUGIN_HANDLED;
  61.   }
  62.  
  63.   return PLUGIN_CONTINUE;
  64. }
  65.  
  66. public jail_day_end(simon, day, dayname[])
  67. {
  68.   if(day == g_pMyNewDay)
  69.   {
  70.     end_snowday(simon);
  71.     return PLUGIN_HANDLED;
  72.   }
  73.  
  74.   return PLUGIN_CONTINUE;
  75. }
  76.  
  77. public Ham_Think_pre(ent)
  78.   return HAM_SUPERCEDE;
  79.  
  80. public Ham_Touch_pre(ent, other)
  81. {
  82.   if(!is_valid_ent(ent))
  83.     return HAM_IGNORED;
  84.  
  85.   if(is_user_alive(other))
  86.   {
  87.     if(jail_get_playerdata(other, PD_HAMBLOCK))
  88.     {
  89.       new owner = entity_get_edict(ent, EV_ENT_owner);
  90.       //ExecuteHamB(Ham_Killed, other, owner, 0);
  91.       ExecuteHamB(Ham_TakeDamage, other, ent, owner, 300.0, (1 << 24));
  92.     }
  93.   }
  94.  
  95.   if(is_valid_ent(ent))
  96.   {
  97.     emit_sound(ent, CHAN_AUTO, "player/pl_snow1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
  98.     static Float:origin[3];
  99.     entity_get_vector(ent, EV_VEC_origin, origin);
  100.     sw_effect(origin);
  101.     remove_entity(ent);
  102.   }
  103.  
  104.   return HAM_SUPERCEDE;
  105. }
  106.  
  107. public Ham_Item_Deploy_post(ent)
  108. {
  109.   if(!is_valid_ent(ent))
  110.     return;
  111.  
  112.   new id = get_pdata_cbase(ent, m_pPlayer, XO_WEAPON);
  113.   if(is_user_alive(id))
  114.   {
  115.     entity_set_string(id, EV_SZ_viewmodel, g_szModels[0]);
  116.     entity_set_string(id, EV_SZ_weaponmodel, g_szModels[1]);
  117.   }
  118. }
  119.  
  120. public grenade_throw(id, ent, nade)
  121. {
  122.   if(nade == CSW_HEGRENADE && is_user_alive(id) && day_equal(g_pMyNewDay))
  123.   {
  124.     cs_set_user_bpammo(id, CSW_HEGRENADE, 2);
  125.     static Float:velocity[3];
  126.     VelocityByAim(id, get_pcvar_num(cvar_snowday_velocity), velocity);
  127.     entity_set_vector(ent, EV_VEC_velocity, velocity);
  128.  
  129.     if(entity_get_float(ent, EV_FL_dmgtime) != 0.0)
  130.       entity_set_model(ent, g_szModels[2]);
  131.   }
  132. }
  133.  
  134. public Block_Text()
  135. {
  136.   if(get_msg_args() != 5 || get_msg_argtype(3) != ARG_STRING || get_msg_argtype(5) != ARG_STRING)
  137.     return PLUGIN_CONTINUE;
  138.  
  139.   static message[20];
  140.   get_msg_arg_string(5, message, charsmax(message));
  141.   if(equal(message, "#Fire_in_the_hole"))
  142.     return PLUGIN_HANDLED;
  143.  
  144.   return PLUGIN_CONTINUE;
  145. }
  146.  
  147. public Block_Audio()
  148. {
  149.   if(get_msg_args() != 3 || get_msg_argtype(2) != ARG_STRING)
  150.     return PLUGIN_CONTINUE;
  151.  
  152.   static sound[20];
  153.   get_msg_arg_string(2, sound, charsmax(sound));
  154.   if(equal(sound[1], "!MRAD_FIREINHOLE"))
  155.     return PLUGIN_HANDLED;
  156.  
  157.   return PLUGIN_CONTINUE;
  158. }
  159.  
  160. start_snowday(simon)
  161. {
  162.   new num, id;
  163.   static players[32];
  164.   get_players(players, num, "a");
  165.   my_registered_stuff(true);
  166.  
  167.   for(--num; num >= 0; num--)
  168.   {
  169.     id = players[num];
  170.     if(jail_get_playerdata(id, PD_FREEDAY)) continue;
  171.     set_player_attributes(id);
  172.   }
  173.  
  174.   server_event(simon, g_szDayName, 0);
  175.   jail_celldoors(simon, TS_OPENED);
  176.   jail_ham_specific({1, 1, 1, 1, 1, 0, 0});
  177.   set_cvar_num("mp_friendlyfire", 1);
  178.  
  179.   jail_set_globalinfo(GI_DAY, g_pMyNewDay);
  180. }
  181.  
  182. end_snowday(simon)
  183. {
  184.   new num, id;
  185.   static players[32];
  186.   get_players(players, num);
  187.  
  188.   for(--num; num >= 0; num--)
  189.   {
  190.     id = players[num];
  191.     jail_set_playerdata(id, PD_HAMBLOCK, false);
  192.     if(cs_get_user_team(id) == CS_TEAM_T)
  193.       jail_set_playerdata(id, PD_REMOVEHE, true);
  194.  
  195.     strip_weapons(id);
  196.     ham_give_weapon(id, "weapon_knife", 1);
  197.   }
  198.  
  199.   server_event(simon, g_szDayName, 1);
  200.   my_registered_stuff(false);
  201.   set_cvar_num("mp_friendlyfire", 0);
  202.   jail_ham_all(false);
  203.   jail_set_globalinfo(GI_DAY, false);
  204.   //remove_entity_name("grenade"); crash
  205.   move_grenade();
  206. }
  207.  
  208. public set_player_attributes(id)
  209. {
  210.   jail_player_crowbar(id, false);
  211.   jail_set_playerdata(id, PD_HAMBLOCK, true);
  212.   jail_set_playerdata(id, PD_REMOVEHE, false);
  213.  
  214.   strip_weapons(id);
  215.   ham_give_weapon(id, "weapon_hegrenade", 1);
  216. }
  217.  
  218. my_registered_stuff(val)
  219. {
  220.   if(val)
  221.   {
  222.     g_pTextMsgForward   = register_message(g_pTextMsgID, "Block_Text");
  223.     g_pSendAudioForward = register_message(g_pSendAudioID, "Block_Audio");
  224.     for(new i = 0; i < sizeof(g_pHamForwards); i++)
  225.       EnableHamForward(g_pHamForwards[i]);
  226.   }
  227.   else
  228.   {
  229.     unregister_message(g_pTextMsgID, g_pTextMsgForward);
  230.     unregister_message(g_pSendAudioID, g_pSendAudioForward);
  231.     for(new i = 0; i < sizeof(g_pHamForwards); i++)
  232.       DisableHamForward(g_pHamForwards[i]);
  233.   }
  234. }
  235.  
  236. sw_effect(Float:fOrigin[3])
  237. {
  238.   new origin[3];
  239.   FVecIVec(fOrigin, origin);
  240.  
  241.   message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
  242.   write_byte(TE_BLOODSPRITE);
  243.   write_coord(origin[0]);
  244.   write_coord(origin[1]);
  245.   write_coord(origin[2]);
  246.   write_short(g_pSprite);
  247.   write_short(g_pSprite);
  248.   write_byte(160);
  249.   write_byte(10);
  250.   message_end();
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement