CSDM Spawn Protection

Въпроси и проблеми свързани с AMXModX.
Аватар
MF1
Извън линия
Рекламатор
Рекламатор
Мнения: 314
Регистриран на: 12 Окт 2016, 21:15
Местоположение: гр.Варна
Получена благодарност: 8 пъти
Обратна връзка:

CSDM Spawn Protection

Мнение от MF1 » 11 Дек 2016, 21:02

Имам проблем, използвам csdm в който има spawn protection, но той е активен само ако играча не се движи, тоест аз съм го сложил на 5 секунди но ако мръдне веднага изчезва... има ли как да го направя да е 5 секунди дори с движението ?
Join now.
www.MF1-CS.eu ---------------------------- 93.123.18.36:27018 93.123.18.36:27015 93.123.18.36:27020 ---------------------------- :bg:

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

Re: CSDM Spawn Protection

Мнение от OciXCrom » 11 Дек 2016, 21:17

Не мислиш ли, че трябва да предоставиш кода на плъгина? :)

Аватар
mount4
Извън линия
Потребител
Потребител
Мнения: 187
Регистриран на: 03 Ное 2016, 19:54
Местоположение: Варна
Обратна връзка:

Re: CSDM Spawn Protection

Мнение от mount4 » 11 Дек 2016, 21:17

Ами спри го от csdm-a и си сложи плъгин за spawn protection
94.190.190.195:27015 -> Изображение <-- Runemod here !
94.190.190.195:27017 -> Изображение

Segmentation fault Изображение <-- Opera browser !

Аватар
MF1
Извън линия
Рекламатор
Рекламатор
Мнения: 314
Регистриран на: 12 Окт 2016, 21:15
Местоположение: гр.Варна
Получена благодарност: 8 пъти
Обратна връзка:

Re: CSDM Spawn Protection

Мнение от MF1 » 11 Дек 2016, 21:40

OciXCrom™ написа:Не мислиш ли, че трябва да предоставиш кода на плъгина? :)
Извини ме, ето :

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


 * csdm_protection.sma
 * CSDM plugin that lets you have spawn protection
 *
 * (C)2003-2014 David "BAILOPAN" Anderson
 *
 *  Give credit where due.
 *  Share the source - it sets you free
 *  http://www.opensource.org/
 *  http://www.gnu.org/
 */
 
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <engine_const>
#include <csdm>

new g_ProtColors[4][3] = {{0,0,0},{255,0,0},{0,0,255},{0,255,0}}
new g_GlowAlpha[4] = {200,200,200,200}

new g_Protected[33]
new bool:g_Enabled = false
new bool:g_Glowing = false
new Float:g_ProtTime = 2.0

new const g_iProtectionOffFlags = IN_ATTACK | IN_ATTACK2 | IN_FORWARD | IN_BACK | IN_MOVELEFT | IN_MOVERIGHT

new bool:g_MainPlugin = true

// page info for settings in CSDM Setting Menu
new g_SettingsMenu = 0
new g_ProtSettMenu = 0
new g_ItemsInMenuNr = 0
new g_PageSettMenu = 0

//Tampering with the author and name lines can violate the copyright
new PLUGINNAME[] = "CSDM Protection"
new VERSION[] = CSDM_VERSION
new AUTHORS[] = "BAILOPAN"
new ACCESS    = ADMIN_MAP

public csdm_Init(const version[])
{
	if (version[0] == 0)
	{
		set_fail_state("CSDM failed to load.")
		return
	}	
}

public csdm_CfgInit()
{
	csdm_reg_cfg("protection", "read_cfg")
}

stock set_rendering(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16)
{
	set_pev(index, pev_renderfx, fx)
	new Float:RenderColor[3]
	RenderColor[0] = float(r)
	RenderColor[1] = float(g)
	RenderColor[2] = float(b)
	set_pev(index, pev_rendercolor, RenderColor)
	set_pev(index, pev_rendermode, render)
	set_pev(index, pev_renderamt, float(amount))

	return 1
}

