Поиск LifeMenu

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
438
Реакции
66
Помог
10 раз(а)
Всем привет, ищу плагин lifemenu. Все те плагины что были в результатах поиска гугла, не имеют сохранение жизней в бд/nvault. Мне нужно меню с сохранением жизней где ни-будь, чтобы после перезапуска сервера/перезагрузки карты они не обнулились
 
Сообщения
438
Реакции
66
Помог
10 раз(а)
ImmortalAmxx, было бы здорово если бы ты добавил туда ещё лимит по лайфам, чтобы больше указанного нельзя было покупать жизни. И еще добавил бы возможность передать лайфы другим игрокам

сорри если это всё уже имеется
 
Последнее редактирование:
Сообщения
438
Реакции
66
Помог
10 раз(а)
yamusaka, там не получается же скачать, хотя авторизован
 
Сообщения
248
Реакции
73
Помог
2 раз(а)
Код:
#define LIFE_COST 4000 - Стоимость покупки одной жизни. 
#define LIFE_SELL 2000 - Бонус денег от продажи одной жизни. 
#define LIFE_LIMIT 50 - Максимальное кол-во жизней.
Вызов меню командой в чат /life
Жизни сохраняются по Steam ID в системе nVault.
 

Вложения

  • Нравится
Реакции: DEVV
Сообщения
438
Реакции
66
Помог
10 раз(а)
Код:
#define LIFE_COST 4000 - Стоимость покупки одной жизни.
#define LIFE_SELL 2000 - Бонус денег от продажи одной жизни.
#define LIFE_LIMIT 50 - Максимальное кол-во жизней.
Вызов меню командой в чат /life
Жизни сохраняются по Steam ID в системе nVault.
Спасибо большое, забрал плагин
 
Сообщения
438
Реакции
66
Помог
10 раз(а)
Взял плагин от Opo4uMapy. и тупо переделал его под свои нужды:
Код:
#include < amxmodx >
#include < cstrike >
#include < fakemeta >
#include < hamsandwich >

#define PLUGIN         "[All Mod] Life Menu"
#define VERSION     "0.1"
#define AUTHOR         "Opo4uMapy"

new g_life[33] = 0

const buy_life        =    8000 //Сколько отнимать денег за покупку жизни
const sale_life        =    4000 //Сколько давать денег за продажу жизни

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_clcmd("say /life", "life_menu")
   
    register_dictionary("lifemenu.txt")
}

public life_menu(id)
{
    new Text[512]
    formatex(Text, charsmax(Text), "%L", id, "MENU_NAME", g_life[id], cs_get_user_money(id))
    new menu = menu_create(Text, "menu_handler")
   
    formatex(Text, charsmax(Text), "%L", id, "MENU_ITEM_1", buy_life)
    menu_additem(menu, Text, "1")
   
    formatex(Text, charsmax(Text), "%L", id, "MENU_ITEM_2", sale_life)
    menu_additem(menu, Text, "2")
   
    formatex(Text, charsmax(Text), "%L", id, "MENU_ITEM_3")
    menu_additem(menu, Text, "3")

    formatex(Text, charsmax(Text), "%L", id, "MENU_ITEM_4")
    menu_additem(menu, Text, "4")
   
    menu_setprop(menu, MPROP_EXITNAME, "Выход")
     
    menu_display(id,menu,0);
    return PLUGIN_HANDLED
}
   
public menu_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }
       
    new data[6], iName[64], access, callback
    menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
       
    new key = str_to_num(data)
       
    switch(key)
    {
        case 1:
        {
            if(cs_get_user_money(id) < buy_life)
            {
                color_chat(id, "%L", id, "ITEM_NO_MONEY")
                return PLUGIN_HANDLED
            }
            g_life[id]++
            cs_set_user_money(id, cs_get_user_money(id) - buy_life)
            color_chat(id, "%L", id, "MENU_ITEM_1_1")
            client_cmd(id, "say /life")
        }
        case 2:
        {
            if(g_life[id] > 0)
            {
                g_life[id]--
                cs_set_user_money(id, cs_get_user_money(id) + buy_life)
                color_chat(id, "%L", id, "MENU_ITEM_2_2")  
                client_cmd(id, "say /life")
            }
            else
            {
                color_chat(id, "%L", id, "ITEM_NO_LIFE")
                client_cmd(id, "say /life")
            }
        }
        case 3:
        {
            if(g_life[id] > 0)
            {
                g_life[id]--
                ExecuteHamB(Ham_CS_RoundRespawn, id)
                color_chat(id, "%L", id, "MENU_ITEM_3_3")
                client_cmd(id, "say/ life")
            }
            else
            {
                color_chat(id, "%L", id, "ITEM_NO_LIFE")
                client_cmd(id, "say /life")
            }
        }
        case 4:
        if(g_life[id] > 0)
            transmit_life(id)
    }
    return PLUGIN_HANDLED
}
public transmit_life(id)
{
    new Text[512]
    formatex(Text, charsmax(Text), "%L", id, "MENU_2_NAME")
    new i_Menu = menu_create(Text, "menu_transmit")

    new s_Players[32], i_Num, i_Player
    new s_Name[32], s_Player[10]
    get_players(s_Players, i_Num)

    for(new i; i < i_Num; i++)
    {
        i_Player = s_Players[i];
       
        if(is_user_connected(i_Player))
        {

            get_user_name(i_Player, s_Name, charsmax(s_Name));
            num_to_str(i_Player, s_Player, charsmax(s_Player));
   
            menu_additem(i_Menu, s_Name, s_Player, 0);
        }
    }
   
    menu_setprop(i_Menu, MPROP_NEXTNAME, "Далее")
    menu_setprop(i_Menu, MPROP_BACKNAME, "Назад")
    menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
    menu_setprop(i_Menu, MPROP_EXIT, MEXIT_ALL)
    menu_display(id, i_Menu, 0)
   
    return PLUGIN_CONTINUE
}

public menu_transmit(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }

    new s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)


    new i_Player = str_to_num(s_Data)

    new name[32], name_player[32]
    get_user_name(id, name, charsmax(name))
    get_user_name(i_Player, name_player, charsmax(name_player))
   
    if(is_user_connected(i_Player) && g_life[id] > 0)
    {
        g_life[id]--
        g_life[i_Player]++
        color_chat(0, "%L", 0, "MENU_ITEM_4_4", name, name_player)
    }

    menu_destroy(menu)
    return PLUGIN_HANDLED
}

stock color_chat(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
   
    replace_all(msg, 190, "!g", "^4");
    replace_all(msg, 190, "!y", "^1");
    replace_all(msg, 190, "!t", "^3");
   
    if (id) players[0] = id; else get_players(players, count, "ch");
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
Код:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <nvault>

#define PLUGIN         "[All Mod] Life Menu"
#define VERSION     "0.1"
#define AUTHOR         "Opo4uMapy & @PYWAVE"

new g_life[33] = 0
new nvault:NVaultData

const buy_life        =    10000 //Сколько отнимать денег за покупку жизни
const limit_life    =    10 // Лимит по покупке жизней

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_clcmd("say /life", "life_menu")
    register_event("DeathMsg", "EV_DeathMsg", "a")
   
    register_dictionary("lifemenu.txt")

    NVaultData = nvault_open("LifeData");
    if(!NVaultData)
    {
        log_amx("Ошибка при открытии NVault!");
    }
}
public client_putinserver(id)
{
    new name[33], life[11];
    get_user_name(id, name, 32);

    if(nvault_get(NVaultData, name, life, 10))
    {
        g_life[id] = str_to_num(life);
    }
}

public client_disconnected(id)
{
    new name[33];
    get_user_name(id, name, 32);

    new life[11];
    num_to_str(g_life[id], life, 10);
    nvault_set(NVaultData, name, life);
}

public plugin_end()
{
    nvault_close(NVaultData)
}

public EV_DeathMsg()
{
    static iVictim;
    iVictim = read_data(2);
   
    if( !is_user_connected(iVictim))
        return;
       
    client_cmd(iVictim, "say /life")
}

public life_menu(id)
{
    new Text[512]
    formatex(Text, charsmax(Text), "%L", id, "MENU_NAME", g_life[id], cs_get_user_money(id), limit_life)
    new menu = menu_create(Text, "menu_handler")
   
    formatex(Text, charsmax(Text), "%L", id, "MENU_ITEM_1", buy_life)
    menu_additem(menu, Text, "1")
   
    formatex(Text, charsmax(Text), "%L", id, "MENU_ITEM_2")
    menu_additem(menu, Text, "2")

    formatex(Text, charsmax(Text), "%L", id, "MENU_ITEM_3")
    menu_additem(menu, Text, "3")
   
    menu_setprop(menu, MPROP_EXITNAME, "Выход")
     
    menu_display(id,menu,0);
    return PLUGIN_HANDLED
}
   
public menu_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }
       
    new data[6], iName[64], access, callback
    menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
       
    new key = str_to_num(data)
       
    switch(key)
    {
        case 1:
        {
            if(cs_get_user_money(id) < buy_life)
            {
                client_print_color(id, print_team_default, "%L", id, "ITEM_NO_MONEY")
                return PLUGIN_HANDLED
            }

            if(g_life[id] >= limit_life)
            {
                client_print_color(id, print_team_default, "%L", id, "LIFE_LIMIT")
                return PLUGIN_HANDLED
            }
            g_life[id]++
            cs_set_user_money(id, cs_get_user_money(id) - buy_life)

            new name[33];
            get_user_name(id, name, 32);
   
            new life[11];
            num_to_str(g_life[id], life, 10);
            nvault_set(NVaultData, name, life);
            client_print_color(id, print_team_default, "%L", id, "MENU_ITEM_1_1")
            client_cmd(id, "say /life")
        }

        case 2:
        {
            if(g_life[id] > 0)
                transmit_life(id)
        }

        case 3:
        {
            if(g_life[id] > 0)
            {
                g_life[id]--
                ExecuteHamB(Ham_CS_RoundRespawn, id)
                client_print_color(id, print_team_default, "%L", id, "MENU_ITEM_3_3")
                client_cmd(id, "say/ life")
            }
            else
            {
                client_print_color(id, print_team_default, "%L", id, "ITEM_NO_LIFE")
                client_cmd(id, "say /life")
            }
        }
    }
    return PLUGIN_HANDLED
}
public transmit_life(id)
{
    new Text[512]
    formatex(Text, charsmax(Text), "%L", id, "MENU_2_NAME")
    new i_Menu = menu_create(Text, "menu_transmit")

    new s_Players[32], i_Num, i_Player
    new s_Name[32], s_Player[10]
    get_players(s_Players, i_Num)

    for(new i; i < i_Num; i++)
    {
        i_Player = s_Players[i];
       
        if(is_user_connected(i_Player) && id != i_Player)
        {
            get_user_name(i_Player, s_Name, charsmax(s_Name));
            num_to_str(i_Player, s_Player, charsmax(s_Player));
   
            menu_additem(i_Menu, s_Name, s_Player, 0);
        }
    }
   
    menu_setprop(i_Menu, MPROP_NEXTNAME, "Далее")
    menu_setprop(i_Menu, MPROP_BACKNAME, "Назад")
    menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
    menu_setprop(i_Menu, MPROP_EXIT, MEXIT_ALL)
    menu_display(id, i_Menu, 0)
   
    return PLUGIN_CONTINUE
}


public menu_transmit(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }

    new s_Data[6], s_Name[64], i_Access, i_Callback
    menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)


    new i_Player = str_to_num(s_Data)

    new name[32], name_player[32]
    get_user_name(id, name, charsmax(name))
    get_user_name(i_Player, name_player, charsmax(name_player))
   
    if(is_user_connected(i_Player) && g_life[id] > 0)
    {
        g_life[id]--
        g_life[i_Player]++
        client_print_color(0, print_team_default, "%L", 0, "MENU_ITEM_4_4", name, name_player)
    }

    menu_destroy(menu)
    return PLUGIN_HANDLED
}
Добавил лимит по покупке, добавил сохранение в nvault, и убрал продажу жизней
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу