Добро пожаловать на форум, Гость, это ваша панель
  • Страница 1 из 1
  • 1
[Zombie Mod] zp_axe - knife.
Andrey
Дата: Воскресенье, 28.07.2013, 19:58 | Сообщение # 1
офлайн

  • Сообщения: 64
  • Награды: 1
  • Замечания:
 
Нашел плагин, который выдает нож axe в начале, но есть ошибка, выдает нож и людям и зомби..
Помогите пожалуйста поменять только для людей, буду очень благодарен. Заранее спасибо.

Код
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <xs>
#include <zombieplague>

#define KNIFE_NAME   "Axe Knife"

#define KNIFE_GRAVITY   0.91
#define KNIFE_SPEED   290.0
#define SEC_DMG      2.5
#define PRIM_DMG   3.5
#define SEC_HEAD_DMG   4.5
#define PRIM_HEAD_DMG   5.5
#define   KNIFE_KNOCK   5
#define BLOOD      3
#define ADMIN      "1"

static const v_knife[] = "models/axe/v_axe.mdl"
static const p_knife[] = "models/axe/p_axe.mdl"

static const SoundList[][] =
{
    "axe/axe_deploy1.wav",   // 0
    "axe/axe_hwall.wav",   // 1
    "axe/axe_slash1.wav",   // 2
    "axe/axe_stab.wav",   // 3
    "axe/axe1.wav",   // 4
    "axe/axe2.wav"   // 5
}

static const Blood[][] =
{
    "sprites/blood.spr",
    "sprites/bloodspray.spr"
}
static g_Blood[sizeof Blood]
static bool:Knife[33]

public plugin_init()
{
    register_event("CurWeapon", "ChangeModel", "be", "1=1")
    RegisterHam(Ham_TakeDamage, "player", "TakeDamage_Pre", 0)
    RegisterHam(Ham_TakeDamage, "player", "TakeDamage_Post", 1)
    RegisterHam(Ham_Player_PreThink, "player", "PreThink")
    register_forward(FM_EmitSound, "KnifeSound")
    RegisterHam(Ham_Spawn,"player","player_respawn")
}

public player_respawn(id)
{
    if(!is_user_alive(id) || zp_get_user_zombie(id)) return
        
    engclient_cmd(id, "weapon_knife")
    Knife [id]= true
    change(id)       
}
public ChangeModel(id)
{
    if(!is_user_alive(id) || zp_get_user_zombie(id)) return    
    static weaponid
    weaponid = read_data(2)
    if(!Knife [id]|| weaponid != CSW_KNIFE) return    
    change(id)
}

public KnifeSound(id, channel, sample[], Float:volume, Float:attn, flags, pitch)
{
    if(!equal(sample, "weapons/knife_", 14) || !Knife[id]) return FMRES_IGNORED       
    if(equal(sample[8], "knife_hitwall", 13)) PlaySound(id, 1)    
    else
    if(equal(sample[8], "knife_hit", 9))
       switch(random(2))
       {
          case 0:PlaySound(id, 4)
          case 1:PlaySound(id, 5)
       }       
    if(equal(sample[8], "knife_slash", 11)) PlaySound(id, 2)
    if(equal(sample[8], "knife_stab", 10)) PlaySound(id, 3)
    if(equal(sample[8], "knife_deploy", 12)) PlaySound(id, 0)
    return FMRES_SUPERCEDE
}

public TakeDamage_Pre(victim, inflictor, attacker, Float:damage, damagetype)
{
    if(!is_user_alive(attacker)) return HAM_IGNORED       
    if(!Knife [attacker]|| get_user_weapon(attacker) != CSW_KNIFE) return HAM_IGNORED    
    new hit, target
    get_user_aiming(attacker, target, hit)
    new bool:head = (hit == HIT_HEAD)
    new Float:mult_dmg = 1.0
    if(pev(attacker, pev_button, IN_ATTACK))
    mult_dmg = head ? PRIM_HEAD_DMG : PRIM_DMG
    else
    mult_dmg = head ? SEC_HEAD_DMG : SEC_DMG
    SetHamParamFloat(4, damage * mult_dmg)
    return HAM_HANDLED
}

public TakeDamage_Post(victim, inflictor, attacker, Float:damage, damagetype)
{
    if(!is_user_alive(attacker) || !is_user_alive(victim)) return HAM_IGNORED    
    if(!Knife [attacker]|| get_user_weapon(attacker) != CSW_KNIFE)return HAM_IGNORED       
    new Float:Origin[3], Float:Origin2[3], Float:Velocity[3]
    pev(attacker, pev_origin, Origin)
    pev(victim, pev_origin, Origin2)
    xs_vec_sub(Origin2, Origin, Velocity)
    xs_vec_normalize(Velocity, Velocity)
    xs_vec_mul_scalar(Velocity, (KNIFE_KNOCK * 100.0), Velocity)
    if(Velocity[2] <= 100.0) Velocity[2] = random_float(150.0, 250.0)
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
    write_byte(TE_BLOODSPRITE);
    engfunc(EngFunc_WriteCoord, Origin2[0])
    engfunc(EngFunc_WriteCoord, Origin2[1])
    engfunc(EngFunc_WriteCoord, Origin2[2])
    write_short(g_Blood[0])
    write_short(g_Blood[1])
    write_byte(77)
    write_byte(BLOOD)
    message_end()
    set_pev(victim, pev_velocity, Velocity)
    return HAM_HANDLED
}

public PreThink(id)
{
    if(!is_user_alive(id)) return HAM_IGNORED
    if(!Knife[id]) return HAM_IGNORED
    if(get_user_weapon(id) != CSW_KNIFE)  
    {
       set_pev(id, pev_gravity, get_cvar_float("zp_human_gravity"))
       set_pev(id, pev_maxspeed, get_cvar_float("zp_human_speed"))
       return HAM_IGNORED
    }
    set_pev(id, pev_gravity, KNIFE_GRAVITY)
    set_pev(id, pev_maxspeed, KNIFE_SPEED)
    return HAM_HANDLED
}

public plugin_precache()
{
    precache_model(v_knife)
    precache_model(p_knife)    
    static i
    for(i = 0; i <= charsmax(SoundList); i++)
       precache_sound(SoundList[i])
        
    for(i = 0; i <= charsmax(Blood); i++)
       g_Blood = precache_model(Blood)
}

change(id)
{
    set_pev(id, pev_viewmodel2, v_knife)
    set_pev(id, pev_weaponmodel2, p_knife)
}

stock PlaySound(Ent, Sound)
engfunc(EngFunc_EmitSound, Ent, CHAN_WEAPON, SoundList[_:Sound], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
     
stock is_user_admin(id)
{
    new __flags=get_user_flags(id);
    return (__flags>0 && !(__flags&ADMIN_USER));
}[/i]


 
Estoque
Дата: Воскресенье, 28.07.2013, 22:25 | Сообщение # 2
офлайн

  • Сообщения: 2
  • Награды: 0
  • Замечания:
 
Попробуй убрать в public player_respawn(id)
 {
    if(!is_user_alive(id) || zp_get_user_zombie(id)) return
         
    engclient_cmd(id, "weapon_knife")
    Knife [id]= true
    change(id)      

"zp_get_user_zombie(id))"
 
493284988936
Дата: Понедельник, 29.07.2013, 11:50 | Сообщение # 3
офлайн

  • Сообщения: 73
  • Награды: 2
  • Замечания:
 
В раздаче убери проверку на зомби, тоесть если зомби игнорить выдачу.

Сёрф сборка http://perfect-soft.su/forum/14-1998-1
Skype: swimup-pro
 
Andrey
Дата: Понедельник, 29.07.2013, 12:26 | Сообщение # 4
офлайн

  • Сообщения: 64
  • Награды: 1
  • Замечания:
 
Нет, не получилось, либо я не правильно сделал..
Раньше выдавало только способности ножа, т.е гравитация, скорость и т.д, а сейчас тупо модель и звук..
 
493284988936
Дата: Понедельник, 29.07.2013, 20:33 | Сообщение # 5
офлайн

  • Сообщения: 73
  • Награды: 2
  • Замечания:
 
Смотри функцию CurWeapon

Сёрф сборка http://perfect-soft.su/forum/14-1998-1
Skype: swimup-pro
 
A_L_E_X_007
Дата: Вторник, 30.07.2013, 00:06 | Сообщение # 6
офлайн

  • Сообщения: 10
  • Награды: 0
  • Замечания:
 
У меня был подобный плагин ток в начале раунда он не открывался. Буду благодарен если кто нить кинет плагин без ошибок  wink

Раскрутка игровых серверов => https://vk.com/cheap_promotion
Нефтекамские сервера CS 1.6 => https://vk.com/neftekamsk_serv
Питерские сервера CS 1.6 => https://vk.com/serva4ek18
Временный сайт серверов => WwW.Servers-CS.3dn.ru
 
  • Страница 1 из 1
  • 1
Поиск: