Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

LVL System

Статус пользователя sandrin
сообщение 3.8.2012, 15:14
Сообщение #1
Стаж: 15 лет

Сообщений: 19
Благодарностей: 1
Полезность: 0

Нашел такой баг в системе лвл, когда умираешь сам то тебе дается +1 exp, как это исправить?

Нужно как то поставить проверку на самоубийство что ли?

Код
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <zombieplague>
#include <nvault>
#include <WPMGPrintChatColor>

#define PLUGIN "[ZP]Level System"
#define VERSION "2.0"
#define AUTHOR "heka"

new const Level_Exp[24] = {0, 32, 42, 52, 72, 92, 140,500,600,700,800,900,1000,1200,1400,1600,2000,2400,5000,8000,9000,10000,30000
,999000000}

new g_level[33]
new g_exp[33]
new g_vault

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
        g_vault = nvault_open("zp_level_system")
}

public plugin_natives()
{
    register_native("zp_level", "native_level", 1)
    register_native("zp_exp", "native_exp", 1)
}

public client_connect(id)
{
    g_level[id] = 1

    LoadData(id)
}

public client_disconnect(id)
{
    SaveData(id)

    g_exp[id] = 0
    g_level[id] = 0
}

public client_putinserver(id)
{
    if(is_user_bot(id))
    {
        set_task(1.0, "ShowHUD")
    }
}

public ShowHUD(id)
{
    set_hudmessage(245, 255, 250, 0.0,0.3, 0, 6.0, 1.1, 0.0, 0.0, -1)
    show_hudmessage(id, "[Level %d]^n[Exp %d/%d]", g_level[id],g_exp[id], Level_Exp[g_level[id]])
}

public SaveData(id)
{
    new AuthID[35]
    get_user_authid(id,AuthID,34)

    new vaultkey[64],vaultdata[256]
    format(vaultkey,63,"%s",AuthID)
    format(vaultdata,255,"%i#%i#",g_exp[id],g_level[id])
    nvault_set(g_vault,vaultkey,vaultdata)
    return PLUGIN_CONTINUE
}
public LoadData(id)
{
    new AuthID[35]
    get_user_authid(id,AuthID,34)

    new vaultkey[64],vaultdata[256]
    format(vaultkey,63,"%s",AuthID)
    format(vaultdata,255,"%i#%i#",g_exp[id],g_level[id])
    nvault_get(g_vault,vaultkey,vaultdata,255)

    replace_all(vaultdata, 255, "#", " ")

    new playerxp[32], playerlevel[32]

    parse(vaultdata, playerxp, 31, playerlevel, 31)

    g_exp[id] = str_to_num(playerxp)
    g_level[id] = str_to_num(playerlevel)

    return PLUGIN_CONTINUE
}

public fw_PlayerKilled(victim, attacker)
{
    if ( !is_user_connected ( victim ) || !is_user_connected ( attacker ) )
         return;
  
    if(zp_get_user_zombie(victim) && !zp_get_user_nemesis(victim))
    {
        g_exp[attacker]+= 1
        check_level(attacker)
    }    
}

public check_level(id)
{
    if (g_exp[id] > Level_Exp[sizeof Level_Exp - 1] - 1)
    {
        return PLUGIN_HANDLED;
    }
    while (g_exp[id] >= Level_Exp[g_level[id]])
    {
        g_level[id]++
        PrintChatColor(id,print_chat, "!g[Zombies & Humans]!yТы качнул !g%d !yлвл!!!", g_level[id])
    }
    return PLUGIN_HANDLED;
}

public native_level(id)
{
    return g_level[id]
}

public native_exp(id)
{
    return g_exp[id]
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Саша
сообщение 3.8.2012, 15:22
Сообщение #2


Стаж: 16 лет

Сообщений: 1082
Благодарностей: 441
Полезность: 828

Для начала нужно весь этот код в споилер запихнуть.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Makzz
сообщение 3.8.2012, 16:40
Сообщение #3


Стаж: 18 лет

Сообщений: 2198
Благодарностей: 1365
Полезность: 1080

Код
public fw_PlayerKilled(victim, attacker)
{
    if ( !is_user_connected ( victim ) || !is_user_connected ( attacker ) )
         return;
    //
    if ( victim == attacker )
        return;
    //
    if(zp_get_user_zombie(victim) && !zp_get_user_nemesis(victim))
    {
        g_exp[attacker]+= 1
        check_level(attacker)
    }    
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: