молба за корекция в плъгин crx_fireinthehole

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

молба за корекция в плъгин crx_fireinthehole

Мнение от Siska » 10 Апр 2021, 02:23

Възможно ли е да се коригира така ,че да не обевява падналите на земята бомби ,защото ползвам "nadedrops" и като обевява всеки път падналите на земята гранати идва малко в повечко ???

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

#include <amxmodx>
#include <amxmisc>
#include <cromchat>
#include <csx>
#include <fakemeta>

#define PLUGIN_VERSION "2.1"
#define EXPLODE_MAX 60.0

enum _:Settings
{
	bool:MSG_ENABLE,
	MSG_HE[128],
	MSG_FLASH[128],
	MSG_SMOKE[128],
	MSG_SHOW_TYPE,
	bool:MSG_ADMIN_LISTEN,
	MSG_ADMIN_FLAG,
	MSG_TEAM_T[16],
	MSG_TEAM_CT[16],
	MSG_TEAM_SPEC[16],
	bool:SOUND_ENABLE,
	SOUND_HE[128],
	bool:SOUND_HE_ENABLE,
	SOUND_FLASH[128],
	bool:SOUND_FLASH_ENABLE,
	SOUND_SMOKE[128],
	bool:SOUND_SMOKE_ENABLE,
	SOUND_PLAY_TYPE,
	bool:TRAIL_ENABLE,
	TRAIL_HE[12],
	TRAIL_FLASH[12],
	TRAIL_SMOKE[12],
	TRAIL_SPRITE[64],
	TRAIL_LIFE,
	TRAIL_WIDTH,
	TRAIL_BRIGHTNESS,
	TRAIL_SHOW_TYPE,
	bool:GLOW_ENABLE,
	GLOW_HE[12],
	GLOW_FLASH[12],
	GLOW_SMOKE[12],
	Float:GLOW_BRIGHTNESS,
	GLOW_TYPE,
	bool:EXPLODE_ENABLE,
	Float:EXPLODE_HE,
	Float:EXPLODE_FLASH,
	Float:EXPLODE_SMOKE
}

new g_iSprite
new g_eSettings[Settings]

new const g_szRadio[] = "#Game_radio"
new const g_szFireInTheHole[] = "#Fire_in_the_hole"
new const g_szFITHSound[] = "radio/ct_fireinhole.wav"
new const g_szMradFire[] = "%!MRAD_FIREINHOLE"
new const g_szSetMdl[][] = { "models/w_", "grenade.mdl", "flashbang.mdl" }
new const g_szNameField[] = "$name$"
new const g_szTeamField[] = "$team$"

public plugin_init()
{
	register_plugin("Ultimate Fire in the Hole", PLUGIN_VERSION, "OciXCrom")
	register_cvar("UltimateFITH", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	
	if(g_eSettings[SOUND_ENABLE] && ((!g_eSettings[SOUND_HE_ENABLE] && !g_eSettings[SOUND_FLASH_ENABLE] && !g_eSettings[SOUND_SMOKE_ENABLE]) || !g_eSettings[SOUND_PLAY_TYPE]))
		register_forward(FM_PrecacheSound, "OnPrecacheSound")
	
	if(g_eSettings[MSG_ENABLE])
		register_message(get_user_msgid("TextMsg"), "OnTextMessage")
		
	if(g_eSettings[SOUND_ENABLE])
		register_message(get_user_msgid("SendAudio"), "OnSendAudio")
		
	if(g_eSettings[GLOW_ENABLE] || g_eSettings[EXPLODE_ENABLE])
		register_forward(FM_SetModel, "OnSetModel")
}

public plugin_precache()
	ReadFile()

ReadFile()
{
	new szConfigsName[256], szFilename[256]
	get_configsdir(szConfigsName, charsmax(szConfigsName))
	formatex(szFilename, charsmax(szFilename), "%s/FireInTheHole.ini", szConfigsName)
	
	if(!file_size(szFilename))
	{
		pause("ad")
		log_amx("Configuration file (%s) is empty. The plugin is paused.", szFilename)
		return
	}
	
	new iFilePointer = fopen(szFilename, "rt")
	
	if(iFilePointer)
	{
		new szData[128], szKey[32], szValue[96], iSize
		
		while(!feof(iFilePointer))
		{
			fgets(iFilePointer, szData, charsmax(szData))
			trim(szData)
			
			switch(szData[0])
			{
				case EOS, '#', ';': continue
				case '[':
				{
					iSize = strlen(szData)
					
					if(szData[iSize - 1] == ']')
					{
						switch(szData[1])
						{
							case 'M', 'm': g_eSettings[MSG_ENABLE] = bool:(str_to_num(szData[iSize - 2]))
							case 'S', 's': g_eSettings[SOUND_ENABLE] = bool:(str_to_num(szData[iSize - 2]))
							case 'T', 't': g_eSettings[TRAIL_ENABLE] = bool:(str_to_num(szData[iSize - 2]))
							case 'G', 'g': g_eSettings[GLOW_ENABLE] = bool:(str_to_num(szData[iSize - 2]))
							case 'E', 'e': g_eSettings[EXPLODE_ENABLE] = bool:(str_to_num(szData[strlen(szData) - 2]))
						}
					}
					else continue
				}
				default:
				{
					strtok(szData, szKey, charsmax(szKey), szValue, charsmax(szValue), '=')
					trim(szKey); trim(szValue)
					
					if(is_blank(szValue))
						continue
					
					if(g_eSettings[MSG_ENABLE])
					{
						if(equal(szKey, "MSG_HE"))
							copy(g_eSettings[MSG_HE], charsmax(g_eSettings[MSG_HE]), szValue)
						else if(equal(szKey, "MSG_FLASH"))
							copy(g_eSettings[MSG_FLASH], charsmax(g_eSettings[MSG_FLASH]), szValue)
						else if(equal(szKey, "MSG_SMOKE"))
							copy(g_eSettings[MSG_SMOKE], charsmax(g_eSettings[MSG_SMOKE]), szValue)
						else if(equal(szKey, "MSG_SHOW_TYPE"))
							g_eSettings[MSG_SHOW_TYPE] = clamp(str_to_num(szValue), 0, 3)
						else if(equal(szKey, "MSG_ADMIN_LISTEN"))
							g_eSettings[MSG_ADMIN_LISTEN] = bool:(clamp(str_to_num(szValue), 0, 1))
						else if(equal(szKey, "MSG_ADMIN_FLAG"))
							g_eSettings[MSG_ADMIN_FLAG] = read_flags(szValue)
						else if(equal(szKey, "MSG_TEAM_T"))
							copy(g_eSettings[MSG_TEAM_T], charsmax(g_eSettings[MSG_TEAM_T]), szValue)
						else if(equal(szKey, "MSG_TEAM_CT"))
							copy(g_eSettings[MSG_TEAM_CT], charsmax(g_eSettings[MSG_TEAM_CT]), szValue)
						else if(equal(szKey, "MSG_TEAM_SPEC"))
							copy(g_eSettings[MSG_TEAM_SPEC], charsmax(g_eSettings[MSG_TEAM_SPEC]), szValue)
					}
					
					if(g_eSettings[SOUND_ENABLE])
					{
						if(equal(szKey, "SOUND_HE"))
						{						
							precache_sound(szValue)
							copy(g_eSettings[SOUND_HE], charsmax(g_eSettings[SOUND_HE]), szValue)
							g_eSettings[SOUND_HE_ENABLE] = true
						}
						else if(equal(szKey, "SOUND_FLASH"))
						{
							precache_sound(szValue)
							copy(g_eSettings[SOUND_FLASH], charsmax(g_eSettings[SOUND_FLASH]), szValue)
							g_eSettings[SOUND_FLASH_ENABLE] = true
						}
						else if(equal(szKey, "SOUND_SMOKE"))
						{
							precache_sound(szValue)
							copy(g_eSettings[SOUND_SMOKE], charsmax(g_eSettings[SOUND_SMOKE]), szValue)
							g_eSettings[SOUND_SMOKE_ENABLE] = true
						}
						else if(equal(szKey, "SOUND_PLAY_TYPE"))
							g_eSettings[SOUND_PLAY_TYPE] = clamp(str_to_num(szValue), 0, 3)
					}
					
					if(g_eSettings[TRAIL_ENABLE])
					{
						if(equal(szKey, "TRAIL_HE"))
							copy(g_eSettings[TRAIL_HE], charsmax(g_eSettings[TRAIL_HE]), szValue)
						else if(equal(szKey, "TRAIL_FLASH"))
							copy(g_eSettings[TRAIL_FLASH], charsmax(g_eSettings[TRAIL_FLASH]), szValue)
						else if(equal(szKey, "TRAIL_SMOKE"))
							copy(g_eSettings[TRAIL_SMOKE], charsmax(g_eSettings[TRAIL_SMOKE]), szValue)
						else if(equal(szKey, "TRAIL_SPRITE"))
						{
							copy(g_eSettings[TRAIL_SPRITE], charsmax(g_eSettings[TRAIL_SPRITE]), szValue)
							g_iSprite = precache_model(szValue)
						}
						else if(equal(szKey, "TRAIL_LIFE"))
							g_eSettings[TRAIL_LIFE] = str_to_num(szValue)
						else if(equal(szKey, "TRAIL_WIDTH"))
							g_eSettings[TRAIL_WIDTH] = str_to_num(szValue)
						else if(equal(szKey, "TRAIL_BRIGHTNESS"))
							g_eSettings[TRAIL_BRIGHTNESS] = clamp(str_to_num(szValue), 0, 255)
						else if(equal(szKey, "TRAIL_SHOW_TYPE"))
							g_eSettings[TRAIL_SHOW_TYPE] = clamp(str_to_num(szValue), 0, 2)
					}
					
					if(g_eSettings[GLOW_ENABLE])
					{
						if(equal(szKey, "GLOW_HE"))
							copy(g_eSettings[GLOW_HE], charsmax(g_eSettings[GLOW_HE]), szValue)
						else if(equal(szKey, "GLOW_FLASH"))
							copy(g_eSettings[GLOW_FLASH], charsmax(g_eSettings[GLOW_FLASH]), szValue)
						else if(equal(szKey, "GLOW_SMOKE"))
							copy(g_eSettings[GLOW_SMOKE], charsmax(g_eSettings[GLOW_SMOKE]), szValue)
						else if(equal(szKey, "GLOW_BRIGHTNESS"))
							g_eSettings[GLOW_BRIGHTNESS] = _:str_to_float(szValue)
						else if(equal(szKey, "GLOW_TYPE"))
							g_eSettings[GLOW_TYPE] = clamp(str_to_num(szValue), 0, 1) ? kRenderTransAlpha : kRenderNormal
					}
					
					if(g_eSettings[EXPLODE_ENABLE])
					{
						if(equal(szKey, "EXPLODE_HE"))
							g_eSettings[EXPLODE_HE] = _:floatclamp(str_to_float(szValue), 0.0, EXPLODE_MAX)
						else if(equal(szKey, "EXPLODE_FLASH"))
							g_eSettings[EXPLODE_FLASH] = _:floatclamp(str_to_float(szValue), 0.0, EXPLODE_MAX)
						else if(equal(szKey, "EXPLODE_SMOKE"))
							g_eSettings[EXPLODE_SMOKE] = _:floatclamp(str_to_float(szValue), 0.0, EXPLODE_MAX)
					}
				}
			}	
		}
		
		fclose(iFilePointer)
	}
}

public OnTextMessage(MsgId, MsgDest, MsgEntity)
{
	if(get_msg_args() != 5 || get_msg_argtype(3) != ARG_STRING || get_msg_argtype(5) != ARG_STRING)
		return PLUGIN_CONTINUE
		
	new szRadio[16]
	get_msg_arg_string(3, szRadio, charsmax(szRadio))
	
	if(!equal(szRadio, g_szRadio))
		return PLUGIN_CONTINUE
		
	new szMessage[20]
	get_msg_arg_string(5, szMessage, charsmax(szMessage))
	return equal(szMessage, g_szFireInTheHole)
}

public OnSendAudio(MsgId, MsgDest, MsgEntity)
{
	new szMessage[32]
	get_msg_arg_string(2, szMessage, charsmax(szMessage))
	return equal(szMessage, g_szMradFire)
}

public OnSetModel(iEnt, const szModel[])
{
	if(!pev_valid(iEnt))
		return
		
	if(contain(szModel, g_szSetMdl[0]) != -1 && (contain(szModel, g_szSetMdl[1]) != -1 || contain(szModel, g_szSetMdl[2]) != -1))
	{
		new szGlow[12]
		
		switch(szModel[9])
		{
			case 'h':
			{
				set_pev(iEnt, pev_dmg, 1000.0)
				copy(szGlow, charsmax(szGlow), g_eSettings[GLOW_HE])
				
				if(g_eSettings[EXPLODE_HE])
					set_pev(iEnt, pev_dmgtime, get_gametime() + g_eSettings[EXPLODE_HE])
			}
			case 'f':
			{
				copy(szGlow, charsmax(szGlow), g_eSettings[GLOW_FLASH])
				
				if(g_eSettings[EXPLODE_FLASH])
					set_pev(iEnt, pev_dmgtime, get_gametime() + g_eSettings[EXPLODE_FLASH])
			}
			case 's':
			{
				copy(szGlow, charsmax(szGlow), g_eSettings[GLOW_SMOKE])
				
				if(g_eSettings[EXPLODE_SMOKE])
					set_pev(iEnt, pev_dmgtime, get_gametime() + g_eSettings[EXPLODE_SMOKE])
			}
			default: return
		}
		
		new szRed[4], szGreen[4], szBlue[4], Float:flColor[3]
		parse(szGlow, szRed, charsmax(szRed), szGreen, charsmax(szGreen), szBlue, charsmax(szBlue))
		flColor[0] = is_random(szRed) ? random_float(0.0, 255.0) : floatclamp(str_to_float(szRed), 0.0, 255.0)
		flColor[1] = is_random(szGreen) ? random_float(0.0, 255.0) : floatclamp(str_to_float(szGreen), 0.0, 255.0)
		flColor[2] = is_random(szBlue) ? random_float(0.0, 255.0) : floatclamp(str_to_float(szBlue), 0.0, 255.0)
		set_pev(iEnt, pev_renderfx, kRenderFxGlowShell)
		set_pev(iEnt, pev_renderamt, g_eSettings[GLOW_BRIGHTNESS])
		set_pev(iEnt, pev_rendermode, g_eSettings[GLOW_TYPE])
		set_pev(iEnt, pev_rendercolor, flColor)
	}
}

public grenade_throw(id, iGrenade, iWeapon)
{
	new szMessage[192], szSound[128], szTeam[16], szTrail[12], iTeam
	
	if(is_user_connected(id))
		iTeam = get_user_team(id, szTeam, charsmax(szTeam))
		
	switch(iWeapon)
	{
		case CSW_HEGRENADE:
		{
			if(g_eSettings[MSG_ENABLE] && g_eSettings[MSG_SHOW_TYPE])
				copy(szMessage, charsmax(szMessage), g_eSettings[MSG_HE])
			
			if(g_eSettings[SOUND_ENABLE] && g_eSettings[SOUND_PLAY_TYPE] && g_eSettings[SOUND_HE_ENABLE])
				copy(szSound, charsmax(szSound), g_eSettings[SOUND_HE])
				
			if(g_eSettings[TRAIL_ENABLE])
				copy(szTrail, charsmax(szTrail), g_eSettings[TRAIL_HE])
		}
		case CSW_FLASHBANG:
		{
			if(g_eSettings[MSG_ENABLE] && g_eSettings[MSG_SHOW_TYPE])
				copy(szMessage, charsmax(szMessage), g_eSettings[MSG_FLASH])
			
			if(g_eSettings[SOUND_ENABLE] && g_eSettings[SOUND_PLAY_TYPE] && g_eSettings[SOUND_FLASH_ENABLE])
				copy(szSound, charsmax(szSound), g_eSettings[SOUND_FLASH])
				
			if(g_eSettings[TRAIL_ENABLE])
				copy(szTrail, charsmax(szTrail), g_eSettings[TRAIL_FLASH])
		}
		case CSW_SMOKEGRENADE:
		{
			if(g_eSettings[MSG_ENABLE] && g_eSettings[MSG_SHOW_TYPE])
				copy(szMessage, charsmax(szMessage), g_eSettings[MSG_SMOKE])
			
			if(g_eSettings[SOUND_ENABLE] && g_eSettings[SOUND_PLAY_TYPE] && g_eSettings[SOUND_SMOKE_ENABLE])
				copy(szSound, charsmax(szSound), g_eSettings[SOUND_SMOKE])
				
			if(g_eSettings[TRAIL_ENABLE])
				copy(szTrail, charsmax(szTrail), g_eSettings[TRAIL_SMOKE])
		}
	}
	
	if(g_eSettings[MSG_ENABLE] && g_eSettings[MSG_SHOW_TYPE])
	{
		new szName[32]
		get_user_name(id, szName, charsmax(szName))
		
		if(contain(szMessage, g_szNameField) != -1)
			replace_all(szMessage, charsmax(szMessage), g_szNameField, szName)
			
		if(contain(szMessage, g_szTeamField) != -1)
			replace_all(szMessage, charsmax(szMessage), g_szTeamField, szTeam)
			
		switch(g_eSettings[MSG_SHOW_TYPE])
		{
			case 1: CC_SendMessage(id, szMessage)
			case 2:
			{
				new iPlayers[32], iPnum
				get_players(iPlayers, iPnum, "ch")
			
				for(new i, iPlayer; i < iPnum; i++)
				{
					iPlayer = iPlayers[i]
					
					if(iTeam == get_user_team(iPlayer) || (g_eSettings[MSG_ADMIN_LISTEN] && get_user_flags(iPlayer) & g_eSettings[MSG_ADMIN_FLAG]))
						CC_SendMatched(iPlayer, id, szMessage)
				}
			}
			case 3: CC_SendMatched(0, id, szMessage)
		}
	}
	
	if(!is_blank(szSound))
	{
		switch(g_eSettings[SOUND_PLAY_TYPE])
		{
			case 1: client_cmd(id, "spk %s", szSound)
			case 2:
			{
				new iPlayers[32], iPnum
				get_players(iPlayers, iPnum, "ceh", szTeam)
			
				for(new i; i < iPnum; i++)
					client_cmd(iPlayers[i], "spk %s", szSound)
			}
			case 3: client_cmd(0, "spk %s", szSound)
		}
	}
	
	if(g_eSettings[TRAIL_ENABLE])
	{
		new szRed[4], szGreen[4], szBlue[4], iColor[3]
		parse(szTrail, szRed, charsmax(szRed), szGreen, charsmax(szGreen), szBlue, charsmax(szBlue))
		iColor[0] = is_random(szRed) ? random(256) : clamp(str_to_num(szRed), 0, 255)
		iColor[1] = is_random(szGreen) ? random(256) : clamp(str_to_num(szGreen), 0, 255)
		iColor[2] = is_random(szBlue) ? random(256) : clamp(str_to_num(szBlue), 0, 255)
		
		switch(g_eSettings[TRAIL_SHOW_TYPE])
		{
			case 0:	apply_grenade_trail(MSG_BROADCAST, iGrenade, iColor)
			case 1:	apply_grenade_trail(MSG_ONE_UNRELIABLE, iGrenade, iColor, id)
			case 2:
			{
				new iPlayers[32], iPnum
				get_players(iPlayers, iPnum, "ceh", szTeam)
				
				for(new i; i < iPnum; i++)
					apply_grenade_trail(MSG_ONE_UNRELIABLE, iGrenade, iColor, iPlayers[i])
			}
		}
	}
}

apply_grenade_trail(iType, iGrenade, iColor[3], iPlayer = 0)
{
	message_begin(iType, SVC_TEMPENTITY, .player = iPlayer)
	write_byte(TE_BEAMFOLLOW)
	write_short(iGrenade)
	write_short(g_iSprite)
	write_byte(g_eSettings[TRAIL_LIFE])
	write_byte(g_eSettings[TRAIL_WIDTH])
	write_byte(iColor[0])
	write_byte(iColor[1])
	write_byte(iColor[2])
	write_byte(g_eSettings[TRAIL_BRIGHTNESS])
	message_end()
}

public OnPrecacheSound(const szSound[])
	return equal(szSound, g_szFITHSound) ? FMRES_SUPERCEDE : FMRES_IGNORED
	
bool:is_blank(szString[])
	return szString[0] == EOS
	
bool:is_random(szString[])
	return szString[0] == 'R'
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

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

молба за корекция в плъгин crx_fireinthehole

Мнение от Siska » 21 Юни 2021, 17:44

up
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

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

молба за корекция в плъгин crx_fireinthehole

Мнение от Siska » 02 Юли 2021, 14:41

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

Аватар
hackera457
Извън линия
Модератор
Модератор
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

молба за корекция в плъгин crx_fireinthehole

Мнение от hackera457 » 02 Юли 2021, 18:37

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

Настройките на плъгина се променят чрез файла configs/FireInTheHole.ini:

[Messages = 1] - В този раздел се намират чат съобщенията за гранатите. Можете да изключите тази опция като го промените на "0".
Моите плъгини

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

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


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

молба за корекция в плъгин crx_fireinthehole

Мнение от Siska » 03 Юли 2021, 07:37

hackera457 написа: 02 Юли 2021, 18:37

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

Настройките на плъгина се променят чрез файла configs/FireInTheHole.ini:

[Messages = 1] - В този раздел се намират чат съобщенията за гранатите. Можете да изключите тази опция като го промените на "0".
Влизаш рядко и може би нямаш много свободно време да обърнеш внимание на молбата ми и затова предполагам , че не си ме разбрал.
Ако случайно имаш свободно време да обърнеш внимание на молбата ми отдели няколко минути в повече , за да можеш да прочетеш внимателно какво точно ми се иска да се получи. Няма смисъл да го пиша пак защото ще трябва да напиша пак същото. Ако трябва ще се помъча да обясня още по-подробно, но мисля ,че ако се прочете внимателно става ясно.
И все пак става въпрос за това , че плъгина обявява падналите на земята гранати от убити играчи , а трябва да обявява само тези хвърлени от жив играч, без значение дали е чат съобщение или ".wav" файл...
Заради този плъгин ползвам три други , а ако се поправи ще мога да ползвам само още един , вместо три. Както казах в нета ги има и то с много повече функции , но не работят. Затова просто трябва да се напише функцията по друг начин или да се добави проверка някаква за живи и мъртви играчи, за да се знае кой хвърля гранатата и да може плъгина да не бърка живите с мъртвите... По ясно не мога да го обясня , надявам се някой да може да помогне...
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

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

молба за корекция в плъгин crx_fireinthehole

Мнение от Siska » 04 Юли 2021, 09:06

Ето това е плъгина , който искам да ползвам , но работи при мен когато си поиска. Пет минути работи , пет минути не работи. Освен това последния ".wav" файл не се тегли никога от сървъра. Четох десетина коментари за плъгина и само един е казал , че при него на amxx 1.83 работело. Ние сме с 1.10... И понеже този не работи както трябва , затова ползвам горния, но той пък обявява и падналите на земята гранати , а трябва да обявява само тези хвърлени от жив играч, както е този тук...

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

#include <amxmodx>
#include <amxmisc>

new const grenade_snds[][] = 
{
	"radio/grenades/ct_flashbang01.wav",
	"radio/grenades/ct_flashbang02.wav",
	"radio/grenades/ct_flashbang03.wav",
	"radio/grenades/ct_grenade01.wav",
	"radio/grenades/ct_grenade02.wav",
	"radio/grenades/ct_grenade03.wav",
	"radio/grenades/ct_smoke01.wav",
	"radio/grenades/ct_smoke02.wav",
	"radio/grenades/ct_smoke03.wav",
	"radio/grenades/t_flashbang01.wav",
	"radio/grenades/t_flashbang02.wav",
	"radio/grenades/t_flashbang03.wav",
	"radio/grenades/t_grenade01.wav",
	"radio/grenades/t_grenade02.wav",
	"radio/grenades/t_grenade03.wav",
	"radio/grenades/t_smoke01.wav",
	"radio/grenades/t_smoke02.wav",
	"radio/grenades/t_smoke03.wav"
}

new grenade_txts[sizeof grenade_snds][65], g_txt_enabled = 1;

public plugin_init()
{
	register_plugin("CS:GO Grenade Callouts", "1.0", "hellmonja");
	register_message(get_user_msgid("SendAudio"), "Block_Msg_Audio");
	register_message(get_user_msgid("TextMsg"), "Block_Msg_Text");
	
	//Config File
	new szFilepath[64];
	get_configsdir(szFilepath, charsmax(szFilepath));
	add(szFilepath, charsmax(szFilepath), "/grenade_callouts.ini");
	
	if(!file_exists(szFilepath))
	{
		g_txt_enabled = 0;
		return
	}

	new f = fopen(szFilepath, "rt");
	new szData[64], i = 0;

	while( !feof(f) && i < sizeof(grenade_snds)) 
	{ 
		fgets(f, szData, charsmax(szData));
		trim(szData);
		if(!szData[0] || szData[0] == ';' || szData[0] == '/' && szData[1] == '/')
			continue;
		
		copy(grenade_txts[i], charsmax(szData), szData);
		i++;
	}
	fclose(f);
}

public plugin_precache()
{
	for(new i = 0; i < sizeof grenade_snds - 1; i++)
		precache_sound(grenade_snds[i]);
}

public Block_Msg_Audio(msg_id, msg_dest, msg_entity)
{
	if(get_msg_args() != 3 || get_msg_argtype(2) != ARG_STRING)
		return PLUGIN_CONTINUE

	new arg2[20];
	get_msg_arg_string(2, arg2, 19);
	
	if(equal(arg2[1], "!MRAD_FIREINHOLE"))
		return PLUGIN_HANDLED

	return PLUGIN_CONTINUE
}

public Block_Msg_Text()
{
	if(g_txt_enabled != 1)
		return PLUGIN_CONTINUE
	
	if(get_msg_args() != 5 || get_msg_argtype(3) != ARG_STRING || get_msg_argtype(5) != ARG_STRING)
		return PLUGIN_CONTINUE

	new arg3[16];
	get_msg_arg_string(3, arg3, 15);
    
	if(!equal(arg3, "#Game_radio"))
		return PLUGIN_CONTINUE

	new arg5[20];
	get_msg_arg_string(5, arg5, 19);
    
	if(equal(arg5, "#Fire_in_the_hole"))
		return PLUGIN_HANDLED

	return PLUGIN_CONTINUE
}

public grenade_throw(id, grenid, wpnid)
{
	if(!is_user_alive(id))
		return
	
	new players[32], pnum, playername[32];
	new team = get_user_team(id), flag, temp;
	
	get_players(players, pnum, "a");
	get_user_name(id, playername, charsmax(playername));
	if(team == 2) flag = 0; else flag = 9;
	
	for(new i = 1; i < pnum + 1; i++)
		if(get_user_team(i) == team)
		{
			switch(wpnid)
			{    
				case CSW_FLASHBANG:
					temp = random_num(0, 2) + flag;
				case CSW_HEGRENADE:
					temp = random_num(3, 5) + flag;
				case CSW_SMOKEGRENADE:
					temp = random_num(6, 8) + flag;
			}

			client_cmd(i,"spk ^"%s^"", grenade_snds[temp]);
				
			if(g_txt_enabled == 1)
				client_print(i, print_chat, "%s (RADIO): %s", playername, grenade_txts[temp]);
		}
}
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Аватар
m0ney
Извън линия
Потребител
Потребител
Мнения: 285
Регистриран на: 13 Апр 2020, 11:36
Се отблагодари: 83 пъти
Получена благодарност: 39 пъти
Обратна връзка:

молба за корекция в плъгин crx_fireinthehole

Мнение от m0ney » 04 Юли 2021, 10:53

Свали на 1.9, най близко до 1.8.3 да работи ми се струва, тия плъгини от 64-та няма как да работят на 1.10 освен ако не е вписано в описанието в dev-cs ru примерно
Изображение
Изображение

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

молба за корекция в плъгин crx_fireinthehole

Мнение от Siska » 04 Юли 2021, 11:16

m0ney написа: 04 Юли 2021, 10:53 Свали на 1.9, най близко до 1.8.3 да работи ми се струва, тия плъгини от 64-та няма как да работят на 1.10 освен ако не е вписано в описанието в dev-cs ru примерно
То е ясно , че няма да сваля amx-a до по-стара версия, но ти в този случай бъркаш. Първо плъгина не е от 64-та и второ стария плъгин всъщност е горния. Освен това имам плъгини от 2004 година , които работят без проблеми на 1.10.
И в действителност това , което трябва да се направи е или да се види грешката каква е във втория плъгин или да се види как е написан и да се ползва същата схема за първия плъгин.
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

Аватар
impossible
Извън линия
Потребител
Потребител
Мнения: 488
Регистриран на: 15 Юни 2019, 12:41
Се отблагодари: 23 пъти
Получена благодарност: 47 пъти

молба за корекция в плъгин crx_fireinthehole

Мнение от impossible » 04 Юли 2021, 17:28

А защо след като плъгина оставя падналите на земята НЕ от мъртвите играчи, ползваш и nadedrops като ти идва в повече просто изключи опцията nadedrops от game.cfg ето ти лесно решение вместо да спамиш за редакция на плъгина
// Drop a grenade after player death
// 0 - disabled
// 1 - drop one the grenade
// 2 - drop an everyone grenades
//
// Default value: "0"
mp_nadedrops 0

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

молба за корекция в плъгин crx_fireinthehole

Мнение от Siska » 04 Юли 2021, 19:55

impossible написа: 04 Юли 2021, 17:28 А защо след като плъгина оставя падналите на земята НЕ от мъртвите играчи, ползваш и nadedrops като ти идва в повече просто изключи опцията nadedrops от game.cfg ето ти лесно решение вместо да спамиш за редакция на плъгина
// Drop a grenade after player death
// 0 - disabled
// 1 - drop one the grenade
// 2 - drop an everyone grenades
//
// Default value: "0"
mp_nadedrops 0
Ще може ли да помоля някой , ако е разбрал какво искам , тогава да пише в темата , защото иначе се разводняват нещата и ако някой иска да помогне наистина ще му е много по-трудно като му се налага да чете "спама" ви , разбрали недоразбрали... Виждам , че сте с добри намерения , но не е това , което трябва да се получи...
Търсих врага и го открих : това съм аз , трябва да се победя...
Изображение
WWW.CSMEGAGAMING.COM Изображение Изображение Skype : Sisi-1_1

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

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

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта