Корекция на 2 sma. плъгина [Climb zombie] [Spitter Zombie]

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
lurku
Извън линия
Потребител
Потребител
Мнения: 45
Регистриран на: 15 Юни 2019, 22:07
Се отблагодари: 6 пъти
Получена благодарност: 1 път
Обратна връзка:

Корекция на 2 sma. плъгина [Climb zombie] [Spitter Zombie]

Мнение от lurku » 03 Авг 2019, 13:17

Грешките в конзолата:

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

L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10 (plugin "zp_climb_zombie.amxx"
) (native "zp_get_user_zombie") - debug not enabled!
L 08/03/2019 - 12:46:45: [AMXX] To enable debug mode, add "debug" after the plug
in name in plugins.ini (without quotes).
L 08/03/2019 - 12:46:45: [ZP] Invalid Player (9)
L 08/03/2019 - 12:46:45: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 12:46:45: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 12:46:45: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194


Zombie Spitter:

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

/*
*	---------------------------------------------------------------------------------------------------------
*	------------------------------------[ZP] Zombie Class: Spitter (better)----------------------------------
*	---------------------------------------------------------------------------------------------------------
*	------------------------------------Author: SNAKER_BEATTER-----------------------------------------------
*	---------------------------------------------------------------------------------------------------------
*				About:
*		When i was using a special infected in L4D2 i was thinking about this class. Then i search first
*		before creating because people may say its already created, but its created i found at a website.
*		WELL THIS IS JUST A BETTER VERSION OF THAT SPITTER...
*	---------------------------------------------------------------------------------------------------------
*				Description:
*		This is another zombie class for zombie plague 4.3 or later. This zombie class is called spitter.
*		She(this zombie class is female) can launch a spit/acid to an enemy. while the enemy will be damaged
*		(according to spit's mode and a cvar) 25. And also as the better part when spitter die an acid 
*		ring will release at spitter's body, and when radiused(according to cvar) you will damaged (according-
*		to a cvar)50...
*
*		Okay: in this version i removed the old buggy cooldown but i replaced it with a new better cooldown
*		(according to cvar) and you must wait to spit again...
*	---------------------------------------------------------------------------------------------------------
*				Credits:
*		Hidanz + zombie-portal website - for the acual stupid spitter that use tank's code...
*		mercylezz - i copied TE_BEAMCYLINDER message for the main death acid (code from zombie_plague40.sma)
*	---------------------------------------------------------------------------------------------------------
*				Cvars:
*		zp_Spitter_spit_speed 875 // spit Speed Launched by Spitter
*		zp_Spitter_spit_damage 30 // damage done by the spit
*		zp_Spitter_spit_reward 5 // Ammo Pack's Reward by touching the enemy with the spit
*		zp_Spitter_spit_mode 1 // spit Mode / 1 = Take Damage / 2 = Killing / 3 = Infect 
*		zp_Spitter_spit_deal_damage 1 // Damage spitter when launch a spit / 0 = Kill spitter if lauched a spit
*
*		zp_Spitter_spit_cooldown 7 // (Only if defined BETTER_COOLDOWN) How many seconds spitter waits to spit again
*
*		zp_Spitter_death_acid_damage 50 // When spitter die. all players arounnd him will be damaged
*		zp_Spitter_death_acid_distance 250 // Spitter death acid distance
*	----------------------------------------------------------------------------------------------------------
*				Modules:
*		hamsandwich
*		fakemeta
*		engine
*		fun
*	-----------------------------------------------------------------------------------------------------------
*				Change log:
*		1.0 (Oct 15, 2011)
*		{
*			public release.
*		}
*		1.1 (Oct 16, 2011)
*		{
*			Fix if spitter is human, death acid works
*			Added spit/acid hit sound
*		}
*		1.2 (Oct 17, 2011)
*		{
*			Added bubbles when spit hit
*			As remake added clcmd
*			Fix if spitter is survivor, death acid works
*			(best of all) Changed cooldown(buggy) to deal damage	
*			Changed some resources names
*		}
*		1.3 (Oct 18, 2011)
*		{
*			Fix if spitter is nemesis, death acid works
*			Added zombie support if spit hit zombie
*			Added define SPIT_CHEAT_BLOCK for block some cheaty tricks
*			Added colorchat when you lauched a spit
*		}
*		1.4 (Oct 23, 2011)
*		{
*			Changed when you launch a spit message mistype
*			Removed if deal_damage cvar set to 0 kill spitter if launch a spit
*		}
*		1.5 (Oct 24, 2011)
*		{
*			(Asked) New cooldown better than the old buggy cooldown (Controlled by BETTER_COOLDOWN)
*			(Asked) Added BETTER_COOLDOWN (define) to allow/disallow cooldown
*			SPIT_CHEAT_BLOCK define more codes
*			Added death acid bubble break
*		}
*/

/******************************************************
		[Include files]
******************************************************/

#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>

/******************************************************
		[Plugin infos]
******************************************************/

#define PLUGIN_NAME	"[ZP] ZCLASS = L4D spitter"
#define PLUGIN_VERSION	"1.5"
#define PLUGIN_AUTHOR	"snaker-beatter"

/******************************************************
		[Id(s)]
******************************************************/
#define SPIT_CHEAT_BLOCK	// Disallow some cheatty trick
#define BETTER_COOLDOWN		// Than the old buggy cooldown this works more better

#if defined BETTER_COOLDOWN
	new Float:g_LastSpitTime[33]
	new cvar_spit_cooldown
#endif

new const zclass_name[] = { "Spitter" } 
new const zclass_info[] = { "Launch an acid" } 
new const zclass_model[] = { "SpitterL4D2" } 
new const zclass_clawmodel[] = { "v_Spitter_hands.mdl" } 
const zclass_health = 3422
const zclass_speed = 267
const Float:zclass_gravity = 0.8 
const Float:zclass_knockback = 0.8  

new g_L4dSpitter

new g_trailSprite
new const g_trail[] = "sprites/xbeam3.spr"
new const spit_model[] = "models/spit.mdl" // HAlF-Life model
new const bubble_model_const[] = "sprites/bubble.spr"
new const Spitter_spitlaunch[] = "zombie_plague/spitter_spit.wav"
new const Spitter_spithit[] = "bullchicken/bc_spithit2.wav" // HAlF-Life model

new const Spitter_dieacid_start[] = "bullchicken/bc_acid1.wav"
new const g_ringspr[] = "sprites/shockwave.spr"
new g_ring, bubble_model

new cvar_spit_damage, cvar_spit_reward, cvar_spitmode, cvar_spit_speed, cvar_spit_deal_damage
new cvar_dthacid_damage, cvar_dthacid_distance

/******************************************************
		[Main event]
******************************************************/

public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR) 
	register_event("DeathMsg", "spitter_death", "a")

	cvar_spit_speed = register_cvar("zp_Spitter_spit_speed", "825")
	cvar_spit_damage = register_cvar("zp_Spitter_spit_damage", "35")
	cvar_spit_reward = register_cvar("zp_Spitter_spit_reward", "5")
	cvar_spitmode = register_cvar("zp_Spitter_spit_mode", "1")
	cvar_spit_deal_damage = register_cvar("zp_Spitter_spit_deal_damage", "250")
	
#if defined BETTER_COOLDOWN
	cvar_spit_cooldown = register_cvar("zp_Spitter_spit_cooldown", "9")
#endif

	cvar_dthacid_damage = register_cvar("zp_Spitter_death_acid_damage", "50")
	cvar_dthacid_distance = register_cvar("zp_Spitter_death_acid_distance", "250")
	
	register_clcmd("spitter_spit", "clcmd_spit")
	register_touch("spit_ent","*","spitTouch")
	register_forward(FM_PlayerPreThink, "CmdStart")
} 

/****************************************************
		[Events]
****************************************************/

public plugin_precache()
{
	g_L4dSpitter = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback) 
	g_trailSprite = precache_model(g_trail)
	g_ring = precache_model(g_ringspr)
	bubble_model = precache_model(bubble_model_const)
	precache_model(spit_model)
	precache_sound(Spitter_spitlaunch)
	precache_sound(Spitter_spithit)
	precache_sound(Spitter_dieacid_start)
}

public zp_user_infected_post (id, infector)
{
             if (zp_get_user_zombie_class(id) == g_L4dSpitter)
             {
		print_chatColor(id, "\g[ZP]\n You can launch a spit by +use key(such as e)") 
             }
}  

public CmdStart(id)
{		
	new button = pev(id, pev_button)
	new oldbutton = pev(id, pev_oldbuttons)
	
	if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_L4dSpitter))
	{
		if(oldbutton & IN_USE && !(button & IN_USE))
		{
			clcmd_spit(id)
		}
	}
	return FMRES_IGNORED
}

public clcmd_spit(id)
{
	if(!is_user_alive(id))
	{
		print_chatColor(id, "\g[ZP] \nYou are not \tallowed to spit if you're death")
		return PLUGIN_HANDLED
	}
	
	if (zp_get_user_zombie(id))
	{
		if (zp_get_user_zombie_class(id) == g_L4dSpitter)
		{	
			if (get_gametime() - g_LastSpitTime[id] < get_pcvar_float(cvar_spit_cooldown))
			{
				print_chatColor(id, "\g[ZP] \nYou have to \twait %.f0 secs. To spit again", get_pcvar_float(cvar_spit_cooldown) - (get_gametime() -  g_LastSpitTime[id]))
				return PLUGIN_HANDLED;
			}
			
			Makespit(id)
			emit_sound(id, CHAN_STREAM, Spitter_spitlaunch, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
			
			g_LastSpitTime[id] = get_gametime()
			
			new Float:dam = get_pcvar_float(cvar_spit_deal_damage);
			if(get_user_health(id) - get_pcvar_float(cvar_spit_deal_damage) > 0)
			{
				#if defined SPIT_CHEAT_BLOCK
					fakedamage(id, "Spit acid", dam, 256);
				#else
					fakedamage(id, "Spit acid", 10.0, 256);
				#endif
				
				static origin1[3]
				get_user_origin(id, origin1)
				bubble_break(id, origin1)
				
				print_chatColor(id, "\g[ZP] You'd \tbeen damaged %d by launching a spit", get_pcvar_num(cvar_spit_deal_damage))
			}
		}
	}
	else
	{
		print_chatColor(id, "\g[ZP] \nYou are not \tallowed to spit if you're not a zombie spitter")
		return PLUGIN_HANDLED
	}
	if (zp_get_user_survivor(id))
	{
		print_chatColor(id, "\g[ZP] \nYou are not \tallowed to spit if you're not a zombie spitter")
		return PLUGIN_HANDLED
	}
	if (zp_get_user_nemesis(id))
	{
		print_chatColor(id, "\g[ZP] \nYou are not \tallowed to spit if you're not a zombie spitter")
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public spitTouch(spitEnt, Touched)
{
	if (!pev_valid (spitEnt) )
		return
		
	static Class[ 32 ]
	entity_get_string(Touched, EV_SZ_classname, Class, charsmax(Class) )
	new Float:origin[3]
		
	pev(Touched,pev_origin,origin)
	
	if(equal(Class, "player"))
	{
		if (is_user_alive(Touched))
		{
			if(!zp_get_user_zombie(Touched))
			{
				new SpitterKiller = entity_get_edict(spitEnt, EV_ENT_owner)
				
				switch(get_pcvar_num(cvar_spitmode))
				{
					case 1: // Health mode
					{
						new iHealth = get_user_health(Touched)

						if(iHealth >= 1 && iHealth <= get_pcvar_num(cvar_spit_damage))
						{
							emit_sound(Touched, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
							ExecuteHamB(Ham_Killed, Touched, SpitterKiller, 0)
							print_chatColor(SpitterKiller, "\g[ZP]\n You receive \t%d\n Ammo Packs By launching a spit to a human", get_pcvar_num(cvar_spit_reward))
							zp_set_user_ammo_packs(SpitterKiller, zp_get_user_ammo_packs(SpitterKiller) + get_pcvar_num(cvar_spit_reward))
							
							static origin1[3]
							get_user_origin(Touched, origin1)
							bubble_break(Touched, origin1)
						}
						else
						{	
							emit_sound(Touched, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
							set_user_health(Touched, get_user_health(Touched) - get_pcvar_num(cvar_spit_damage))
							print_chatColor(SpitterKiller, "\g[ZP]\n You receive \t%d\n Ammo Packs By launching a spit to a human", get_pcvar_num(cvar_spit_reward))
							zp_set_user_ammo_packs(SpitterKiller, zp_get_user_ammo_packs(SpitterKiller) + get_pcvar_num(cvar_spit_reward))
							
							static origin1[3]
							get_user_origin(Touched, origin1)
							bubble_break(Touched, origin1)
						}
					}
					case 2: // Kill mode
					{	
						emit_sound(Touched, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
						ExecuteHamB(Ham_Killed, Touched, SpitterKiller, 0)
						zp_set_user_ammo_packs(SpitterKiller, zp_get_user_ammo_packs(SpitterKiller) + get_pcvar_num(cvar_spit_reward))
						print_chatColor(SpitterKiller, "\g[ZP]\n You receive \t%d\n Ammo Packs By launching a spit to a human", get_pcvar_num(cvar_spit_reward))
						
						static origin1[3]
						get_user_origin(Touched, origin1)
						bubble_break(Touched, origin1)
					}
					case 3: //infect mode
					{
						emit_sound(Touched, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
						zp_infect_user(Touched, SpitterKiller, 1, 1)
						print_chatColor(SpitterKiller, "\g[ZP]\n You receive \t%d\n Ammo Packs By launching a spit to a human", get_pcvar_num(cvar_spit_reward))
						zp_set_user_ammo_packs(SpitterKiller, zp_get_user_ammo_packs(SpitterKiller) + get_pcvar_num(cvar_spit_reward))
						
						static origin1[3]
						get_user_origin(Touched, origin1)
						bubble_break(Touched, origin1)
					}
				}
			}
			else
			{
				emit_sound(Touched, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
			
				static origin1[3]
				get_user_origin(Touched, origin1)
				bubble_break(Touched, origin1)
				
			}
		}
	}
	/* func_breakable entity support */
	if(equal(Class, "func_breakable") && entity_get_int(Touched, EV_INT_solid) != SOLID_NOT)
	{
		force_use(spitEnt, Touched)
	}
	
	remove_entity(spitEnt)
}

public bubble_break(id, origin1[3])
{
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY, origin1)
	write_byte(TE_BREAKMODEL) 
	write_coord(origin1[0])  
	write_coord(origin1[1])
	write_coord(origin1[2] + 24) 
	write_coord(16) 
	write_coord(16) 
	write_coord(16) 
	write_coord(random_num(-50,50)) 
	write_coord(random_num(-50,50)) 
	write_coord(25)
	write_byte(10) 
	write_short(bubble_model) 
	write_byte(10) 
	write_byte(38)
	write_byte(0x01) 
	message_end();
}

public Makespit(id)
{			
	new Float:Origin[3]
	new Float:Velocity[3]
	new Float:vAngle[3]

	new spitSpeed = get_pcvar_num(cvar_spit_speed)

	entity_get_vector(id, EV_VEC_origin , Origin)
	entity_get_vector(id, EV_VEC_v_angle, vAngle)

	new NewEnt = create_entity("info_target")

	entity_set_string(NewEnt, EV_SZ_classname, "spit_ent")
	entity_set_model(NewEnt, spit_model)
	entity_set_size(NewEnt, Float:{-1.5, -1.5, -1.5}, Float:{1.5, 1.5, 1.5})
	entity_set_origin(NewEnt, Origin)
	entity_set_vector(NewEnt, EV_VEC_angles, vAngle)
	entity_set_int(NewEnt, EV_INT_solid, 2)
	entity_set_int(NewEnt, EV_INT_rendermode, 5)
	entity_set_float(NewEnt, EV_FL_renderamt, 200.0)
	entity_set_float(NewEnt, EV_FL_scale, 1.00)
	entity_set_int(NewEnt, EV_INT_movetype, 5)
	entity_set_edict(NewEnt, EV_ENT_owner, id)
	velocity_by_aim(id, spitSpeed  , Velocity)
	entity_set_vector(NewEnt, EV_VEC_velocity ,Velocity)
	
	spit_trail(id, NewEnt)
	return PLUGIN_HANDLED
}

public spit_trail(id, Entity)
{
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_BEAMFOLLOW) 
	write_short(Entity) 
	write_short(g_trailSprite) 
	write_byte(10) 
	write_byte(10) 
	write_byte(0) 
	write_byte(250) 
	write_byte(0) 
	write_byte(200) 
	message_end()
}

public spitter_death()
{
	new id = read_data(2)
	if (zp_get_user_zombie(id))
	{
		if (zp_get_user_zombie_class(id) == g_L4dSpitter)
		{
			new Float:originF[3]
			pev(id, pev_origin, originF);
			spit_death(id, originF)
		}
	}
}

public spit_death(id, const Float:originF[3])
{
	if (zp_get_user_zombie(id))
	{
		if (zp_get_user_zombie_class(id) == g_L4dSpitter)
		{
			spit_death_effect(id, originF)
			ring_effect(id)
		}
	}
	else
	{
		return PLUGIN_HANDLED
	}
	if (zp_get_user_survivor(id))
	{
		return PLUGIN_HANDLED
	}
	if (zp_get_user_nemesis(id))
	{
		return PLUGIN_HANDLED
	}
	return PLUGIN_HANDLED
}

public ring_effect(id)
{
	new Float:origin[3]
	pev(id, pev_origin, origin)
	ring(origin)
}

public spit_death_effect(id, const Float:originF[3])
{
	for(new i = 1; i <= get_maxplayers(); i ++)
	{
		if (zp_get_user_zombie(i) || get_entity_distance(id, i) > get_pcvar_num(cvar_dthacid_distance))
		{
			return PLUGIN_HANDLED
		}
		new origin1[3]
		get_user_origin(id, origin1)
		bubble_break(id, origin1)
		
		emit_sound(id, CHAN_BODY, Spitter_dieacid_start, 1.0, ATTN_NORM, 0, PITCH_NORM)
		print_chatColor(id, "\g[ZP] \nYou rewarded \t2 ammopacks by aciding to a victim")
		zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 2)
		
		new Float:dam = get_pcvar_float(cvar_dthacid_damage);
		if(get_user_health(i) - get_pcvar_float(cvar_dthacid_damage) > 0)
		{
			emit_sound(i, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
			print_chatColor(i, "\g[ZP] \nYou'd been \tdamaged by spitter's death acid")
			fakedamage(i, "Spit acid", dam, 256);
			
			new origin1[3]
			get_user_origin(i, origin1)
			bubble_break(i, origin1)
		}
		if(get_user_health(i) - get_pcvar_float(cvar_dthacid_damage) == 0)
		{
			#if defined SPIT_CHEAT_BLOCK
				ExecuteHamB(Ham_Killed, i, id, 0)
			#else
				//ExecuteHamB(Ham_Killed, i, id, 0)
			#endif
			emit_sound(i, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
			print_chatColor(i, "\g[ZP] \nYou'd been \tKilled by spitter's death acd")
			
			new origin1[3]
			get_user_origin(i, origin1)
			bubble_break(i, origin1)
		}
	}
	
	return PLUGIN_HANDLED
}

public ring(const Float:originF[3])
{
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
	write_byte(TE_BEAMCYLINDER) // TE id
	engfunc(EngFunc_WriteCoord, originF[0]) // x
	engfunc(EngFunc_WriteCoord, originF[1]) // y
	engfunc(EngFunc_WriteCoord, originF[2]) // z
	engfunc(EngFunc_WriteCoord, originF[0]) // x axis
	engfunc(EngFunc_WriteCoord, originF[1]) // y axis
	engfunc(EngFunc_WriteCoord, originF[2]+385.0) // z axis
	write_short(g_ring) // sprite
	write_byte(0) // startframe
	write_byte(0) // framerate
	write_byte(4) // life
	write_byte(60) // width
	write_byte(0) // noise
	write_byte(0) // red
	write_byte(200) // green
	write_byte(0) // blue
	write_byte(200) // brightness
	write_byte(0) // speed
	message_end()
}

stock print_chatColor(id,const input[], any:...)
{
	new msg[191], players[32], count = 1;
	vformat(msg,190,input,3);
	replace_all(msg,190,"\g","^4");// green
	replace_all(msg,190,"\n","^1");// normal
	replace_all(msg,190,"\t","^3");// team
	
	if (id) players[0] = id; else get_players(players,count,"ch");
	for (new i=0;i<count;i++)
	if (is_user_connected(players[i]))
	{
		message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]);
		write_byte(players[i]);
		write_string(msg);
		message_end();
	}
} 
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
Climb Zombie:

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

#include <amxmodx>
// #include <engine>
#include <fakemeta>

#include <cstrike>
#include <zombieplague.inc>

//#include <fakemeta_util>
#define STR_T           33

// Stuff taken from fakemeta_util
#define fm_get_user_button(%1) pev(%1, pev_button)    
/* stock fm_get_user_button(index)
    return pev(index, pev_button) */

#define fm_get_entity_flags(%1) pev(%1, pev_flags)
/* stock fm_get_entity_flags(index)
    return pev(index, pev_flags) */

stock fm_set_user_velocity(entity, const Float:vector[3]) {
    set_pev(entity, pev_velocity, vector);

    return 1;
}
//End of stuff from fakemeta_util
//new STR_T[32]
new bool:g_WallClimb[33]
new Float:g_wallorigin[32][3]
new cvar_zp_wallclimb, cvar_zp_wallclimb_nemesis, cvar_zp_wallclimb_survivor
new g_zclass_climb

// Climb Zombie Atributes
new const zclass_name[] = { "Climb Zombie" } // name
new const zclass_info[] = { "HP-- Speed+ Jump+ Knockback++" } // description
new const zclass_model[] = { "zombie_source" } // model
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" } // claw model
const zclass_health = 1200 // health
const zclass_speed = 220 // speed
const Float:zclass_gravity = 0.8 // gravity
const Float:zclass_knockback = 1.5 // knockback

public plugin_init() 
{
    register_plugin("[ZP] Wallclimb ", "1.0", "WallClimb by Python1320/Cheap_Suit, Plagued by Dabbi")
    register_forward(FM_Touch,         "fwd_touch")
    register_forward(FM_PlayerPreThink,     "fwd_playerprethink")
    //register_forward(FM_PlayerPostThink,     "fwd_playerpostthink")
    register_event("DeathMsg","EventDeathMsg","a")
    //register_cvar("zp_wallclimb_version", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY)
    cvar_zp_wallclimb = register_cvar("zp_wallclimb", "1")
    cvar_zp_wallclimb_survivor = register_cvar("zp_wallclimb_survivor", "0")
    cvar_zp_wallclimb_nemesis = register_cvar("zp_wallclimb_nemesis", "1")
    
}

public plugin_precache()
{
    g_zclass_climb = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}

public EventDeathMsg()    
{
    new id = read_data(2)
    g_WallClimb[id] = true
    return PLUGIN_HANDLED
}

public client_connect(id) {
    g_WallClimb[id] = true    
}

public fwd_touch(id, world)
{
    if(!is_user_alive(id) || !g_WallClimb[id])
        return FMRES_IGNORED
    
    new classname[STR_T]
    pev(id, pev_origin, g_wallorigin[id])  
    
    if(equal(classname, "worldspawn") || equal(classname, "func_wall") || equal(classname, "func_breakable"))
        pev(id, pev_origin, g_wallorigin[id])

    return FMRES_IGNORED
}

public wallclimb(id, button)
{
    static Float:origin[3]
    pev(id, pev_origin, origin)

    if(get_distance_f(origin, g_wallorigin[id]) > 25.0)
        return FMRES_IGNORED  // if not near wall
    
    if(fm_get_entity_flags(id) & FL_ONGROUND)
        return FMRES_IGNORED
        
    if(button & IN_FORWARD)
    {
        static Float:velocity[3]
        velocity_by_aim(id, 120, velocity)
        fm_set_user_velocity(id, velocity)
    }
    else if(button & IN_BACK)
    {
        static Float:velocity[3]
        velocity_by_aim(id, -120, velocity)
        fm_set_user_velocity(id, velocity)
    }
    return FMRES_IGNORED
}    

public fwd_playerprethink(id) 
{
    if(!g_WallClimb[id] || !zp_get_user_zombie(id)) 
        return FMRES_IGNORED
        
    if(zp_is_survivor_round() && get_pcvar_num(cvar_zp_wallclimb_survivor) == 0)
        return FMRES_IGNORED
        
    if(zp_is_nemesis_round() && get_pcvar_num(cvar_zp_wallclimb_nemesis) == 0)
        return FMRES_IGNORED
    
    new button = fm_get_user_button(id)
    
    if((get_pcvar_num(cvar_zp_wallclimb) == 1) && (button & IN_USE) && (zp_get_user_zombie_class(id) == g_zclass_climb)) //Use button = climb
    wallclimb(id, button)
    else if((get_pcvar_num(cvar_zp_wallclimb) == 2) && (button & IN_JUMP) && button & IN_DUCK && (zp_get_user_zombie_class(id) == g_zclass_climb)) //Jump + Duck = climb
    wallclimb(id, button)

    return FMRES_IGNORED
}  
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang10266\\ f0\\ fs16 \n\\ par }
*/

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

Корекция на 2 sma. плъгина [Climb zombie] [Spitter Zombie]

Мнение от OciXCrom » 03 Авг 2019, 13:53

Zombie Spitter:

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

/*
*	---------------------------------------------------------------------------------------------------------
*	------------------------------------[ZP] Zombie Class: Spitter (better)----------------------------------
*	---------------------------------------------------------------------------------------------------------
*	------------------------------------Author: SNAKER_BEATTER-----------------------------------------------
*	---------------------------------------------------------------------------------------------------------
*				About:
*		When i was using a special infected in L4D2 i was thinking about this class. Then i search first
*		before creating because people may say its already created, but its created i found at a website.
*		WELL THIS IS JUST A BETTER VERSION OF THAT SPITTER...
*	---------------------------------------------------------------------------------------------------------
*				Description:
*		This is another zombie class for zombie plague 4.3 or later. This zombie class is called spitter.
*		She(this zombie class is female) can launch a spit/acid to an enemy. while the enemy will be damaged
*		(according to spit's mode and a cvar) 25. And also as the better part when spitter die an acid
*		ring will release at spitter's body, and when radiused(according to cvar) you will damaged (according-
*		to a cvar)50...
*
*		Okay: in this version i removed the old buggy cooldown but i replaced it with a new better cooldown
*		(according to cvar) and you must wait to spit again...
*	---------------------------------------------------------------------------------------------------------
*				Credits:
*		Hidanz + zombie-portal website - for the acual stupid spitter that use tank's code...
*		mercylezz - i copied TE_BEAMCYLINDER message for the main death acid (code from zombie_plague40.sma)
*	---------------------------------------------------------------------------------------------------------
*				Cvars:
*		zp_Spitter_spit_speed 875 // spit Speed Launched by Spitter
*		zp_Spitter_spit_damage 30 // damage done by the spit
*		zp_Spitter_spit_reward 5 // Ammo Pack's Reward by touching the enemy with the spit
*		zp_Spitter_spit_mode 1 // spit Mode / 1 = Take Damage / 2 = Killing / 3 = Infect
*		zp_Spitter_spit_deal_damage 1 // Damage spitter when launch a spit / 0 = Kill spitter if lauched a spit
*
*		zp_Spitter_spit_cooldown 7 // (Only if defined BETTER_COOLDOWN) How many seconds spitter waits to spit again
*
*		zp_Spitter_death_acid_damage 50 // When spitter die. all players arounnd him will be damaged
*		zp_Spitter_death_acid_distance 250 // Spitter death acid distance
*	----------------------------------------------------------------------------------------------------------
*				Modules:
*		hamsandwich
*		fakemeta
*		engine
*		fun
*	-----------------------------------------------------------------------------------------------------------
*				Change log:
*		1.0 (Oct 15, 2011)
*		{
*			public release.
*		}
*		1.1 (Oct 16, 2011)
*		{
*			Fix if spitter is human, death acid works
*			Added spit/acid hit sound
*		}
*		1.2 (Oct 17, 2011)
*		{
*			Added bubbles when spit hit
*			As remake added clcmd
*			Fix if spitter is survivor, death acid works
*			(best of all) Changed cooldown(buggy) to deal damage
*			Changed some resources names
*		}
*		1.3 (Oct 18, 2011)
*		{
*			Fix if spitter is nemesis, death acid works
*			Added zombie support if spit hit zombie
*			Added define SPIT_CHEAT_BLOCK for block some cheaty tricks
*			Added colorchat when you lauched a spit
*		}
*		1.4 (Oct 23, 2011)
*		{
*			Changed when you launch a spit message mistype
*			Removed if deal_damage cvar set to 0 kill spitter if launch a spit
*		}
*		1.5 (Oct 24, 2011)
*		{
*			(Asked) New cooldown better than the old buggy cooldown (Controlled by BETTER_COOLDOWN)
*			(Asked) Added BETTER_COOLDOWN (define) to allow/disallow cooldown
*			SPIT_CHEAT_BLOCK define more codes
*			Added death acid bubble break
*		}
*/

/******************************************************
		[Include files]
******************************************************/

#include <amxmodx>
#include <zombieplague>
#include <fakemeta>
#include <engine>
#include <fun>
#include <hamsandwich>

/******************************************************
		[Plugin infos]
******************************************************/

#define PLUGIN_NAME	"[ZP] ZCLASS = L4D spitter"
#define PLUGIN_VERSION	"1.5"
#define PLUGIN_AUTHOR	"snaker-beatter"

/******************************************************
		[Id(s)]
******************************************************/
#define SPIT_CHEAT_BLOCK	// Disallow some cheatty trick
#define BETTER_COOLDOWN		// Than the old buggy cooldown this works more better

#if defined BETTER_COOLDOWN
	new Float:g_LastSpitTime[33]
	new cvar_spit_cooldown
#endif

new const zclass_name[] = { "Spitter" }
new const zclass_info[] = { "Launch an acid" }
new const zclass_model[] = { "SpitterL4D2" }
new const zclass_clawmodel[] = { "v_Spitter_hands.mdl" }
const zclass_health = 3422
const zclass_speed = 267
const Float:zclass_gravity = 0.8
const Float:zclass_knockback = 0.8

new g_L4dSpitter

new g_trailSprite
new const g_trail[] = "sprites/xbeam3.spr"
new const spit_model[] = "models/spit.mdl" // HAlF-Life model
new const bubble_model_const[] = "sprites/bubble.spr"
new const Spitter_spitlaunch[] = "zombie_plague/spitter_spit.wav"
new const Spitter_spithit[] = "bullchicken/bc_spithit2.wav" // HAlF-Life model

new const Spitter_dieacid_start[] = "bullchicken/bc_acid1.wav"
new const g_ringspr[] = "sprites/shockwave.spr"
new g_ring, bubble_model

new cvar_spit_damage, cvar_spit_reward, cvar_spitmode, cvar_spit_speed, cvar_spit_deal_damage
new cvar_dthacid_damage, cvar_dthacid_distance

/******************************************************
		[Main event]
******************************************************/

public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
	register_event("DeathMsg", "spitter_death", "a")

	cvar_spit_speed = register_cvar("zp_Spitter_spit_speed", "825")
	cvar_spit_damage = register_cvar("zp_Spitter_spit_damage", "35")
	cvar_spit_reward = register_cvar("zp_Spitter_spit_reward", "5")
	cvar_spitmode = register_cvar("zp_Spitter_spit_mode", "1")
	cvar_spit_deal_damage = register_cvar("zp_Spitter_spit_deal_damage", "250")

#if defined BETTER_COOLDOWN
	cvar_spit_cooldown = register_cvar("zp_Spitter_spit_cooldown", "9")
#endif

	cvar_dthacid_damage = register_cvar("zp_Spitter_death_acid_damage", "50")
	cvar_dthacid_distance = register_cvar("zp_Spitter_death_acid_distance", "250")

	register_clcmd("spitter_spit", "clcmd_spit")
	register_touch("spit_ent","*","spitTouch")
	register_forward(FM_PlayerPreThink, "CmdStart")
}

/****************************************************
		[Events]
****************************************************/

public plugin_precache()
{
	g_L4dSpitter = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
	g_trailSprite = precache_model(g_trail)
	g_ring = precache_model(g_ringspr)
	bubble_model = precache_model(bubble_model_const)
	precache_model(spit_model)
	precache_sound(Spitter_spitlaunch)
	precache_sound(Spitter_spithit)
	precache_sound(Spitter_dieacid_start)
}

public zp_user_infected_post (id, infector)
{
             if (zp_get_user_zombie_class(id) == g_L4dSpitter)
             {
		print_chatColor(id, "\g[ZP]\n You can launch a spit by +use key(such as e)")
             }
}

public CmdStart(id)
{
	if(!is_user_connected(id))
	{
		return FMRES_IGNORED
	}

	new button = pev(id, pev_button)
	new oldbutton = pev(id, pev_oldbuttons)

	if (zp_get_user_zombie(id) && (zp_get_user_zombie_class(id) == g_L4dSpitter))
	{
		if(oldbutton & IN_USE && !(button & IN_USE))
		{
			clcmd_spit(id)
		}
	}
	return FMRES_IGNORED
}

public clcmd_spit(id)
{
	if(!is_user_alive(id))
	{
		print_chatColor(id, "\g[ZP] \nYou are not \tallowed to spit if you're death")
		return PLUGIN_HANDLED
	}

	if (zp_get_user_zombie(id))
	{
		if (zp_get_user_zombie_class(id) == g_L4dSpitter)
		{
			if (get_gametime() - g_LastSpitTime[id] < get_pcvar_float(cvar_spit_cooldown))
			{
				print_chatColor(id, "\g[ZP] \nYou have to \twait %.f0 secs. To spit again", get_pcvar_float(cvar_spit_cooldown) - (get_gametime() -  g_LastSpitTime[id]))
				return PLUGIN_HANDLED;
			}

			Makespit(id)
			emit_sound(id, CHAN_STREAM, Spitter_spitlaunch, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

			g_LastSpitTime[id] = get_gametime()

			new Float:dam = get_pcvar_float(cvar_spit_deal_damage);
			if(get_user_health(id) - get_pcvar_float(cvar_spit_deal_damage) > 0)
			{
				#if defined SPIT_CHEAT_BLOCK
					fakedamage(id, "Spit acid", dam, 256);
				#else
					fakedamage(id, "Spit acid", 10.0, 256);
				#endif

				static origin1[3]
				get_user_origin(id, origin1)
				bubble_break(id, origin1)

				print_chatColor(id, "\g[ZP] You'd \tbeen damaged %d by launching a spit", get_pcvar_num(cvar_spit_deal_damage))
			}
		}
	}
	else
	{
		print_chatColor(id, "\g[ZP] \nYou are not \tallowed to spit if you're not a zombie spitter")
		return PLUGIN_HANDLED
	}
	if (zp_get_user_survivor(id))
	{
		print_chatColor(id, "\g[ZP] \nYou are not \tallowed to spit if you're not a zombie spitter")
		return PLUGIN_HANDLED
	}
	if (zp_get_user_nemesis(id))
	{
		print_chatColor(id, "\g[ZP] \nYou are not \tallowed to spit if you're not a zombie spitter")
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public spitTouch(spitEnt, Touched)
{
	if (!pev_valid (spitEnt) )
		return

	static Class[ 32 ]
	entity_get_string(Touched, EV_SZ_classname, Class, charsmax(Class) )
	new Float:origin[3]

	pev(Touched,pev_origin,origin)

	if(equal(Class, "player"))
	{
		if (is_user_alive(Touched))
		{
			if(!zp_get_user_zombie(Touched))
			{
				new SpitterKiller = entity_get_edict(spitEnt, EV_ENT_owner)

				switch(get_pcvar_num(cvar_spitmode))
				{
					case 1: // Health mode
					{
						new iHealth = get_user_health(Touched)

						if(iHealth >= 1 && iHealth <= get_pcvar_num(cvar_spit_damage))
						{
							emit_sound(Touched, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
							ExecuteHamB(Ham_Killed, Touched, SpitterKiller, 0)
							print_chatColor(SpitterKiller, "\g[ZP]\n You receive \t%d\n Ammo Packs By launching a spit to a human", get_pcvar_num(cvar_spit_reward))
							zp_set_user_ammo_packs(SpitterKiller, zp_get_user_ammo_packs(SpitterKiller) + get_pcvar_num(cvar_spit_reward))

							static origin1[3]
							get_user_origin(Touched, origin1)
							bubble_break(Touched, origin1)
						}
						else
						{
							emit_sound(Touched, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
							set_user_health(Touched, get_user_health(Touched) - get_pcvar_num(cvar_spit_damage))
							print_chatColor(SpitterKiller, "\g[ZP]\n You receive \t%d\n Ammo Packs By launching a spit to a human", get_pcvar_num(cvar_spit_reward))
							zp_set_user_ammo_packs(SpitterKiller, zp_get_user_ammo_packs(SpitterKiller) + get_pcvar_num(cvar_spit_reward))

							static origin1[3]
							get_user_origin(Touched, origin1)
							bubble_break(Touched, origin1)
						}
					}
					case 2: // Kill mode
					{
						emit_sound(Touched, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
						ExecuteHamB(Ham_Killed, Touched, SpitterKiller, 0)
						zp_set_user_ammo_packs(SpitterKiller, zp_get_user_ammo_packs(SpitterKiller) + get_pcvar_num(cvar_spit_reward))
						print_chatColor(SpitterKiller, "\g[ZP]\n You receive \t%d\n Ammo Packs By launching a spit to a human", get_pcvar_num(cvar_spit_reward))

						static origin1[3]
						get_user_origin(Touched, origin1)
						bubble_break(Touched, origin1)
					}
					case 3: //infect mode
					{
						emit_sound(Touched, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
						zp_infect_user(Touched, SpitterKiller, 1, 1)
						print_chatColor(SpitterKiller, "\g[ZP]\n You receive \t%d\n Ammo Packs By launching a spit to a human", get_pcvar_num(cvar_spit_reward))
						zp_set_user_ammo_packs(SpitterKiller, zp_get_user_ammo_packs(SpitterKiller) + get_pcvar_num(cvar_spit_reward))

						static origin1[3]
						get_user_origin(Touched, origin1)
						bubble_break(Touched, origin1)
					}
				}
			}
			else
			{
				emit_sound(Touched, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)

				static origin1[3]
				get_user_origin(Touched, origin1)
				bubble_break(Touched, origin1)

			}
		}
	}
	/* func_breakable entity support */
	if(equal(Class, "func_breakable") && entity_get_int(Touched, EV_INT_solid) != SOLID_NOT)
	{
		force_use(spitEnt, Touched)
	}

	remove_entity(spitEnt)
}

public bubble_break(id, origin1[3])
{
	message_begin(MSG_BROADCAST,SVC_TEMPENTITY, origin1)
	write_byte(TE_BREAKMODEL)
	write_coord(origin1[0])
	write_coord(origin1[1])
	write_coord(origin1[2] + 24)
	write_coord(16)
	write_coord(16)
	write_coord(16)
	write_coord(random_num(-50,50))
	write_coord(random_num(-50,50))
	write_coord(25)
	write_byte(10)
	write_short(bubble_model)
	write_byte(10)
	write_byte(38)
	write_byte(0x01)
	message_end();
}

public Makespit(id)
{
	new Float:Origin[3]
	new Float:Velocity[3]
	new Float:vAngle[3]

	new spitSpeed = get_pcvar_num(cvar_spit_speed)

	entity_get_vector(id, EV_VEC_origin , Origin)
	entity_get_vector(id, EV_VEC_v_angle, vAngle)

	new NewEnt = create_entity("info_target")

	entity_set_string(NewEnt, EV_SZ_classname, "spit_ent")
	entity_set_model(NewEnt, spit_model)
	entity_set_size(NewEnt, Float:{-1.5, -1.5, -1.5}, Float:{1.5, 1.5, 1.5})
	entity_set_origin(NewEnt, Origin)
	entity_set_vector(NewEnt, EV_VEC_angles, vAngle)
	entity_set_int(NewEnt, EV_INT_solid, 2)
	entity_set_int(NewEnt, EV_INT_rendermode, 5)
	entity_set_float(NewEnt, EV_FL_renderamt, 200.0)
	entity_set_float(NewEnt, EV_FL_scale, 1.00)
	entity_set_int(NewEnt, EV_INT_movetype, 5)
	entity_set_edict(NewEnt, EV_ENT_owner, id)
	velocity_by_aim(id, spitSpeed  , Velocity)
	entity_set_vector(NewEnt, EV_VEC_velocity ,Velocity)

	spit_trail(id, NewEnt)
	return PLUGIN_HANDLED
}

public spit_trail(id, Entity)
{
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_BEAMFOLLOW)
	write_short(Entity)
	write_short(g_trailSprite)
	write_byte(10)
	write_byte(10)
	write_byte(0)
	write_byte(250)
	write_byte(0)
	write_byte(200)
	message_end()
}

public spitter_death()
{
	new id = read_data(2)
	if (zp_get_user_zombie(id))
	{
		if (zp_get_user_zombie_class(id) == g_L4dSpitter)
		{
			new Float:originF[3]
			pev(id, pev_origin, originF);
			spit_death(id, originF)
		}
	}
}

public spit_death(id, const Float:originF[3])
{
	if (zp_get_user_zombie(id))
	{
		if (zp_get_user_zombie_class(id) == g_L4dSpitter)
		{
			spit_death_effect(id, originF)
			ring_effect(id)
		}
	}
	else
	{
		return PLUGIN_HANDLED
	}
	if (zp_get_user_survivor(id))
	{
		return PLUGIN_HANDLED
	}
	if (zp_get_user_nemesis(id))
	{
		return PLUGIN_HANDLED
	}
	return PLUGIN_HANDLED
}

public ring_effect(id)
{
	new Float:origin[3]
	pev(id, pev_origin, origin)
	ring(origin)
}

public spit_death_effect(id, const Float:originF[3])
{
	for(new i = 1; i <= get_maxplayers(); i ++)
	{
		if (zp_get_user_zombie(i) || get_entity_distance(id, i) > get_pcvar_num(cvar_dthacid_distance))
		{
			return PLUGIN_HANDLED
		}
		new origin1[3]
		get_user_origin(id, origin1)
		bubble_break(id, origin1)

		emit_sound(id, CHAN_BODY, Spitter_dieacid_start, 1.0, ATTN_NORM, 0, PITCH_NORM)
		print_chatColor(id, "\g[ZP] \nYou rewarded \t2 ammopacks by aciding to a victim")
		zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + 2)

		new Float:dam = get_pcvar_float(cvar_dthacid_damage);
		if(get_user_health(i) - get_pcvar_float(cvar_dthacid_damage) > 0)
		{
			emit_sound(i, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
			print_chatColor(i, "\g[ZP] \nYou'd been \tdamaged by spitter's death acid")
			fakedamage(i, "Spit acid", dam, 256);

			new origin1[3]
			get_user_origin(i, origin1)
			bubble_break(i, origin1)
		}
		if(get_user_health(i) - get_pcvar_float(cvar_dthacid_damage) == 0)
		{
			#if defined SPIT_CHEAT_BLOCK
				ExecuteHamB(Ham_Killed, i, id, 0)
			#else
				//ExecuteHamB(Ham_Killed, i, id, 0)
			#endif
			emit_sound(i, CHAN_BODY, Spitter_spithit, 1.0, ATTN_NORM, 0, PITCH_NORM)
			print_chatColor(i, "\g[ZP] \nYou'd been \tKilled by spitter's death acd")

			new origin1[3]
			get_user_origin(i, origin1)
			bubble_break(i, origin1)
		}
	}

	return PLUGIN_HANDLED
}

public ring(const Float:originF[3])
{
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
	write_byte(TE_BEAMCYLINDER) // TE id
	engfunc(EngFunc_WriteCoord, originF[0]) // x
	engfunc(EngFunc_WriteCoord, originF[1]) // y
	engfunc(EngFunc_WriteCoord, originF[2]) // z
	engfunc(EngFunc_WriteCoord, originF[0]) // x axis
	engfunc(EngFunc_WriteCoord, originF[1]) // y axis
	engfunc(EngFunc_WriteCoord, originF[2]+385.0) // z axis
	write_short(g_ring) // sprite
	write_byte(0) // startframe
	write_byte(0) // framerate
	write_byte(4) // life
	write_byte(60) // width
	write_byte(0) // noise
	write_byte(0) // red
	write_byte(200) // green
	write_byte(0) // blue
	write_byte(200) // brightness
	write_byte(0) // speed
	message_end()
}

stock print_chatColor(id,const input[], any:...)
{
	new msg[191], players[32], count = 1;
	vformat(msg,190,input,3);
	replace_all(msg,190,"\g","^4");// green
	replace_all(msg,190,"\n","^1");// normal
	replace_all(msg,190,"\t","^3");// team

	if (id) players[0] = id; else get_players(players,count,"ch");
	for (new i=0;i<count;i++)
	if (is_user_connected(players[i]))
	{
		message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]);
		write_byte(players[i]);
		write_string(msg);
		message_end();
	}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
Climb Zombie:

Активирай debug mode и дай отново грешките...

Аватар
lurku
Извън линия
Потребител
Потребител
Мнения: 45
Регистриран на: 15 Юни 2019, 22:07
Се отблагодари: 6 пъти
Получена благодарност: 1 път
Обратна връзка:

Корекция на 2 sma. плъгина [Climb zombie] [Spitter Zombie]

Мнение от lurku » 03 Авг 2019, 14:22

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

line 114)
L 08/03/2019 - 14:13:32: [ZP] Invalid Player (9)
L 08/03/2019 - 14:13:32: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 14:13:32: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 14:13:32: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 14:13:32: [ZP] Invalid Player (9)
L 08/03/2019 - 14:13:32: [AMXX] Displaying debug trace (plugin "zp_climb_zombie.
amxx")
L 08/03/2019 - 14:13:32: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 14:13:32: [AMXX] [0] zp_climb_zombie.sma::fwd_playerprethink (
line 114)
L 08/03/2019 - 14:13:32: [ZP] Invalid Player (9)
L 08/03/2019 - 14:13:32: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 14:13:32: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 14:13:32: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 14:13:32: [ZP] Invalid Player (9)
L 08/03/2019 - 14:13:32: [AMXX] Displaying debug trace (plugin "zp_climb_zombie.
amxx")
L 08/03/2019 - 14:13:32: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 14:13:32: [AMXX] [0] zp_climb_zombie.sma::fwd_playerprethink (
line 114)
L 08/03/2019 - 14:13:32: [ZP] Invalid Player (9)
L 08/03/2019 - 14:13:32: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 14:13:32: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 14:13:32: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 14:13:32: [ZP] Invalid Player (9)
L 08/03/2019 - 14:13:32: [AMXX] Displaying debug trace (plugin "zp_climb_zombie.
amxx")
L 08/03/2019 - 14:13:32: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 14:13:32: [AMXX] [0] zp_climb_zombie.sma::fwd_playerprethink (
line 114)
L 08/03/2019 - 14:13:32: [ZP] Invalid Player (9)
L 08/03/2019 - 14:13:32: [AMXX] Displaying debug trace (plugin "zp_zclass_spitte
r.amxx")
L 08/03/2019 - 14:13:32: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 14:13:32: [AMXX] [0] zp_zclass_spitter.sma::CmdStart (line 194
)
L 08/03/2019 - 14:13:32: [ZP] Invalid Player (9)
L 08/03/2019 - 14:13:32: [AMXX] Displaying debug trace (plugin "zp_climb_zombie.
amxx")
L 08/03/2019 - 14:13:32: [AMXX] Run time error 10: native error (native "zp_get_
user_zombie")
L 08/03/2019 - 14:13:32: [AMXX] [0] zp_climb_zombie.sma::fwd_playerprethink (
line 114)

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

Корекция на 2 sma. плъгина [Climb zombie] [Spitter Zombie]

Мнение от OciXCrom » 03 Авг 2019, 22:42

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

#include <amxmodx>
// #include <engine>
#include <fakemeta>

#include <cstrike>
#include <zombieplague.inc>

//#include <fakemeta_util>
#define STR_T           33

// Stuff taken from fakemeta_util
#define fm_get_user_button(%1) pev(%1, pev_button)
/* stock fm_get_user_button(index)
    return pev(index, pev_button) */

#define fm_get_entity_flags(%1) pev(%1, pev_flags)
/* stock fm_get_entity_flags(index)
    return pev(index, pev_flags) */

stock fm_set_user_velocity(entity, const Float:vector[3]) {
    set_pev(entity, pev_velocity, vector);

    return 1;
}
//End of stuff from fakemeta_util
//new STR_T[32]
new bool:g_WallClimb[33]
new Float:g_wallorigin[32][3]
new cvar_zp_wallclimb, cvar_zp_wallclimb_nemesis, cvar_zp_wallclimb_survivor
new g_zclass_climb

// Climb Zombie Atributes
new const zclass_name[] = { "Climb Zombie" } // name
new const zclass_info[] = { "HP-- Speed+ Jump+ Knockback++" } // description
new const zclass_model[] = { "zombie_source" } // model
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" } // claw model
const zclass_health = 1200 // health
const zclass_speed = 220 // speed
const Float:zclass_gravity = 0.8 // gravity
const Float:zclass_knockback = 1.5 // knockback

public plugin_init()
{
    register_plugin("[ZP] Wallclimb ", "1.0", "WallClimb by Python1320/Cheap_Suit, Plagued by Dabbi")
    register_forward(FM_Touch,         "fwd_touch")
    register_forward(FM_PlayerPreThink,     "fwd_playerprethink")
    //register_forward(FM_PlayerPostThink,     "fwd_playerpostthink")
    register_event("DeathMsg","EventDeathMsg","a")
    //register_cvar("zp_wallclimb_version", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY)
    cvar_zp_wallclimb = register_cvar("zp_wallclimb", "1")
    cvar_zp_wallclimb_survivor = register_cvar("zp_wallclimb_survivor", "0")
    cvar_zp_wallclimb_nemesis = register_cvar("zp_wallclimb_nemesis", "1")

}

public plugin_precache()
{
    g_zclass_climb = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}

public EventDeathMsg()
{
    new id = read_data(2)
    g_WallClimb[id] = true
    return PLUGIN_HANDLED
}

public client_connect(id) {
    g_WallClimb[id] = true
}

public fwd_touch(id, world)
{
    if(!is_user_alive(id) || !g_WallClimb[id])
        return FMRES_IGNORED

    new classname[STR_T]
    pev(id, pev_origin, g_wallorigin[id])

    if(equal(classname, "worldspawn") || equal(classname, "func_wall") || equal(classname, "func_breakable"))
        pev(id, pev_origin, g_wallorigin[id])

    return FMRES_IGNORED
}

public wallclimb(id, button)
{
    static Float:origin[3]
    pev(id, pev_origin, origin)

    if(get_distance_f(origin, g_wallorigin[id]) > 25.0)
        return FMRES_IGNORED  // if not near wall

    if(fm_get_entity_flags(id) & FL_ONGROUND)
        return FMRES_IGNORED

    if(button & IN_FORWARD)
    {
        static Float:velocity[3]
        velocity_by_aim(id, 120, velocity)
        fm_set_user_velocity(id, velocity)
    }
    else if(button & IN_BACK)
    {
        static Float:velocity[3]
        velocity_by_aim(id, -120, velocity)
        fm_set_user_velocity(id, velocity)
    }
    return FMRES_IGNORED
}

public fwd_playerprethink(id)
{
    if(!g_WallClimb[id] || !is_user_connected(id) || !zp_get_user_zombie(id))
        return FMRES_IGNORED

    if(zp_is_survivor_round() && get_pcvar_num(cvar_zp_wallclimb_survivor) == 0)
        return FMRES_IGNORED

    if(zp_is_nemesis_round() && get_pcvar_num(cvar_zp_wallclimb_nemesis) == 0)
        return FMRES_IGNORED

    new button = fm_get_user_button(id)

    if((get_pcvar_num(cvar_zp_wallclimb) == 1) && (button & IN_USE) && (zp_get_user_zombie_class(id) == g_zclass_climb)) //Use button = climb
    wallclimb(id, button)
    else if((get_pcvar_num(cvar_zp_wallclimb) == 2) && (button & IN_JUMP) && button & IN_DUCK && (zp_get_user_zombie_class(id) == g_zclass_climb)) //Jump + Duck = climb
    wallclimb(id, button)

    return FMRES_IGNORED
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang10266\\ f0\\ fs16 \n\\ par }
*/

Аватар
lurku
Извън линия
Потребител
Потребител
Мнения: 45
Регистриран на: 15 Юни 2019, 22:07
Се отблагодари: 6 пъти
Получена благодарност: 1 път
Обратна връзка:

Корекция на 2 sma. плъгина [Climb zombie] [Spitter Zombie]

Мнение от lurku » 10 Авг 2019, 18:13

Сега ми се появи тази грешка

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

L 08/10/2019 - 18:03:59: [AMXX] Run time error 4: index out of bounds
L 08/10/2019 - 18:03:59: [AMXX] [0] zp_climb_zombie.sma::fwd_touch (line 78)
L 08/10/2019 - 18:03:59: [AMXX] Displaying debug trace (plugin "zp_climb_zombie.
amxx")
L 08/10/2019 - 18:03:59: [AMXX] Run time error 4: index out of bounds
L 08/10/2019 - 18:03:59: [AMXX] [0] zp_climb_zombie.sma::fwd_touch (line 78)
L 08/10/2019 - 18:04:00: [AMXX] Displaying debug trace (plugin "zp_climb_zombie.
amxx")
L 08/10/2019 - 18:04:00: [AMXX] Run time error 4: index out of bounds
L 08/10/2019 - 18:04:00: [AMXX] [0] zp_climb_zombie.sma::fwd_touch (line 78)
L 08/10/2019 - 18:04:00: [AMXX] Displaying debug trace (plugin "zp_climb_zombie.
amxx")
L 08/10/2019 - 18:04:00: [AMXX] Run time error 4: index out of bounds
L 08/10/2019 - 18:04:00: [AMXX] [0] zp_climb_zombie.sma::fwd_touch (line 78)
L 08/10/2019 - 18:04:00: [AMXX] Displaying debug trace (plugin "zp_climb_zombie.
amxx")

Аватар
mi0
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 534
Регистриран на: 09 Дек 2016, 22:02
Се отблагодари: 97 пъти
Получена благодарност: 120 пъти
Обратна връзка:

Корекция на 2 sma. плъгина [Climb zombie] [Spitter Zombie]

Мнение от mi0 » 10 Авг 2019, 18:15

тествай

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

#include <amxmodx>
// #include <engine>
#include <fakemeta>

#include <cstrike>
#include <zombieplague.inc>

//#include <fakemeta_util>
#define STR_T           33

// Stuff taken from fakemeta_util
#define fm_get_user_button(%1) pev(%1, pev_button)
/* stock fm_get_user_button(index)
    return pev(index, pev_button) */

#define fm_get_entity_flags(%1) pev(%1, pev_flags)
/* stock fm_get_entity_flags(index)
    return pev(index, pev_flags) */

stock fm_set_user_velocity(entity, const Float:vector[3]) {
    set_pev(entity, pev_velocity, vector);

    return 1;
}
//End of stuff from fakemeta_util
//new STR_T[32]
new bool:g_WallClimb[33]
new Float:g_wallorigin[33][3]
new cvar_zp_wallclimb, cvar_zp_wallclimb_nemesis, cvar_zp_wallclimb_survivor
new g_zclass_climb

// Climb Zombie Atributes
new const zclass_name[] = { "Climb Zombie" } // name
new const zclass_info[] = { "HP-- Speed+ Jump+ Knockback++" } // description
new const zclass_model[] = { "zombie_source" } // model
new const zclass_clawmodel[] = { "v_knife_zombie.mdl" } // claw model
const zclass_health = 1200 // health
const zclass_speed = 220 // speed
const Float:zclass_gravity = 0.8 // gravity
const Float:zclass_knockback = 1.5 // knockback

public plugin_init()
{
    register_plugin("[ZP] Wallclimb ", "1.0", "WallClimb by Python1320/Cheap_Suit, Plagued by Dabbi")
    register_forward(FM_Touch,         "fwd_touch")
    register_forward(FM_PlayerPreThink,     "fwd_playerprethink")
    //register_forward(FM_PlayerPostThink,     "fwd_playerpostthink")
    register_event("DeathMsg","EventDeathMsg","a")
    //register_cvar("zp_wallclimb_version", PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY)
    cvar_zp_wallclimb = register_cvar("zp_wallclimb", "1")
    cvar_zp_wallclimb_survivor = register_cvar("zp_wallclimb_survivor", "0")
    cvar_zp_wallclimb_nemesis = register_cvar("zp_wallclimb_nemesis", "1")

}

public plugin_precache()
{
    g_zclass_climb = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback)
}

public EventDeathMsg()
{
    new id = read_data(2)
    g_WallClimb[id] = true
    return PLUGIN_HANDLED
}

public client_connect(id) {
    g_WallClimb[id] = true
}

public fwd_touch(id, world)
{
    if(!is_user_alive(id) || !g_WallClimb[id])
        return FMRES_IGNORED

    new classname[STR_T]
    pev(id, pev_origin, g_wallorigin[id])

    if(equal(classname, "worldspawn") || equal(classname, "func_wall") || equal(classname, "func_breakable"))
        pev(id, pev_origin, g_wallorigin[id])

    return FMRES_IGNORED
}

public wallclimb(id, button)
{
    static Float:origin[3]
    pev(id, pev_origin, origin)

    if(get_distance_f(origin, g_wallorigin[id]) > 25.0)
        return FMRES_IGNORED  // if not near wall

    if(fm_get_entity_flags(id) & FL_ONGROUND)
        return FMRES_IGNORED

    if(button & IN_FORWARD)
    {
        static Float:velocity[3]
        velocity_by_aim(id, 120, velocity)
        fm_set_user_velocity(id, velocity)
    }
    else if(button & IN_BACK)
    {
        static Float:velocity[3]
        velocity_by_aim(id, -120, velocity)
        fm_set_user_velocity(id, velocity)
    }
    return FMRES_IGNORED
}

public fwd_playerprethink(id)
{
    if(!g_WallClimb[id] || !is_user_connected(id) || !zp_get_user_zombie(id))
        return FMRES_IGNORED

    if(zp_is_survivor_round() && get_pcvar_num(cvar_zp_wallclimb_survivor) == 0)
        return FMRES_IGNORED

    if(zp_is_nemesis_round() && get_pcvar_num(cvar_zp_wallclimb_nemesis) == 0)
        return FMRES_IGNORED

    new button = fm_get_user_button(id)

    if((get_pcvar_num(cvar_zp_wallclimb) == 1) && (button & IN_USE) && (zp_get_user_zombie_class(id) == g_zclass_climb)) //Use button = climb
    wallclimb(id, button)
    else if((get_pcvar_num(cvar_zp_wallclimb) == 2) && (button & IN_JUMP) && button & IN_DUCK && (zp_get_user_zombie_class(id) == g_zclass_climb)) //Jump + Duck = climb
    wallclimb(id, button)

    return FMRES_IGNORED
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang10266\\ f0\\ fs16 \n\\ par }
*/
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

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

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot] и 15 госта