Помощ за проблем с плъгин csgo_death-n-money

Въпроси и проблеми свързани с AMXModX.
Аватар
Siska
Извън линия
Потребител
Потребител
Мнения: 771
Регистриран на: 03 Дек 2019, 22:29
Местоположение: Bedrock
Се отблагодари: 157 пъти
Получена благодарност: 48 пъти
Обратна връзка:

Помощ за проблем с плъгин csgo_death-n-money

Мнение от Siska » 16 Яну 2021, 15:39

Здравейте, спешно ми трябва малко помощ за този плъгин. Когато го ползвам клещите за обезвреждане на бомбата стават забранени и никой не може да си ги купува. Освен това изчезват правата на админите. Може ли някой да погледне кода и да ми каже дали проблема е в плъгина или всичко в кода си е наред , за да знам дали да се занимавам с този плъгин изобщо или да го спирам ?

Код за потвърждение: Избери целия код

#define HUD_colorR		255	// default: 255
#define HUD_colorG		155	// default: 155
#define HUD_colorB		0	// default: 0
#define HUD_posX		0.6	// default: 0.6
#define HUD_posY		0.2	// default: 0.2
#define HUD_fx			0	// default: 0
#define HUD_fxTime		0.0	// default: 0.0
#define HUD_holdTime		1.0	// default: 1.0
#define HUD_fadeInTime		0.3	// default: 0.3
#define HUD_fadeOutTime		2.0	// default: 2.0
#define HUD_channel		-1	// default: -1

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <cstrike>
#include <fakemeta>
#include <fun>

#define Money_Amount 1
#define IsPlayer(%1)	( 1 <= %1 <= g_iMaxPlayers )
#define XTRA_OFS_PLAYER 5
#define m_iAccount 115
#define cs_set_money_value(%1,%2)	set_pdata_int(%1, m_iAccount, %2, XTRA_OFS_PLAYER)

#define MAXPLAYERS		32 + 1
#define TEAM_NONE		0
#define TEAM_TE			1
#define TEAM_CT			2
#define TEAM_SPEC		3

#define is_player(%1) (1 <= %1 <= g_iMaxPlayers)

new const PLUGIN[] 	= "CSGO: Death and Money Messages"
new const VERSION[]	= "2.0.1"
new const DATE[] 	= "15 October 2017";

new const old_deathmsg[][] =
{
	"worldspawn",
	"p228",
	"scout",
	"grenade",
	"xm1014",
	"c4",
	"mac10",
	"aug",
	"elite",
	"fiveseven",
	"ump45",
	"sg550",
	"galil",
	"famas",
	"usp",
	"glock18",
	"awp",
	"mp5navy",
	"m249",
	"m3",
	"m4a1",
	"tmp",
	"g3sg1",
	"deagle",
	"sg552",
	"ak47",
	"knife",
	"p90"
}

new new_deathmsg[sizeof(old_deathmsg)][32], kill_reward[sizeof(old_deathmsg)];
new dnm_old_deathmsg[64][32], dnm_new_deathmsg[64][32], dnm_weapon_mdl[64][32], g_dnm_weapons_exist = 1;
new cvar_tk_money, cvar_maxmoney, cvar_hs_money;
new g_iMaxPlayers, g_iNewMoney, g_iMsgHookMoney, gmsgMoney;

new cvar_amxmode, cvar_enable, cvar_assist_mindmg, cvar_assist_frags, cvar_assist_money, toggle_deathmsg;
new ch_cvar_enable, ch_cvar_assist_mindmg, ch_cvar_assist_frags, ch_cvar_assist_money;
new msgID_sayText, msgID_deathMsg, msgID_scoreInfo;
new g_szName[MAXPLAYERS][32], g_iTeam[MAXPLAYERS], g_iDamage[MAXPLAYERS][MAXPLAYERS];
new bool:g_bAlive[MAXPLAYERS] = {false, ...}, bool:g_bOnline[MAXPLAYERS] = {false, ...};
new g_iLastAmxMode, bool:g_bAmxModeExists = false;

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, "Digi, ConnorMcleod, hellmonja");

	cvar_hs_money = register_cvar("dnm_hs_money", "100");
	cvar_tk_money = register_cvar("dnm_tk_money", "-1000");
	cvar_maxmoney = register_cvar("dnm_maxmoney", "16000");
	cvar_enable = register_cvar("dnm_assist_enable", "1");
	cvar_assist_mindmg = register_cvar("dnm_assist_mindmg", "41");
	cvar_assist_frags = register_cvar("dnm_assist_frags", "0");
	cvar_assist_money = register_cvar("dnm_assist_money", "50");
	toggle_deathmsg = register_cvar("toggle_deathmsg", "1");
	
	register_concmd("ver_dnm", "Code_Version");
	
	if(cvar_exists("amx_mode"))
	{
		cvar_amxmode = get_cvar_pointer("amx_mode");
		g_bAmxModeExists = true;
	}

	gmsgMoney = get_user_msgid("Money")
	msgID_sayText = get_user_msgid("SayText")
	msgID_deathMsg = get_user_msgid("DeathMsg")
	msgID_scoreInfo = get_user_msgid("ScoreInfo")

	register_message(msgID_deathMsg, "msg_deathMsg")
	register_logevent("event_roundStart", 2, "1=Round_Start")
	register_event("Damage", "player_damage", "be", "2!0", "3=0", "4!0")
	register_event("DeathMsg", "Event_DeathMsg", "a")
	register_event("TeamInfo", "player_joinTeam", "a")
	RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
	
	g_iMaxPlayers = get_maxplayers()
	
	//===============================================================
	//DeathMsg Config File
	//===============================================================
	new szFilepath[64];
	get_configsdir(szFilepath, charsmax(szFilepath));
	add(szFilepath, charsmax(szFilepath), "/deathmsgs.ini");
	
	if(!file_exists(szFilepath))
	{
		for(new i = 0; i <= sizeof(old_deathmsg); i++)
			new_deathmsg[i][charsmax(old_deathmsg)] = old_deathmsg[i][charsmax(old_deathmsg)];

		return
	}

	new f = fopen(szFilepath, "rt");
	new szData[sizeof(new_deathmsg[])];
	new msg[32], value[10], i = 0;

	while( !feof(f) && i < sizeof(old_deathmsg)) 
	{ 
		fgets(f, szData, charsmax(szData));
		trim(szData);
		if(!szData[0] || szData[0] == ';' || szData[0] == '/' && szData[1] == '/')
			continue;
		
		parse(szData, msg, charsmax(msg), value, charsmax(value));
		copy(new_deathmsg[i], charsmax(new_deathmsg), msg);
		kill_reward[i] = str_to_num(value);
		i++;
	}
	
	fclose(f);
	
	//===============================================================
	//Custom Weapons Config File
	//===============================================================
	new szFilepath2[64];
	get_configsdir(szFilepath2, charsmax(szFilepath2));
	add(szFilepath2, charsmax(szFilepath2), "/dnm_weapons.ini");
	
	if(!file_exists(szFilepath2))
	{
		g_dnm_weapons_exist = 0;
		return
	}

	new f2 = fopen(szFilepath2, "rt");
	new szData2[sizeof(dnm_new_deathmsg[])];
	new msg2[32], toggle = 0, index = 0; i = 0; 

	while( !feof(f2) && i < 999) 
	{ 
		fgets(f2, szData2, charsmax(szData2));
		trim(szData2);
		if(!szData2[0] || szData2[0] == ';' || szData2[0] == '/' && szData2[1] == '/')
			continue;
		
		parse(szData2, msg2, charsmax(msg2));
		
		switch(toggle)
		{
			case 0: copy(dnm_old_deathmsg[index], charsmax(dnm_old_deathmsg), msg2);
			case 1: copy(dnm_weapon_mdl[index], charsmax(dnm_weapon_mdl), msg2);
			case 2: copy(dnm_new_deathmsg[index], charsmax(dnm_new_deathmsg), msg2);
		}
		
		if(toggle == 2)
		{
			toggle = 0;
			index++;
		}
		else toggle++;
		i++; 
	}
	
	fclose(f2);
}

public Code_Version(id)
{
	console_print(id, "==============================");
	console_print(id, "%s v%s", PLUGIN, VERSION);
	console_print(id, "%s", DATE);
	console_print(id, "==============================");
}

public plugin_cfg() event_roundStart()

public event_roundStart()
{
	ch_cvar_enable = clamp(get_pcvar_num(cvar_enable), 0, 2);
	ch_cvar_assist_mindmg = clamp(get_pcvar_num(cvar_assist_mindmg), 0, 100);
	ch_cvar_assist_frags = clamp(get_pcvar_num(cvar_assist_frags), 0, 1);
	ch_cvar_assist_money = clamp(get_pcvar_num(cvar_assist_money), 0, 16000);
}

public client_putinserver(iPlayer)
{
	g_bOnline[iPlayer] = true;
	get_user_name(iPlayer, g_szName[iPlayer], 31);
}

public client_disconnect(iPlayer)
{
	g_iTeam[iPlayer] = TEAM_NONE;
	g_bAlive[iPlayer] = false;
	g_bOnline[iPlayer] = false;
}

public player_joinTeam()
{
	new iPlayer, szTeam[2];
	iPlayer = read_data(1);
	read_data(2, szTeam, 1);

	switch(szTeam[0])
	{
		case 'T': g_iTeam[iPlayer] = TEAM_TE;
		case 'C': g_iTeam[iPlayer] = TEAM_CT;
		default: g_iTeam[iPlayer] = TEAM_SPEC; // since you can't transfer yourself to unassigned team...
	}

	return PLUGIN_CONTINUE
}

public player_spawn(iPlayer)
{
	if(!is_user_alive(iPlayer))
		return HAM_IGNORED

	g_bAlive[iPlayer] = true // he's alive !

	new szName[32]

	get_user_name(iPlayer, szName, 31)

	if(!equali(szName, g_szName[iPlayer])) // make sure he has his name !
	{
		set_msg_block(msgID_sayText, BLOCK_ONCE)
		set_user_info(iPlayer, "name", g_szName[iPlayer])
	}

	// reset damage meters

	for(new p = 1; p <= g_iMaxPlayers; p++)
		g_iDamage[iPlayer][p] = 0

	return HAM_IGNORED
}

public player_damage(iVictim)
{
	if(!ch_cvar_enable || !IsPlayer(iVictim))
		return PLUGIN_CONTINUE

	new iAttacker = get_user_attacker(iVictim)

	if(!IsPlayer(iAttacker))
		return PLUGIN_CONTINUE

	g_iDamage[iAttacker][iVictim] += read_data(2)

	return PLUGIN_CONTINUE
}

public Event_DeathMsg()
{
	new iKiller = read_data(1);
	new iVictim = read_data(2);
	new iHS = read_data(3);
	new szWeapon[24];
	read_data(4, szWeapon, 23);
	
	if( IsPlayer(iKiller) && is_user_connected(iKiller) )
	{
		if( iVictim != iKiller )
		{
			new money;
			if(cs_get_user_team(iVictim) == cs_get_user_team(iKiller))
				money = get_pcvar_num(cvar_tk_money);
			else
				for(new i = 0; i <= sizeof old_deathmsg - 1; i++)
					if(equali(szWeapon, old_deathmsg[i]))
						money = kill_reward[i] + (get_pcvar_num(cvar_hs_money) * iHS);
					
			g_iNewMoney = clamp(cs_get_user_money(iKiller) + money, 0, get_pcvar_num(cvar_maxmoney));
			g_iMsgHookMoney = register_message(gmsgMoney, "Message_Money");
		}
	}
	
	if(!IsPlayer(iVictim))
	{
		do_deathmsg(iKiller, iVictim, iHS, szWeapon)

		return PLUGIN_CONTINUE
	}

	g_bAlive[iVictim] = false

	if(!IsPlayer(iKiller))
	{
		do_deathmsg(iKiller, iVictim, iHS, szWeapon)

		return PLUGIN_CONTINUE
	}

	new iKillerTeam = g_iTeam[iKiller]

	if(iKiller != iVictim && g_iTeam[iVictim] != iKillerTeam)
	{
		new iKiller2 = 0
		new iDamage2 = 0

		for(new p = 1; p <= g_iMaxPlayers; p++)
		{
			if(p != iKiller && g_bOnline[p] && iKillerTeam == g_iTeam[p] && g_iDamage[p][iVictim] >= ch_cvar_assist_mindmg && g_iDamage[p][iVictim] > iDamage2)
			{
				iKiller2 = p
				iDamage2 = g_iDamage[p][iVictim]
			}

			g_iDamage[p][iVictim] = 0
		}

		if(iKiller2 > 0 && iDamage2 > ch_cvar_assist_mindmg)
		{
			if(ch_cvar_assist_frags)
			{
				new iFrags = get_user_frags(iKiller2)+1

				set_user_frags(iKiller2, iFrags)

				message_begin(MSG_ALL, msgID_scoreInfo)
				write_byte(iKiller2)
				write_short(iFrags)
				write_short(get_user_deaths(iKiller2))
				write_short(0)
				write_short(iKillerTeam)
				message_end()
			}

			if(ch_cvar_assist_money)
			{
				new iMoney = cs_get_user_money(iKiller2) + ch_cvar_assist_money

				if(iMoney > 16000)
					iMoney = 16000

				cs_set_user_money(iKiller2, iMoney)

				if(g_bAlive[iKiller2]) // no reason to send a money message when the player has no hud :}
				{
					message_begin(MSG_ONE_UNRELIABLE, gmsgMoney, _, iKiller2)
					write_long(iMoney)
					write_byte(1)
					message_end()
				}
			}

			if(ch_cvar_enable == 2)
			{
				new szName1[32], szName2[32], szName3[32], szMsg[128]

				get_user_name(iKiller, szName1, 31)
				get_user_name(iKiller2, szName2, 31)
 				get_user_name(iVictim, szName3, 31)

				formatex(szMsg, 63, "%s killed %s assisted by %s", szName1, szName3, szName2)

				set_hudmessage(HUD_colorR, HUD_colorG, HUD_colorB, HUD_posX, HUD_posY, HUD_fx, HUD_fxTime, HUD_holdTime, HUD_fadeInTime, HUD_fadeOutTime, HUD_channel)
				show_hudmessage(0, szMsg)
			}
			else
			{
				new szName1[32], iName1Len, szName2[32], iName2Len, szNames[32], szWeaponLong[32]

				iName1Len = get_user_name(iKiller, szName1, 31)
				iName2Len = get_user_name(iKiller2, szName2, 31)
 
				g_szName[iKiller] = szName1

				if(iName1Len < 14)
				{
					formatex(szName1, iName1Len, "%s", szName1)
					formatex(szName2, 28-iName1Len, "%s", szName2)
				}
				else if(iName2Len < 14)
				{
					formatex(szName1, 28-iName2Len, "%s", szName1)
					formatex(szName2, iName2Len, "%s", szName2)
				}
				else
				{
					formatex(szName1, 13, "%s", szName1)
					formatex(szName2, 13, "%s", szName2)
				}

				formatex(szNames, 31, "%s + %s", szName1, szName2)

				set_msg_block(msgID_sayText, BLOCK_ONCE)
				set_user_info(iKiller, "name", szNames)

				if(g_bAmxModeExists)
				{
					g_iLastAmxMode = get_pcvar_num(cvar_amxmode)

					set_pcvar_num(cvar_amxmode, 0)
				}

				if(equali(szWeapon, "grenade"))
					szWeaponLong = "weapon_hegrenade"
				else
					formatex(szWeaponLong, 31, "weapon_%s", szWeapon)

				new args[4]

				args[0] = iVictim
				args[1] = iKiller
				args[2] = iHS
				args[3] = get_weaponid(szWeaponLong)

				set_task(0.1, "player_diePost", 0, args, 4)
			}
		}
		else if(ch_cvar_enable == 1)
			do_deathmsg(iKiller, iVictim, iHS, szWeapon)
	}
	else if(ch_cvar_enable == 1)
		do_deathmsg(iVictim, iVictim, iHS, szWeapon)

	return PLUGIN_CONTINUE
}

public Message_Money(iMsgId, iMsgDest, id)
{
	unregister_message(gmsgMoney, g_iMsgHookMoney)
	cs_set_money_value(id, g_iNewMoney)
	set_msg_arg_int(Money_Amount, ARG_LONG, g_iNewMoney)
}

public player_diePost(arg[])
{
	new szWeapon[24]
	new iKiller = arg[1]

	get_weaponname(arg[3], szWeapon, 23)
	replace(szWeapon, 23, "weapon_", "")

	do_deathmsg(iKiller, arg[0], arg[2], szWeapon)

	set_msg_block(msgID_sayText, BLOCK_ONCE)
	set_user_info(iKiller, "name", g_szName[iKiller])

	if(g_bAmxModeExists)
		set_pcvar_num(cvar_amxmode, g_iLastAmxMode)

	return PLUGIN_CONTINUE
}

public msg_deathMsg()
	return ch_cvar_enable == 1 ? PLUGIN_HANDLED : PLUGIN_CONTINUE

stock do_deathmsg(iKiller, iVictim, iHS, const szWeapon[])
{
	new temp_string[32];

	if(get_pcvar_num(toggle_deathmsg) == 1)
	{
		for(new i = 0; i <= sizeof old_deathmsg - 1; i++)
		{
			if(equali(szWeapon, old_deathmsg[i]))
				formatex(temp_string, 31, "%s", new_deathmsg[i]);
		}
	}
	else	
		formatex(temp_string, 31, "%s", szWeapon);
		
	if(g_dnm_weapons_exist)
	{
		static model[32];
		pev(iKiller, pev_viewmodel2, model, 31);
		
		for(new i = 0; i <= 63; i++)
			if(equali(szWeapon, dnm_old_deathmsg[i]))
				if(equali(model, dnm_weapon_mdl[i]))
					temp_string = dnm_new_deathmsg[i];
	}
	
	message_begin(MSG_ALL, msgID_deathMsg)
	write_byte(iKiller)
	write_byte(iVictim)
	write_byte(iHS)
	write_string(temp_string)
	message_end()
}[/]
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Помощ за проблем с плъгин csgo_death-n-money

Мнение от OciXCrom » 16 Яну 2021, 15:42

Сигурен ли си, че си качил правилния плъгин?

Аватар
Siska
Извън линия
Потребител
Потребител
Мнения: 771
Регистриран на: 03 Дек 2019, 22:29
Местоположение: Bedrock
Се отблагодари: 157 пъти
Получена благодарност: 48 пъти
Обратна връзка:

Помощ за проблем с плъгин csgo_death-n-money

Мнение от Siska » 16 Яну 2021, 15:46

OciXCrom написа: 16 Яну 2021, 15:42 Сигурен ли си, че си качил правилния плъгин?
Да , сигурна съм. Това е плъгин , който всъщност е три в едно. Има и кил асист в него и още неща. Дава различни суми пари при фраг с всяко оръжие и т.н. Но когато го пусна ми се губят клещите и от време на време дори изчезват права на админи. Когато го спра всичко се оправя...
Предполагам , че може да си пречи с друг плъгин , но затова искам да разбера дали всичко в кода е наред , за да зная къде да търся грешката или въобще дали да се мъча да го ползвам, а ми хареса като идея този плъгин...
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Помощ за проблем с плъгин csgo_death-n-money

Мнение от OciXCrom » 16 Яну 2021, 17:05

Няма нито клещи, нито никакви функции свързани с правата на админите в кода. Провери си логовете за грешки.

Аватар
Siska
Извън линия
Потребител
Потребител
Мнения: 771
Регистриран на: 03 Дек 2019, 22:29
Местоположение: Bedrock
Се отблагодари: 157 пъти
Получена благодарност: 48 пъти
Обратна връзка:

Помощ за проблем с плъгин csgo_death-n-money

Мнение от Siska » 16 Яну 2021, 17:23

OciXCrom написа: 16 Яну 2021, 17:05 Няма нито клещи, нито никакви функции свързани с правата на админите в кода. Провери си логовете за грешки.
Добре, благодаря ти. Ще пробвам с дебъг и ще търся в логовете. Подозирам , че си пречат с друг плъгин , който е свързан пак с оръжията, но ще пиша отново , ако се наложи...
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Аватар
Siska
Извън линия
Потребител
Потребител
Мнения: 771
Регистриран на: 03 Дек 2019, 22:29
Местоположение: Bedrock
Се отблагодари: 157 пъти
Получена благодарност: 48 пъти
Обратна връзка:

Помощ за проблем с плъгин csgo_death-n-money

Мнение от Siska » 23 Мар 2021, 12:55

Тук Ивайло ми помогна да разбера , че "килл асистенс" функцията премахва правата на админите.
А клещите изчезват , заради префикса на картите.
Може да заключвате , не е нужна тази тема...
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Поддръжка / Помощ”

Кой е на линия

Потребители разглеждащи този форум: Semrush [Bot] и 5 госта