Проблем с Shop плъгин

Въпроси и проблеми свързани с AMXModX.
Потребителски аватар

F33L Th3 P0W3R. REALSERV
Рекламатор
Рекламатор
Мнения: 317
Регистриран: 27 ное 2016, 17:47
Се отблагодари: 4 пъти
Получена благодарност: 24 пъти
Контакти:

Проблем с Shop плъгин

Мнение от F33L Th3 P0W3R. REALSERV » 08 авг 2018, 14:07

Сложил си плъгина, но не работи и не ти изкарва логове? Хм.. напиши amxx plugins в конзолата и снимай.
There are people who have money and people who are rich. ~

RealServ в Steam и Discord.

Потребителски аватар

OciXCrom™ MKD
Администратор
Администратор
Мнения: 3836
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 2 пъти
Получена благодарност: 95 пъти
Години: 20
Контакти:

Проблем с Shop плъгин

Мнение от OciXCrom™ MKD » 08 авг 2018, 14:58

Предостави кода на двата плъгина.

Потребителски аватар

Автор на темата
atmax
Потребител
Потребител
Мнения: 12
Регистриран: 22 мар 2018, 15:06

Проблем с Shop плъгин

Мнение от atmax » 09 авг 2018, 09:30

Написах amxx plugins и ми изкара грешката на плъгина вече намира се на ред 26 и най-долу пак го изкара ето:

Код: Избери всички

Currently loaded plugins:
       name                    version     author            file             status   
 [  1] Admin Base              1.8.2       AMXX Dev Team     admin.amxx       running  
 [  2] Admin Commands          1.8.2       AMXX Dev Team     admincmd.amxx    running  
 [  3] Admin Help              1.8.2       AMXX Dev Team     adminhelp.amxx   running  
 [  4] Slots Reservation       1.8.2       AMXX Dev Team     adminslots.amxx  running  
 [  5] Multi-Lingual System    1.8.2       AMXX Dev Team     multilingual.am  running  
 [  6] Menus Front-End         1.8.2       AMXX Dev Team     menufront.amxx   running  
 [  7] Commands Menu           1.8.2       AMXX Dev Team     cmdmenu.amxx     running  
 [  8] Players Menu            1.8.2       AMXX Dev Team     plmenu.amxx      running  
 [  9] Maps Menu               1.8.2       AMXX Dev Team     mapsmenu.amxx    running  
 [ 10] Plugin Menu             1.8.2       AMXX Dev Team     pluginmenu.amxx  running  
 [ 11] Admin Chat              1.8.2       AMXX Dev Team     adminchat.amxx   running  
 [ 12] Anti Flood              1.8.2       AMXX Dev Team     antiflood.amxx   running  
 [ 13] Scrolling Message       1.8.2       AMXX Dev Team     scrollmsg.amxx   running  
 [ 14] Info. Messages          1.8.2       AMXX Dev Team     imessage.amxx    running  
 [ 15] Admin Votes             1.8.2       AMXX Dev Team     adminvote.amxx   running  
 [ 16] NextMap                 1.8.2       AMXX Dev Team     nextmap.amxx     running  
 [ 17] Nextmap Chooser         1.8.2       AMXX Dev Team     mapchooser.amxx  running  
 [ 18] TimeLeft                1.8.2       AMXX Dev Team     timeleft.amxx    running  
 [ 19] Pause Plugins           1.8.2       AMXX Dev Team     pausecfg.amxx    running  
 [ 20] Stats Configuration     1.8.2       AMXX Dev Team     statscfg.amxx    running  
 [ 21] ProFragsMaker           2.0         Grzyboo and tQQ   ProFragsMaker.a  running  
 [ 22] Hide N Seek             4.51        Jon               hns.amxx         running  
 [ 23] Shock Grenade           1.2         Dedihost n/ Niko  shockwave.amxx   running  
 [ 24] No Reconnect            1.8         Smiley            AntiReconnect.a  running  
 [ 25] HNS Menu                1.0         Smiley            MMenu.amxx       running  
 [ 26] unknown                 unknown     unknown           AJW1337_BM_Item  bad load 
 [ 27] Respawn Chance          1.0         Smiley            Reviveme.amxx    running  
 [ 28] SpecList                1.2a        SasaiLalka        Ultimatespec.am  running  
 [ 29] Unstuck with button     1.1         Smiley            Unstuck.amxx     running  
 [ 30] HideNSeek XP Mod        3.0         Exolent & LudAkA  hns_xp_nosteam.  running  
 [ 31] NadeModes               9.61        Nomexous & OT     nademodes.amxx   running  
 [ 32] HNS XP Chance           1.1         Dr.Small a.k.a D  hnsxp_chance.am  running  
 [ 33] FrostNades              2.09        Avalanche         frostnades.amxx  running  
 [ 34] AntiCamping Advanced    1.01        SpaceDude - ADVa  Campmeter.amxx   running  
 [ 35] Show CS Version         0.1         Nikolow           amx_version.amx  running  
 [ 36] Mwheel enForcer         1.0(1)      Fatalis           mwheelupenforce  running  
 [ 37] Ultimate Jump Anti Che  1.4.2       DediHost & Nikol  ultimate_jump_a  running  
 [ 38] Pain Shock Free         1.0.0       Simon Logic       pain_shock_free  running  
 [ 39] Simple Demo Recorder    2.0         OciXCrom          crx_demorecorde  running  
( 26) Load fails: Load error 17 (invalid file format or version) (plugin "AJW1337_BM_ItemShop.amxx")
39 plugins, 38 running
OciXCrom™ написа:
08 авг 2018, 14:58
Предостави кода на двата плъгина.
Заповядай OciXCrom:

Код: Избери всички

/*==================================================================================================

			       |**********************************|
			       |==================================|
			       |=     BlockMaker Item Shop	 =|
			       |==================================|
			       |**********************************|

|= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =|
 |												   |
 |												   |
 |			Copyright © 2017-2018, AJW1337// 					   |
 |			This file is provided as is (no warranties) 				   |
 |												   |
 |			BlockMaker Item Shop is free software; 			  		   |
 |			you can redistribute it and/or modify it under the terms of the 	   |
 |			GNU General Public License as published by the Free Software Foundation.   |
 |												   |	
 |			This program is distributed in the hope that it will be useful,            |
 |			but WITHOUT ANY WARRANTY; without even the implied warranty of             |
 |			MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 			   |
 |												   |
 |												   |
 |			Plugin requested by Coca Cola _-FxF-_					   |
 |												   |
|= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =| 
					  |---------------|
					  |   Changelog   |
					  |---------------|
				v1.0 Official Plugin Release
											 
==================================================================================================*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <fvault>
#include <WPMGPrintChatColor>
#include <hamsandwich>
#include <engine>

#if AMXX_VERSION_NUM < 183
	#include <dhudmessage>
	#define client_disconnected client_disconnect
#endif

native add_user_immune(id)
native remove_user_immune(id)

native hnsxp_get_user_xp(id)
native hnsxp_set_user_xp(id, iExp)

stock hnsxp_add_user_xp(id, iExp)
	return hnsxp_set_user_xp(id, hnsxp_get_user_xp(id) + iExp)


new const PLUGIN[] = "BlockMaker Item Shop"
new const VERSION[] = "1.0"
new const AUTHOR[] = "AJW1337//"
new const BM_ItemShopDB[] = "BM_ItemShop_DataBase"

enum _:Info
{
	PRICE = 0,
	LIMIT,
	AMOUNT
}

enum _:Items
{
	HEALTH,
	ARMOR,
	HE_NADE,
	NO_FROST,
	NO_FLASH,
	AWP,
	M3,
	DEAGLE,
	XP,
	RESPAWN
}

new const szItemNames[Items][] =
{
	"Health",
	"Armor",
	"HE Grenade",
	"Anti Frost",
	"Anti Flash",
	"AWP",
	"M3",
	"Deagle",
	"XP",
	"Respawn"
}

new ItemInfo[Items][Info], g_ItemsLimit[33][Items], bool:g_IsBought[33][Items]
new g_iPoints[33], bool:g_bConnected[33]
new g_iSyncMessage

// For Anti Flash
new Float:g_flGameTime[2], g_iOwner
new g_iGrenade[32], bool:g_iTrackEnemy, bool:g_iTrack[33]
new g_iMsgScreenFade, g_iLast, g_iSyncData
new g_bNoFlash[33]
// For Anti Flash

enum
{
	SECTION_SHOP = 1,
	SECTION_PRICE,
	SECTION_LIMIT,
	SECTION_AMOUNT
}

enum _:DataItems
{
	SHOP_PREFIX[32],
	SHOP_MENU_PREFIX[32],
	SHOP_COMMAND[32],
	HS_KILL_POINTS,
	KILL_POINTS,
	PRINT_COLOR,
	D_HUD_MESSAGE,
	D_HUD_CUSTOM_COLOR,
	RED_COLOR,
	GREEN_COLOR,
	BLUE_COLOR,
	Float:COORD_X,
	Float:COORD_Y
}

new g_eItems[DataItems]

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_cvar("BM_ItemShop", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	
	register_dictionary("blockmaker_itemshop.txt")
	
	register_clcmd("say", "Command_HookSay")
	register_clcmd("say_team", "Command_HookSay")
	
	register_concmd("amx_reload_file", "Command_ReloadFile", ADMIN_BAN)
	
	register_clcmd("BM_Points_Amount", "Command_BM_Points_Amount", ADMIN_BAN)

	register_event("DeathMsg", "eventDeathMsg", "a")
	register_logevent("eventRoundStart", 2, "1=Round_Start")
	
	register_event("ScreenFade", "eventFlash", "be", "4=255", "5=255", "6=255", "7>199")
	register_event("TextMsg", "fire_in_the_hole", "b", "2&#Game_radio", "4&#Fire_in_the_hole")
	register_event("TextMsg", "fire_in_the_hole2", "b", "3&#Game_radio", "5&#Fire_in_the_hole")
	register_event("99", "grenade_throw", "b")
	set_task(2.0, "flash", .flags="b")
	g_iMsgScreenFade = get_user_msgid("ScreenFade")
	
	new iEnt = create_entity("info_target")
	entity_set_string(iEnt, EV_SZ_classname, "task_entity")
	
	register_think("task_entity", "HudEntity")
	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 2.0)
	
	g_iSyncMessage = CreateHudSyncObj()
	
	ReadFile()
}
public plugin_natives()
{
	register_native("get_user_bm_points", "_get_user_bm_points")
	register_native("set_user_bm_points", "_set_user_bm_points")
}
public Command_ReloadFile(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		goto Handled
	
	ReadFile()
		
	Handled:
	return PLUGIN_HANDLED
}
ReadFile()
{
	static szConfigsDir[64], iFile
	get_configsdir(szConfigsDir, charsmax(szConfigsDir))
	add(szConfigsDir, charsmax(szConfigsDir), "/BM_ItemShop.ini")
	iFile = fopen(szConfigsDir, "rt")
	
	if (iFile)
	{
		static szLineData[160], szKey[32], szValue[128], iSection
		
		while (!feof(iFile))
		{
			fgets(iFile, szLineData, charsmax(szLineData))
			trim(szLineData)
			
			switch (szLineData[0])
			{
				case EOS, ';': continue
				case '[':
				{
					if (szLineData[strlen(szLineData) -1] == ']')
					{
						if (containi(szLineData, "item shop") != -1)
							iSection = SECTION_SHOP
						else if (containi(szLineData, "item prices") != -1)
							iSection = SECTION_PRICE
						else if (containi(szLineData, "item limits") != -1)
							iSection = SECTION_LIMIT
						else if (containi(szLineData, "item amounts") != -1)
							iSection = SECTION_AMOUNT
					}					
					else
						continue
				}
				default:
				{
					strtok(szLineData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
					trim(szKey)
					trim(szValue)
					
					if (is_eos_line(szValue))
						continue
						
					switch(iSection)
					{
						case SECTION_SHOP:
						{
							if (equal(szKey, "BM_SHOP_COMMANDS"))
							{
								while (szValue[0] != 0 && strtok(szValue, szKey, charsmax(szKey), szValue, charsmax(szValue), ','))
								{
									trim(szKey)
									trim(szValue)
									register_clcmd(szKey, "Command_Shop")
								}
							}
							else if (equal(szKey, "BM_SHOP_PRINT_COLOR"))
								g_eItems[PRINT_COLOR] = str_to_num(szValue)
							else if (equal(szKey, "BM_SHOP_PREFIX"))
								copy(g_eItems[SHOP_PREFIX], charsmax(g_eItems[SHOP_PREFIX]), szValue)
							else if (equal(szKey, "BM_SHOP_MENU_PREFIX"))
								copy(g_eItems[SHOP_MENU_PREFIX], charsmax(g_eItems[SHOP_MENU_PREFIX]), szValue)
							else if (equal(szKey, "BM_SHOP_HEADSHOT_KILL_POINTS"))
								g_eItems[HS_KILL_POINTS] = str_to_num(szValue)
							else if (equal(szKey, "BM_SHOP_NORMAL_KILL_POINTS"))
								g_eItems[KILL_POINTS] = str_to_num(szValue)
							else if (equal(szKey, "BM_SHOP_D_HUD_MESSAGE"))
								g_eItems[D_HUD_MESSAGE] = clamp(hud_dhud(szValue), false, true)
							else if (equal(szKey, "BM_SHOP_D_HUD_CUSTOM_COLOR"))
								g_eItems[D_HUD_CUSTOM_COLOR] = clamp(on_off(szValue), false, true)
							else if (equal(szKey, "BM_SHOP_D_HUD_RED_COLOR"))
								g_eItems[RED_COLOR] = clamp(str_to_num(szValue), 0, 255)
							else if (equal(szKey, "BM_SHOP_D_HUD_GREEN_COLOR"))
								g_eItems[GREEN_COLOR] = clamp(str_to_num(szValue), 0, 255)
							else if (equal(szKey, "BM_SHOP_D_HUD_BLUE_COLOR"))
								g_eItems[BLUE_COLOR] = clamp(str_to_num(szValue), 0, 255)
							else if (equal(szKey, "BM_SHOP_D_HUD_COORD_X"))
								g_eItems[COORD_X] = _:str_to_float(szValue)
							else if (equal(szKey, "BM_SHOP_D_HUD_COORD_Y"))
								g_eItems[COORD_Y] = _:str_to_float(szValue)
						}
						case SECTION_PRICE:
						{
							if (equal(szKey, "BM_HEALTH_PRICE"))
								ItemInfo[HEALTH][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_ARMOR_PRICE"))
								ItemInfo[ARMOR][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_HE_GRENADE_PRICE"))
								ItemInfo[HE_NADE][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FROST_PRICE"))
								ItemInfo[NO_FROST][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FLASH_PRICE"))
								ItemInfo[NO_FLASH][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_AWP_PRICE"))
								ItemInfo[AWP][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_M3_PRICE"))
								ItemInfo[M3][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_DEAGLE_PRICE"))
								ItemInfo[DEAGLE][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_XP_PRICE"))
								ItemInfo[XP][PRICE] = str_to_num(szValue)
							else if (equal(szKey, "BM_RESPAWN_PRICE"))
								ItemInfo[RESPAWN][PRICE] = str_to_num(szValue)
						}
						case SECTION_LIMIT:
						{
							if (equal(szKey, "BM_HEALTH_LIMIT"))
								ItemInfo[HEALTH][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ARMOR_LIMIT"))
								ItemInfo[ARMOR][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_HE_GRENADE_LIMIT"))
								ItemInfo[HE_NADE][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FROST_LIMIT"))
								ItemInfo[NO_FROST][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FLASH_LIMIT"))
								ItemInfo[NO_FLASH][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_AWP_LIMIT"))
								ItemInfo[AWP][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_M3_LIMIT"))
								ItemInfo[M3][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_DEAGLE_LIMIT"))
								ItemInfo[DEAGLE][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_XP_LIMIT"))
								ItemInfo[XP][LIMIT] = str_to_num(szValue)
							else if (equal(szKey, "BM_RESPAWN_LIMIT"))
								ItemInfo[RESPAWN][LIMIT] = str_to_num(szValue)
						}
						case SECTION_AMOUNT:
						{
							if (equal(szKey, "BM_HEALTH_AMOUNT"))
								ItemInfo[HEALTH][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ARMOR_AMOUNT"))
								ItemInfo[ARMOR][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_HE_GRENADE_AMOUNT"))
								ItemInfo[HE_NADE][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FROST_AMOUNT"))
								ItemInfo[NO_FROST][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_ANTI_FLASH_AMOUNT"))
								ItemInfo[NO_FLASH][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_AWP_AMOUNT"))
								ItemInfo[AWP][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_M3_AMOUNT"))
								ItemInfo[M3][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_DEAGLE_AMOUNT"))
								ItemInfo[DEAGLE][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_XP_AMOUNT"))
								ItemInfo[XP][AMOUNT] = str_to_num(szValue)
							else if (equal(szKey, "BM_RESPAWN_AMOUNT"))
								ItemInfo[RESPAWN][AMOUNT] = str_to_num(szValue)
						}
					}
				}
			}
			
		}
		fclose(iFile)
	}
}
bool:is_eos_line(szString[]) return szString[0] == EOS ? true : false
bool:hud_dhud(szString[]) return szString[0] == 'd' ? true : false
bool:on_off(szString[]) return szString[1] == 'n' ? true : false

public _get_user_bm_points(iPlugin, iParams)
{
	new id = get_param(1)
	
	if (!is_user_connected(id))
		return -1
	
	return g_iPoints[id]
}

public _set_user_bm_points(iPlugin, iParams)
{
	new id = get_param(1)
	
	if (!is_user_connected(id))
		return false
	
	g_iPoints[id] = get_param(2)
	return true
}

public HudEntity(iEnt)
{
	static iPlayers[32], iNum, id, szHostName[64]
	get_players(iPlayers, iNum, "ch")
	
	for (new i = 0; i < iNum; i++)
	{
		id = iPlayers[i]
		
		if (!is_user_connected(id) || !is_user_alive(id))
			continue
		
		get_user_name(0, szHostName, charsmax(szHostName))
		
		if (!g_eItems[D_HUD_MESSAGE])
		{
			if (g_eItems[D_HUD_CUSTOM_COLOR])
				set_hudmessage(g_eItems[RED_COLOR], g_eItems[GREEN_COLOR], g_eItems[BLUE_COLOR], g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
			else
				set_hudmessage(random(256), random(256), random(256), g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
			
			if(get_cvar_num("mp_timelimit")) 
			{
				ShowSyncHudMsg(id, g_iSyncMessage, "%L", id, "D_HUD_MESSAGE_TIMELEFT",
				get_user_health(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName, (get_timeleft( ) / 60), (get_timeleft() % 60))
			}
			else 
			{
				ShowSyncHudMsg(id, g_iSyncMessage, "%L", id, "D_HUD_MESSAGE_NO_TIMELEFT",
				get_user_health(id), get_user_armor(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName)
			}
		}
		else if (g_eItems[D_HUD_MESSAGE])
		{
			if (g_eItems[D_HUD_CUSTOM_COLOR])
				set_dhudmessage(g_eItems[RED_COLOR], g_eItems[GREEN_COLOR], g_eItems[BLUE_COLOR], g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
			else
				set_dhudmessage(random(256), random(256), random(256), g_eItems[COORD_X], g_eItems[COORD_Y], 0, 0.8, 0.8)
				
			if(get_cvar_num("mp_timelimit")) 
			{
				show_dhudmessage(id, "%L", id, "D_HUD_MESSAGE_TIMELEFT",
				get_user_health(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName, (get_timeleft( ) / 60), (get_timeleft() % 60))
			}
			else 
			{
				show_dhudmessage(id, "%L", id, "D_HUD_MESSAGE_NO_TIMELEFT",
				get_user_health(id), get_user_armor(id), g_iPoints[id], hnsxp_get_user_xp(id), szHostName)
			}
		}
	}
	entity_set_float(iEnt, EV_FL_nextthink, get_gametime() + 0.5)
}

public client_putinserver(id)
{
	for (new i = 0; i < sizeof(szItemNames); i++)
	{
		g_IsBought[id][i] = false
		g_ItemsLimit[id][i] = 0
	}
	
	g_bNoFlash[id] = false
	remove_user_immune(id)
	
	new szName[32]
	get_user_name(id, szName, charsmax(szName))
	
	set_task(0.1, "LoadData", id, szName, charsmax(szName))
}

public client_disconnected(id)
{
	for (new i = 0; i < sizeof(szItemNames); i++)
	{
		g_IsBought[id][i] = false
		g_ItemsLimit[id][i] = 0
	}
	
	g_bNoFlash[id] = false
	remove_user_immune(id)
	
	if (g_bConnected[id])
	{
		new szName[32]
		get_user_name(id, szName, charsmax(szName))
		
		SaveData(id, szName)
		
		g_bConnected[id] = false
	}
}

public eventRoundStart()
{
	for (new i = 0; i < get_maxplayers(); i++)
	{
		for (new j = 0; j < Items; j++)
		{
			g_IsBought[i][j] = false
			g_ItemsLimit[i][j] = 0
		}
		remove_user_immune(i)
		g_bNoFlash[i] = false
	}
}

public eventDeathMsg()
{
	new iKiller = read_data(1)
	,iVictim = read_data(2)
	,iHeadShot = read_data(3)
	
	if (iKiller == iVictim || !is_user_connected(iKiller))
		return
	
	new szName[32]
	get_user_name(iKiller, szName, charsmax(szName))
	
	for (new i = 0; i < sizeof(szItemNames); i++)
		g_IsBought[iVictim][i] = false
	
	g_iPoints[iKiller] += iHeadShot == 1 ? g_eItems[HS_KILL_POINTS] : g_eItems[KILL_POINTS]
	
	if (g_bConnected[iKiller])
		SaveData(iKiller, szName)
}

public Command_HookSay(id)
{
	new szArgs[64], szCommand[32], szUser[32], szAmount[8]
	read_args(szArgs, charsmax(szArgs))
	remove_quotes(szArgs)
	parse(szArgs, szCommand, charsmax(szCommand), szUser, charsmax(szUser), szAmount, charsmax(szAmount))
	
	if (equal(szCommand, "/points"))
	{
		if (szUser[0] == EOS)
		{
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "YOUR_POINTS", g_eItems[SHOP_PREFIX], g_iPoints[id])
			return PLUGIN_HANDLED
		}
		else
		{
			new iTarget = cmd_target(id, szUser, 0)
			
			if (!iTarget)
			{
				PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_FOUND",g_eItems[SHOP_PREFIX])
				return PLUGIN_HANDLED
			}
			
			new szName[32]
			get_user_name(iTarget, szName, charsmax(szName))
			
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "TARGET_POINTS", g_eItems[SHOP_PREFIX], szName, g_iPoints[iTarget])
			return PLUGIN_HANDLED
		}
	}
	else if (equal(szCommand, "/shopmenu"))
	{
		if (get_user_flags(id) & ADMIN_BAN)
			ToggleShopMenu(id)
		else
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NO_ACCESS", g_eItems[SHOP_PREFIX])
		
		return PLUGIN_HANDLED
	}
	else if (equal(szCommand, "/give"))
	{
		if (szUser[0] == EOS || szAmount[0] == EOS)
		{
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "USAGE_GIVE", g_eItems[SHOP_PREFIX])
			return PLUGIN_HANDLED
		}
		
		new iAmount = str_to_num(szAmount)
		
		if (iAmount <= 0)
		{
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ONLY_POSITIVE", g_eItems[SHOP_PREFIX])
			return PLUGIN_HANDLED
		}
		
		new iTarget = cmd_target(id, szUser, 0)
		
		if (!iTarget)
		{
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_FOUND", g_eItems[SHOP_PREFIX])
			return PLUGIN_HANDLED
		}
		
		if (iTarget == id)
		{
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "CANT_GIVE_TO_YOURSELF", g_eItems[SHOP_PREFIX])
			return PLUGIN_HANDLED
		}
			
		if (iAmount > g_iPoints[id])
			iAmount = g_iPoints[id]
		
		new szName[2][32]
		get_user_name(id, szName[0], charsmax(szName[]))
		get_user_name(iTarget, szName[1], charsmax(szName[]))
		
		g_iPoints[id] -= iAmount
		g_iPoints[iTarget] += iAmount
		
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "POINTS_GAVE", g_eItems[SHOP_PREFIX], iAmount, szName[1])
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "POINTS_RECEIVE", g_eItems[SHOP_PREFIX], szName[0], iAmount)
		
		return PLUGIN_HANDLED
	}
	
	return PLUGIN_CONTINUE
}
public Command_Shop(id)
{
	if (cs_get_user_team(id) == CS_TEAM_T)
		OpenItemShop(id)
	else
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "MUST_BE_TERROR", g_eItems[SHOP_PREFIX])
			
	return PLUGIN_HANDLED
}
public OpenItemShop(id)
{
	static szTitle[128]
	formatex(szTitle, charsmax(szTitle), "%L", id, "ITEM_SHOP_MENU_NAME", g_eItems[SHOP_MENU_PREFIX], g_iPoints[id])
	new iMenu = menu_create(szTitle, "shop_handler")
	
	for (new i = 0; i < sizeof(szItemNames); i++)
	{
		new szItem[128]
		
		if (i == HEALTH || i == ARMOR || i == XP)
		{
			formatex(szItem, charsmax(szItem), "%L", id, "HP_AP_XP_SHOP_ITEMS", g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\d" : "\w",
			ItemInfo[i][AMOUNT], szItemNames[i], ItemInfo[i][PRICE],
			g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\r" : "\d", g_ItemsLimit[id][i], ItemInfo[i][LIMIT])
		}
		else
		{
			formatex(szItem, charsmax(szItem), "%L", id, "ALL_OTHER_ITEMS", g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\d" : "\w",
			szItemNames[i], ItemInfo[i][PRICE],
			g_ItemsLimit[id][i] >= ItemInfo[i][LIMIT] ? "\r" : "\d", g_ItemsLimit[id][i], ItemInfo[i][LIMIT])
		}
		menu_additem(iMenu, szItem)
	}
	menu_display(id, iMenu)
	return PLUGIN_HANDLED
}

public shop_handler(id, iMenu, Item)
{
	if (!is_user_connected(id))
		goto Handled
	
	if (Item == MENU_EXIT)
	{
		menu_cancel(id)
		goto Handled
	}
	
	if (g_iPoints[id] < ItemInfo[Item][PRICE])
	{
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NO_MONEY", g_eItems[SHOP_PREFIX])
		menu_destroy(iMenu)
		goto Handled
	}
	
	if (g_ItemsLimit[id][Item] >= ItemInfo[Item][LIMIT])
	{
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "MAX_BUYS", g_eItems[SHOP_PREFIX])
		menu_destroy(iMenu)
		goto Handled
	}
	
	if (!is_user_alive(id) && Item != RESPAWN)
	{
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_ALIVE", g_eItems[SHOP_PREFIX])
		menu_destroy(iMenu)
		goto Handled
	}
	
	switch (Item)
	{
		case HEALTH: fm_set_user_health(id, get_user_health(id) + ItemInfo[HEALTH][AMOUNT])
		case ARMOR: fm_set_user_armor(id, get_user_armor(id) + ItemInfo[ARMOR][AMOUNT])
		case HE_NADE:
		{
			if (!user_has_weapon(id, CSW_HEGRENADE))
				fm_give_item(id, "weapon_hegrenade")
			else
			{
				fm_give_item(id, "weapon_hegrenade")
				cs_set_user_bpammo(id, CSW_HEGRENADE, cs_get_user_bpammo(id, CSW_HEGRENADE) + ItemInfo[HE_NADE][AMOUNT])
			}
		}
		case NO_FROST: add_user_immune(id)
		case NO_FLASH: g_bNoFlash[id] = true
		case AWP:
		{
			new iWeapon = fm_give_item(id, "weapon_awp")
			
			if (pev_valid(iWeapon))
			{
				cs_set_weapon_ammo(iWeapon, ItemInfo[AWP][AMOUNT])
			}
		}
		case M3:
		{
			new iWeapon = fm_give_item(id, "weapon_m3")
			
			if (pev_valid(iWeapon))
			{
				cs_set_weapon_ammo(iWeapon, ItemInfo[M3][AMOUNT])
			}
		}
		case DEAGLE:
		{
			new iWeapon = fm_give_item(id, "weapon_deagle")
			
			if (pev_valid(iWeapon))
			{
				cs_set_weapon_ammo(iWeapon, ItemInfo[DEAGLE][AMOUNT])
			}
		}
		case XP: hnsxp_add_user_xp(id, ItemInfo[XP][AMOUNT])
		case RESPAWN:
		{
			if (is_user_alive(id))
			{
				PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "RESPAWN_ALIVE", g_eItems[SHOP_PREFIX])
				return PLUGIN_CONTINUE
			}
			ExecuteHamB(Ham_CS_RoundRespawn, id)
		}
	}
	
	g_iPoints[id] -= ItemInfo[Item][PRICE]
	g_ItemsLimit[id][Item]++
	g_IsBought[id][Item] = true
	
	if (Item == HEALTH || Item == ARMOR || Item == XP)
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "HP_AP_XP_SHOP_ITEMS_CHAT", g_eItems[SHOP_PREFIX], ItemInfo[Item][AMOUNT], szItemNames[Item], ItemInfo[Item][PRICE])
	else
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ALL_OTHER_ITEMS_CHAT", g_eItems[SHOP_PREFIX], szItemNames[Item], ItemInfo[Item][PRICE])
		
	menu_destroy(iMenu)
	
	Handled:
	return PLUGIN_HANDLED
}

// Anti-Flash - Start
public flash()
{
	new Float:flGameTime = get_gametime()
	
	if (flGameTime - g_flGameTime[1] > 2.5)
	{
		for (new i = 0; i < 32; i++)
			g_iGrenade[i] = 0
	}
}

public eventFlash(id)
{
	new Float:flGameTime = get_gametime()
	
	if (flGameTime != g_flGameTime[0])
	{
		g_iOwner = get_grenade_owner()
		g_flGameTime[0] = flGameTime
		
		for (new i = 0; i < 32; i++)
			g_iTrack[i] = false
			
		g_iTrackEnemy = false
	}
	if (is_user_connected(g_iOwner) && g_bNoFlash[id])
	{
		g_iTrackEnemy = true
		
		message_begin(MSG_ONE, g_iMsgScreenFade, {0,0,0}, id)
		write_short(1)
		write_short(1)
		write_short(1)
		write_byte(0)
		write_byte(0)
		write_byte(0)
		write_byte(255)
		message_end()
	}
}
public flash_delay()
{
	if (!g_iTrackEnemy)
	{
		for (new i = 0; i < 33; i++)
		{
			if (g_iTrack[i] && is_user_connected(i))
			{
				message_begin(MSG_ONE, g_iMsgScreenFade, {0,0,0}, i) 
				write_short(1)
				write_short(1)
				write_short(1)
				write_byte(0)
				write_byte(0)
				write_byte(0)
				write_byte(255)
				message_end()
			}
		}
	}
}

public grenade_throw()
{
	if (g_iSyncData == 0)
		goto Continue
		
	g_iSyncData--
	
	if (read_datanum() < 2)
		return PLUGIN_HANDLED_MAIN
		
	if (read_data(1) == 11 && (read_data(2) == 0 || read_data(2) == 1))
		add_grenade_owner(g_iLast)
	
	Continue:
	return PLUGIN_CONTINUE
}
public fire_in_the_hole()
{
	new szName[32]
	read_data(3, szName, charsmax(szName))
	
	new iTempLast = get_user_index(szName)
	new iJunk
	
	if ((iTempLast == 0) || (!is_user_connected(iTempLast)))
		goto Continue
	
	if (get_user_weapon(iTempLast, iJunk, iJunk) == CSW_FLASHBANG)
	{
		g_iLast  =iTempLast
		g_iSyncData = 2
	}
	
	Continue:
	return PLUGIN_CONTINUE
}

public fire_in_the_hole2()
{
	new szName[32]
	read_data(4, szName, charsmax(szName))
	
	new iTempLast = get_user_index(szName)
	new iJunk
	
	if ((iTempLast == 0) || (!is_user_connected(iTempLast)))
		goto Continue
	
	if (get_user_weapon(iTempLast, iJunk, iJunk) == CSW_FLASHBANG)
	{
		g_iLast  =iTempLast
		g_iSyncData = 2
	}
	
	Continue:
	return PLUGIN_CONTINUE
}
add_grenade_owner(iOwner)
{
	new Float:flGameTime = get_gametime()
	
	g_flGameTime[1] = flGameTime
	
	for (new i = 0; i < 32; i++)
	{
		if (g_iGrenade[i] == 0)
		{
			g_iGrenade[i] = iOwner
			return
		}
	}
}
get_grenade_owner()
{
	new iWhich = g_iGrenade[0]
	
	for (new i = 1; i < 32; i++)
		g_iGrenade[i-1] = g_iGrenade[i]
	
	g_iGrenade[31] = 0
	return iWhich
}

public fw_emitsound(entity, channel, const szSample[], Float:volume, Float:attenuation, fFlags, pitch)
{
	if(!equali(szSample,"weapons/flashbang-1.wav") && !equali(szSample,"weapons/flashbang-2.wav"))
		goto Ignored
	
	new Float:flGameTime = get_gametime()
	
	if(flGameTime != g_flGameTime[0])
	{
		g_iOwner = get_grenade_owner()
		goto Ignored
	}
	
	Ignored:
	return FMRES_IGNORED;
}

/* ================================================
	Shop Points Menu
================================================ */
new g_iPlayer[33], g_iMenuType[33]

