- Код: Выделить всё
L 01/21/2012 - 12:10:34: Info (map "deathrun_baw_h") (file "addons/amxmodx/logs/error_20120121.log")
L 01/21/2012 - 12:10:34: Plugin called menu_display when item=MENU_EXIT
L 01/21/2012 - 12:10:34: [AMXX] Displaying debug trace (plugin "money_transfer.amxx")
L 01/21/2012 - 12:10:34: [AMXX] Run time error 10: native error (native "menu_display")
L 01/21/2012 - 12:10:34: [AMXX] [0] TradeMoney.sma::ConfirmationMenu (line 217)
L 01/21/2012 - 12:10:34: [AMXX] [1] TradeMoney.sma::RequestMoneyHandler (line 199)
вот плагин
- Код: Выделить всё
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#define PLUGIN "Trade Money"
#define VERSION "1.3"
#define AUTHOR "GlaDiuS"
new gidPlayer[33]
new bool:openmenu[33]
new maxreqmenu[33], maxgivemenu[33]
new g_maxplayers
new g_msgSayText
new Itemlol[900]
new Enable, maxreq, maxgive
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam( Ham_Spawn, "player", "fwSpawn", 1)
register_clcmd("daysa", "MainMenu")
register_clcmd("playermoney", "player")
register_dictionary("TradeMoney.txt")
Enable = register_cvar("money_enable", "1")
maxreq = register_cvar("money_maxrequest", "5")
maxgive = register_cvar("money_maxgive", "5")
g_maxplayers = get_maxplayers()
g_msgSayText = get_user_msgid("SayText")
}
public client_putinserver(id) {
openmenu[id] = false
maxreqmenu[id] = 0
maxgivemenu[id] = 0
}
public fwSpawn(id) {
openmenu[id] = false
maxreqmenu[id] = 0
maxgivemenu[id] = 0
ChatColor(id, "%L %L",id, "PREFIX", id, "SPAWNMSG")
}
public MainMenu(id) {
if(get_pcvar_num(Enable))
{
if(!openmenu[id] || is_user_alive(id)) {
formatex(Itemlol, charsmax(Itemlol), "%L", id, "MAINMENUTITLE")
new Menu = menu_create(Itemlol, "MainHandler")
formatex(Itemlol, charsmax(Itemlol), "%L", id, "MAINMENUItem1")
menu_additem(Menu, Itemlol, "1")
formatex(Itemlol, charsmax(Itemlol), "%L", id, "MAINMENUItem2")
menu_additem(Menu, Itemlol, "2")
formatex(Itemlol, charsmax(Itemlol), "%L", id, "TEXT")
menu_setprop(Menu, MPROP_EXITNAME, Itemlol)
menu_display(id, Menu, 0)
openmenu[id] = true
}
}
return PLUGIN_HANDLED
}
public MainHandler(id, Menu, Itemlol)
{
if (Itemlol == MENU_EXIT)
{
menu_destroy(Menu)
openmenu[id] = false
return PLUGIN_HANDLED
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(Menu, Itemlol, access, data,5, iName, 63, callback)
new key = str_to_num(data)
switch (key)
{
case 1:
{
GiveMoneyMenu(id)
}
case 2:
{
RequestMoneyMenu(id)
}
}
menu_destroy(Menu)
return PLUGIN_HANDLED
}
public GiveMoneyMenu(id)
{
if(maxgivemenu[id] <= get_pcvar_num(maxgive))
{
formatex(Itemlol, charsmax(Itemlol), "%L", id, "GIVEMENUTITLE")
new wMenu = menu_create(Itemlol, "GiveMoneyHandler")
new Pos[3], Name[32]
for (new i = 1; i <= g_maxplayers; i++)
{
if (!is_user_connected(i) || !is_user_alive(i) || i == id)
{
openmenu[id] = false
continue
}
num_to_str(i, Pos, sizeof(Pos)-1)
get_user_name(i, Name, sizeof(Name)-1)
formatex(Itemlol, charsmax(Itemlol), "\w%s \r$%d", Name, cs_get_user_money(i))
menu_additem(wMenu, Itemlol, Pos)
}
formatex(Itemlol, charsmax(Itemlol), "%L", id, "EXIT")
menu_setprop(wMenu, MPROP_EXITNAME, Itemlol)
menu_display(id, wMenu, 0)
}
else
{
ChatColor(id, "%L %L",id, "PREFIX", id, "LIMITOPEN", maxgivemenu[id])
}
}
public GiveMoneyHandler(id, wMenu, Itemlol)
{
if (Itemlol == MENU_EXIT)
{
menu_destroy(wMenu)
openmenu[id] = false
return PLUGIN_HANDLED
}
new Data[6], Name[64]
new Access, Callback
menu_item_getinfo(wMenu, Itemlol, Access, Data, sizeof(Data)-1, Name, sizeof(Name)-1, Callback)
new key = str_to_num(Data)
gidPlayer[key] = id
client_cmd(id, "messagemode playermoney")
maxgivemenu[id]++
menu_destroy(wMenu)
return PLUGIN_HANDLED
}
public RequestMoneyMenu(id)
{
if(maxreqmenu[id] <= get_pcvar_num(maxreq))
{
formatex(Itemlol, charsmax(Itemlol), "%L", id, "REQMENUTITLE")
new wMenu = menu_create(Itemlol, "RequestMoneyHandler")
new Pos[3], Name[32]
for (new i = 1; i <= g_maxplayers; i++)
{
if (!is_user_connected(i) || !is_user_alive(i) || i == id)
{
openmenu[id] = false
continue
}
num_to_str(i, Pos, sizeof(Pos)-1)
get_user_name(i, Name, sizeof(Name)-1)
formatex(Itemlol, charsmax(Itemlol), "\w%s \r$%d", Name, cs_get_user_money(i))
menu_additem(wMenu, Itemlol, Pos)
}
formatex(Itemlol, charsmax(Itemlol), "%L", id, "EXIT")
menu_setprop(wMenu, MPROP_EXITNAME, Itemlol)
menu_display(id, wMenu, 0)
}
else
{
ChatColor(id, "%L %L",id, "PREFIX", id, "LIMITOPEN", maxreqmenu[id])
}
}
public RequestMoneyHandler(id, wMenu, Itemlol)
{
if (Itemlol == MENU_EXIT)
{
menu_destroy(wMenu)
openmenu[id] = false
return PLUGIN_HANDLED
}
new Data[6], Name[64]
new Access, Callback
menu_item_getinfo(wMenu, Itemlol, Access, Data, sizeof(Data)-1, Name, sizeof(Name)-1, Callback)
new key = str_to_num(Data)
gidPlayer[key] = id
ConfirmationMenu(key)
menu_destroy(wMenu)
return PLUGIN_HANDLED
}
public ConfirmationMenu(id) {
new Name[32];get_user_name(gidPlayer[id], Name, 31)
formatex(Itemlol, charsmax(Itemlol), "%L", id, "CONFMENUTITLE", Name)
new Menu = menu_create(Itemlol, "ConfirmationHandler")
formatex(Itemlol, charsmax(Itemlol), "%L", id, "CONFMENUItem1")
menu_additem(Menu, Itemlol, "1")
formatex(Itemlol, charsmax(Itemlol), "%L", id, "CONFMENUItem2")
menu_additem(Menu, Itemlol, "2")
formatex(Itemlol, charsmax(Itemlol), "%L", id, "EXIT")
menu_setprop(Menu, MPROP_EXITNAME, Itemlol)
menu_display(id, Menu, 0)
return PLUGIN_HANDLED
}
public ConfirmationHandler(id, Menu, Itemlol)
{
if (Itemlol == MENU_EXIT)
{
ConfirmationMenu(id)
return PLUGIN_HANDLED
}
new data[6], iName[33]
new access, callback
menu_item_getinfo(Menu, Itemlol, access, data,5, iName, 63, callback)
new Name[32]
get_user_name(id,Name,31)
get_user_name(gidPlayer[id], iName, 31)
new key = str_to_num(data)
switch (key)
{
case 1:
{
ChatColor(id, "%L %L",id, "PREFIX",id, "PLAYERACCEPT", iName)
ChatColor(gidPlayer[id], "%L %L",id, "PREFIX", id, "TARGETACCEPT", Name)
client_cmd(id, "messagemode playermoney")
maxreqmenu[id]++
}
case 2:
{
ChatColor(id, "%L %L",id, "PREFIX",id, "PLAYERREFUSE")
ChatColor(gidPlayer[id], "%L %L",id, "PREFIX",id, "TARGETREFUSE", Name)
openmenu[id] = false
}
}
menu_destroy(Menu)
return PLUGIN_HANDLED
}
public player(id)
{
if(get_pcvar_num(Enable))
{
new say[300]
read_args(say, charsmax(say))
remove_quotes(say)
if(!is_str_num(say) || equal(say, ""))
return PLUGIN_HANDLED
money(id, say)
}
return PLUGIN_CONTINUE
}
money(id, say[]) {
new amount = str_to_num(say)
new victim = gidPlayer[id]
if( victim > 0 ) {
new names[2][32]
new idMoney = cs_get_user_money(id)
new vMoney = cs_get_user_money(victim)
get_user_name(id, names[0], 31)
get_user_name(victim, names[1], 31)
if(amount > idMoney)
{
ChatColor(id, "%L %L",id, "PREFIX",id, "ENOUGHMONEY")
client_cmd(id, "messagemode playermoney")
return PLUGIN_HANDLED
}
else {
cs_set_user_money(id, cs_get_user_money(id) - amount)
cs_set_user_money(victim, cs_get_user_money(victim) + amount)
if(vMoney > 16000)
{
cs_set_user_money(victim, 16000)
}
ChatColor(id, "%L %L",id, "PREFIX", id, "AMOUNTGIVE", amount, names[1])
ChatColor(victim, "%L %L",id, "PREFIX", id, "AMOUNTRECEIVE", names[0], amount)
ChatColor(0, "^1Игрок ^3%s ^1передал ^4$%i ^3%s", names[0], amount, names[1])
}
openmenu[id] = false
}
else {
return PLUGIN_HANDLED
}
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")
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, g_msgSayText, _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}