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

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

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

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

Помогите пожалуйста с transfer

Статус пользователя deniska21233
сообщение 19.8.2015, 11:51
Сообщение #1
Стаж: 12 лет

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

Cкрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "transfer"
#define VERSION "3.0"
#define AUTHOR "Sulky"
#define PREFIX "^1[^4Деньги^1]"

#define MAX_PLAYERS 32

const OFFSET_CSMENUCODE = 205
#define MENUBUTTON1                (1<<0)
#define MENUBUTTON2                (1<<1)
#define MENUBUTTON3                (1<<2)
#define MENUBUTTON0                (1<<9)

new gidPlayer[33]
new SayText;
new g_maxclients
new MaxPlayers
new bool:g_closed[MAX_PLAYERS+1][MAX_PLAYERS+1]

enum _players
{
    p_players[33],
    p_name[32],
    p_position,
    p_playersnum
}

new player[33][_players]

public plugin_init()
{

    register_dictionary("transfer.txt")
    
    register_clcmd("say /transfer", "clcmd_mainmenu", ADMIN_ALL, "")
    register_clcmd("say /donate", "clcmd_mainmenu", ADMIN_ALL, "")
    register_clcmd("transfer", "transfer_money", ADMIN_ALL, "")
    register_clcmd("transfer_all", "transfer_money_all", ADMIN_ALL, "")

        register_menucmd(register_menuid("Transfer Menu"), 1023, "MainHandler")
    register_menucmd(register_menuid("Money Give Menu"), 1023, "GiveMoneyHandler")
    register_menucmd(register_menuid("Money Req Menu"), 1023, "RequestMoneyHandler")
    register_menucmd(register_menuid("ConfirMation Menu"), 1023, "ConfirmationHandler")
    register_menucmd(register_menuid("Request Menu Closed"), 1023, "RequestClosedHandler")

    RegisterHam( Ham_Spawn, "player", "fwSpawn", 1)
    
        SayText = get_user_msgid("SayText")
    g_maxclients = global_get(glb_maxClients)
    MaxPlayers = get_maxplayers()

    return PLUGIN_CONTINUE
}

public clcmd_mainmenu(id)
{
    MainMenu( id )
    return PLUGIN_HANDLED
}

public client_putinserver(id)
{
    clear_list(id)
}

public client_disconnect(id)
{
    clear_list(id)
}
clear_list(id)
{
    for(new i = 0; i <= g_maxclients; ++i)
        g_closed[id][i] = false
}
public client_infochanged(id)
{
    get_user_info(id, "name", player[id][p_name], 31)
    
    return PLUGIN_CONTINUE
}

public fwSpawn(id)
{
    ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_SPAWNMSG")
}

public MainMenu(id)
{
    if (!is_user_connected(id))
        return PLUGIN_HANDLED;

    static MenuBody[512]
    new flags
    new money = cs_get_user_money(id)
    new len = formatex(MenuBody, 511, "%L", id, "TRANSFER_MENUTITLE", money)

            
    len += formatex(MenuBody[len], 511 - len, "\r1. \w%L", id, "TRANSFER_MENUITEM1")
    flags |= MENUBUTTON1

    len += formatex(MenuBody[len], 511 - len, "\r2. \w%L", id, "TRANSFER_MENUITEM2")
    flags |= MENUBUTTON2

    len += formatex(MenuBody[len], 511 - len, "\r3. \w%L", id, "TRANSFER_MENUITEM3")
    flags |= MENUBUTTON3

    len += formatex(MenuBody[len], 511 - len, "\r0. \w%L^n", id, "TRANSFER_MENU_EXIT")
    flags |= MENUBUTTON0

    set_pdata_int(id, OFFSET_CSMENUCODE, 0)
    show_menu(id, flags, MenuBody, -1, "Transfer Menu")
    return PLUGIN_CONTINUE
}

public MainHandler(id, key)
{
    if (!is_user_connected(id))
        return PLUGIN_HANDLED;
    
    switch (key)
    {
        case 0:
        {
            GiveMoneyMenu(id, player[id][p_position] = 0)
        }
        case 1:
        {
            RequestMoneyMenu(id, player[id][p_position] = 0)
        }
        case 2:
        {
            RequestMoneyMenuClosed(id, player[id][p_position] = 0)
        }
    }
    return PLUGIN_HANDLED
}

public GiveMoneyMenu(id, pos)
{
    if(pos < 0)  
        return PLUGIN_HANDLED

    player[id][p_playersnum] = 0

    for(new i = 1; i <= MaxPlayers; i++)
    {
        if(is_user_connected(i) && !is_user_bot(i))
        {
            player[id][p_players][player[id][p_playersnum]++] = i
        }
    }

    new start = pos * 7
    new end = start + 7

    new MenuBody[512], name[128], key, keys = MENU_KEY_0    
      new len = format(MenuBody, 511, "%L", id, "TRANSFER_GIVEMENUTITLE")
    
    for(new i = start; i < end; i++)
    {
        if(i < player[id][p_playersnum])
        {
            new pid = player[id][p_players][i]
            copy(name, 31, player[pid][p_name])
            new money = cs_get_user_money(pid)
    
            if(pid == id)
            {
                format(name, 127, "\r%d. \d%s %L^n", ++key, name, id, "TRANSFER_PLAYERID")
            }
            else
            {
                keys |= (1 << key)
                format(name, 127, "\r%d. \w%s \r(%d)^n", ++key, name, money)
            }
        }
        else
        {
            format(name, 127, "")
            key++
        }
        len += format(MenuBody[len], 511 - len, name)
    }
    if(end < (player[id][p_playersnum] - 1))
    {
        len += format(MenuBody[len], 511 - len, "^n\r8. \w%L", id, "TRANSFER_MONEYALL")
        keys |= (1 << 7)
            format(MenuBody[len], 511 - len, "\r9.\w %L^n\r0.\w %L^n", id, "TRANSFER_MENU_MORE", id, pos ? "TRANSFER_MENU_BACK" : "TRANSFER_MENU_EXIT", PLUGIN, VERSION, AUTHOR)
            keys |= MENU_KEY_9
    }
    else
    {
        len += format(MenuBody[len], 511 - len, "^n\r8. \w%L", id, "TRANSFER_MONEYALL")
        keys |= (1 << 7)
        format(MenuBody[len], 511-len, "\r0.\w %L^n", id, pos ? "TRANSFER_MENU_BACK" : "TRANSFER_MENU_EXIT", PLUGIN, VERSION, AUTHOR)
    }

    return show_menu(id, keys, MenuBody, -1, "Money Give Menu")
}

public GiveMoneyHandler(id, key)
{
    if (!is_user_connected(id))
        return PLUGIN_HANDLED;

    new choosed = (player[id][p_position] * 7) + key

    switch(key)
    {
            case 7:
        {
            client_cmd(id, "messagemode ^"transfer_all^"")
            GiveMoneyMenu(id, player[id][p_position])
        }
            case 8: GiveMoneyMenu(id, ++player[id][p_position])
        case 9: GiveMoneyMenu(id, --player[id][p_position])
            default:
        {
            new players = player[id][p_players][choosed]
            
            client_cmd(id, "messagemode ^"transfer %i^"", players)
            GiveMoneyMenu(id, player[id][p_position])
            }
      }
    return PLUGIN_CONTINUE
}

public RequestMoneyMenu(id, pos)
{
    if(pos < 0)  
        return PLUGIN_HANDLED

    player[id][p_playersnum] = 0

    for(new i = 1; i <= MaxPlayers; i++)
    {
        if(is_user_connected(i) && !is_user_bot(i))
        {
            player[id][p_players][player[id][p_playersnum]++] = i
        }
    }

    new start = pos * 8
    new end = start + 8

    new MenuBody[512], name[128], key, keys = MENU_KEY_0    
      new len = format(MenuBody, 511, "%L", id, "TRANSFER_REQMENUTITLE")
    
    for(new i = start; i < end; i++)
    {
        if(i < player[id][p_playersnum])
        {
            new pid = player[id][p_players][i]
            copy(name, 31, player[pid][p_name])
            new money = cs_get_user_money(pid)
    
            if(pid == id)
            {
                format(name, 127, "\r%d. \d%s %L^n", ++key, name, id, "TRANSFER_PLAYERID")
            }
            else if(g_closed[pid][id])
            {
                format(name, 127, "\r%d. \d%s %L^n", ++key, name, id, "TRANSFER_ZABLOCKID")
            }
            else
            {
                keys |= (1 << key)
                format(name, 127, "\r%d. \w%s \d(\r%d\d)^n", ++key, name, money)
            }
        }
        else
        {
            format(name, 127, "")
            key++
        }
        len += format(MenuBody[len], 511 - len, name)
    }
    if(end < (player[id][p_playersnum] - 1))
    {
            format(MenuBody[len], 511 - len, "^n\r9.\w %L^n\r0.\w %L^n", id, "TRANSFER_MENU_MORE", id, pos ? "TRANSFER_MENU_BACK" : "TRANSFER_MENU_EXIT", PLUGIN, VERSION, AUTHOR)
            keys |= MENU_KEY_9
    }
    else
    {
        format(MenuBody[len], 511-len, "^n\r0.\w %L^n", id, pos ? "TRANSFER_MENU_BACK" : "TRANSFER_MENU_EXIT", PLUGIN, VERSION, AUTHOR)
    }

    return show_menu(id, keys, MenuBody, -1, "Money Req Menu")
}

public RequestMoneyHandler(id, key)
{
    if (!is_user_connected(id))
        return PLUGIN_HANDLED;

    new choosed = (player[id][p_position] * 8) + key

    switch(key)
    {
            case 8: RequestMoneyMenu(id, ++player[id][p_position])
        case 9: RequestMoneyMenu(id, --player[id][p_position])
            default:
        {
            new players = player[id][p_players][choosed]
            
            gidPlayer[players] = id
            RequestMoneyMenu(id, player[id][p_position])
            ChatColor(id, "%s %L", PREFIX, id, "TRANSFER_PROSITMONEY", players)
            ConfirmationMenu(players)
            }
      }
    return PLUGIN_CONTINUE
}

public RequestMoneyMenuClosed(id, pos)
{
    if(pos < 0)  
        return PLUGIN_HANDLED

    player[id][p_playersnum] = 0

    for(new i = 1; i <= MaxPlayers; i++)
    {
        if(is_user_connected(i) && !is_user_bot(i))
        {
            player[id][p_players][player[id][p_playersnum]++] = i
        }
    }

    new start = pos * 7
    new end = start + 7

    new MenuBody[512], name[128], key, keys = MENU_KEY_0, pid    
      new len = format(MenuBody, 511, "%L", id, "TRANSFER_REQCLOSEDTITLE")
    
    for(new i = start; i < end; i++)
    {
        if(i < player[id][p_playersnum])
        {
            pid = player[id][p_players][i]
            copy(name, 31, player[pid][p_name])
    
            if(pid == id)
            {
                format(name, 127, "\r%d. \d%s %L^n", ++key, name, id, "TRANSFER_PLAYERID")
            }
            else
            {
                keys |= (1 << key)
                format(name, 127, "\r%d. \w%s %s^n", ++key, name, g_closed[id][pid] ? "\r[Заблокирован]" : "")
            }
        }
        else
        {
            format(name, 127, "")
            key++
        }
        len += format(MenuBody[len], 511 - len, name)
    }
    if(end < (player[id][p_playersnum] - 1))
    {
        keys |= (1 << 7)
        len += format(MenuBody[len], 511 - len, "^n\r8. \w%L^n", LANG_PLAYER, g_closed[id][pid] ? "TRANSFER_RAZBLOCKALL" : "TRANSFER_ZABLOCKALL")
            format(MenuBody[len], 511 - len, "\r9.\w %L^n\r0.\w %L^n", id, "TRANSFER_MENU_MORE", id, pos ? "TRANSFER_MENU_BACK" : "TRANSFER_MENU_EXIT", PLUGIN, VERSION, AUTHOR)
            keys |= MENU_KEY_9
    }
    else
    {
        keys |= (1 << 7)
        len += format(MenuBody[len], 511 - len, "^n\r8. \w%L^n", LANG_PLAYER, g_closed[id][pid] ? "TRANSFER_RAZBLOCKALL" : "TRANSFER_ZABLOCKALL")
        format(MenuBody[len], 511-len, "\r0.\w %L^n", id, pos ? "TRANSFER_MENU_BACK" : "TRANSFER_MENU_EXIT", PLUGIN, VERSION, AUTHOR)
    }

    return show_menu(id, keys, MenuBody, -1, "Request Menu Closed")
}

public RequestClosedHandler(id, key)
{
    if (!is_user_connected(id))
        return PLUGIN_HANDLED;

    new choosed = (player[id][p_position] * 7) + key

    switch(key)
    {
            case 7:
        {
            new players = player[id][p_players][choosed]
            for(players = 1; players <= MaxPlayers; players++)
            {
                g_closed[id][players] = g_closed[id][players] ? false : true
            }
            RequestMoneyMenuClosed(id, player[id][p_position])
        }
            case 8: RequestMoneyMenuClosed(id, ++player[id][p_position])
        case 9: RequestMoneyMenuClosed(id, --player[id][p_position])
            default:
        {
            new players = player[id][p_players][choosed]
            
            g_closed[id][players] = g_closed[id][players] ? false : true
            RequestMoneyMenuClosed(id, player[id][p_position])
            }
      }
    return PLUGIN_CONTINUE
}

public ConfirmationMenu(id)
{    
    if (!is_user_connected(id))
        return PLUGIN_HANDLED;

    static MenuBody[512]
    new flags
    new Name[32]
    get_user_name(gidPlayer[id], Name, 31)
    new len = formatex(MenuBody, 511, "%L", id, "TRANSFER_CONFMENUTITLE", Name)
            
    len += formatex(MenuBody[len], 511 - len, "\r1. \w%L", id, "TRANSFER_CONFMENUITEM1")
    flags |= MENUBUTTON1

    len += formatex(MenuBody[len], 511 - len, "\r2. \w%L", id, "TRANSFER_CONFMENUITEM2")
    flags |= MENUBUTTON2

    len += formatex(MenuBody[len], 511 - len, "\r3. \w%L", id, "TRANSFER_CONFMENUITEM3", Name)
    flags |= MENUBUTTON3

    len += formatex(MenuBody[len], 511 - len, "\r0. \w%L^n", id, "TRANSFER_MENU_EXIT")
    flags |= MENUBUTTON0

    set_pdata_int(id, OFFSET_CSMENUCODE, 0)
    show_menu(id, flags, MenuBody, -1, "ConfirMation Menu")
    return PLUGIN_CONTINUE
}

public ConfirmationHandler(id, key)
{
    if (!is_user_connected(id))
        return PLUGIN_HANDLED;
    
    new challenger[32], challenged[32]
    get_user_name(id, challenger, 31)
    get_user_name(gidPlayer[id], challenged, 31)
    switch (key)
    {
        case 0:
        {
            ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_PLAYERACCEPT", challenged)
            ChatColor(gidPlayer[id], "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_TARGETACCEPT", challenger)
            client_cmd(id, "messagemode ^"transfer %i^"", gidPlayer[id])
        }
        case 1:
        {
            ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_PLAYERREFUSE", challenged)
            ChatColor(gidPlayer[id], "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_TARGETREFUSE", challenger)
        }
        case 2:
        {
            g_closed[id][gidPlayer[id]] = true
            ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_PLAYERCLOSED", challenged)
            ChatColor(gidPlayer[id], "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_TARGETCLOSED", challenger)
        }
    }
    return PLUGIN_HANDLED
}