public ToggleShopMenu(id)
{
	static szTitle[64]
	formatex(szTitle, charsmax(szTitle), "%s \d~ \wShop Admin Menu", g_eItems[SHOP_MENU_PREFIX])
	new iMenu = menu_create(szTitle, "shopmenu_handler")
	
	menu_additem(iMenu, "\yGive \dPlayer \rBM Points")
	menu_additem(iMenu, "\yTake \dPlayer \rBM Points^n")
	
	menu_setprop(iMenu, MPROP_NUMBER_COLOR, "\w")
	menu_setprop(iMenu, MPROP_EXITNAME, "\yExit \rShop \dAdmin \rMenu\d..")
	menu_display(id, iMenu, 0)
	return PLUGIN_HANDLED
}
public shopmenu_handler(id, iMenu, Item)
{
	if (Item == MENU_EXIT)
	{
		menu_destroy(iMenu)
		goto Handled
	}
	
	switch(Item)
	{
		case 0: PlayerPointsMenu(id, 1)
		case 1: PlayerPointsMenu(id, 2)
	}
	
	menu_destroy(iMenu)
	Handled:
	return PLUGIN_HANDLED
}

public PlayerPointsMenu(id, iType)
{
	static szTitle[64]
	formatex(szTitle, charsmax(szTitle), "Choose Player to %s XP", iType == 1 ? "Give" : "Take")
	new iMenu = menu_create(szTitle, "points_handler")
	
	g_iMenuType[id] = iType
	
	new iPlayers[32], iNum, iPlayer
	new szName[34], szTempID[10]
	get_players(iPlayers, iNum)
	
	for(new i; i < iNum; i++)
	{
		iPlayer = iPlayers[i]
		if(!is_user_connected(iPlayer))
			continue
		
		get_user_name(iPlayer, szName, sizeof szName - 1)
		num_to_str(iPlayer, szTempID, charsmax(szTempID))
		menu_additem(iMenu, szName, szTempID)
	}
	menu_setprop(iMenu, MPROP_EXITNAME, "Go back..")
	menu_display(id, iMenu, 0)
	return PLUGIN_HANDLED
}
public points_handler(id, iMenu, Item)
{
	if (Item == MENU_EXIT)
	{
		ToggleShopMenu(id)
		g_iMenuType[id] = 0
		goto Handled
	}
	
	new szData[6], iName[64], iAccess, iCallBack
	menu_item_getinfo(iMenu, Item, iAccess, szData, charsmax(szData), iName, charsmax(iName), iCallBack)
	
	g_iPlayer[id] = str_to_num(szData)
	
	if (!is_user_connected(g_iPlayer[id]))
	{
		g_iPlayer[id] = 0
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_IN_SERVER", g_eItems[SHOP_PREFIX])
		goto Handled
	}
	
	PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "TARGET_POINTS", g_eItems[SHOP_PREFIX], iName, g_iPoints[g_iPlayer[id]])
	
	client_cmd(id, "messagemode BM_Points_Amount")
	menu_destroy(iMenu)
	Handled:
	return PLUGIN_HANDLED
}
public Command_BM_Points_Amount(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		goto Handled
		
	if (!g_iPlayer[id])
		goto Handled
		
	if (!is_user_connected(g_iPlayer[id]))
	{
		PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "NOT_IN_SERVER", g_eItems[SHOP_PREFIX])
		goto Handled
	}
	
	new szArgs[12]
	read_argv(1, szArgs, charsmax(szArgs))
	
	new iBM_Points = str_to_num(szArgs)
	
	new szNames[2][32]
	get_user_name(id, szNames[0], charsmax(szNames[]))
	get_user_name(g_iPlayer[id], szNames[1], charsmax(szNames[]))
	
	switch (g_iMenuType[id])
	{
		case 1:
		{
			g_iPoints[g_iPlayer[id]] += iBM_Points
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ADMIN_GAVE", g_eItems[SHOP_PREFIX], szNames[0], iBM_Points, szNames[1])
		}
		case 2:
		{
			g_iPoints[g_iPlayer[id]] -= iBM_Points
			PrintChatColor(id, g_eItems[PRINT_COLOR], "%L", id, "ADMIN_TAKE", g_eItems[SHOP_PREFIX], szNames[0], iBM_Points, szNames[1])
		}
	}
	g_iPlayer[id] = 0
	g_iMenuType[id] = 0
	
	ToggleShopMenu(id)
	
	Handled:
	return PLUGIN_HANDLED
}
public client_infochanged(id)
{
	if (!is_user_connected(id))
		goto Handled
	
	new szNewName[32], szOldName[32]
	get_user_name(id, szOldName, charsmax(szOldName))
	get_user_info(id, "name", szNewName, charsmax(szNewName))
	
	if (!equal(szNewName, szOldName))
	{
		SaveData(id, szOldName)
		set_task(0.1, "LoadData", id, szNewName, charsmax(szNewName))
		goto Handled
	}
	
	Handled:
	return PLUGIN_HANDLED
}
public SaveData(id, szName[])
{
	new szData[18]
	num_to_str(g_iPoints[id], szData, charsmax(szData))
	
	fvault_set_data(BM_ItemShopDB, szName, szData)
}

public LoadData(szName[], id)
{
	new szData[18]
	
	if (fvault_get_data(BM_ItemShopDB, szName, szData, charsmax(szData)))
		g_iPoints[id] = str_to_num(szData)
	else
		g_iPoints[id] = 0
	
	g_bConnected[id] = true
}

Потребителски аватар

OciXCrom™ MKD
Администратор
Администратор
Мнения: 3836
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 2 пъти
Получена благодарност: 95 пъти
Години: 20
Контакти:

Проблем с Shop плъгин

Мнение от OciXCrom™ MKD » 09 авг 2018, 14:49

Този плъгин който си дал няма нищо общо с грешката в първото мнение.

Новата грешка, "invalid file format or version", означава, че плъгинът е компилиран на по-нова АМХХ версия от тази която сървърът ти ползва, тъй че няма как да тръгне. Не излишно казвам всеки път, че плъгините трябва да се компилират локално преди да се сложат в сървъра.

Потребителски аватар

Автор на темата
atmax
Потребител
Потребител
Мнения: 12
Регистриран: 22 мар 2018, 15:06

Проблем с Shop плъгин

Мнение от atmax » 10 авг 2018, 08:58

Ок може да локвате темата.

Заключена

Върни се в “Поддръжка / Помощ”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 2 госта