Добро пожаловать на форум, Гость, это ваша панель
  • Страница 1 из 1
  • 1
Помогите исправить ошибку.
Andrey
Дата: Четверг, 13.09.2012, 13:25 | Сообщение # 1
офлайн

  • Сообщения: 64
  • Награды: 1
  • Замечания:
 
Здравствуйте, у меня на зомби сервере стоит плагин для сохранения аммо паков,но они очень часто пропадают...Автор плагина написал что они будут сохраняться как после смены карты, так и перезапуска сервера. Помогите найти причину пропажи, может в плагине есть какая то ошибка....Буду благодарен!

Code
#include <amxmodx>
#include <fakemeta>
#include <zombieplague>
#include <nvault>

#define PLUGIN    ""
#define VERSION    ""
#define AUTHOR    ""

new g_save, g_ammo[33], g_ammo_can_save[33]
new cvar_save_in

#define MAX_SAVE 999

public plugin_init()
{
  register_plugin(PLUGIN, VERSION, AUTHOR)

  register_event("DeathMsg","event_deathmsg","a")
  register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")

  cvar_save_in = register_cvar("zp_ammo_save_in", "0")

  g_save = nvault_open("g_ammo_save")
}

public zp_user_infected_post(id, infector)
{
  if (g_ammo_can_save[infector])
   Save_Ammo_date(infector)
   
  if (g_ammo_can_save[id])
   Save_Ammo_date(id)
}

public zp_extra_item_selected(id, itemid)
{
  if (g_ammo_can_save[id])
   Save_Ammo_date(id)
}

public event_deathmsg()
{
  new killer = read_data(1)
  new victim = read_data(2)

  if (!killer && !victim)
   return PLUGIN_CONTINUE;

  if (g_ammo_can_save[killer])
   Save_Ammo_date(killer)
     
  if (g_ammo_can_save[victim])
   Save_Ammo_date(victim)

  return PLUGIN_CONTINUE;
}

public fw_PlayerPreThink(id)
{
  if (g_ammo_can_save[id])
  {
   new ammo_packs = zp_get_user_ammo_packs(id)
   g_ammo[id] = ammo_packs
  }

  return FMRES_IGNORED;
}

public client_disconnect(id)
{
  if(g_ammo_can_save[id])
   Save_Ammo_date(id)
}

public client_putinserver(id)
  set_task(2.0, "now_can_save", id)

public now_can_save(id)
{
  Load_Ammo_date(id)
  set_task(0.5, "can_save_true", id)
}

public can_save_true(id)
  g_ammo_can_save[id] = true

public Save_Ammo_date(id)
{
  new vaultkey[64], vaultdata[256]

  switch (get_pcvar_num(cvar_save_in))
  {
   case 0:
   {
    new name[33];
    get_user_name(id,name,32)
     
    format(vaultkey, 63, "%s-/", name)
   }
   case 1:
   {
    new player_ip[33]
    get_user_ip(id, player_ip, 32);

    format(vaultkey, 63, "%s-/", player_ip)
   }
   case 2:
   {
    new AuthID[33];
    get_user_authid(id, AuthID, 32);
     
    formatex(vaultkey, 64, "%s-/", AuthID);
   }
  }

  format(vaultdata, 255, "%i#", g_ammo[id])
   
  nvault_set(g_save, vaultkey, vaultdata)
  return PLUGIN_CONTINUE;
}

public Load_Ammo_date(id)
{
  new vaultkey[64], vaultdata[256]

  switch (get_pcvar_num(cvar_save_in))
  {
   case 0:
   {
    new name[33];
    get_user_name(id,name,32)
     
    format(vaultkey, 63, "%s-/", name)
   }
   case 1:
   {
    new player_ip[33]
    get_user_ip(id, player_ip, 32);

    format(vaultkey, 63, "%s-/", player_ip)
   }
   case 2:
   {
    new AuthID[33];
    get_user_authid(id, AuthID, 32);
     
    formatex(vaultkey, 64, "%s-/", AuthID);
   }
  }

  format(vaultdata, 255, "%i#", g_ammo[id])
   
  nvault_get(g_save, vaultkey, vaultdata, 255)
  replace_all(vaultdata, 255, "#", " ")
   
  new playammo[32]
  parse(vaultdata, playammo, 31)
  g_ammo[id] = str_to_num(playammo)
   
  set_ammo(id)
   
  return PLUGIN_CONTINUE;
}

public set_ammo(id)
{
  if (g_ammo[id] > MAX_SAVE)
  {
   zp_set_user_ammo_packs(id, MAX_SAVE)
   g_ammo[id] = MAX_SAVE
  }
  else
   zp_set_user_ammo_packs(id, g_ammo[id])
  client_print(id, print_chat, "Ваши кредиты  :  %d ", g_ammo[id])
}


Сообщение отредактировал Andrey - Четверг, 13.09.2012, 13:26
 
  • Страница 1 из 1
  • 1
Поиск: