GoSpec [ /spec; /back; /change ]

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

GoSpec [ /spec; /back; /change ]

Мнение от OciXCrom » 01 Дек 2018, 17:31

The function that kills the player is user_silentkill which according to the API will not affect the client's score. If this is happening, it's probably a bug in 1.8.2. You should try upgrading to 1.9 or 1.10 to avoid bugs like this.

Another alternative is giving the player -1 death manually. To do this, you need to change these lines:

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

if(is_user_alive(id))
	user_silentkill(id)
To this:

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

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

Аватар
esc-Fiv3
Извън линия
Foreigner
Foreigner
Мнения: 110
Регистриран на: 24 Ное 2018, 19:19
Се отблагодари: 16 пъти

GoSpec [ /spec; /back; /change ]

Мнение от esc-Fiv3 » 11 Дек 2018, 05:10

Can you make that /spec command to be available only when you are dead? In that case you don't get one death for this command? And to be showed one chat message which say: You have to be dead to use /spec. Thanks!

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

GoSpec [ /spec; /back; /change ]

Мнение от OciXCrom » 11 Дек 2018, 15:16

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

#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", "e")
	g_eCvars[gospec_change_flag] = register_cvar("gospec_change_flag", "e")
	g_eCvars[gospec_respawn] = register_cvar("gospec_respawn", "0")
	CC_SetPrefix("[&x03GoSpec&x01]")
}

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

	if(is_user_alive(id))
	{
		CC_SendMessage(id, "You have to be dead to use this command.")
		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)
	}
	
	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)
			
			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
}

Аватар
esc-Fiv3
Извън линия
Foreigner
Foreigner
Мнения: 110
Регистриран на: 24 Ное 2018, 19:19
Се отблагодари: 16 пъти

GoSpec [ /spec; /back; /change ]

Мнение от esc-Fiv3 » 11 Дек 2018, 23:24

It works! Thanks!

Аватар
Just
Извън линия
Потребител
Потребител
Мнения: 427
Регистриран на: 23 Дек 2016, 19:10
Местоположение: http://cs-ultragaming.info
Се отблагодари: 5 пъти
Получена благодарност: 34 пъти
Обратна връзка:

GoSpec [ /spec; /back; /change ]

Мнение от Just » 12 Дек 2018, 23:01

Може ли да се нарпави /spec; и /back да се ползва от всички играчи а change само от админите.
Изображение


NEW CS 1.6 SERVERS IP: 45.144.155.176:27015

Изображение

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

GoSpec [ /spec; /back; /change ]

Мнение от OciXCrom » 12 Дек 2018, 23:09

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

Аватар
esc-Fiv3
Извън линия
Foreigner
Foreigner
Мнения: 110
Регистриран на: 24 Ное 2018, 19:19
Се отблагодари: 16 пъти

GoSpec [ /spec; /back; /change ]

Мнение от esc-Fiv3 » 13 Дек 2018, 05:14

Found a bug: if I use /spec command and then I use /back, it doesn't load my player model that I set. If i type : /spec and then I leave the server and after I come back, the same thing..it doesn't load my player model

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

GoSpec [ /spec; /back; /change ]

Мнение от OciXCrom » 14 Дек 2018, 14:07

Try adding cs_reset_user_model(id) after each cs_set_user_team line and see if it works. If not, you should update to the latest AMXX version.

Аватар
esc-Fiv3
Извън линия
Foreigner
Foreigner
Мнения: 110
Регистриран на: 24 Ное 2018, 19:19
Се отблагодари: 16 пъти

GoSpec [ /spec; /back; /change ]

Мнение от esc-Fiv3 » 14 Дек 2018, 14:47

So I have to replace cs_set_user_team with cs_reset_user_model(id)? Or I just add cs_reset_user_model(id) like this:

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

else
	{
		g_iOldTeam[id] = iTeam
		cs_set_user_team(id, CS_TEAM_SPECTATOR)
		cs_reset_user_model(id)
		CC_SendMessage(id, "%L", id, "GOSPEC_NOW_SPECTATOR")
		
		if(is_user_alive(id))
			user_silentkill(id)
	}

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

GoSpec [ /spec; /back; /change ]

Мнение от OciXCrom » 14 Дек 2018, 14:57

No, don't replace, just add it like you did.

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

Обратно към “Одобрени плъгини”

Кой е на линия

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