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

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

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

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

Передача денег

, Ошибки
Статус пользователя tato2013
сообщение 8.2.2014, 20:30
Сообщение #1


Стаж: 12 лет

Сообщений: 331
Благодарностей: 121
Полезность: 185

Ку всем,помогите пожалуйста исправить...

Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "transfer"
#define VERSION "3.0"
#define AUTHOR "Xz"
#define PREFIX "^4[SERVER]"

#define MAX_PLAYERS 33

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 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();
}
}
}
}


Ошибки
L 02/08/2014 - 20:21:55: [HAMSANDWICH] Function fwSpawn not found.
L 02/08/2014 - 20:21:55: [AMXX] Displaying debug trace (plugin "transfer.amxx")
L 02/08/2014 - 20:21:55: [AMXX] Run time error 10: native error (native "RegisterHam")
L 02/08/2014 - 20:21:55: [AMXX] [0] transfer.sma::plugin_init (line 52)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: