Raised This Month: $ Target: $400
 0% 

little problem item zp


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
NYZANN
Junior Member
Join Date: Mar 2022
Location: Turkey
Old 04-17-2022 , 11:08   little problem item zp
Reply With Quote #1

Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <zombieplague>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "ZP: Bat"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"

#define fm_precache_model(%1) 		engfunc(EngFunc_PrecacheModel,%1)
#define fm_precache_sound(%1) 		engfunc(EngFunc_PrecacheSound,%1)
#define fm_remove_entity(%1) 		engfunc(EngFunc_RemoveEntity, %1)
#define fm_drop_to_floor(%1) 		engfunc(EngFunc_DropToFloor,%1)
#define fm_find_ent_by_class(%1,%2) 	engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define fm_set_user_gravity(%1,%2) 	set_pev(%1,pev_gravity,%2)

#define PET_FLAG 			pev_flTimeStepSound
#define PET_KILLED 			389

static const pet_model[] = "models/stukabat.mdl"
static const pet_sounds[][] = { "bullchicken/bc_die1.wav", "bullchicken/bc_die2.wav", "bullchicken/bc_die3.wav", "bullchicken/bc_idle1.wav", "bullchicken/bc_pain3.wav" }
static const pet_idle = 13
static const pet_run = 13
static const pet_die = 5
static const pet_cost = 5
static const Float:pet_idle_speed = 0.5
static const Float:pet_run_speed = 13.0
static const Float:player_gravity = 0.8

new item_id
new item_pet[33]
new item_have[33]
new item_at_spawn[33]
new Float:item_leaptime[33]

new maxplayers

public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_event("DeathMsg","DeathMsg","a")
	register_event("HLTV","HLTV", "a","1=0", "2=0")
	
	register_forward(FM_Think,"FM_Think_hook")
	register_forward(FM_PlayerPreThink, "FM_PlayerPreThink_hook")
	
	RegisterHam(Ham_Spawn, "player", "player_spawn", 1)	
	RegisterHam(Ham_Touch, "info_target", "player_touch")	
	
	register_dictionary("zombieaddons.txt")
	
	item_id = zp_register_extra_item("Bat", pet_cost, ZP_TEAM_HUMAN)
	
	maxplayers = get_maxplayers()
}

public plugin_precache()
{
	new i = 0
	
	for(i = 0; i < sizeof pet_sounds; i++)
		fm_precache_sound(pet_sounds[i])
	
	fm_precache_model(pet_model)	
}

public HLTV()
{
	new entid = -1
	while((entid = fm_find_ent_by_class(entid, "zp_bat")))
	{
		if(pev(entid,PET_FLAG) == PET_KILLED)
		{
			fm_remove_entity(entid)
		}		
	}	
}

public DeathMsg() 
{
	new id = read_data(2)
	
	if(item_have[id])
	{
		kill_pet(id)	
	}
}

public zp_user_infected_post(id,infector)
{
	if(item_have[id])
	{
		kill_pet(id)	
	}
}

public kill_pet(id)
{
	if(pev_valid(item_pet[id]))
	{
		set_pev(item_pet[id],pev_sequence,pet_die)
		set_pev(item_pet[id],pev_gaitsequence,pet_die)
		set_pev(item_pet[id],pev_framerate,1.0)
		
		set_pev(item_pet[id],PET_FLAG,PET_KILLED)
		
		fm_drop_to_floor(item_pet[id])
		
		item_have[id] = 0
	}	
	item_pet[id] = 0
}

public zp_extra_item_selected(player, itemid)
{	
	if(itemid == item_id)
	{
		create_pet(player)		
	}
}

public player_spawn(player)
{
	if(is_user_alive(player))
	{
		if(item_have[player])
		{
			set_task(get_cvar_float("zp_delay") + 1.0,"new_round_gravity",player)
		}
		
		else if(item_at_spawn[player])
		{
			create_pet(player)
			item_at_spawn[player] = 0
		}
	}	
}

public player_touch(this,idother)
{	
	if(!this || !idother)
		return HAM_IGNORED
	
	new classname[32]
	pev(this,pev_classname,classname,31)
	if(equal(classname,"zp_bat") && is_a_player(idother) && !item_have[idother] && !zp_get_user_zombie(idother))
	{
		if(pev(this,PET_FLAG) == PET_KILLED)
		{
			remove_pet(this)
			create_pet(idother)				
		}
	}	
	return HAM_IGNORED
}

public new_round_gravity(id)
{
	fm_set_user_gravity(id,player_gravity)	
}

public create_pet(id)
{
	if(item_have[id])
	{
		client_print(id,print_chat,"%L",LANG_PLAYER,"ALREADY_HAVE_BAT")
		return PLUGIN_HANDLED
	}
	else if(!is_user_alive(id))
	{
		client_print(id,print_chat,"%L",LANG_PLAYER,"BAT_ON_NEXT_SPAWN")
		item_at_spawn[id] = 1
		return PLUGIN_HANDLED
	}	
	else
	{
		item_pet[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
		set_pev(item_pet[id],pev_classname,"zp_bat")
		
		engfunc(EngFunc_SetModel,item_pet[id],pet_model)
		
		new Float:origin[3]
		pev(id,pev_origin,origin)			
		
		set_pev(item_pet[id],pev_origin,origin)
		set_pev(item_pet[id],pev_solid,SOLID_TRIGGER)
		set_pev(item_pet[id],pev_movetype,MOVETYPE_FLY)
		set_pev(item_pet[id],pev_owner,33)
		set_pev(item_pet[id],pev_nextthink,1.0)
		set_pev(item_pet[id],pev_sequence,0)
		set_pev(item_pet[id],pev_gaitsequence,0)
		set_pev(item_pet[id],pev_framerate,1.0)
		
		fm_set_user_gravity(id,player_gravity)		
		
		engfunc(EngFunc_EmitSound,item_pet[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds - 1)],1.0, 1.2, 0, PITCH_NORM)	
		
		client_print(id,print_chat,"%L",LANG_PLAYER,"GIVE_BAT")		
		
		item_have[id] = 1
	}
	return PLUGIN_HANDLED
}

public FM_Think_hook(ent)
{
	for(new i = 0; i <= maxplayers; i++)
	{
		if(ent == item_pet[i])
		{
			static Float:origin[3]
			static Float:origin2[3]
			static Float:velocity[3]
			pev(ent,pev_origin,origin2)
			get_offset_origin_body(i,Float:{50.0,0.0,0.0},origin)
			
			if(get_distance_f(origin,origin2) > 300.0)
			{
				set_pev(ent,pev_origin,origin)
			}
			
			else if(get_distance_f(origin,origin2) > 80.0)
			{
				get_speed_vector(origin2,origin,250.0,velocity)
				set_pev(ent,pev_velocity,velocity)
				if(pev(ent,pev_sequence) != pet_run || pev(ent,pev_framerate) != pet_run_speed)
				{
					set_pev(ent,pev_sequence,pet_run)
					set_pev(ent,pev_gaitsequence,pet_run)
					set_pev(ent,pev_framerate,pet_run_speed)
				}
			}
			
			else if(get_distance_f(origin,origin2) < 75.0)
			{
				if(pev(ent,pev_sequence) != pet_idle || pev(ent,pev_framerate) != pet_idle_speed)
				{
					set_pev(ent,pev_sequence,pet_idle)
					set_pev(ent,pev_gaitsequence,pet_idle)
					set_pev(ent,pev_framerate,pet_idle_speed)
				}
				set_pev(ent,pev_velocity,Float:{0.0,0.0,0.0})
			}
			pev(i,pev_origin,origin)
			origin[2] = origin2[2]
			entity_set_aim(ent,origin)			
			set_pev(ent,pev_nextthink,1.0)
			break
		}
	}
}

public FM_PlayerPreThink_hook(id)
{
	if (!is_user_alive(id))
		return
	
	if(allowed_leap(id))
	{
		static Float:velocity[3]
		velocity_by_aim(id, 570, velocity)
		velocity[2] = 275.00
		set_pev(id, pev_velocity, velocity)
		item_leaptime[id] = get_gametime()
	}
}

public allowed_leap(id)
{	
	if(zp_get_user_zombie(id))
		return false
	
	if(!item_have[id])
		return false
	
	if (!(pev(id, pev_flags) & FL_ONGROUND) || fm_get_speed(id) < 80)
		return false
	
	static buttons
	buttons = pev(id, pev_button)
	if (!(pev(id, pev_flags) & FL_ONGROUND) || fm_get_speed(id) < 20 || !(buttons & IN_JUMP) || !(buttons & IN_DUCK))
		return false
	if (get_gametime() - item_leaptime[id] < 4.0)
		return false
	return true
}

public is_a_player(ent)
{
	if(ent > 0 && ent < 33)
		return true
	
	return false
}

public remove_pet(ent) 
{
	if(pev_valid(ent)) 
	{
		fm_remove_entity(ent)
	}
}

// Get entity's speed (from fakemeta_util)
stock fm_get_speed(entity)
{
	static Float:velocity[3]
	pev(entity, pev_velocity, velocity)
	
	return floatround(vector_length(velocity));
}
stock get_offset_origin_body(ent,const Float:offset[3],Float:origin[3])
{
	if(!pev_valid(ent))
		return 0;
	
	new Float:angle[3]
	pev(ent,pev_angles,angle)
	
	pev(ent,pev_origin,origin)
	
	origin[0] += floatcos(angle[1],degrees) * offset[0]
	origin[1] += floatsin(angle[1],degrees) * offset[0]
	
	origin[1] += floatcos(angle[1],degrees) * offset[1]
	origin[0] += floatsin(angle[1],degrees) * offset[1]
	
	return 1;
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3])
{
	new_velocity[0] = origin2[0] - origin1[0]
	new_velocity[1] = origin2[1] - origin1[1]
	new_velocity[2] = origin2[2] - origin1[2]
	new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
	new_velocity[0] *= num
	new_velocity[1] *= num
	new_velocity[2] *= num
	
	return 1;
}

stock entity_set_aim(ent,const Float:origin2[3],bone=0)
{
	if(!pev_valid(ent))
		return 0;
	
	static Float:origin[3]
	origin[0] = origin2[0]
	origin[1] = origin2[1]
	origin[2] = origin2[2]
	
	static Float:ent_origin[3], Float:angles[3]
	
	if(bone)
		engfunc(EngFunc_GetBonePosition,ent,bone,ent_origin,angles)
	else
		pev(ent,pev_origin,ent_origin)
	
	origin[0] -= ent_origin[0]
	origin[1] -= ent_origin[1]
	origin[2] -= ent_origin[2]
	
	static Float:v_length
	v_length = vector_length(origin)
	
	static Float:aim_vector[3]
	aim_vector[0] = origin[0] / v_length
	aim_vector[1] = origin[1] / v_length
	aim_vector[2] = origin[2] / v_length
	
	static Float:new_angles[3]
	vector_to_angle(aim_vector,new_angles)
	
	new_angles[0] *= -1
	
	if(new_angles[1]>180.0) new_angles[1] -= 360
	if(new_angles[1]<-180.0) new_angles[1] += 360
	if(new_angles[1]==180.0 || new_angles[1]==-180.0) new_angles[1]=-179.999999
	
	set_pev(ent,pev_angles,new_angles)
	set_pev(ent,pev_fixangle,1)
	
	return 1;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1251\\ deff0\\ deflang10266{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }
*/
I have a problem with this item when I buy the pet a second time it tells me that I already have a pet but it still drops me from ammo packs
NYZANN is offline
Supremache
Veteran Member
Join Date: Sep 2019
Location: Egypt
Old 04-17-2022 , 12:36   Re: little problem item zp
Reply With Quote #2

PHP Code:
if(item_have[id])
    {
        
client_print(id,print_chat,"%L",LANG_PLAYER,"ALREADY_HAVE_BAT")
        return 
ZP_PLUGIN_HANDLED
      
//return PLUGIN_HANDLED
    

__________________
Youtube.com/Supremache

Bank System [Nvault - SQL Support]
VIP System
  • If you think it's that simple, then do it yourself.

Last edited by Supremache; 04-17-2022 at 12:37.
Supremache is offline
NYZANN
Junior Member
Join Date: Mar 2022
Location: Turkey
Old 04-17-2022 , 12:41   Re: little problem item zp
Reply With Quote #3

not work
NYZANN is offline
Supremache
Veteran Member
Join Date: Sep 2019
Location: Egypt
Old 04-17-2022 , 13:04   Re: little problem item zp
Reply With Quote #4

Try this:
PHP Code:
public zp_extra_item_selected(playeritemid)
{    
    if(
itemid == item_id)
    {
        return 
create_pet(player)        
    }
}


create_pet(id// Remove public
{
    if(
item_have[id])
    {
        
client_print(id,print_chat,"%L",LANG_PLAYER,"ALREADY_HAVE_BAT")
        return 
ZP_PLUGIN_HANDLED;
    }
    else if(!
is_user_alive(id))
    {
        
client_print(id,print_chat,"%L",LANG_PLAYER,"BAT_ON_NEXT_SPAWN")
        
item_at_spawn[id] = 1
        
return ZP_PLUGIN_HANDLED
    
}    
    else
    {
        
item_pet[id] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString,"info_target"))
        
set_pev(item_pet[id],pev_classname,"zp_bat")
        
        
engfunc(EngFunc_SetModel,item_pet[id],pet_model)
        
        new 
Float:origin[3]
        
pev(id,pev_origin,origin)            
        
        
set_pev(item_pet[id],pev_origin,origin)
        
set_pev(item_pet[id],pev_solid,SOLID_TRIGGER)
        
set_pev(item_pet[id],pev_movetype,MOVETYPE_FLY)
        
set_pev(item_pet[id],pev_owner,33)
        
set_pev(item_pet[id],pev_nextthink,1.0)
        
set_pev(item_pet[id],pev_sequence,0)
        
set_pev(item_pet[id],pev_gaitsequence,0)
        
set_pev(item_pet[id],pev_framerate,1.0)
        
        
fm_set_user_gravity(id,player_gravity)        
        
        
engfunc(EngFunc_EmitSound,item_pet[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds 1)],1.01.20PITCH_NORM)    
        
        
client_print(id,print_chat,"%L",LANG_PLAYER,"GIVE_BAT")        
        
        
item_have[id] = 1
    
}
    return 
PLUGIN_HANDLED

Or
PHP Code:
public zp_extra_item_selected(iditemid)
{    
    if(
itemid == item_id)
    {
        if(
item_have[id])
        {
            
client_print(id,print_chat,"%L",LANG_PLAYER,"ALREADY_HAVE_BAT")
            return 
ZP_PLUGIN_HANDLED;
        }
        else if(!
is_user_alive(id))
        {
            
client_print(id,print_chat,"%L",LANG_PLAYER,"BAT_ON_NEXT_SPAWN")
            
item_at_spawn[id] = 1
            
return ZP_PLUGIN_HANDLED
        
}    
        else
        {
            
item_pet[id] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString,"info_target"))
            
set_pev(item_pet[id],pev_classname,"zp_bat")
            
            
engfunc(EngFunc_SetModel,item_pet[id],pet_model)
            
            new 
Float:origin[3]
            
pev(id,pev_origin,origin)            
            
            
set_pev(item_pet[id],pev_origin,origin)
            
set_pev(item_pet[id],pev_solid,SOLID_TRIGGER)
            
set_pev(item_pet[id],pev_movetype,MOVETYPE_FLY)
            
set_pev(item_pet[id],pev_owner,33)
            
set_pev(item_pet[id],pev_nextthink,1.0)
            
set_pev(item_pet[id],pev_sequence,0)
            
set_pev(item_pet[id],pev_gaitsequence,0)
            
set_pev(item_pet[id],pev_framerate,1.0)
            
            
fm_set_user_gravity(id,player_gravity)        
            
            
engfunc(EngFunc_EmitSound,item_pet[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds 1)],1.01.20PITCH_NORM)    
            
            
client_print(id,print_chat,"%L",LANG_PLAYER,"GIVE_BAT")        
            
            
item_have[id] = 1
        
}    
    }
    return 
PLUGIN_HANDLED    

__________________
Youtube.com/Supremache

Bank System [Nvault - SQL Support]
VIP System
  • If you think it's that simple, then do it yourself.
Supremache is offline
NYZANN
Junior Member
Join Date: Mar 2022
Location: Turkey
Old 04-17-2022 , 13:38   Re: little problem item zp
Reply With Quote #5

the second option worked , ty

Last edited by NYZANN; 04-17-2022 at 13:40. Reason: Solved
NYZANN is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 12:52.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode