Страница 3 от 7

GoSpec [ /spec; /back; /change ]

Публикувано на: 18 Окт 2017, 10:03
от LoShIaA
Замених го, но сега хем показва, че се самоубивам, хем отчита и умирания пак.

GoSpec [ /spec; /back; /change ]

Публикувано на: 18 Окт 2017, 13:12
от OciXCrom
Ами толкова правилно работят въпросните функции. Остави го както беше (user_silentkill), и под него добави cs_set_user_deaths(id, cs_get_user_deaths(id) - 1).

GoSpec [ /spec; /back; /change ]

Публикувано на: 18 Окт 2017, 13:39
от LoShIaA
Супер, така работи. Сега нито показва, че умирам нито начислява умирания, но при компилация излезна едно предупреждение.
crx_gospec.sma(63) : warning 217: loose indentation - тази грешка заради някакъв TAB ли се получава?

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

[#include <amxmodx>
#include <cromchat>
#include <cstrike>
#include <hamsandwich>

#define PLUGIN_VERSION "1.2"

enum _:Cvars
{
	gospec_spec_flag,
	gospec_change_flag,
	gospec_respawn
}

new g_eCvars[Cvars]

new CsTeams:g_iOldTeam[33],
	g_iSpecFlag,
	g_iChangeFlag

public plugin_init()
{
	register_plugin("GoSpec", PLUGIN_VERSION, "OciXCrom")
	register_cvar("@CRXGoSpec", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED)
	register_dictionary("GoSpec.txt")
	
	register_clcmd("say /spec", "GoSpec")
	register_clcmd("say /back", "GoBack")
	register_clcmd("say /change", "SwitchTeam")
	
	g_eCvars[gospec_spec_flag] = register_cvar("gospec_spec_flag", "d")
	g_eCvars[gospec_change_flag] = register_cvar("gospec_change_flag", "b")
	g_eCvars[gospec_respawn] = register_cvar("gospec_respawn", "1")
	CC_SetPrefix("&x04[&x03GoSpec&x04]")
}

public plugin_cfg()
{
	new szFlag[2]
	get_pcvar_string(g_eCvars[gospec_spec_flag], szFlag, charsmax(szFlag))
	g_iSpecFlag = szFlag[0] == EOS ? ADMIN_ALL : read_flags(szFlag)
	get_pcvar_string(g_eCvars[gospec_change_flag], szFlag, charsmax(szFlag))
	g_iChangeFlag = szFlag[0] == EOS ? ADMIN_ALL : read_flags(szFlag)
}

public GoSpec(id)
{
	if(!HasAccess(id, g_iSpecFlag))
		return PLUGIN_HANDLED
	
	new CsTeams:iTeam = cs_get_user_team(id)
		
	if(iTeam == CS_TEAM_SPECTATOR)
		CC_SendMessage(id, "%L", id, "GOSPEC_ALREADY_SPECTATOR")
	else
	{
		g_iOldTeam[id] = iTeam
		cs_set_user_team(id, CS_TEAM_SPECTATOR)
		CC_SendMessage(id, "%L", id, "GOSPEC_NOW_SPECTATOR")
		
		if(is_user_alive(id))
			user_silentkill(id)
			cs_set_user_deaths(id, cs_get_user_deaths(id) - 1)
	}
	
	return PLUGIN_HANDLED
}

public GoBack(id)
{
	if(!HasAccess(id, g_iSpecFlag))
		return PLUGIN_HANDLED
		
	if(cs_get_user_team(id) != CS_TEAM_SPECTATOR)
		CC_SendMessage(id, "%L", id, "GOSPEC_NOT_SPECTATOR")
	else
	{
		new iPlayers[32], iCT, iT
		get_players(iPlayers, iCT, "e", "CT")
		get_players(iPlayers, iT, "e", "TERRORIST")
		
		if(iCT == iT)
		{
			cs_set_user_team(id, g_iOldTeam[id])
			CC_SendMessage(id, "%L", id, "GOSPEC_TRANSFERED_TO_PREVIOUS")
		}
		else
		{
			cs_set_user_team(id, iCT > iT ? CS_TEAM_T : CS_TEAM_CT)
			CC_SendMessage(id, "%L", id, "GOSPEC_TRANSFERED_TO_LESS")
		}
		
		if(get_pcvar_num(g_eCvars[gospec_respawn]))
			ExecuteHamB(Ham_CS_RoundRespawn, id)
	}		
	
	return PLUGIN_HANDLED
}

public SwitchTeam(id)
{
	if(!HasAccess(id, g_iChangeFlag))
		return PLUGIN_HANDLED
		
	new CsTeams:iTeam = cs_get_user_team(id)
		
		
	if(iTeam == CS_TEAM_SPECTATOR)
		CC_SendMessage(id, "%L", id, "GOSPEC_CANT_USE")
	else
	{
		cs_set_user_team(id, cs_get_user_team(id) == CS_TEAM_CT ? CS_TEAM_T : CS_TEAM_CT)
		CC_SendMessage(id, "%L", id, "GOSPEC_TRANSFERED_TO_OPPOSITE")
		
		if(is_user_alive(id))
		{
			user_silentkill(id)
			cs_set_user_deaths(id, cs_get_user_deaths(id) - 1)
			
			if(get_pcvar_num(g_eCvars[gospec_respawn]))
				ExecuteHamB(Ham_CS_RoundRespawn, id)
		}			
	}
	
	return PLUGIN_HANDLED
}

bool:HasAccess(id, iFlag)
{
	if(iFlag == ADMIN_ALL || get_user_flags(id) & iFlag)
		return true
	else
	{
		CC_SendMessage(id, "%L", id, "GOSPEC_NO_ACCESS")
		return false
	}
	
	#if AMXX_VERSION_NUM < 183
	return false
	#endif
}
/code]

GoSpec [ /spec; /back; /change ]

Публикувано на: 18 Окт 2017, 13:40
от OciXCrom

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

if(is_user_alive(id))
	user_silentkill(id)
	cs_set_user_deaths(id, cs_get_user_deaths(id) - 1)
Това не е правилно. Без скоби може да се работи само ако става дума за един ред под if. В този случай трябва да стане така:

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

if(is_user_alive(id))
{
	user_silentkill(id)
	cs_set_user_deaths(id, cs_get_user_deaths(id) - 1)
}

GoSpec [ /spec; /back; /change ]

Публикувано на: 04 Ное 2017, 16:42
от LoShIaA
Добре, вече всичко е както трябва. Благодаря ти. Може би ще е добре да го добавиш това към самият плъгин.

Едит: тук трябва да добавя, че забелязах, че понякога при местене към спектатор и след това към даден отбор остава понякога един труп на земята (ползвам го за respawn), това го забелязах, когато се трансферирах по 100 (образно казано) пъти за да мога да накарам admin models плъгина (за, който съм пуснал отделна тема) да бъгне.

Искам да добавя, че при първата снимка пред контра-терориста има труп, който не се вижда от самия контра-терорист, но от страна на терориста се вижда, но сега снимката е на другия компютър и не ми се качва.
Вмятам, че тестовете са правени от лаптопа ми и настолния ми компютър тоест само двама човека сме в сървъра и двамата са от мойте компютри. Също така ще добавя, че трупът, който се вижда е на контра-терориста, който вече е жив и е заснето от неговата камера.

Най-важното е, че не мога да кажа дали това го има при оригиналния код или само при този, който едитнах, (спрямо мнението над моето) защото сега не ми се провежда и тест с оригиналния код.

Проблема нито е страшен нито пречи на самата игра. Случва се изключително рядко. Искам само да го съобщя на автора.

GoSpec [ /spec; /back; /change ]

Публикувано на: 13 Дек 2017, 10:32
от Maverick
Плъгина има някакъв, бъг поне при мен. Както съм си spec си ме мести в отбор после пак си ме връща. :mad:
https://d1playscdntv-a.akamaihd.net/vid ... d/1080.mp4

GoSpec [ /spec; /back; /change ]

Публикувано на: 13 Дек 2017, 19:51
от OciXCrom
Не е от плъгина. Вчера написах това в друга тема:
Всеки плъгин, който изпраща чат съобщения, може да създаде такъв проблем, тъй като за да изпрати чат съобщение с друг цвят (червен/син/бял), плъгинът променя отбора на играча, изпраща съобщението с новия отборен цвят и го връща в стария, обаче това става бързо и не се забелязва. Ако някой плъгин не е правилно направен, може да променя отбора, но да не го връща стария.
В случая някой плъгин прекалено бавно прави тази процедура и се забелязва.

GoSpec [ /spec; /back; /change ]

Публикувано на: 02 Окт 2018, 21:06
от viewsonic
Oci възможно ли е да се направи за всички играчи да го ползват не само админи ?

GoSpec [ /spec; /back; /change ]

Публикувано на: 02 Окт 2018, 21:14
от 7331
viewsonic написа: 02 Окт 2018, 21:06 Oci възможно ли е да се направи за всички играчи да го ползват не само админи ?

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

gospec_spec_flag "e" -- флагът за достъп до командите /spec и /back.
gospec_change_flag "e" -- флагът за достъп до командата /change.
Предполагам знаеш как да смениш флага, за да го използват и други.

GoSpec [ /spec; /back; /change ]

Публикувано на: 02 Окт 2018, 21:16
от distant
viewsonic написа: 02 Окт 2018, 21:06 Oci възможно ли е да се направи за всички играчи да го ползват не само админи ?
Смени квара на:
gospec_change_flag "" gospec_spec_flag ""