Trade Money Fix

Ky11eR

Что тут писать?
Есть плагин Trаde Mоney который позволяет передавать или просить деньги у игроков. Брал исходник с форума alliedmods где его выложил автор.
Ошибка плагина в том что нельзя передать деньги. При передачи денег в консоли у игрока пишет: Неизвестная команда: playermoney
Пробовал 2 версии 1.2 и 1.3 ошибка таже

Последняя версия 1.3(скачать)
Версия 1.2(скачать):
lang файл

Список изменений версий:
1.0 - initial releasе
1.1 - Аdded ML (thаnks ML-man)
1.2 - Fix ChаtColоr bug
- Added twо cvars ("mоney_maxrequest" and "mоney_maxgive") bоth (dеfault "5")
1.3 - Fix а bit the cоde & Аdd mоre lаnguages
Вот исходник версии 1.3. которой я пользуюсь:
Код:
#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 Item[900]

new Enable, maxreq, maxgive

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	RegisterHam( Ham_Spawn, "player", "fwSpawn", 1)
	
	register_clcmd("say /money", "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(Item, charsmax(Item), "%L", id, "MAINMENUTITLE")
			new Menu = menu_create(Item, "MainHandler")
			
			formatex(Item, charsmax(Item), "%L", id, "MAINMENUITEM1")
			menu_additem(Menu, Item, "1")
			formatex(Item, charsmax(Item), "%L", id, "MAINMENUITEM2")
			menu_additem(Menu, Item, "2")
			
			formatex(Item, charsmax(Item), "%L", id, "EXIT")
			menu_setprop(Menu, MPROP_EXITNAME, Item)
			menu_display(id, Menu, 0)
			
			openmenu[id] = true
		}	
	}
	return PLUGIN_HANDLED
}

public MainHandler(id, Menu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(Menu)
		openmenu[id] = false
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(Menu, item, 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(Item, charsmax(Item), "%L", id, "GIVEMENUTITLE")
		new wMenu = menu_create(Item, "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(Item, charsmax(Item), "\w%s \r$%d", Name, cs_get_user_money(i))
			menu_additem(wMenu, Item, Pos)
		}
		formatex(Item, charsmax(Item), "%L", id, "EXIT")
		menu_setprop(wMenu, MPROP_EXITNAME, Item)
		menu_display(id, wMenu, 0)
	}
	else
	{
		ChatColor(id, "%L %L",id, "PREFIX", id, "LIMITOPEN", maxgivemenu[id])
	}
}

public GiveMoneyHandler(id, wMenu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(wMenu)
		openmenu[id] = false
		return PLUGIN_HANDLED
	}
	
	new Data[6], Name[64]
	new Access, Callback
	menu_item_getinfo(wMenu, item, 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(Item, charsmax(Item), "%L", id, "REQMENUTITLE")
		new wMenu = menu_create(Item, "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(Item, charsmax(Item), "\w%s \r$%d", Name, cs_get_user_money(i))
			menu_additem(wMenu, Item, Pos)
		}
		formatex(Item, charsmax(Item), "%L", id, "EXIT")
		menu_setprop(wMenu, MPROP_EXITNAME, Item)
		menu_display(id, wMenu, 0)
	}
	else
	{
		ChatColor(id, "%L %L",id, "PREFIX", id, "LIMITOPEN", maxreqmenu[id])
	}
}

public RequestMoneyHandler(id, wMenu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(wMenu)
		openmenu[id] = false
		return PLUGIN_HANDLED
	}
	
	new Data[6], Name[64]
	new Access, Callback
	menu_item_getinfo(wMenu, item, 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(Item, charsmax(Item), "%L", id, "CONFMENUTITLE", Name)
	new Menu = menu_create(Item, "ConfirmationHandler")
	
	formatex(Item, charsmax(Item), "%L", id, "CONFMENUITEM1")
	menu_additem(Menu, Item, "1")
	formatex(Item, charsmax(Item), "%L", id, "CONFMENUITEM2")
	menu_additem(Menu, Item, "2")
	
	formatex(Item, charsmax(Item), "%L", id, "EXIT")
	menu_setprop(Menu, MPROP_EXITNAME, Item)
	menu_display(id, Menu, 0)
	
	return PLUGIN_HANDLED
}

public ConfirmationHandler(id, Menu, item)
{
	if (item == MENU_EXIT)
	{
		ConfirmationMenu(id)
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[33]
	new access, callback
	menu_item_getinfo(Menu, item, 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 name[32], vname[32]
		new idMoney = cs_get_user_money(id)
		new vMoney = cs_get_user_money(victim)
		
		get_user_name(id, name, charsmax(name))
		get_user_name(victim, vname, 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, vname)
			ChatColor(victim, "%L %L",id, "PREFIX", id, "AMOUNTRECEIVE", name, amount)
		}
		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()
		}
	}
}

Очень прошу помочь! В заранее спасибо!
 

Ky11eR

Что тут писать?
Вот такая ошибка в логах:

Код:
[AMXX] Displaying debug trace (plugin "TradeMoney.amxx")
[AMXX] Run time error 10: native error (native "menu_display")
[AMXX]    [0] TradeMoney.sma::MainMenu (line 66)
Plugin called menu_display when item=MENU_EXIT

[AMXX] Displaying debug trace (plugin "TradeMoney.amxx")
[AMXX] Run time error 10: native error (native "menu_display")
[AMXX]    [0] TradeMoney.sma::ConfirmationMenu (line 219)
[AMXX]    [1] TradeMoney.sma::RequestMoneyHandler (line 201)
 

๖ۣۣۜCrAsH™

Завсегдатый
PHP:
#include <amxmodx>
#include <cstrike>
#include <chatcolor>

#define	PLUGIN	"Money Transferer"
#define	VERSION	"1.0"
#define	AUTHOR	"kalash1k"

new players_menu, players[32], num, i
new accessmenu, iName[64], callback

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /tm", "transfer_menu", ADMIN_ALL, "")	// TM - transfer money
	register_clcmd("say /transfer", "transfer_menu", ADMIN_ALL, "")
	register_clcmd("say /money", "transfer_menu", ADMIN_ALL, "")
	register_clcmd("say_team /tm", "transfer_menu", ADMIN_ALL, "")
	register_clcmd("say_team /transfer", "transfer_menu", ADMIN_ALL, "")
	register_clcmd("say_team /money", "transfer_menu", ADMIN_ALL, "")

	
	register_clcmd("transfer", "transfer_money", ADMIN_ALL, "")
}

public transfer_menu(id)
{
	get_players(players, num, "h")
	
	if (num <= 1)
	{
		client_print_color(id, Red, "Некому передать деньги")
		return PLUGIN_HANDLED
	}
	
	new tempname[32], info[10]
	
	players_menu = menu_create("Игроки", "players_menu_handler")
	
	for(i = 0; i < num; i++)
	{
		if(players[i] == id)
			continue
		
		get_user_name(players[i], tempname, 31)
		num_to_str(players[i], info, 9)
		menu_additem(players_menu, tempname, info, 0)
	}
	
	menu_setprop(players_menu, MPROP_EXIT, MEXIT_ALL)
	
	menu_display(id, players_menu, 0)
	return PLUGIN_CONTINUE
}

public players_menu_handler(id, players_menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(players_menu)
		return PLUGIN_HANDLED
	}
	
	new data[6]
	
	menu_item_getinfo(players_menu, item, accessmenu, data, charsmax(data), iName, charsmax(iName), callback)
	
	new player = str_to_num(data)
	
	client_cmd(id, "messagemode ^"transfer %i^"", player)
	
	return PLUGIN_CONTINUE
}

public transfer_money(id)
{
	new param[5]
	read_argv(2, param, charsmax(param))
	
	for (new x; x < strlen(param); x++)
	{
		if(!isdigit(param[x]))
		{
			client_print_color(id, Red, "Параметр должен быть числом")
			return PLUGIN_HANDLED
		}
	}
	
	new amount = str_to_num(param)
	
	new money = cs_get_user_money(id)
	
	if (money < amount)
	{
		client_print_color(id, Red, "У вас не хватает денег")
		return PLUGIN_HANDLED
	}
	
	read_argv(1, param, charsmax(param))
	new player = str_to_num(param)
	
	new player_money = cs_get_user_money(player)
	
	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)
	
	client_print_color(0, Blue, "^1Игрок ^3%s ^1передал ^4$%i ^3%s", names[0], amount, names[1])
	
	return PLUGIN_HANDLED
}
 

Ky11eR

Что тут писать?
crash94 спасибо! Жаль ток что там возможности попросить денег нет.
P.S. Может всё таки найдутся добрые люди которые помогут переделать плагин Trаde Mоney... :confused:
 

Quit

Завсегдатый
Код:
#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 Item[900]

new Enable, maxreq, maxgive

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	RegisterHam( Ham_Spawn, "player", "fwSpawn", 1)
	
	register_clcmd("say /money", "MainMenu")
	register_clcmd("playermoney", "player_transfermoney", ADMIN_ALL, "")

	
	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(Item, charsmax(Item), "%L", id, "MAINMENUTITLE")
			new Menu = menu_create(Item, "MainHandler")
			
			formatex(Item, charsmax(Item), "%L", id, "MAINMENUITEM1")
			menu_additem(Menu, Item, "1")
			formatex(Item, charsmax(Item), "%L", id, "MAINMENUITEM2")
			menu_additem(Menu, Item, "2")
			
			formatex(Item, charsmax(Item), "%L", id, "EXIT")
			menu_setprop(Menu, MPROP_EXITNAME, Item)
			menu_display(id, Menu, 0)
			
			openmenu[id] = true
		}	
	}
	return PLUGIN_HANDLED
}

public MainHandler(id, Menu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(Menu)
		openmenu[id] = false
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(Menu, item, 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(Item, charsmax(Item), "%L", id, "GIVEMENUTITLE")
		new wMenu = menu_create(Item, "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(Item, charsmax(Item), "\w%s \r$%d", Name, cs_get_user_money(i))
			menu_additem(wMenu, Item, Pos)
		}
		formatex(Item, charsmax(Item), "%L", id, "EXIT")
		menu_setprop(wMenu, MPROP_EXITNAME, Item)
		menu_display(id, wMenu, 0)
	}
	else
	{
		ChatColor(id, "%L %L",id, "PREFIX", id, "LIMITOPEN", maxgivemenu[id])
	}
}

public GiveMoneyHandler(id, wMenu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(wMenu)
		openmenu[id] = false
		return PLUGIN_HANDLED
	}
	
	new Data[6], Name[64]
	new Access, Callback
	menu_item_getinfo(wMenu, item, 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(Item, charsmax(Item), "%L", id, "REQMENUTITLE")
		new wMenu = menu_create(Item, "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(Item, charsmax(Item), "\w%s \r$%d", Name, cs_get_user_money(i))
			menu_additem(wMenu, Item, Pos)
		}
		formatex(Item, charsmax(Item), "%L", id, "EXIT")
		menu_setprop(wMenu, MPROP_EXITNAME, Item)
		menu_display(id, wMenu, 0)
	}
	else
	{
		ChatColor(id, "%L %L",id, "PREFIX", id, "LIMITOPEN", maxreqmenu[id])
	}
}

public RequestMoneyHandler(id, wMenu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(wMenu)
		openmenu[id] = false
		return PLUGIN_HANDLED
	}
	
	new Data[6], Name[64]
	new Access, Callback
	menu_item_getinfo(wMenu, item, 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(Item, charsmax(Item), "%L", id, "CONFMENUTITLE", Name)
	new Menu = menu_create(Item, "ConfirmationHandler")
	
	formatex(Item, charsmax(Item), "%L", id, "CONFMENUITEM1")
	menu_additem(Menu, Item, "1")
	formatex(Item, charsmax(Item), "%L", id, "CONFMENUITEM2")
	menu_additem(Menu, Item, "2")
	
	formatex(Item, charsmax(Item), "%L", id, "EXIT")
	menu_setprop(Menu, MPROP_EXITNAME, Item)
	menu_display(id, Menu, 0)
	
	return PLUGIN_HANDLED
}

public ConfirmationHandler(id, Menu, item)
{
	if (item == MENU_EXIT)
	{
		ConfirmationMenu(id)
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[33]
	new access, callback
	menu_item_getinfo(Menu, item, 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 name[32], vname[32]
		new idMoney = cs_get_user_money(id)
		new vMoney = cs_get_user_money(victim)
		
		get_user_name(id, name, charsmax(name))
		get_user_name(victim, vname, 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, vname)
			ChatColor(victim, "%L %L",id, "PREFIX", id, "AMOUNTRECEIVE", name, amount)
		}
		openmenu[id] = false
	} 
	else {
		return PLUGIN_HANDLED
	}
	return PLUGIN_HANDLED
}

public player_transfermoney(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
}

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

Bos93

VIP
Тоже самое...
В консоли:
Код:
Unknown command: playermoney
Код:
public player_transfermoney(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
}
--->

Код:
public player_transfermoney(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_HANDLED
}
 

Ky11eR

Что тут писать?
Всё заменил, деньги так же не передаются, то есть:
Нажимаешь на ник игрока -> вводишь сумму денег -> enter -> и ничего не происходит, в консоли пусто...

Bos96 спасай)) даже на alliedmods помочь не могут, вся надежда на тебя...
 

neverminde111

Время
Всё заменил, деньги так же не передаются, то есть:
Нажимаешь на ник игрока -> вводишь сумму денег -> enter -> и ничего не происходит, в консоли пусто...

Bos96 спасай)) даже на alliedmods помочь не могут, вся надежда на тебя...
96 :teehee:
 

TrikSer

^_____^
Андрей ты прям помолодел на глазах :D
А вообще, привыкайте кидать исходники под спойлер, в будущем буду выдавать предупреждения...
 

Ky11eR

Что тут писать?
Поищи внимательно...
И да, что ручки уже совсем обленились самим написать теги сложно ?
Кнопку нашёл :rolleyes:

Вот такой код пока получился:

Код:
#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 Item[900]

new Enable, maxreq, maxgive

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	RegisterHam( Ham_Spawn, "player", "fwSpawn", 1)
	
	register_clcmd("say /money", "MainMenu")
	register_clcmd("playermoney", "player", ADMIN_ALL, "")

	
	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(Item, charsmax(Item), "%L", id, "MAINMENUTITLE")
			new Menu = menu_create(Item, "MainHandler")
			
			formatex(Item, charsmax(Item), "%L", id, "MAINMENUITEM1")
			menu_additem(Menu, Item, "1")
			formatex(Item, charsmax(Item), "%L", id, "MAINMENUITEM2")
			menu_additem(Menu, Item, "2")
			
			formatex(Item, charsmax(Item), "%L", id, "EXIT")
			menu_setprop(Menu, MPROP_EXITNAME, Item)
			menu_display(id, Menu, 0)
			
			openmenu[id] = true
		}	
	}
	return PLUGIN_HANDLED
}

public MainHandler(id, Menu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(Menu)
		openmenu[id] = false
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[64]
	new access, callback
	menu_item_getinfo(Menu, item, 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(Item, charsmax(Item), "%L", id, "GIVEMENUTITLE")
		new wMenu = menu_create(Item, "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(Item, charsmax(Item), "\w%s \r$%d", Name, cs_get_user_money(i))
			menu_additem(wMenu, Item, Pos)
		}
		formatex(Item, charsmax(Item), "%L", id, "EXIT")
		menu_setprop(wMenu, MPROP_EXITNAME, Item)
		menu_display(id, wMenu, 0)
	}
	else
	{
		ChatColor(id, "%L %L",id, "PREFIX", id, "LIMITOPEN", maxgivemenu[id])
	}
}

public GiveMoneyHandler(id, wMenu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(wMenu)
		openmenu[id] = false
		return PLUGIN_HANDLED
	}
	
	new Data[6], Name[64]
	new Access, Callback
	menu_item_getinfo(wMenu, item, 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(Item, charsmax(Item), "%L", id, "REQMENUTITLE")
		new wMenu = menu_create(Item, "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(Item, charsmax(Item), "\w%s \r$%d", Name, cs_get_user_money(i))
			menu_additem(wMenu, Item, Pos)
		}
		formatex(Item, charsmax(Item), "%L", id, "EXIT")
		menu_setprop(wMenu, MPROP_EXITNAME, Item)
		menu_display(id, wMenu, 0)
	}
	else
	{
		ChatColor(id, "%L %L",id, "PREFIX", id, "LIMITOPEN", maxreqmenu[id])
	}
}

public RequestMoneyHandler(id, wMenu, item)
{
	if (item == MENU_EXIT)
	{
		menu_destroy(wMenu)
		openmenu[id] = false
		return PLUGIN_HANDLED
	}
	
	new Data[6], Name[64]
	new Access, Callback
	menu_item_getinfo(wMenu, item, 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(Item, charsmax(Item), "%L", id, "CONFMENUTITLE", Name)
	new Menu = menu_create(Item, "ConfirmationHandler")
	
	formatex(Item, charsmax(Item), "%L", id, "CONFMENUITEM1")
	menu_additem(Menu, Item, "1")
	formatex(Item, charsmax(Item), "%L", id, "CONFMENUITEM2")
	menu_additem(Menu, Item, "2")
	
	formatex(Item, charsmax(Item), "%L", id, "EXIT")
	menu_setprop(Menu, MPROP_EXITNAME, Item)
	menu_display(id, Menu, 0)
	
	return PLUGIN_HANDLED
}

public ConfirmationHandler(id, Menu, item)
{
	if (item == MENU_EXIT)
	{
		ConfirmationMenu(id)
		return PLUGIN_HANDLED
	}
	
	new data[6], iName[33]
	new access, callback
	menu_item_getinfo(Menu, item, 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_HANDLED
}

money(id, say[]) {
	new amount = str_to_num(say)
	new victim = gidPlayer[id]
	
	if( victim > 0 ) {
		new name[32], vname[32]
		new idMoney = cs_get_user_money(id)
		new vMoney = cs_get_user_money(victim)
		
		get_user_name(id, name, charsmax(name))
		get_user_name(victim, vname, 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, vname)
			ChatColor(victim, "%L %L",id, "PREFIX", id, "AMOUNTRECEIVE", name, amount)
		}
		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()
		}
	}
}
Но ошибка таже не отправляются деньги
 

Ky11eR

Что тут писать?
Вот такая ошибка в логах:
Код:
Plugin called menu_display when item=MENU_EXIT
 [AMXX] Displaying debug trace (plugin "TradeMoney.amxx")
 [AMXX] Run time error 10: native error (native "menu_display")
 [0] TradeMoney.sma::ConfirmationMenu (line 218)
[AMXX]    [1] TradeMoney.sma::RequestMoneyHandler (line 200)
 
Сверху