public transfer_money(id)
{
    new param[9]
    read_argv(2, param, charsmax(param))
    
    for (new x; x < strlen(param); x++)
    {
        if(!isdigit(param[x]))
        {
            ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_PARMCHISLO")
            return PLUGIN_HANDLED
        }
    }
    
    new amount = str_to_num(param)

        if (!amount )
        {
                ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_BOLNYL")
                return PLUGIN_HANDLED
        }

    if(!is_user_connected(id))
        return PLUGIN_CONTINUE
    
    new money = cs_get_user_money(id)
    
    if (money < amount)
    {
        ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_ENOUGHMONEY")
        return PLUGIN_HANDLED
    }
    
    read_argv(1, param, charsmax(param))
    new player = str_to_num(param)

    if(!is_user_connected(player))
        return PLUGIN_CONTINUE

    new player_money = cs_get_user_money(player)

    if(id == player)
    {
        ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_MEMONEYGIVE")
        return PLUGIN_HANDLED
    }
    
    cs_set_user_money(id, money - amount, 1)
    cs_set_user_money(player, player_money + amount, 1)
    
    new names[2][32]
    
    get_user_name(id, names[0], 31)
    get_user_name(player, names[1], 31)
    
    ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_AMOUNTGIVE", names[0], names[1], amount)
    
    return PLUGIN_HANDLED
}
public transfer_money_all(id)
{
    new param[9]
    read_argv(1, param, charsmax(param))
    
    for (new x; x < strlen(param); x++)
    {
        if(!isdigit(param[x]))
        {
            ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_PARMCHISLO")
            return PLUGIN_HANDLED
        }
    }
    
    new amount = str_to_num(param)

        if (!amount )
        {
                ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_BOLNYL")
                return PLUGIN_HANDLED
        }

    if(!is_user_connected(id))
        return PLUGIN_CONTINUE
    
    new money = cs_get_user_money(id)
    
    if (money < amount)
    {
        ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_ENOUGHMONEY")
        return PLUGIN_HANDLED
    }
    
    new AllPayers
    new iPlayer[ 32 ], iNum, all;
    get_players( iPlayer, iNum, "c" );

    for( new i; i < iNum; i++ )
    {
        if(!is_user_connected(iPlayer[ i ]))
        {
            continue
        }
        else if(id != iPlayer[ i ])
        {
            all = iPlayer[ i ];
            AllPayers++
        }
    }

    cs_set_user_money(id, money - amount)
    cs_set_user_money(all, cs_get_user_money(all) + amount / AllPayers)

    new names[32]
    get_user_name(id, names, 31)
    
    ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "TRANSFER_AMOUNTGIVEALL", names, amount / AllPayers)
    
    return PLUGIN_HANDLED
}

stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    replace_all(msg, 190, "!g", "^4"); // Green Color
    replace_all(msg, 190, "!y", "^1"); // Default Color (у©°  ж№«ој©)
    replace_all(msg, 190, "!t", "^3"); // Team Color
    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, SayText, _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}



Выдает вот такие ошибки [AMXX] Run time error 10 (plugin "transfer.amxx") (native "cs_get_user_money") - debug not enabled!
Помогите пожалуйста исправить её
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя ThisIsSparta
сообщение 19.8.2015, 11:54
Сообщение #2
Стаж: 11 лет

Сообщений: 566
Благодарностей: 307
Полезность: 600

deniska21233,

в plugins.ini пропиши debug на transfer.amxx чтобы было так
Код
transfer.amxx debug

а потом как появится ошибка сбрось ее сюда
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя deniska21233
сообщение 28.8.2015, 19:36
Сообщение #3
Стаж: 12 лет

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

ThisIsSparta,
L 08/28/2015 - 15:56:38: Start of error session.
L 08/28/2015 - 15:56:38: Info (map "cs_mansion") (file "addons/amxmodx/logs/error_20150828.log")
L 08/28/2015 - 15:56:38: [CSTRIKE] Player out of range (0)
L 08/28/2015 - 15:56:38: [AMXX] Displaying debug trace (plugin "transfer.amxx")
L 08/28/2015 - 15:56:38: [AMXX] Run time error 10: native error (native "cs_get_user_money")
L 08/28/2015 - 15:56:38: [AMXX] [0] transfer.sma::transfer_money_all (line 583)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dialyabev
сообщение 29.8.2015, 7:30
Сообщение #4


Стаж: 11 лет

Сообщений: 243
Благодарностей: 120
Полезность: 596

Donate money (Пост #757333)


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя deniska21233
сообщение 31.8.2015, 15:51
Сообщение #5
Стаж: 12 лет

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

dialyabev, А что этот уже не исправить ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: