hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.16. 23:49



Jelenlévő felhasználók

Jelenleg 358 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 356 vendég

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], Google [Bot]az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása Hozzászólás a témához  [3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Long Jump
HozzászólásElküldve:2011.10.31. 18:29 
Offline
Tud valamit

Csatlakozott:2011.08.28. 08:19
Hozzászólások:103
Nah Hi all! Valaki tudna segítnei mit írjak amxx-be hogy legyen long jump? itt van valahol a hiba
Kód:
/* 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.65

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, get_cvar_num("zp_leap_force 500"), velocity)
      
      velocity[2] = get_cvar_float("zp_leap_height 300")
      
      set_pev(id, pev_velocity, velocity)
      
      item_leaptime[id] = get_gametime(10)
   }
}

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 (!is_user_bot(id) && (!(buttons & IN_JUMP) || !(buttons & IN_DUCK)))
      return false
   
   if (get_gametime() - item_leaptime[10] < get_cvar_float("zp_leap_cooldown 10"))
      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;
}


A hozzászólást 1 alkalommal szerkesztették, utoljára kiki 2011.10.31. 18:36-kor.
A forrást tedd code rész közé legközelebb:)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Long Jump
HozzászólásElküldve:2011.10.31. 20:31 
Mi-a-hiba?
Hibaüzenet?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Long Jump
HozzászólásElküldve:2011.11.05. 09:34 
Offline
Tud valamit

Csatlakozott:2011.08.28. 08:19
Hozzászólások:103
Már megvan a gond, azért köszi


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése: Rendezés 
Új téma nyitása Hozzászólás a témához  [3 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 12 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole