plugin errors

Въпроси и проблеми свързани с AMXModX.
Аватар
esc-Fiv3
Извън линия
Foreigner
Foreigner
Мнения: 110
Регистриран на: 24 Ное 2018, 19:19
Се отблагодари: 16 пъти

plugin errors

Мнение от esc-Fiv3 » 08 Дек 2018, 17:25

Hi! Sometimes this is what happens to my server: I'm connecting to it and after that I can't choose a team, I can't see who is playing on the server, everything is stuck. And not only for me. I tried to find the problem and never think that this plugin can be a problem. Could these errors to make all of this things?

Код за потвърждение: Избери целия код

L 11/26/2018 - 16:47:21: Start of error session.
L 11/26/2018 - 16:47:21: Info (map "mini_dust2_winter") (file "addons/amxmodx/logs/error_20181126.log")
L 11/26/2018 - 16:47:21: [FUN] Invalid player 3
L 11/26/2018 - 16:47:21: [AMXX] Run time error 10 (plugin "north_gifts.amxx") (native "set_user_gravity") - debug not enabled!
L 11/26/2018 - 16:47:21: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

L 12/07/2018 - 02:16:52: [FUN] Invalid player 1
L 12/07/2018 - 02:16:52: [AMXX] Displaying debug trace (plugin "north_gifts.amxx")
L 12/07/2018 - 02:16:52: [AMXX] Run time error 10: native error (native "set_user_footsteps")
L 12/07/2018 - 02:16:52: [AMXX]    [0] north_gifts.sma::fw_PlayerSpawn (line 169)

L 12/07/2018 - 23:06:15: [FUN] Invalid player 4
L 12/07/2018 - 23:06:15: [AMXX] Displaying debug trace (plugin "north_gifts.amxx")
L 12/07/2018 - 23:06:15: [AMXX] Run time error 10: native error (native "set_user_gravity")
L 12/07/2018 - 23:06:15: [AMXX]    [0] north_gifts.sma::fw_PlayerSpawn (line 163)
Последно промяна от 1fRaNkkK на 08 Дек 2018, 19:26, променено общо 1 път.
Причина: Moved

Аватар
hackera457
Извън линия
Потребител
Потребител
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

plugin errors

Мнение от hackera457 » 08 Дек 2018, 19:51

Upload .sma of plugin
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
esc-Fiv3
Извън линия
Foreigner
Foreigner
Мнения: 110
Регистриран на: 24 Ное 2018, 19:19
Се отблагодари: 16 пъти

plugin errors

Мнение от esc-Fiv3 » 08 Дек 2018, 19:57

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>
#include <WPMGPrintChatColor>
 
#define PLUGIN "Gifts"
#define VERSION "0.8.1"
#define AUTHOR "Psycrow"
 
#define is_entity_player(%1)   (1<=%1<=g_maxPlayers)
#define PRESENT_CLASSNAME   "north_gift"
#define pev_lifes      pev_euser1
 
#define MODEL_PRESENT       "models/north/north_box.mdl"
#define MODEL_SKINS       3
#define MODEL_SUBMODELS    5
 
#define MAX_MONEY       16000 // Максимальное кол-во денег у игрока
 
#if cellbits == 32
   #define OFFSET_CSMONEY 115
#else
   #define OFFSET_CSMONEY 140
#endif
 
new
   g_msgMoney,
   g_infoTarget,
   g_maxPlayers,
   g_menuId = -1, 
   bool: g_registration,
   g_totalGifts,                   //Кол-во загруженных подарков на карте
   g_get_round_times[33],               //Сколько раз игрок поднял подарков за раунд
   g_get_game_times[33],               //Сколько раз игрок поднял подарков за игру
   g_disconnections,               //Сколько игроков покинуло сервер
   bool: g_have_speed[33],               //Имеет ли игрок добавленную скорость
   bool: g_have_gravity[33],            //Имеет ли игрок добавленную гравитацию
   bool: g_have_sw[33],               //Имеет ли игрок заглушенные шаги
   bool: g_save_cpl,               //Изменения в расположении подарков
   Float: g_massage_rate[33],            //Ограничение оповещений о попытке собрать подарок ограниченному игроку
 
   Array:g_gift_id,               //Индексы подарков
   Array:g_gift_x,
   Array:g_gift_y,
   Array:g_gift_z,
   Array:g_plr_steamid,
   Array:g_plr_times
 
 
public plugin_precache()
{
   precache_model(MODEL_PRESENT)
}
 
public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
    
   register_cvar("cv_gift_access","a")       // Флаг доступа к меню
   register_cvar("cv_gift_money_min","1000")    // Минимальная награда за собрынный подарок
   register_cvar("cv_gift_money_max","5000")    // Максимальная награда за собрынный подарок
   register_cvar("cv_gift_silent_walk","1")    // Добавить ли в подарки бесшумный бег
   register_cvar("cv_gift_gravitation","0.5")    // Значение гравитации. 0.0 - убрать такой вид подарка
   register_cvar("cv_gift_speed","300.0")       // Значение скорости. 0.0 - убрать такой вид подарка
   register_cvar("cv_gift_HE","2")       // Сколько HE гранат можно получить в подарках. 0 - убрать такой вид подарка
   register_cvar("cv_gift_health","50")       // Сколько HP можно получить в подарках. 0 - убрать такой вид подарка
   register_cvar("cv_gift_timerate","20.0")    // Сколько секунд до появление подарка
   register_cvar("cv_gift_get_times_round","1")    // Сколько максимум можно собрать подарков за раундов. 0 - снимает ограничение
   register_cvar("cv_gift_get_times_game","0")    // Сколько максимум можно собрать подарков за игру (карту). 0 - снимает ограничение
   register_cvar("cv_gift_lifes","0")       // Сколько раз может появиться подарок в одном и том же месте (0 - неограниченно, 1 - после сбора больше не появляеться...)
    
   register_clcmd("say /gift", "gift_menu")
   register_clcmd("say_team /gift", "gift_menu" )
   register_clcmd("say /gifts", "gift_menu" )
   register_clcmd("say_team /gifts", "gift_menu" )
    
   g_infoTarget = engfunc(EngFunc_AllocString, "info_target")
}
 
public plugin_cfg()
{
   new map[32]
   get_mapname(map, charsmax(map))
   formatex(map, charsmax(map),"%s.ini",map)
    
   new cfgDir[64], iDir, iFile[128]
   get_configsdir(cfgDir, charsmax(cfgDir))
   formatex(cfgDir, charsmax(cfgDir), "%s/north_gifts", cfgDir)
    
   iDir = open_dir(cfgDir, iFile, charsmax(iFile))
    
   if(iDir)
   {
      while(next_file(iDir, iFile, charsmax(iFile)))
      {
         if (iFile[0] == '.')
            continue
             
         if(equal(map, iFile))
         {
            format(iFile, 128, "%s/%s", cfgDir, iFile)
            get_gifts(iFile)
            break
         }
      }
   }
   else server_print("[%s] Gifts was not loaded", PLUGIN)   
}
 
public client_putinserver(id)
{
   if(!g_registration) return
    
   if(get_cvar_num("cv_gift_get_times_game"))
   {
      new steamId[32], arraySteamId[32]
      get_user_authid(id, steamId, 31)
       
      for(new i = 0; i < g_disconnections; i++)
      {
         ArrayGetString(g_plr_steamid, i, arraySteamId, 31)
         if(equal(steamId, arraySteamId))
         {
            g_get_game_times[id] = ArrayGetCell(g_plr_times, i)
            return
         }
      }
      g_get_game_times[id] = 0
   }
}
 
public client_disconnect(id)
{
   if(!g_registration) return
    
   if(get_cvar_num("cv_gift_get_times_game"))
   {   
      new steamId[32], arraySteamId[32]
      get_user_authid(id, steamId, 31)
       
      for(new i = 0; i < g_disconnections; i++)
      {
         ArrayGetString(g_plr_steamid, i, arraySteamId, 31)         
         if(equal(steamId, arraySteamId))
         {            
            ArraySetCell(g_plr_times, i, g_get_game_times[id])
            return
         }
      }
       
      ArrayPushString(g_plr_steamid, steamId)
      ArrayPushCell(g_plr_times, g_get_game_times[id])
      g_disconnections++
   }
}
 
public fw_PlayerSpawn(id)
{      
   if(g_have_gravity[id])
   {
      set_user_gravity(id)
      g_have_gravity[id] = false
   }
    
   if(g_have_sw[id])
   {
      set_user_footsteps(id, 0)
      g_have_sw[id] = false
   }
    
   g_have_speed[id] = false
}
 
public CurWeapon(id)
{
   if(g_have_speed[id])
      set_user_maxspeed(id, get_cvar_float("cv_gift_speed"))
}
 
public fw_RoundStart()
{
   for(new i = 1; i <= g_maxPlayers; i++)
      g_get_round_times[i] = 0  
    
   new lifes = get_cvar_num("cv_gift_lifes")
   if(lifes)
   {
      new ent
      while((ent = fm_find_ent_by_class(ent, PRESENT_CLASSNAME)))
         set_pev(ent, pev_lifes, lifes)      
   }
}
 
public fw_TouchGift(ent, id)
{   
   if(!is_entity_player(id))
      return
          
   if(g_massage_rate[id] > get_gametime() || !is_user_alive(id) || !pev_valid(ent))
      return
       
   static className[32]
   pev(ent, pev_classname, className, 31)
   if(!equal(className, PRESENT_CLASSNAME))
      return
       
   new times = get_cvar_num("cv_gift_get_times_round")
   if(times && g_get_round_times[id] >= times)
   {
      PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou have reached the limit of !ggifts !yper round", PLUGIN)
      g_massage_rate[id] = get_gametime() + 3.0
      return
   }
    
   times = get_cvar_num("cv_gift_get_times_game")
   if(times && g_get_game_times[id] >= times)
   {
      PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou have reached the limit of !ggifts !yper game", PLUGIN)
      g_massage_rate[id] = get_gametime() + 3.0
      return
   }
                
   engfunc(EngFunc_SetModel, ent, MODEL_PRESENT)
   set_pev(ent, pev_skin, random_num(0, MODEL_SKINS - 1))
   set_pev(ent, pev_body, random_num(0, MODEL_SUBMODELS - 1))
          
   hide_gift(ent)
   give_gift(id)
          
   if(get_cvar_num("cv_gift_get_times_game")) g_get_game_times[id]++
   if(get_cvar_num("cv_gift_get_times_round")) g_get_round_times[id]++
   if(get_cvar_num("cv_gift_lifes")) set_pev(ent, pev_lifes, pev(ent, pev_lifes) - 1)
}
 
public set_gift()
{
   if(!g_totalGifts) return
       
   new valid_gifts_count = 0
   new ent, lifes_active = get_cvar_num("cv_gift_lifes")
   while((ent = fm_find_ent_by_class(ent, PRESENT_CLASSNAME)))
   {      
      if(pev(ent, pev_solid) != SOLID_NOT || (lifes_active && !pev(ent, pev_lifes)))
         valid_gifts_count++
   }            
       
   if(valid_gifts_count == g_totalGifts) return
    
   new bool: check = false, id
   while(check == false)
   {
      id = random_num(0, g_totalGifts - 1)
      ent = ArrayGetCell(g_gift_id ,id)
      if(pev(ent, pev_solid) == SOLID_NOT && (!lifes_active || pev(ent, pev_lifes)))
      {
         set_pev(ent, pev_solid, SOLID_TRIGGER)         
         unhide_gift(ent)
         check = true
      }
   }
}
 
public gift_menu(id)
{
   if(!is_user_access(id))
   {
      PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou are not authorised to use this function", PLUGIN) 
      return
   }
    
   new menu_name[90]
   format(menu_name, 89, "\rAranjament de cadouri^n\dCadouri curente: %d", g_totalGifts + 1)
 
   g_menuId = menu_create(menu_name, "menu_handler")
    
   menu_additem(g_menuId, "\wAdauga cadou", "1", 0)
    
   if(!g_totalGifts)
   {
      menu_additem(g_menuId, "\dElimina cadourile anterioare", "2", 0)
      menu_additem(g_menuId, "\dElimina toate cadourile", "3", 0)
   }
   else
   {
      menu_additem(g_menuId, "\wElimina cadourile anterioare", "2", 0)
      menu_additem(g_menuId, "\wElimina toate cadourile", "3", 0)
   }
       
   if(!g_save_cpl)
      menu_additem(g_menuId, "\dSalveaza modificarile", "4", 0)
   else menu_additem(g_menuId, "\wSalveaza modificarile", "4", 0)
 
   menu_setprop(g_menuId, MPROP_EXIT, MEXIT_ALL)
   menu_setprop(g_menuId, MPROP_EXITNAME, "\yIesire")
   menu_display(id, g_menuId, 0)
    
   new keys
   get_user_menu(id, g_menuId, keys)
    
   for(new i = 0; i < g_totalGifts; i++)
      unhide_gift(ArrayGetCell(g_gift_id, i))
}
 
public menu_handler(id, menu, item)
{
   if(item == MENU_EXIT)
   {
      new ent
      for(new i = 0; i < g_totalGifts; i++)
      {
         ent = ArrayGetCell(g_gift_id, i)
         if(pev(ent, pev_solid) == SOLID_NOT) hide_gift(ent)
      }
    
      menu_destroy(menu)
      return PLUGIN_HANDLED
   }
    
   switch(item)
   {
      case 0:
      {   
         new Float:fOrigin[3]
         fm_get_aim_origin(id, fOrigin)
          
         if(create_gift(fOrigin))
            g_save_cpl = true
             
         menu_destroy(menu)
         gift_menu(id)
      }
      case 1:
      {
         if(!g_totalGifts)
         {
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yNu exista entitati salvate", PLUGIN) 
            menu_destroy(menu)
            gift_menu(id)
            return PLUGIN_HANDLED
         }
          
         g_save_cpl = true
         PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yCadoul a fost sters", PLUGIN)
          
          
         g_totalGifts--
         engfunc(EngFunc_RemoveEntity, ArrayGetCell(g_gift_id, g_totalGifts))
         ArrayDeleteItem(g_gift_id, g_totalGifts)
         ArrayDeleteItem(g_gift_x, g_totalGifts)
         ArrayDeleteItem(g_gift_y, g_totalGifts)
         ArrayDeleteItem(g_gift_z, g_totalGifts)
             
         menu_destroy(menu)
         gift_menu(id)
      }
      case 2:
      {
         if(!g_totalGifts)
         {
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yNu exista entitati salvate", PLUGIN) 
            menu_destroy(menu)
            gift_menu(id)
            return PLUGIN_HANDLED
         }
          
         g_save_cpl = true
         PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yAu fost eliminate !g%d !ycadouri", PLUGIN, g_totalGifts)
          
         new ent
         while((ent = fm_find_ent_by_class(ent, PRESENT_CLASSNAME)))
            engfunc(EngFunc_RemoveEntity, ent)
             
         g_totalGifts = 0
          
         ArrayClear(g_gift_id) 
         ArrayClear(g_gift_x) 
         ArrayClear(g_gift_y) 
         ArrayClear(g_gift_z) 
          
         menu_destroy(menu)
         gift_menu(id)         
 
      }
      case 3:
      {
         if(!g_save_cpl)
         {
            menu_destroy(menu)
            gift_menu(id)
            return PLUGIN_HANDLED
         }
          
         g_save_cpl = false
          
         PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !t%s", PLUGIN, save_gifts() ? "Salvat" : "Nu este salvat")
          
         menu_destroy(menu)
         gift_menu(id)
      }
   }
   return PLUGIN_HANDLED
}
 
bool: save_gifts()
{
   new map[32]
   get_mapname(map, charsmax(map))
   formatex(map, charsmax(map), "%s.ini", map)
    
   new cfgDir[64], iFile[128]
   get_configsdir(cfgDir, charsmax(cfgDir))
   formatex(cfgDir, charsmax(cfgDir), "%s/north_gifts", cfgDir)
   formatex(iFile, charsmax(iFile), "%s/%s", cfgDir, map)
    
   if(!dir_exists(cfgDir))
      if(!mkdir(cfgDir))
         return false
    
   delete_file(iFile)
    
   if(!g_totalGifts)
      return true
    
   for(new i = 0; i < g_totalGifts; i++)
   {
      new text[128], Float:fOrigin[3], ent = ArrayGetCell(g_gift_id, i)
      pev(ent, pev_origin, fOrigin)
      format(text, charsmax(text),"^"%f^" ^"%f^" ^"%f^"",fOrigin[0], fOrigin[1], fOrigin[2])
      write_file(iFile, text, i) 
   }
    
   return true
}
 
get_gifts(const iFile[128])
{   
   new file = fopen(iFile, "rt")
    
   if(!file)
   {
      server_print("[%s] Gifts was not loaded", PLUGIN)
      return
   }
       
   while(file && !feof(file))
   {
      new sfLineData[512]
      fgets(file, sfLineData, charsmax(sfLineData))
          
      if(sfLineData[0] == ';')
         continue
          
      if(equal(sfLineData, ""))
         continue  
          
      new origins[3][32], Float: fOrigin[3]      
      parse(sfLineData, origins[0], 31, origins[1], 31, origins[2], 31)
       
      fOrigin[0] = str_to_float(origins[0])
      fOrigin[1] = str_to_float(origins[1])
      fOrigin[2] = str_to_float(origins[2])
       
      create_gift(fOrigin)
   }
    
   fclose(file)
    
   if(!g_totalGifts)
      server_print("[%s] Gifts was not loaded", PLUGIN)
   else if(g_totalGifts == 1)
      server_print("[%s] Loaded one gift", PLUGIN)
   else
      server_print("[%s] Loaded %d gifts", PLUGIN, g_totalGifts)
}
 
bool: create_gift(const Float: fOrigin[3])
{
   new ent = engfunc(EngFunc_CreateNamedEntity, g_infoTarget)
   if(!pev_valid(ent)) return false
    
   if(!g_registration)
   {   
      register_event("CurWeapon", "CurWeapon", "be","1=1")
      register_event("HLTV", "fw_RoundStart", "a", "1=0", "2=0")
       
      RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1)
      RegisterHamFromEntity(Ham_Touch, ent, "fw_TouchGift")
       
      set_task(get_cvar_float("cv_gift_timerate"), "set_gift", _, _, _, "b")
       
      g_gift_id = ArrayCreate()
      g_gift_x = ArrayCreate()
      g_gift_y = ArrayCreate()
      g_gift_z = ArrayCreate()
             
      if(get_cvar_num("cv_gift_get_times_game"))
      {
         g_plr_steamid = ArrayCreate(32)
         g_plr_times = ArrayCreate(32)
      }
       
      g_maxPlayers = get_maxplayers()
      g_msgMoney = get_user_msgid("Money")
       
      g_registration = true
       
      fw_RoundStart()
   }
       
   ArrayPushCell(g_gift_id, ent)
       
   ArrayPushCell(g_gift_x, fOrigin[0])
   ArrayPushCell(g_gift_y, fOrigin[1])
   ArrayPushCell(g_gift_z, fOrigin[2])
       
   engfunc(EngFunc_SetModel, ent, MODEL_PRESENT)
   set_pev(ent, pev_origin, fOrigin)
   set_pev(ent, pev_solid, SOLID_NOT)
   set_pev(ent, pev_movetype, MOVETYPE_FLY)
   set_pev(ent, pev_gravity, 1.0)
   set_pev(ent, pev_classname, PRESENT_CLASSNAME)
   set_pev(ent, pev_skin, random_num(0, MODEL_SKINS - 1))
   set_pev(ent, pev_body, random_num(0, MODEL_SUBMODELS - 1))
   engfunc(EngFunc_SetSize, ent, Float:{-15.0, -15.0, 0.0}, Float:{15.0, 15.0, 30.0})
             
   hide_gift(ent)
       
   g_totalGifts++
    
   return true
}
 
hide_gift(ent)
{
   set_pev(ent, pev_solid, SOLID_NOT)
   for(new i = 1; i <= g_maxPlayers; i++)
   {
      new mid, keys
      get_user_menu(i, mid, keys)
      if(mid == g_menuId)
      {
         fm_set_rendering(ent,  kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 150)
         return
      }
   }
   fm_set_rendering(ent,  kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)
}
 
unhide_gift(ent)
{
   if(pev(ent, pev_solid) == SOLID_NOT)
      fm_set_rendering(ent,  kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 150)
   else
      fm_set_rendering(ent,  kRenderFxGlowShell, random_num(0,255), random_num(0,255), random_num(0,255), kRenderNormal, 15)
}
 
give_gift(id) //Выдает случайный бонус с подарка. Добавьте case, если хотите доавить свой.
{
   static loopDestroy
   loopDestroy++
    
   if(loopDestroy > 20)
   {
      PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tCadou gol", PLUGIN) 
      loopDestroy = 0
      return
   }
    
   new max_random_gift = 6//Сколько видов бонусов в подарках
   switch(random_num(1, max_random_gift))
   {
      case 1:
      {
         new reward = random_num(get_cvar_num("cv_gift_money_min"), get_cvar_num("cv_gift_money_max"))
         new curr_money = get_pdata_int(id, OFFSET_CSMONEY)
         if(curr_money + reward > MAX_MONEY)
            reward = MAX_MONEY - curr_money
             
         if(reward)
         {
            set_pdata_int(id, OFFSET_CSMONEY, curr_money + reward)
          
            message_begin(MSG_ONE, g_msgMoney, _, id)
            write_long(curr_money + reward)
            write_byte(1)
            message_end()
          
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !g%d$", PLUGIN, reward) 
            loopDestroy = 0
         }
         else give_gift(id)      
      }
       
      case 2:
      {
         if(!g_have_sw[id] && !get_user_footsteps(id) && get_cvar_num("cv_gift_silent_walk"))
         {
            g_have_sw[id] = true
            set_user_footsteps(id)         
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !gSilentFootsteps", PLUGIN)
            loopDestroy = 0
         }
         else give_gift(id)
      }
       
      case 3:
      {
         new Float: gravity = get_cvar_float("cv_gift_gravitation")
         if(!g_have_gravity[id] && get_user_gravity(id) > gravity && gravity)
         {
            g_have_gravity[id] = true
            set_user_gravity(id, gravity)   
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !gGravity", PLUGIN)
            loopDestroy = 0
         }
         else give_gift(id)
      }
       
      case 4:
      {   
         new Float: speed = get_cvar_float("cv_gift_speed")
         if(!g_have_speed[id] && get_user_maxspeed(id) < speed  && speed)
         {
            g_have_speed[id] = true
            set_user_maxspeed(id, speed)         
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !gSpeed", PLUGIN)
            loopDestroy = 0
         }
         else give_gift(id)
      }
       
      case 5:
      {
         new hes = get_cvar_num("cv_gift_HE")
         if(hes)
         {
            if(!user_has_weapon(id, CSW_HEGRENADE))
            {
               fm_give_item(id, "weapon_hegrenade")
               cs_set_user_bpammo(id, CSW_HEGRENADE, hes)               
            } 
            else cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + hes)
             
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !ga set of grenades (%d HE)", PLUGIN, hes)
            loopDestroy = 0
         }
         else give_gift(id)
      }
       
      case 6:
      {
         new hp = get_cvar_num("cv_gift_health")
         if(hp)
         {
            fm_set_user_health(id, pev(id, pev_health) + hp)
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !gLife (%d hp)", PLUGIN, hp)
            loopDestroy = 0
         }
         else give_gift(id)
      }
      //case 7: тут по примерам выше
   }
}
 
bool: is_user_access(id)
{      
   new flag_access[24]
   get_cvar_string("cv_gift_access", flag_access, charsmax(flag_access))
    
   new flags = get_user_flags(id)
 
   if(contain(flag_access, "a") > -1 && (flags & ADMIN_IMMUNITY))
      return true
      
   if(contain(flag_access, "b") > -1 && (flags & ADMIN_RESERVATION))
      return true
      
   if(contain(flag_access, "c") > -1 && (flags & ADMIN_KICK))
      return true
      
   if(contain(flag_access, "d") > -1 && (flags & ADMIN_BAN))
      return true
      
   if(contain(flag_access, "e") > -1 && (flags & ADMIN_SLAY))
      return true
      
   if(contain(flag_access, "f") > -1 && (flags & ADMIN_MAP))
      return true
      
   if(contain(flag_access, "g") > -1 && (flags & ADMIN_CVAR))
      return true
      
   if(contain(flag_access, "h") > -1 && (flags & ADMIN_CFG))
      return true
      
   if(contain(flag_access, "i") > -1 && (flags & ADMIN_CHAT))
      return true
      
   if(contain(flag_access, "j") > -1 && (flags & ADMIN_VOTE))
      return true
    
   if(contain(flag_access, "k") > -1 && (flags & ADMIN_PASSWORD))
      return true
      
   if(contain(flag_access, "l") > -1 && (flags & ADMIN_RCON))
      return true
      
   if(contain(flag_access, "m") > -1 && (flags & ADMIN_LEVEL_A))
      return true
      
   if(contain(flag_access, "n") > -1 && (flags & ADMIN_LEVEL_B))
      return true
      
   if(contain(flag_access, "o") > -1 && (flags & ADMIN_LEVEL_C))
      return true
      
   if(contain(flag_access, "p") > -1 && (flags & ADMIN_LEVEL_D))
      return true
      
   if(contain(flag_access, "q") > -1 && (flags & ADMIN_LEVEL_E))
      return true
      
   if(contain(flag_access, "r") > -1 && (flags & ADMIN_LEVEL_F))
      return true
      
   if(contain(flag_access, "s") > -1 && (flags & ADMIN_LEVEL_G))
      return true
      
   if(contain(flag_access, "t") > -1 && (flags & ADMIN_LEVEL_H))
      return true
      
   if(contain(flag_access, "u") > -1 && (flags & ADMIN_MENU))
      return true
      
   if(contain(flag_access, "y") > -1 && (flags & ADMIN_ADMIN))
      return true
      
   if(contain(flag_access, "z") > -1 && (flags & ADMIN_USER))
      return true
      
   return false
}

Аватар
hackera457
Извън линия
Потребител
Потребител
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

plugin errors

Мнение от hackera457 » 09 Дек 2018, 12:20

Try now, the plugin is really bad coded

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>
#include <WPMGPrintChatColor>
 
#define PLUGIN "Gifts"
#define VERSION "0.8.1"
#define AUTHOR "Psycrow"
 
#define is_entity_player(%1)   (1<=%1<=g_maxPlayers)
#define PRESENT_CLASSNAME   "north_gift"
#define pev_lifes      pev_euser1
 
#define MODEL_PRESENT       "models/north/north_box.mdl"
#define MODEL_SKINS       3
#define MODEL_SUBMODELS    5
 
#define MAX_MONEY       16000 // Максимальное кол-во денег у игрока
 
#if cellbits == 32
   #define OFFSET_CSMONEY 115
#else
   #define OFFSET_CSMONEY 140
#endif
 
new
   g_msgMoney,
   g_infoTarget,
   g_maxPlayers,
   g_menuId = -1, 
   bool: g_registration,
   g_totalGifts,                   //Кол-во загруженных подарков на карте
   g_get_round_times[33],               //Сколько раз игрок поднял подарков за раунд
   g_get_game_times[33],               //Сколько раз игрок поднял подарков за игру
   g_disconnections,               //Сколько игроков покинуло сервер
   bool: g_have_speed[33],               //Имеет ли игрок добавленную скорость
   bool: g_have_gravity[33],            //Имеет ли игрок добавленную гравитацию
   bool: g_have_sw[33],               //Имеет ли игрок заглушенные шаги
   bool: g_save_cpl,               //Изменения в расположении подарков
   Float: g_massage_rate[33],            //Ограничение оповещений о попытке собрать подарок ограниченному игроку
 
   Array:g_gift_id,               //Индексы подарков
   Array:g_gift_x,
   Array:g_gift_y,
   Array:g_gift_z,
   Array:g_plr_steamid,
   Array:g_plr_times
 
 
public plugin_precache()
{
   precache_model(MODEL_PRESENT)
}
 
public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
    
   register_cvar("cv_gift_access","a")       // Флаг доступа к меню
   register_cvar("cv_gift_money_min","1000")    // Минимальная награда за собрынный подарок
   register_cvar("cv_gift_money_max","5000")    // Максимальная награда за собрынный подарок
   register_cvar("cv_gift_silent_walk","1")    // Добавить ли в подарки бесшумный бег
   register_cvar("cv_gift_gravitation","0.5")    // Значение гравитации. 0.0 - убрать такой вид подарка
   register_cvar("cv_gift_speed","300.0")       // Значение скорости. 0.0 - убрать такой вид подарка
   register_cvar("cv_gift_HE","2")       // Сколько HE гранат можно получить в подарках. 0 - убрать такой вид подарка
   register_cvar("cv_gift_health","50")       // Сколько HP можно получить в подарках. 0 - убрать такой вид подарка
   register_cvar("cv_gift_timerate","20.0")    // Сколько секунд до появление подарка
   register_cvar("cv_gift_get_times_round","1")    // Сколько максимум можно собрать подарков за раундов. 0 - снимает ограничение
   register_cvar("cv_gift_get_times_game","0")    // Сколько максимум можно собрать подарков за игру (карту). 0 - снимает ограничение
   register_cvar("cv_gift_lifes","0")       // Сколько раз может появиться подарок в одном и том же месте (0 - неограниченно, 1 - после сбора больше не появляеться...)
    
   register_clcmd("say /gift", "gift_menu")
   register_clcmd("say_team /gift", "gift_menu" )
   register_clcmd("say /gifts", "gift_menu" )
   register_clcmd("say_team /gifts", "gift_menu" )
   
   register_event("CurWeapon", "CurWeapon", "be","1=1")
   register_event("HLTV", "fw_RoundStart", "a", "1=0", "2=0")
       
   RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1)
   
       
   set_task(get_cvar_float("cv_gift_timerate"), "set_gift", _, _, _, "b")
       
   g_gift_id = ArrayCreate()
   g_gift_x = ArrayCreate()
   g_gift_y = ArrayCreate()
   g_gift_z = ArrayCreate()
             
   if(get_cvar_num("cv_gift_get_times_game"))
   {
      g_plr_steamid = ArrayCreate(32)
      g_plr_times = ArrayCreate(32)
   }
       
   g_maxPlayers = get_maxplayers()
   g_msgMoney = get_user_msgid("Money")
    
   g_infoTarget = engfunc(EngFunc_AllocString, "info_target")
   RegisterHamFromEntity(Ham_Touch, g_infoTarget, "fw_TouchGift")
}
 
public plugin_cfg()
{
   new map[32]
   get_mapname(map, charsmax(map))
   formatex(map, charsmax(map),"%s.ini",map)
    
   new cfgDir[64], iDir, iFile[128]
   get_configsdir(cfgDir, charsmax(cfgDir))
   formatex(cfgDir, charsmax(cfgDir), "%s/north_gifts", cfgDir)
    
   iDir = open_dir(cfgDir, iFile, charsmax(iFile))
    
   if(iDir)
   {
      while(next_file(iDir, iFile, charsmax(iFile)))
      {
         if (iFile[0] == '.')
            continue
             
         if(equal(map, iFile))
         {
            format(iFile, 128, "%s/%s", cfgDir, iFile)
            get_gifts(iFile)
            break
         }
      }
   }
   else server_print("[%s] Gifts was not loaded", PLUGIN)   
}
 
public client_putinserver(id)
{
   if(!g_registration) return
    
   if(get_cvar_num("cv_gift_get_times_game"))
   {
      new steamId[32], arraySteamId[32]
      get_user_authid(id, steamId, 31)
       
      for(new i = 0; i < g_disconnections; i++)
      {
         ArrayGetString(g_plr_steamid, i, arraySteamId, 31)
         if(equal(steamId, arraySteamId))
         {
            g_get_game_times[id] = ArrayGetCell(g_plr_times, i)
            return
         }
      }
      g_get_game_times[id] = 0
   }
}
 
public client_disconnected(id)
{
   if(!g_registration) return
    
   if(get_cvar_num("cv_gift_get_times_game"))
   {   
      new steamId[32], arraySteamId[32]
      get_user_authid(id, steamId, 31)
       
      for(new i = 0; i < g_disconnections; i++)
      {
         ArrayGetString(g_plr_steamid, i, arraySteamId, 31)         
         if(equal(steamId, arraySteamId))
         {            
            ArraySetCell(g_plr_times, i, g_get_game_times[id])
            return
         }
      }
       
      ArrayPushString(g_plr_steamid, steamId)
      ArrayPushCell(g_plr_times, g_get_game_times[id])
      g_disconnections++
   }
}
 
public fw_PlayerSpawn(id)
{      
   if(g_have_gravity[id])
   {
      set_user_gravity(id)
      g_have_gravity[id] = false
   }
    
   if(g_have_sw[id])
   {
      set_user_footsteps(id, 0)
      g_have_sw[id] = false
   }
    
   g_have_speed[id] = false
}
 
public CurWeapon(id)
{
   if(g_have_speed[id])
      set_user_maxspeed(id, get_cvar_float("cv_gift_speed"))
}
 
public fw_RoundStart()
{
   for(new i = 1; i <= g_maxPlayers; i++)
      g_get_round_times[i] = 0  
    
   new lifes = get_cvar_num("cv_gift_lifes")
   if(lifes)
   {
      new ent
      while((ent = fm_find_ent_by_class(ent, PRESENT_CLASSNAME)))
         set_pev(ent, pev_lifes, lifes)      
   }
}
 
public fw_TouchGift(ent, id)
{   
   if(!is_entity_player(id))
      return
          
   if(g_massage_rate[id] > get_gametime() || !is_user_alive(id) || !pev_valid(ent))
      return
       
   static className[32]
   pev(ent, pev_classname, className, 31)
   if(!equal(className, PRESENT_CLASSNAME))
      return
       
   new times = get_cvar_num("cv_gift_get_times_round")
   if(times && g_get_round_times[id] >= times)
   {
      PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou have reached the limit of !ggifts !yper round", PLUGIN)
      g_massage_rate[id] = get_gametime() + 3.0
      return
   }
    
   times = get_cvar_num("cv_gift_get_times_game")
   if(times && g_get_game_times[id] >= times)
   {
      PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou have reached the limit of !ggifts !yper game", PLUGIN)
      g_massage_rate[id] = get_gametime() + 3.0
      return
   }
                
   engfunc(EngFunc_SetModel, ent, MODEL_PRESENT)
   set_pev(ent, pev_skin, random_num(0, MODEL_SKINS - 1))
   set_pev(ent, pev_body, random_num(0, MODEL_SUBMODELS - 1))
          
   hide_gift(ent)
   give_gift(id)
          
   if(get_cvar_num("cv_gift_get_times_game")) g_get_game_times[id]++
   if(get_cvar_num("cv_gift_get_times_round")) g_get_round_times[id]++
   if(get_cvar_num("cv_gift_lifes")) set_pev(ent, pev_lifes, pev(ent, pev_lifes) - 1)
}
 
public set_gift()
{
   if(!g_totalGifts) return
       
   new valid_gifts_count = 0
   new ent, lifes_active = get_cvar_num("cv_gift_lifes")
   while((ent = fm_find_ent_by_class(ent, PRESENT_CLASSNAME)))
   {      
      if(pev(ent, pev_solid) != SOLID_NOT || (lifes_active && !pev(ent, pev_lifes)))
         valid_gifts_count++
   }            
       
   if(valid_gifts_count == g_totalGifts) return
    
   new bool: check = false, id
   while(check == false)
   {
      id = random_num(0, g_totalGifts - 1)
      ent = ArrayGetCell(g_gift_id ,id)
      if(pev(ent, pev_solid) == SOLID_NOT && (!lifes_active || pev(ent, pev_lifes)))
      {
         set_pev(ent, pev_solid, SOLID_TRIGGER)         
         unhide_gift(ent)
         check = true
      }
   }
}
 
public gift_menu(id)
{
   if(!is_user_access(id))
   {
      PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou are not authorised to use this function", PLUGIN) 
      return
   }
    
   new menu_name[90]
   format(menu_name, 89, "\rAranjament de cadouri^n\dCadouri curente: %d", g_totalGifts + 1)
 
   g_menuId = menu_create(menu_name, "menu_handler")
    
   menu_additem(g_menuId, "\wAdauga cadou", "1", 0)
    
   if(!g_totalGifts)
   {
      menu_additem(g_menuId, "\dElimina cadourile anterioare", "2", 0)
      menu_additem(g_menuId, "\dElimina toate cadourile", "3", 0)
   }
   else
   {
      menu_additem(g_menuId, "\wElimina cadourile anterioare", "2", 0)
      menu_additem(g_menuId, "\wElimina toate cadourile", "3", 0)
   }
       
   if(!g_save_cpl)
      menu_additem(g_menuId, "\dSalveaza modificarile", "4", 0)
   else menu_additem(g_menuId, "\wSalveaza modificarile", "4", 0)
 
   menu_setprop(g_menuId, MPROP_EXIT, MEXIT_ALL)
   menu_setprop(g_menuId, MPROP_EXITNAME, "\yIesire")
   menu_display(id, g_menuId, 0)
    
   new keys
   get_user_menu(id, g_menuId, keys)
    
   for(new i = 0; i < g_totalGifts; i++)
      unhide_gift(ArrayGetCell(g_gift_id, i))
}
 
public menu_handler(id, menu, item)
{
   if(item == MENU_EXIT)
   {
      new ent
      for(new i = 0; i < g_totalGifts; i++)
      {
         ent = ArrayGetCell(g_gift_id, i)
         if(pev(ent, pev_solid) == SOLID_NOT) hide_gift(ent)
      }
    
      menu_destroy(menu)
      return PLUGIN_HANDLED
   }
    
   switch(item)
   {
      case 0:
      {   
         new Float:fOrigin[3]
         fm_get_aim_origin(id, fOrigin)
          
         if(create_gift(fOrigin))
            g_save_cpl = true
             
         menu_destroy(menu)
         gift_menu(id)
      }
      case 1:
      {
         if(!g_totalGifts)
         {
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yNu exista entitati salvate", PLUGIN) 
            menu_destroy(menu)
            gift_menu(id)
            return PLUGIN_HANDLED
         }
          
         g_save_cpl = true
         PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yCadoul a fost sters", PLUGIN)
          
          
         g_totalGifts--
         engfunc(EngFunc_RemoveEntity, ArrayGetCell(g_gift_id, g_totalGifts))
         ArrayDeleteItem(g_gift_id, g_totalGifts)
         ArrayDeleteItem(g_gift_x, g_totalGifts)
         ArrayDeleteItem(g_gift_y, g_totalGifts)
         ArrayDeleteItem(g_gift_z, g_totalGifts)
             
         menu_destroy(menu)
         gift_menu(id)
      }
      case 2:
      {
         if(!g_totalGifts)
         {
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yNu exista entitati salvate", PLUGIN) 
            menu_destroy(menu)
            gift_menu(id)
            return PLUGIN_HANDLED
         }
          
         g_save_cpl = true
         PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yAu fost eliminate !g%d !ycadouri", PLUGIN, g_totalGifts)
          
         new ent
         while((ent = fm_find_ent_by_class(ent, PRESENT_CLASSNAME)))
            engfunc(EngFunc_RemoveEntity, ent)
             
         g_totalGifts = 0
          
         ArrayClear(g_gift_id) 
         ArrayClear(g_gift_x) 
         ArrayClear(g_gift_y) 
         ArrayClear(g_gift_z) 
          
         menu_destroy(menu)
         gift_menu(id)         
 
      }
      case 3:
      {
         if(!g_save_cpl)
         {
            menu_destroy(menu)
            gift_menu(id)
            return PLUGIN_HANDLED
         }
          
         g_save_cpl = false
          
         PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !t%s", PLUGIN, save_gifts() ? "Salvat" : "Nu este salvat")
          
         menu_destroy(menu)
         gift_menu(id)
      }
   }
   return PLUGIN_HANDLED
}
 
bool: save_gifts()
{
   new map[32]
   get_mapname(map, charsmax(map))
   formatex(map, charsmax(map), "%s.ini", map)
    
   new cfgDir[64], iFile[128]
   get_configsdir(cfgDir, charsmax(cfgDir))
   formatex(cfgDir, charsmax(cfgDir), "%s/north_gifts", cfgDir)
   formatex(iFile, charsmax(iFile), "%s/%s", cfgDir, map)
    
   if(!dir_exists(cfgDir))
      if(!mkdir(cfgDir))
         return false
    
   delete_file(iFile)
    
   if(!g_totalGifts)
      return true
    
   for(new i = 0; i < g_totalGifts; i++)
   {
      new text[128], Float:fOrigin[3], ent = ArrayGetCell(g_gift_id, i)
      pev(ent, pev_origin, fOrigin)
      format(text, charsmax(text),"^"%f^" ^"%f^" ^"%f^"",fOrigin[0], fOrigin[1], fOrigin[2])
      write_file(iFile, text, i) 
   }
    
   return true
}
 
get_gifts(const iFile[128])
{   
   new file = fopen(iFile, "rt")
    
   if(!file)
   {
      server_print("[%s] Gifts was not loaded", PLUGIN)
      return
   }
       
   while(file && !feof(file))
   {
      new sfLineData[512]
      fgets(file, sfLineData, charsmax(sfLineData))
          
      if(sfLineData[0] == ';')
         continue
          
      if(equal(sfLineData, ""))
         continue  
          
      new origins[3][32], Float: fOrigin[3]      
      parse(sfLineData, origins[0], 31, origins[1], 31, origins[2], 31)
       
      fOrigin[0] = str_to_float(origins[0])
      fOrigin[1] = str_to_float(origins[1])
      fOrigin[2] = str_to_float(origins[2])
       
      create_gift(fOrigin)
   }
    
   fclose(file)
    
   if(!g_totalGifts)
      server_print("[%s] Gifts was not loaded", PLUGIN)
   else if(g_totalGifts == 1)
      server_print("[%s] Loaded one gift", PLUGIN)
   else
      server_print("[%s] Loaded %d gifts", PLUGIN, g_totalGifts)
}
 
bool: create_gift(const Float: fOrigin[3])
{
   new ent = engfunc(EngFunc_CreateNamedEntity, g_infoTarget)
   if(!pev_valid(ent)) return false
    
   /*if(!g_registration)
   {   
      register_event("CurWeapon", "CurWeapon", "be","1=1")
      register_event("HLTV", "fw_RoundStart", "a", "1=0", "2=0")
       
      RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1)
      RegisterHamFromEntity(Ham_Touch, ent, "fw_TouchGift")
       
      set_task(get_cvar_float("cv_gift_timerate"), "set_gift", _, _, _, "b")
       
      g_gift_id = ArrayCreate()
      g_gift_x = ArrayCreate()
      g_gift_y = ArrayCreate()
      g_gift_z = ArrayCreate()
             
      if(get_cvar_num("cv_gift_get_times_game"))
      {
         g_plr_steamid = ArrayCreate(32)
         g_plr_times = ArrayCreate(32)
      }
       
      g_maxPlayers = get_maxplayers()
      g_msgMoney = get_user_msgid("Money")
       
      g_registration = true
       
      fw_RoundStart()
   }*/
       
   ArrayPushCell(g_gift_id, ent)
       
   ArrayPushCell(g_gift_x, fOrigin[0])
   ArrayPushCell(g_gift_y, fOrigin[1])
   ArrayPushCell(g_gift_z, fOrigin[2])
       
   engfunc(EngFunc_SetModel, ent, MODEL_PRESENT)
   set_pev(ent, pev_origin, fOrigin)
   set_pev(ent, pev_solid, SOLID_NOT)
   set_pev(ent, pev_movetype, MOVETYPE_FLY)
   set_pev(ent, pev_gravity, 1.0)
   set_pev(ent, pev_classname, PRESENT_CLASSNAME)
   set_pev(ent, pev_skin, random_num(0, MODEL_SKINS - 1))
   set_pev(ent, pev_body, random_num(0, MODEL_SUBMODELS - 1))
   engfunc(EngFunc_SetSize, ent, Float:{-15.0, -15.0, 0.0}, Float:{15.0, 15.0, 30.0})
             
   hide_gift(ent)
       
   g_totalGifts++
    
   return true
}
 
hide_gift(ent)
{
   set_pev(ent, pev_solid, SOLID_NOT)
   for(new i = 1; i <= g_maxPlayers; i++)
   {
      new mid, keys
      get_user_menu(i, mid, keys)
      if(mid == g_menuId)
      {
         fm_set_rendering(ent,  kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 150)
         return
      }
   }
   fm_set_rendering(ent,  kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)
}
 
unhide_gift(ent)
{
   if(pev(ent, pev_solid) == SOLID_NOT)
      fm_set_rendering(ent,  kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 150)
   else
      fm_set_rendering(ent,  kRenderFxGlowShell, random_num(0,255), random_num(0,255), random_num(0,255), kRenderNormal, 15)
}
 
give_gift(id) //Выдает случайный бонус с подарка. Добавьте case, если хотите доавить свой.
{
   static loopDestroy
   loopDestroy++
    
   if(loopDestroy > 20)
   {
      PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !tCadou gol", PLUGIN) 
      loopDestroy = 0
      return
   }
    
   new max_random_gift = 6//Сколько видов бонусов в подарках
   switch(random_num(1, max_random_gift))
   {
      case 1:
      {
         new reward = random_num(get_cvar_num("cv_gift_money_min"), get_cvar_num("cv_gift_money_max"))
         new curr_money = get_pdata_int(id, OFFSET_CSMONEY)
         if(curr_money + reward > MAX_MONEY)
            reward = MAX_MONEY - curr_money
             
         if(reward)
         {
            set_pdata_int(id, OFFSET_CSMONEY, curr_money + reward)
          
            message_begin(MSG_ONE, g_msgMoney, _, id)
            write_long(curr_money + reward)
            write_byte(1)
            message_end()
          
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !g%d$", PLUGIN, reward) 
            loopDestroy = 0
         }
         else give_gift(id)      
      }
       
      case 2:
      {
         if(!g_have_sw[id] && !get_user_footsteps(id) && get_cvar_num("cv_gift_silent_walk"))
         {
            g_have_sw[id] = true
            set_user_footsteps(id)         
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !gSilentFootsteps", PLUGIN)
            loopDestroy = 0
         }
         else give_gift(id)
      }
       
      case 3:
      {
         new Float: gravity = get_cvar_float("cv_gift_gravitation")
         if(!g_have_gravity[id] && get_user_gravity(id) > gravity && gravity)
         {
            g_have_gravity[id] = true
            set_user_gravity(id, gravity)   
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !gGravity", PLUGIN)
            loopDestroy = 0
         }
         else give_gift(id)
      }
       
      case 4:
      {   
         new Float: speed = get_cvar_float("cv_gift_speed")
         if(!g_have_speed[id] && get_user_maxspeed(id) < speed  && speed)
         {
            g_have_speed[id] = true
            set_user_maxspeed(id, speed)         
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !gSpeed", PLUGIN)
            loopDestroy = 0
         }
         else give_gift(id)
      }
       
      case 5:
      {
         new hes = get_cvar_num("cv_gift_HE")
         if(hes)
         {
            if(!user_has_weapon(id, CSW_HEGRENADE))
            {
               fm_give_item(id, "weapon_hegrenade")
               cs_set_user_bpammo(id, CSW_HEGRENADE, hes)               
            } 
            else cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + hes)
             
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !ga set of grenades (%d HE)", PLUGIN, hes)
            loopDestroy = 0
         }
         else give_gift(id)
      }
       
      case 6:
      {
         new hp = get_cvar_num("cv_gift_health")
         if(hp)
         {
            fm_set_user_health(id, pev(id, pev_health) + hp)
            PrintChatColor(id, PRINT_COLOR_PLAYERTEAM, "!g[%s] !yYou received !gLife (%d hp)", PLUGIN, hp)
            loopDestroy = 0
         }
         else give_gift(id)
      }
      //case 7: тут по примерам выше
   }
}
 
bool: is_user_access(id)
{      
   new flag_access[24]
   get_cvar_string("cv_gift_access", flag_access, charsmax(flag_access))
    
   new flags = get_user_flags(id)
 
   if(contain(flag_access, "a") > -1 && (flags & ADMIN_IMMUNITY))
      return true
      
   if(contain(flag_access, "b") > -1 && (flags & ADMIN_RESERVATION))
      return true
      
   if(contain(flag_access, "c") > -1 && (flags & ADMIN_KICK))
      return true
      
   if(contain(flag_access, "d") > -1 && (flags & ADMIN_BAN))
      return true
      
   if(contain(flag_access, "e") > -1 && (flags & ADMIN_SLAY))
      return true
      
   if(contain(flag_access, "f") > -1 && (flags & ADMIN_MAP))
      return true
      
   if(contain(flag_access, "g") > -1 && (flags & ADMIN_CVAR))
      return true
      
   if(contain(flag_access, "h") > -1 && (flags & ADMIN_CFG))
      return true
      
   if(contain(flag_access, "i") > -1 && (flags & ADMIN_CHAT))
      return true
      
   if(contain(flag_access, "j") > -1 && (flags & ADMIN_VOTE))
      return true
    
   if(contain(flag_access, "k") > -1 && (flags & ADMIN_PASSWORD))
      return true
      
   if(contain(flag_access, "l") > -1 && (flags & ADMIN_RCON))
      return true
      
   if(contain(flag_access, "m") > -1 && (flags & ADMIN_LEVEL_A))
      return true
      
   if(contain(flag_access, "n") > -1 && (flags & ADMIN_LEVEL_B))
      return true
      
   if(contain(flag_access, "o") > -1 && (flags & ADMIN_LEVEL_C))
      return true
      
   if(contain(flag_access, "p") > -1 && (flags & ADMIN_LEVEL_D))
      return true
      
   if(contain(flag_access, "q") > -1 && (flags & ADMIN_LEVEL_E))
      return true
      
   if(contain(flag_access, "r") > -1 && (flags & ADMIN_LEVEL_F))
      return true
      
   if(contain(flag_access, "s") > -1 && (flags & ADMIN_LEVEL_G))
      return true
      
   if(contain(flag_access, "t") > -1 && (flags & ADMIN_LEVEL_H))
      return true
      
   if(contain(flag_access, "u") > -1 && (flags & ADMIN_MENU))
      return true
      
   if(contain(flag_access, "y") > -1 && (flags & ADMIN_ADMIN))
      return true
      
   if(contain(flag_access, "z") > -1 && (flags & ADMIN_USER))
      return true
      
   return false
}
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
esc-Fiv3
Извън линия
Foreigner
Foreigner
Мнения: 110
Регистриран на: 24 Ное 2018, 19:19
Се отблагодари: 16 пъти

plugin errors

Мнение от esc-Fiv3 » 09 Дек 2018, 14:28

It is compiled succesfully but I can't open my server with it. Probably this is why my server crashes sometimes..because of the code. The plugin was working nice, without bugs in game. But there were these errors. If you can help me to make it good..I will be thankful

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Поддръжка / Помощ”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 22 госта