public plugin_init()
{
	register_plugin(PLUGINNAME, VERSION, AUTHORS)
	register_forward(FM_PlayerPreThink, "On_ClientPreThink", 1)
	register_concmd("csdm_prots_menu", "csdm_prots_menu", ACCESS, "CSDM Protection Settings Menu")

	g_MainPlugin = module_exists("csdm_main") ? true : false	
	if (g_MainPlugin)
	{
		g_SettingsMenu = csdm_settings_menu()
		g_ItemsInMenuNr = menu_items(g_SettingsMenu)
		g_PageSettMenu = g_ItemsInMenuNr / 7
		g_ProtSettMenu = menu_create("CSDM Protection Settings Menu", "use_csdm_prot_menu")

		menu_additem(g_SettingsMenu, "CSDM Protection Settings", "csdm_prots_menu", ACCESS)

		if (g_ProtSettMenu)
		{
			new cb_protect = menu_makecallback("hook_prot_sett_display")
			menu_additem(g_ProtSettMenu, "Spawn Protection Enabled/Disabled", "1", ACCESS, cb_protect)
			menu_additem(g_ProtSettMenu, "Glowing on Spawn Enabled/Disabled", "2", ACCESS, cb_protect)
			menu_additem(g_ProtSettMenu, "Back", "3", 0, -1)
		}
	}
}

public client_connect(id)
{
	g_Protected[id] = 0
}

public client_disconnect(id)
{
	if (g_Protected[id])
	{
		remove_task(g_Protected[id])
		g_Protected[id] = 0
	}
}

SetProtection(id)
{
	if (g_Protected[id])
		remove_task(g_Protected[id])
		
	if (!is_user_connected(id))
		return
		
	new team = get_user_team(id)
	
	if (!IsValidTeam(team))
	{
		return
	}

	if (!pev(id, pev_takedamage) && !g_Protected[id]) // against other plugins controlling the protection
	{
		//log_amx("can't set protection on player[%d]", id)
//		g_Protected[id] = 0
		return
	}

	set_task(g_ProtTime, "ProtectionOver", id)
	g_Protected[id] = id

	if (g_Glowing)
	{
		if (!csdm_get_ffa())
			set_rendering(id, kRenderFxGlowShell, g_ProtColors[team][0], g_ProtColors[team][1], g_ProtColors[team][2], 
				kRenderNormal, g_GlowAlpha[team])
		else
			set_rendering(id, kRenderFxGlowShell, g_ProtColors[3][0], g_ProtColors[3][1], g_ProtColors[3][2], 
				kRenderNormal, g_GlowAlpha[3])
	}
	set_pev(id, pev_takedamage, 0.0)
}

RemoveProtection(id)
{
	if (g_Protected[id])
		remove_task(g_Protected[id])
		
	ProtectionOver(id)
}

public ProtectionOver(id)
{
	g_Protected[id] = 0
	
	if (!is_user_connected(id))
		return
	
	set_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
	set_pev(id, pev_takedamage, 2.0)
}

public csdm_PostDeath(killer, victim, headshot, const weapon[])
{
	if (!g_Enabled || !csdm_active())
		return
		
	RemoveProtection(victim)
}

public csdm_PostSpawn(player, bool:fake)
{
	if ((g_Enabled) && csdm_active())
		SetProtection(player)
}

public On_ClientPreThink(id)
{
	if (!g_Enabled || !g_Protected[id] || !is_user_connected(id) || !csdm_active())
		return
	
	new buttons = pev(id,pev_button);

	if ( buttons & g_iProtectionOffFlags )
	{
		RemoveProtection(id)
	}
}

public read_cfg(readAction, line[], section[])
{
	if (readAction == CFG_READ)
	{
		new setting[24], sign[3], value[32];

		parse(line, setting, 23, sign, 2, value, 31);
		
		if (equali(setting, "colorst"))
		{
			new red[10], green[10], blue[10], alpha[10]
			parse(value, red, 9, green, 9, blue, 9, alpha, 9)
			
			g_ProtColors[_TEAM_T][0] = str_to_num(red)
			g_ProtColors[_TEAM_T][1] = str_to_num(green)
			g_ProtColors[_TEAM_T][2] = str_to_num(blue)
			g_GlowAlpha[_TEAM_T] = str_to_num(alpha)
		}
		else if (equali(setting, "colorsct"))
		{
			new red[10], green[10], blue[10], alpha[10]
			parse(value, red, 9, green, 9, blue, 9, alpha, 9)
			
			g_ProtColors[_TEAM_CT][0] = str_to_num(red)
			g_ProtColors[_TEAM_CT][1] = str_to_num(green)
			g_ProtColors[_TEAM_CT][2] = str_to_num(blue)
			g_GlowAlpha[_TEAM_CT] = str_to_num(alpha)
		}
		else if (equali(setting, "colorsffa"))
		{
			new red[10], green[10], blue[10], alpha[10]
			parse(value, red, 9, green, 9, blue, 9, alpha, 9)

			g_ProtColors[3][0] = str_to_num(red)
			g_ProtColors[3][1] = str_to_num(green)
			g_ProtColors[3][2] = str_to_num(blue)
			g_GlowAlpha[3] = str_to_num(alpha)
		}
		else if (equali(setting, "enabled"))
		{
			g_Enabled = str_to_num(value) ? true : false
		}
		else if (equali(setting, "glowing")) 
		{
			g_Glowing = str_to_num(value) ? true : false
		}
		else if (equali(setting, "time")) 
		{
			g_ProtTime = str_to_float(value)
		}
	}
}

// stuff for settings menu - START
public csdm_prots_menu(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1) || !id)
		return PLUGIN_HANDLED

	menu_display(id, g_ProtSettMenu, 0)

	return PLUGIN_HANDLED
}

public use_csdm_prot_menu(id, menu, item)
{
	if (item < 0)
		return PLUGIN_CONTINUE

	new command[6], paccess, call
	if (!menu_item_getinfo(g_ProtSettMenu, item, paccess, command, 5, _, 0, call))
	{
		log_amx("Error: csdm_menu_item() failed (menu %d) (page %d) (item %d)", g_ProtSettMenu, 0, item)
		return PLUGIN_HANDLED
	}
	if (paccess && !(get_user_flags(id) & paccess))
	{
		client_print(id, print_chat, "You do not have access to this menu option.")
		return PLUGIN_HANDLED
	}

	new iChoice = str_to_num(command)
	
	switch(iChoice)
	{
		case 1:
		{
			g_Enabled = (g_Enabled ? false : true)

			client_print(id, print_chat, "[CSDM] CSDM Spawn Protection setting changed to %s.", g_Enabled ? "enabled" : "disabled")

			csdm_write_cfg(id, "protection", "enabled", g_Enabled ? "1" : "0")
			menu_display(id, g_ProtSettMenu, 0)
			return PLUGIN_HANDLED
		}
		case 2:
		{
			g_Glowing = (g_Glowing ? false : true)

			client_print(id, print_chat, "[CSDM] CSDM Spawn Glowing setting changed to %s.", g_Glowing ? "enabled" : "disabled")

			csdm_write_cfg(id, "protection", "glowing", g_Glowing ? "1" : "0")
			menu_display(id, g_ProtSettMenu, 0)
			return PLUGIN_HANDLED
		}
		case 3:
		{
			menu_display(id, g_SettingsMenu, g_PageSettMenu)
			return PLUGIN_HANDLED
		}
	}
	return PLUGIN_HANDLED
}

public hook_prot_sett_display(player, menu, item)
{
	new paccess, command[6], call
	
	menu_item_getinfo(menu, item, paccess, command, 5, _, 0, call)
	
	if (equali(command, "1"))
	{	
		if (!g_Enabled)
		{
			menu_item_setname(menu, item, "Spawn Protection Disabled")
		} else {
			menu_item_setname(menu, item, "Spawn Protection Enabled")
		}
	}
	else if (equali(command, "2"))
	{
		if (!g_Glowing)
		{
			menu_item_setname(menu, item, "Spawn Glowing Disabled")
		} else {
			menu_item_setname(menu, item, "Spawn Glowing Enabled")
		}
	}
}
// stuff for settings menu - END
Join now.
www.MF1-CS.eu ---------------------------- 93.123.18.36:27018 93.123.18.36:27015 93.123.18.36:27020 ---------------------------- :bg:

Аватар
Petrowch0
Извън линия
Потребител
Потребител
Мнения: 220
Регистриран на: 14 Окт 2016, 19:23
Местоположение: de_dust2
Получена благодарност: 2 пъти
Обратна връзка:

Re: CSDM Spawn Protection

Мнение от Petrowch0 » 11 Дек 2016, 21:48

По-добре използвай това:

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

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

new pcvartimer,pcvarenabled
new timer[33]

public plugin_init()
{
	register_plugin("Spawn Protection", "1.3", "SpeeD") 
	pcvartimer = register_cvar("sv_sptime", "3")
	pcvarenabled = register_cvar("sv_spenable","1")
	RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost",1) 
}

public fwHamPlayerSpawnPost(id)
{
	if(get_pcvar_num(pcvarenabled) != 1 || !is_user_alive(id)) return 
	
	remove_task(id)
	set_user_godmode(id)
	set_user_rendering(id)
	
	setglow(id)
	start_protection(id)
}

public setglow(id)  
{  
	new CsTeams:team = cs_get_user_team(id)
	
	if(team == CS_TEAM_T)  
		set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 10) 
	else if(team == CS_TEAM_CT)  
		set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 10) 
	
	timer[id] = get_pcvar_num(pcvartimer)
	
}   

public start_protection(id) 
{ 
	set_user_godmode(id,1)
	
	
	if(timer[id] == 0) 
	{
		set_hudmessage(255, 0, 0, -1.0, 0.2, 1, 0.02, 3.0,_,_,-1)
		show_hudmessage(id,"Spawn Protection expired")
	}
	else
	{
		set_hudmessage(0, 255, 0, -1.0, 0.2, 0, 0.02, 0.8,_,_,-1)
		show_hudmessage(id,"Spawn Protection expires in %d second%s", timer[id],timer[id] > 1 ? "s" : "") 
	}
	
	--timer[id]
	
	if(timer[id] >= 0) set_task(1.0,"start_protection",id)
	else
	{
		set_user_godmode(id)
		set_user_rendering(id)
	}
}

public client_disconnect(id)
	remove_task(id)

Изображение

Аватар
mount4
Извън линия
Потребител
Потребител
Мнения: 187
Регистриран на: 03 Ное 2016, 19:54
Местоположение: Варна
Обратна връзка:

Re: CSDM Spawn Protection

Мнение от mount4 » 11 Дек 2016, 21:51

Добре де защо трябва да използваш плъгин към CSDM като можеш да го направиш с отделно малко плъгинче.
Виж този плъгин колко много библиотеки вкарва: (включително тежката fakemeta)

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

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <engine_const>
#include <csdm>
А може да е нещо елементарно от сорта на:

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

public spawn(id)
{
new arg[1]
arg[0] = id
set_rendering(....)
set_user_godmode(id,1)
set_task(edi kolko si sekundi protect, "normalize", _, arg, 1)
}
public normalize(arg[])
{
set_rendering(....)
set_user_godmode(arg[0], 0)
}
94.190.190.195:27015 -> Изображение <-- Runemod here !
94.190.190.195:27017 -> Изображение

Segmentation fault Изображение <-- Opera browser !

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

Re: CSDM Spawn Protection

Мнение от OciXCrom » 11 Дек 2016, 22:04

Щом плъгинът си е заедно с CSDM, не виждам проблем при положение, че той ползва CSDM мода. За да махнеш това с движението, трябва да премахнеш тези два реда:

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

new const g_iProtectionOffFlags = IN_ATTACK | IN_ATTACK2 | IN_FORWARD | IN_BACK | IN_MOVELEFT | IN_MOVERIGHT

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

register_forward(FM_PlayerPreThink, "On_ClientPreThink", 1) 
... както и цялата функция On_ClientPreThink(id).

Аватар
mount4
Извън линия
Потребител
Потребител
Мнения: 187
Регистриран на: 03 Ное 2016, 19:54
Местоположение: Варна
Обратна връзка:

Re: CSDM Spawn Protection

Мнение от mount4 » 11 Дек 2016, 22:11

Виж колко много редове е този код който може да се напише на 2 реда.
Освен това ще бъде по-универсално ако не го направи така. Може да реши да махне CSDM-a някой ден или пък да направи друг сървър без CSDM.
И също така както казах този код вкарва много библиотеки.
94.190.190.195:27015 -> Изображение <-- Runemod here !
94.190.190.195:27017 -> Изображение

Segmentation fault Изображение <-- Opera browser !

Аватар
MF1
Извън линия
Рекламатор
Рекламатор
Мнения: 314
Регистриран на: 12 Окт 2016, 21:15
Местоположение: гр.Варна
Получена благодарност: 8 пъти
Обратна връзка:

Re: CSDM Spawn Protection

Мнение от MF1 » 12 Дек 2016, 07:37

OciXCrom™ написа:Щом плъгинът си е заедно с CSDM, не виждам проблем при положение, че той ползва CSDM мода. За да махнеш това с движението, трябва да премахнеш тези два реда:

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

new const g_iProtectionOffFlags = IN_ATTACK | IN_ATTACK2 | IN_FORWARD | IN_BACK | IN_MOVELEFT | IN_MOVERIGHT

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

register_forward(FM_PlayerPreThink, "On_ClientPreThink", 1)
... както и цялата функция On_ClientPreThink(id).
Благодаря, ще помоля някой ако може просто да ги премахне тези редове и тази функция.. мога много лесно да объркам работа, ще изтрия някой ред в повече и става мазало, благодаря
Join now.
www.MF1-CS.eu ---------------------------- 93.123.18.36:27018 93.123.18.36:27015 93.123.18.36:27020 ---------------------------- :bg:

Аватар
JustInCase
Извън линия
Потребител
Потребител
Мнения: 580
Регистриран на: 14 Окт 2016, 23:31
Се отблагодари: 4 пъти
Получена благодарност: 8 пъти

Re: CSDM Spawn Protection

Мнение от JustInCase » 12 Дек 2016, 10:26

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

/*
* csdm_protection.sma
* CSDM plugin that lets you have spawn protection
*
* (C)2003-2014 David "BAILOPAN" Anderson
*
*  Give credit where due.
*  Share the source - it sets you free
*  http://www.opensource.org/
*  http://www.gnu.org/
*/

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <engine_const>
#include <csdm>

new g_ProtColors[4][3] = {{0,0,0},{255,0,0},{0,0,255},{0,255,0}}
new g_GlowAlpha[4] = {200,200,200,200}

new g_Protected[33]
new bool:g_Enabled = false
new bool:g_Glowing = false
new Float:g_ProtTime = 2.0

new bool:g_MainPlugin = true

// page info for settings in CSDM Setting Menu
new g_SettingsMenu = 0
new g_ProtSettMenu = 0
new g_ItemsInMenuNr = 0
new g_PageSettMenu = 0

//Tampering with the author and name lines can violate the copyright
new PLUGINNAME[] = "CSDM Protection"
new VERSION[] = CSDM_VERSION
new AUTHORS[] = "BAILOPAN"
new ACCESS    = ADMIN_MAP

public csdm_Init(const version[])
{
	if (version[0] == 0)
	{
		set_fail_state("CSDM failed to load.")
		return
	}   
}

public csdm_CfgInit()
{
	csdm_reg_cfg("protection", "read_cfg")
}

stock set_rendering(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16)
{
	set_pev(index, pev_renderfx, fx)
	new Float:RenderColor[3]
	RenderColor[0] = float(r)
	RenderColor[1] = float(g)
	RenderColor[2] = float(b)
	set_pev(index, pev_rendercolor, RenderColor)
	set_pev(index, pev_rendermode, render)
	set_pev(index, pev_renderamt, float(amount))
	
	return 1
}

public plugin_init()
{
	register_plugin(PLUGINNAME, VERSION, AUTHORS)
	register_concmd("csdm_prots_menu", "csdm_prots_menu", ACCESS, "CSDM Protection Settings Menu")
	
	g_MainPlugin = module_exists("csdm_main") ? true : false   
	if (g_MainPlugin)
	{
		g_SettingsMenu = csdm_settings_menu()
		g_ItemsInMenuNr = menu_items(g_SettingsMenu)
		g_PageSettMenu = g_ItemsInMenuNr / 7
		g_ProtSettMenu = menu_create("CSDM Protection Settings Menu", "use_csdm_prot_menu")
		
		menu_additem(g_SettingsMenu, "CSDM Protection Settings", "csdm_prots_menu", ACCESS)
		
		if (g_ProtSettMenu)
		{
			new cb_protect = menu_makecallback("hook_prot_sett_display")
			menu_additem(g_ProtSettMenu, "Spawn Protection Enabled/Disabled", "1", ACCESS, cb_protect)
			menu_additem(g_ProtSettMenu, "Glowing on Spawn Enabled/Disabled", "2", ACCESS, cb_protect)
			menu_additem(g_ProtSettMenu, "Back", "3", 0, -1)
		}
	}
}

public client_connect(id)
{
	g_Protected[id] = 0
}

public client_disconnect(id)
{
	if (g_Protected[id])
	{
		remove_task(g_Protected[id])
		g_Protected[id] = 0
	}
}

SetProtection(id) {
	if (g_Protected[id])
		remove_task(g_Protected[id])
	
	if (!is_user_connected(id))
		return
	
	new team = get_user_team(id)
	
	if (!IsValidTeam(team))
	{
		return
	}
	
	if (!pev(id, pev_takedamage) && !g_Protected[id]) // against other plugins controlling the protection
	{
		//log_amx("can't set protection on player[%d]", id)
		//      g_Protected[id] = 0
		return
	}
	
	set_task(g_ProtTime, "ProtectionOver", id)
	g_Protected[id] = id
	
	if (g_Glowing)
	{
		if (!csdm_get_ffa())
			set_rendering(id, kRenderFxGlowShell, g_ProtColors[team][0], g_ProtColors[team][1], g_ProtColors[team][2], 
		kRenderNormal, g_GlowAlpha[team])
		else
			set_rendering(id, kRenderFxGlowShell, g_ProtColors[3][0], g_ProtColors[3][1], g_ProtColors[3][2], 
		kRenderNormal, g_GlowAlpha[3])
	}
	set_pev(id, pev_takedamage, 0.0)
}

RemoveProtection(id) {
	if (g_Protected[id])
		remove_task(g_Protected[id])
	
	ProtectionOver(id)
}

public ProtectionOver(id)
{
	g_Protected[id] = 0
	
	if (!is_user_connected(id))
		return
	
	set_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
	set_pev(id, pev_takedamage, 2.0)
}

public csdm_PostDeath(killer, victim, headshot, const weapon[])
{
	if (!g_Enabled || !csdm_active())
		return
	
	RemoveProtection(victim)
}

public csdm_PostSpawn(player, bool:fake)
{
	if ((g_Enabled) && csdm_active())
		SetProtection(player)
}

public read_cfg(readAction, line[], section[])
{
	if (readAction == CFG_READ)
	{
		new setting[24], sign[3], value[32];
		
		parse(line, setting, 23, sign, 2, value, 31);
		
		if (equali(setting, "colorst"))
		{
			new red[10], green[10], blue[10], alpha[10]
			parse(value, red, 9, green, 9, blue, 9, alpha, 9)
			
			g_ProtColors[_TEAM_T][0] = str_to_num(red)
			g_ProtColors[_TEAM_T][1] = str_to_num(green)
			g_ProtColors[_TEAM_T][2] = str_to_num(blue)
			g_GlowAlpha[_TEAM_T] = str_to_num(alpha)
		}
		else if (equali(setting, "colorsct"))
		{
			new red[10], green[10], blue[10], alpha[10]
			parse(value, red, 9, green, 9, blue, 9, alpha, 9)
			
			g_ProtColors[_TEAM_CT][0] = str_to_num(red)
			g_ProtColors[_TEAM_CT][1] = str_to_num(green)
			g_ProtColors[_TEAM_CT][2] = str_to_num(blue)
			g_GlowAlpha[_TEAM_CT] = str_to_num(alpha)
		}
		else if (equali(setting, "colorsffa"))
		{
			new red[10], green[10], blue[10], alpha[10]
			parse(value, red, 9, green, 9, blue, 9, alpha, 9)
			
			g_ProtColors[3][0] = str_to_num(red)
			g_ProtColors[3][1] = str_to_num(green)
			g_ProtColors[3][2] = str_to_num(blue)
			g_GlowAlpha[3] = str_to_num(alpha)
		}
		else if (equali(setting, "enabled"))
		{
			g_Enabled = str_to_num(value) ? true : false
		}
		else if (equali(setting, "glowing")) 
		{
			g_Glowing = str_to_num(value) ? true : false
		}
		else if (equali(setting, "time")) 
		{
			g_ProtTime = str_to_float(value)
		}
	}
}

// stuff for settings menu - START
public csdm_prots_menu(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1) || !id)
		return PLUGIN_HANDLED
	
	menu_display(id, g_ProtSettMenu, 0)
	
	return PLUGIN_HANDLED
}

public use_csdm_prot_menu(id, menu, item)
{
	if (item < 0)
		return PLUGIN_CONTINUE
	
	new command[6], paccess, call
	if (!menu_item_getinfo(g_ProtSettMenu, item, paccess, command, 5, _, 0, call))
	{
		log_amx("Error: csdm_menu_item() failed (menu %d) (page %d) (item %d)", g_ProtSettMenu, 0, item)
		return PLUGIN_HANDLED
	}
	if (paccess && !(get_user_flags(id) & paccess))
	{
		client_print(id, print_chat, "You do not have access to this menu option.")
		return PLUGIN_HANDLED
	}
	
	new iChoice = str_to_num(command)
	
	switch(iChoice)
	{
		case 1:
		{
			g_Enabled = (g_Enabled ? false : true)
			
			client_print(id, print_chat, "[CSDM] CSDM Spawn Protection setting changed to %s.", g_Enabled ? "enabled" : "disabled")
			
			csdm_write_cfg(id, "protection", "enabled", g_Enabled ? "1" : "0")
			menu_display(id, g_ProtSettMenu, 0)
			return PLUGIN_HANDLED
		}
		case 2:
		{
			g_Glowing = (g_Glowing ? false : true)
			
			client_print(id, print_chat, "[CSDM] CSDM Spawn Glowing setting changed to %s.", g_Glowing ? "enabled" : "disabled")
			
			csdm_write_cfg(id, "protection", "glowing", g_Glowing ? "1" : "0")
			menu_display(id, g_ProtSettMenu, 0)
			return PLUGIN_HANDLED
		}
		case 3:
		{
			menu_display(id, g_SettingsMenu, g_PageSettMenu)
			return PLUGIN_HANDLED
		}
	}
	return PLUGIN_HANDLED
}

public hook_prot_sett_display(player, menu, item)
{
	new paccess, command[6], call
	
	menu_item_getinfo(menu, item, paccess, command, 5, _, 0, call)
	
	if (equali(command, "1"))
	{   
		if (!g_Enabled)
		{
			menu_item_setname(menu, item, "Spawn Protection Disabled")
			} else {
			menu_item_setname(menu, item, "Spawn Protection Enabled")
		}
	}
	else if (equali(command, "2"))
	{
		if (!g_Glowing)
		{
			menu_item_setname(menu, item, "Spawn Glowing Disabled")
			} else {
			menu_item_setname(menu, item, "Spawn Glowing Enabled")
		}
	}
}
// stuff for settings menu - END
Заповядай.
MANSION - HNS : 93.123.18.46:27016
ONLINE

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

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

Кой е на линия

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