GoSpec [ /spec; /back; /change ]

Одобрените от нас плъгини. Моля, докладвайте ако забележите бъг с някой от плъгините в този раздел.
Потребителски аватар

LoShIaA
Потребител
Потребител
Мнения: 322
Регистриран: 20 окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 6 пъти
Години: 26

GoSpec [ /spec; /back; /change ]

Мнение от LoShIaA » 18 окт 2017, 10:03

Замених го, но сега хем показва, че се самоубивам, хем отчита и умирания пак.

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

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5254
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 74 пъти
Получена благодарност: 538 пъти
Години: 21
Контакти:

GoSpec [ /spec; /back; /change ]

Мнение от OciXCrom TM » 18 окт 2017, 13:12

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

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

LoShIaA
Потребител
Потребител
Мнения: 322
Регистриран: 20 окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 6 пъти
Години: 26

GoSpec [ /spec; /back; /change ]

Мнение от LoShIaA » 18 окт 2017, 13:39

Супер, така работи. Сега нито показва, че умирам нито начислява умирания, но при компилация излезна едно предупреждение.
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]

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

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5254
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 74 пъти
Получена благодарност: 538 пъти
Години: 21
Контакти:

GoSpec [ /spec; /back; /change ]

Мнение от OciXCrom TM » 18 окт 2017, 13:40

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

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)
}

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

LoShIaA
Потребител
Потребител
Мнения: 322
Регистриран: 20 окт 2016, 14:44
Местоположение: Стара Загора
Се отблагодари: 120 пъти
Получена благодарност: 6 пъти
Години: 26

GoSpec [ /spec; /back; /change ]

Мнение от LoShIaA » 04 ное 2017, 16:42

Добре, вече всичко е както трябва. Благодаря ти. Може би ще е добре да го добавиш това към самият плъгин.

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

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

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

Проблема нито е страшен нито пречи на самата игра. Случва се изключително рядко. Искам само да го съобщя на автора.
Прикачени файлове
20171103192326_1.jpg
20171103192326_1.jpg (282.53 KиБ) Видяна 1070 пъти
20171103192326_1.jpg
20171103192326_1.jpg (282.53 KиБ) Видяна 1070 пъти
20171103191753_1.jpg
20171103191753_1.jpg (328.34 KиБ) Видяна 1070 пъти
20171103191753_1.jpg
20171103191753_1.jpg (328.34 KиБ) Видяна 1070 пъти

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

Maverick
Рекламатор
Рекламатор
Мнения: 228
Регистриран: 22 окт 2016, 17:05
Местоположение: 93.123.18.81:27017
Се отблагодари: 17 пъти
Получена благодарност: 7 пъти
Контакти:

GoSpec [ /spec; /back; /change ]

Мнение от Maverick » 13 дек 2017, 10:32

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

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

Автор на темата
OciXCrom TM
Администратор
Администратор
Мнения: 5254
Регистриран: 06 окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 74 пъти
Получена благодарност: 538 пъти
Години: 21
Контакти:

GoSpec [ /spec; /back; /change ]

Мнение от OciXCrom TM » 13 дек 2017, 19:51

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

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

viewsonic
Потребител
Потребител
Мнения: 135
Регистриран: 09 юни 2018, 17:46
Се отблагодари: 22 пъти
Контакти:

GoSpec [ /spec; /back; /change ]

Мнение от viewsonic » 02 окт 2018, 21:06

Oci възможно ли е да се направи за всички играчи да го ползват не само админи ?

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

93.123.18.76:27016

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

7331 bl4k
Потребител
Потребител
Мнения: 44
Регистриран: 06 авг 2018, 13:23
Местоположение: nextmap
Се отблагодари: 14 пъти
Получена благодарност: 4 пъти
Години: 19

GoSpec [ /spec; /back; /change ]

Мнение от 7331 bl4k » 02 окт 2018, 21:14

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

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

gospec_spec_flag "e" -- флагът за достъп до командите /spec и /back.
gospec_change_flag "e" -- флагът за достъп до командата /change.
Предполагам знаеш как да смениш флага, за да го използват и други.
Последна промяна от 7331 bl4k на 02 окт 2018, 21:19, променено общо 2 пъти.
:pepo_christ2:

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

distant
Потребител
Потребител
Мнения: 6
Регистриран: 01 окт 2018, 10:54

GoSpec [ /spec; /back; /change ]

Мнение от distant » 02 окт 2018, 21:16

viewsonic написа:
02 окт 2018, 21:06
Oci възможно ли е да се направи за всички играчи да го ползват не само админи ?
Смени квара на:
gospec_change_flag "" gospec_spec_flag ""
Последна промяна от distant на 02 окт 2018, 22:14, променено общо 1 път.

Отговори

Върни се в “Одобрени плъгини”

Кой е на линия

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