Advertisement
Guest User

StudenT

a guest
May 20th, 2020
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.71 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <engine>
  3. #include <fakemeta>
  4. #include <hamsandwich>
  5. #include <fakemeta_util>
  6.  
  7. #define FLAG_ADMIN  ADMIN_RESERVATION
  8. #define FLAG_VIP    ADMIN_LEVEL_H
  9.  
  10. #define    FL_WATERJUMP    (1<<11)    
  11. #define    FL_ONGROUND    (1<<9)  
  12.  
  13. new FastSpeed[33], Bunny_Hop[33], depbhop[33], bool:freeaccele
  14. new Speed[33], Gravity[33], Render[33], NoSpeed[33]
  15. new Twojump[33], jumpnum[33], bool:dojump[33] = false
  16.  
  17. public plugin_init()
  18. {
  19.     register_plugin("NightTime_Menu", "1.0", "StudenT")
  20.  
  21.     RegisterHam(Ham_Spawn, "player", "SpawnPlayer", 1)
  22.     register_event("CurWeapon", "WeaponChange", "be", "1=1")
  23.     register_forward(FM_PlayerPostThink, "PostThink")
  24.     register_forward(FM_PlayerPreThink, "PreThink")
  25.  
  26.     register_cvar("night_menu", "1")
  27.  
  28.     register_clcmd("say /night", "NightMenu")
  29. }
  30.  
  31. public WeaponChange(id)
  32. {
  33.     if(get_cvar_num("night_menu"))
  34.     {
  35.         if(NoSpeed[id])
  36.             fm_set_user_maxspeed(id, 400.0)
  37.     }
  38. }
  39.  
  40. public SpawnPlayer(id)
  41. {
  42.     if(is_user_connected(id) && is_user_alive(id))
  43.     {
  44.         if(Speed[id])
  45.         {
  46.             fm_set_user_maxspeed(id, 400.0)
  47.             NoSpeed[id] = true
  48.         }
  49.  
  50.         if(Gravity[id])
  51.             fm_set_user_gravity(id, 0.4)
  52.  
  53.         if(Render[id])
  54.             fm_set_user_rendering(id,kRenderFxGlowShell, random_num(0, 255), random_num(0, 255), random_num(0, 255),kRenderNormal,25)
  55.     }
  56. }
  57.  
  58. public NightMenu(id)
  59. {
  60.     if(!get_cvar_num("night_menu"))
  61.         return PLUGIN_CONTINUE
  62.  
  63.     new Hours[3], HourWork[18] = {23, 00, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  64.     get_time("%H", Hours, sizeof(Hours)-1)
  65.     freeaccele = false
  66.     depbhop[id] = false
  67.     for(new i = 0; i <= 17; i++)
  68.     {
  69.         if(str_to_num(Hours) == HourWork[i])
  70.             freeaccele = true
  71.     }
  72.     if(!Bunny_Hop[id] && freeaccele)
  73.         depbhop[id] = true
  74.  
  75.     new menu, text[128], Time[32]
  76.     get_time("%H:%M", Time, charsmax(Time))
  77.    
  78.     if(get_user_flags(id) & FLAG_VIP)
  79.         formatex(text, charsmax(text), "\yНочное меню^n\dВремя сервера: \r%s^n\dТы: \rVIP^n\dМеню доступно", Time)
  80.     else
  81.         formatex(text, charsmax(text), "\yНочное меню^n\dВремя сервера: \r%s^n\dВсе функции работют с \r23:00 \dдо \r10:00", Time)
  82.     menu = menu_create(text, "NightMenu_Func")
  83.  
  84.  
  85.     formatex(text, charsmax(text), "Распрыг: %s", Bunny_Hop[id] ? "\yВкл" : "\rВыкл")
  86.     menu_additem(menu, text, "1", 0)
  87.  
  88.     if(get_user_flags(id) & FLAG_VIP)
  89.     {
  90.         formatex(text, charsmax(text), "Скорость: %s", Speed[id] ? "\yВкл" : "\rВыкл")
  91.         menu_additem(menu, text, "2", 0)
  92.    
  93.         formatex(text, charsmax(text), "Гравитация: %s", Gravity[id] ? "\yВкл" : "\rВыкл")
  94.         menu_additem(menu, text, "3", 0)
  95.    
  96.         formatex(text, charsmax(text), "Свечение: %s", Render[id] ? "\yВкл" : "\rВыкл")
  97.         menu_additem(menu, text, "4", 0)
  98.    
  99.         if(!Bunny_Hop[id])
  100.             menu_additem(menu, "Ускоритель: \rВключите распрыг", "5", ADMIN_ADMIN)
  101.         else
  102.         {
  103.             formatex(text, charsmax(text), "Ускоритель: %s", FastSpeed[id] ? "\yВкл" : "\rВыкл")
  104.             menu_additem(menu, text, "5", 0)
  105.         }
  106.  
  107.         formatex(text, charsmax(text), "Дв.прыжок: %s", Twojump[id] ? "\yВкл" : "\rВыкл")
  108.         menu_additem(menu, text, "6", 0)
  109.     }
  110.     else if(get_user_flags(id) & FLAG_ADMIN)
  111.     {
  112.         menu_additem(menu, "Скорость: \rНедоступна", "2", ADMIN_ADMIN)
  113.         menu_additem(menu, "Гравитация: \rНедоступна", "3", ADMIN_ADMIN)
  114.         menu_additem(menu, "Свечение: \rНедоступно", "4", ADMIN_ADMIN)
  115.    
  116.         if(!Bunny_Hop[id])
  117.             menu_additem(menu, "Ускоритель: \rВключите распрыг", "5", ADMIN_ADMIN)
  118.         else
  119.         {
  120.             formatex(text, charsmax(text), "Ускоритель: %s", FastSpeed[id] ? "\yВкл" : "\rВыкл")
  121.             menu_additem(menu, text, "5", 0)
  122.         }
  123.  
  124.         menu_additem(menu, "Дв.прыжок: \rНедоступен", "6", ADMIN_ADMIN)
  125.     }
  126.     else
  127.     {
  128.         if(freeaccele)
  129.         {
  130.             formatex(text, charsmax(text), "Скорость: %s", Speed[id] ? "\yВкл" : "\rВыкл")
  131.             menu_additem(menu, text, "2", 0)
  132.    
  133.             formatex(text, charsmax(text), "Гравитация: %s", Gravity[id] ? "\yВкл" : "\rВыкл")
  134.             menu_additem(menu, text, "3", 0)
  135.    
  136.             formatex(text, charsmax(text), "Свечение: %s", Render[id] ? "\yВкл" : "\rВыкл")
  137.             menu_additem(menu, text, "4", 0)
  138.    
  139.             if(!Bunny_Hop[id])
  140.                 menu_additem(menu, "Ускоритель: \rВключите распрыг", "5", ADMIN_ADMIN)
  141.             else
  142.             {
  143.                 formatex(text, charsmax(text), "Ускоритель: %s", FastSpeed[id] ? "\yВкл" : "\rВыкл")
  144.                 menu_additem(menu, text, "5", 0)
  145.             }
  146.  
  147.             formatex(text, charsmax(text), "Дв.прыжок: %s", Twojump[id] ? "\yВкл" : "\rВыкл")
  148.             menu_additem(menu, text, "6", 0)
  149.         }
  150.         else
  151.         {
  152.             menu_additem(menu, "Скорость: \rНедоступна", "2", ADMIN_ADMIN)
  153.             menu_additem(menu, "Гравитация: \rНедоступна", "3", ADMIN_ADMIN)
  154.             menu_additem(menu, "Свечение: \rНедоступно", "4", ADMIN_ADMIN)
  155.             menu_additem(menu, "Ускоритель: \rНедоступен", "5", ADMIN_ADMIN)
  156.             menu_additem(menu, "Дв.прыжок: \rНедоступен", "6", ADMIN_ADMIN)
  157.         }
  158.     }
  159.  
  160.     menu_setprop(menu, MPROP_EXITNAME, "Выход")
  161.     menu_display(id, menu, 0)      
  162.     return PLUGIN_HANDLED
  163. }
  164.  
  165. public NightMenu_Func(id, menu, item)
  166. {
  167.     if(item == MENU_EXIT)
  168.     {
  169.         menu_destroy(menu)
  170.         return PLUGIN_HANDLED
  171.     }
  172.     new s_Data[6], s_Name[64], i_Access, i_Callback
  173.     menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
  174.     new key = str_to_num(s_Data)
  175.     switch(key)
  176.     {
  177.         case 1:
  178.         {
  179.             switch(Bunny_Hop[id])
  180.             {
  181.                 case false:
  182.                 {
  183.                     Bunny_Hop[id] = true
  184.                 }
  185.                 case true:
  186.                 {
  187.                     depbhop[id] = true
  188.                     FastSpeed[id] = false
  189.                     Bunny_Hop[id] = false
  190.                 }
  191.             }
  192.         }
  193.  
  194.         case 2:
  195.         {
  196.             switch(Speed[id])
  197.             {
  198.                 case false:
  199.                 {
  200.                     fm_set_user_maxspeed(id, 400.0)
  201.                     Speed[id] = true
  202.                     NoSpeed[id] = true
  203.                 }
  204.                 case true:
  205.                 {
  206.                     fm_set_user_maxspeed(id, 250.0)
  207.                     Speed[id] = false
  208.                     NoSpeed[id] = false
  209.                 }
  210.             }
  211.         }
  212.  
  213.         case 3:
  214.         {
  215.             switch(Gravity[id])
  216.             {
  217.                 case false:
  218.                 {
  219.                     fm_set_user_gravity(id, 0.5)
  220.                     Gravity[id] = true
  221.                 }
  222.                 case true:
  223.                 {
  224.                     fm_set_user_gravity(id, 0.0)
  225.                     Gravity[id] = false
  226.                 }
  227.             }
  228.         }
  229.  
  230.         case 4:
  231.         {
  232.             switch(Render[id])
  233.             {
  234.                 case false:
  235.                 {
  236.                     fm_set_user_rendering(id,kRenderFxGlowShell, random_num(0, 255), random_num(0, 255), random_num(0, 255),kRenderNormal,25)
  237.                     Render[id] = true
  238.                 }
  239.                 case true:
  240.                 {
  241.                     fm_set_user_rendering(id)
  242.                     Render[id] = false
  243.                 }
  244.             }
  245.         }
  246.  
  247.         case 5: FastSpeed[id] = FastSpeed[id] ? false : true
  248.  
  249.         case 6: Twojump[id] = Twojump[id] ? false : true
  250.     }
  251.     NightMenu(id)
  252.     return PLUGIN_HANDLED
  253. }
  254.  
  255. public client_PreThink(id)
  256. {  
  257.     if(!get_cvar_num("night_menu"))
  258.         return PLUGIN_CONTINUE
  259.  
  260.     entity_set_float(id, EV_FL_fuser2, 0.0)        
  261.     if(entity_get_int(id, EV_INT_button) & 2)
  262.     {    
  263.         new flags = entity_get_int(id, EV_INT_flags)
  264.         if(flags & FL_WATERJUMP)
  265.             return PLUGIN_CONTINUE
  266.         if(entity_get_int(id, EV_INT_waterlevel) >= 2)
  267.             return PLUGIN_CONTINUE
  268.         if(!(flags & FL_ONGROUND))
  269.             return PLUGIN_CONTINUE
  270.  
  271.         new Float:vecVelocity[3]
  272.         entity_get_vector(id, EV_VEC_velocity, vecVelocity)
  273.  
  274.         if(FastSpeed[id])
  275.         {
  276.             vecVelocity[0] *= 1.20
  277.             vecVelocity[1] *= 1.20
  278.         }
  279.  
  280.         if(Bunny_Hop[id])  
  281.             vecVelocity[2] += 250.0
  282.            
  283.         entity_set_vector(id, EV_VEC_velocity, vecVelocity)
  284.         entity_set_int(id, EV_INT_gaitsequence, 6)
  285.     }
  286.     return PLUGIN_CONTINUE
  287. }
  288.  
  289. public PostThink(id)
  290. {
  291.     if(get_cvar_num("night_menu"))
  292.     {
  293.         if(Twojump[id])  
  294.         {
  295.             if(!is_user_alive(id)) return PLUGIN_CONTINUE
  296.    
  297.             if(dojump[id] == true)
  298.             {
  299.                 new Float:velocity[3]  
  300.                 pev(id, pev_velocity, velocity)
  301.                 velocity[2] = random_float(295.0,305.0)
  302.                 set_pev(id, pev_velocity, velocity)
  303.                 dojump[id] = false
  304.                 return PLUGIN_CONTINUE
  305.             }
  306.         }
  307.     }
  308.     return PLUGIN_CONTINUE
  309. }
  310.  
  311. public PreThink(id)
  312. {
  313.     if(get_cvar_num("night_menu"))
  314.     {
  315.         if(Twojump[id])  
  316.         {
  317.             if(!is_user_alive(id)) return PLUGIN_CONTINUE
  318.    
  319.             new nbut = pev(id, pev_button)
  320.             new obut = pev(id, pev_oldbuttons)
  321.             if((nbut & IN_JUMP) && !(pev(id, pev_flags) & FL_ONGROUND) && !(obut & IN_JUMP))
  322.             {
  323.                 if(jumpnum[id] < 1)
  324.                 {
  325.                     dojump[id] = true
  326.                     jumpnum[id]++
  327.                     return PLUGIN_CONTINUE
  328.                 }
  329.             }
  330.             if((nbut & IN_JUMP) && (pev(id, pev_flags) & FL_ONGROUND))
  331.             {
  332.                 jumpnum[id] = 0
  333.                 return PLUGIN_CONTINUE
  334.             }
  335.         }
  336.     }
  337.     return PLUGIN_CONTINUE
  338. }
  339.  
  340. public client_connect(id)
  341. {
  342.     Bunny_Hop[id] = false
  343.     FastSpeed[id] = false
  344.     Speed[id] = false
  345.     Gravity[id] = false
  346.     Render[id] = false
  347.     Twojump[id] = false
  348. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement