mr.wai
|
分享:
▼
x0
|
[1.6][插件] 有没有大大可以解决问题(sma)
这个sma档是数位柚某位大大写的 但我改了生命就不能完成转换amxx档 有何解决方法?
#include <amxmodx> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #include <zombieplague> #define SUPPORT_BOT_TO_USE //支援BOT使用.(在最前面加上 // 即取消对BOT的技援) #define STAND_IN_WALL //Hunter可以暂时停在墙壁上.(在最前面加上 // 即取消此技援) #define STR_T 32 #define MAX_PLAYERS 32 new const zclass_name[] = { "Hunter" } // name new const zclass_info[] = { "擅长长跳和爬墙" } // description new const zclass_model[] = { "zombie_hunter" } // model new const zclass_clawmodel[] = { "v_hunter_hands.mdl" } // claw model const zclass_health = 1800 // health const zclass_speed = 250 // speed const Float:zclass_gravity = 0.8 // gravity const Float:zclass_knockback = 2.0 // knockback new g_zclass_hunter new cvar_speed, cvar_jump_force, cvar_jump_height new Float:hunter_jump[33], Float:hunter_sound_time[33], Float:g_wallorigin[33][3] new bool:hunter_sound[33], bool:take_damage[33] new const HunterAttack[][] = {"zombie_plague/Hunter_Warn_1.wav","zombie_plague/Hunter_Warn_2.wav"} new HunterAttackSound[33] public plugin_init() { register_plugin("[ZP] Class:Hunter Zombie","1.0","MyChat数位男女会员:a7811311622") cvar_speed = register_cvar("zp_hunter_climb_speed", "250") //爬墙的速度 cvar_jump_force = register_cvar("zp_hunter_jump_force", "500") //长跳的前进速度 cvar_jump_height = register_cvar("zp_hunter_jump_height", "300") //长跳的跳跃高度 register_forward(FM_PlayerPreThink, "fw_PlayerPreThink") RegisterHam(Ham_Touch, "player", "cheese_player_touch", 1) RegisterHam(Ham_Player_PreThink, "player", "cheese_player_prethink", 1) } public plugin_precache() { for (new i = 0; i < sizeof HunterAttack; i++) precache_sound(HunterAttack) g_zclass_hunter = zp_register_zombie_class(zclass_name, zclass_info, zclass_model, zclass_clawmodel, zclass_health, zclass_speed, zclass_gravity, zclass_knockback) } public zp_user_infected_post(id, infector) { if (zp_get_user_zombie_class(id) == g_zclass_hunter) { hunter_sound[id] = false take_damage[id] = false client_print(id, print_chat, "[ZP] Hunter可使用长跳且靠近墙壁时离地后再前进或后退即可爬墙.") } } public cheese_player_touch(id, world) { if(!is_user_alive(id)) return HAM_IGNORED new classname[STR_T] pev(world, pev_classname, classname, (STR_T-1)) if(equal(classname, "worldspawn") || equal(classname, "func_wall") || equal(classname, "func_breakable")) pev(id, pev_origin, g_wallorigin[id]) return HAM_IGNORED } public client_damage(attacker,victim) { static Float:origin[3] pev(victim, pev_origin, origin) if((zp_get_user_zombie_class(victim) == g_zclass_hunter) && zp_get_user_zombie(victim) && !zp_get_user_zombie(attacker)) { if(get_distance_f(origin, g_wallorigin[victim]) <= 25.0 && !(pev(victim,pev_flags) & FL_ONGROUND)) { take_damage[victim] = true set_task(1.0, "return_speed", victim) } } } public return_speed(id) { take_damage[id] = false remove_task(id) } public fw_PlayerPreThink(id) { if (!is_user_alive(id) || zp_get_user_nemesis(id) || zp_get_user_survivor(id)) return PLUGIN_CONTINUE if (!zp_get_user_zombie(id) || (zp_get_user_zombie_class(id) != g_zclass_hunter)) return PLUGIN_CONTINUE static Float:origin[3], Float:velocity[3], force, height, button, oldbutton pev(id, pev_origin, origin) button = pev(id, pev_button) oldbutton = pev(id, pev_oldbuttons) force = get_pcvar_num(cvar_jump_force) height = get_pcvar_num(cvar_jump_height) HunterAttackSound[id] = random_num(0, sizeof HunterAttack - 1) if((button & IN_JUMP) && (button & IN_DUCK) && !((oldbutton & IN_JUMP) && (oldbutton & IN_DUCK))) { if((pev(id, pev_flags) & FL_ONGROUND) && fm_get_speed(id) >= 40) { if (hunter_sound[id] && get_gametime() - hunter_sound_time[id] >= 1.0) hunter_sound[id] = false if(!hunter_sound[id]) { hunter_sound_time[id] = get_gametime() hunter_sound[id] = true engfunc(EngFunc_EmitSound, id, CHAN_VOICE, HunterAttack[HunterAttackSound[id]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) } if (get_gametime() - hunter_jump[id] < 0.0) return PLUGIN_CONTINUE hunter_jump[id] = get_gametime() velocity_by_aim(id, force, velocity) velocity[2] = float(height) set_pev(id, pev_velocity, velocity) } if(!(pev(id, pev_flags) & FL_ONGROUND) && get_distance_f(origin, g_wallorigin[id]) <= 50.0 && !take_damage[id]) { if (hunter_sound[id] && get_gametime() - hunter_sound_time[id] >= 1.0) hunter_sound[id] = false if(!hunter_sound[id]) { hunter_sound_time[id] = get_gametime() hunter_sound[id] = true engfunc(EngFunc_EmitSound, id, CHAN_VOICE, HunterAttack[HunterAttackSound[id]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) } if (get_gametime() - hunter_jump[id] < 0.25) return PLUGIN_CONTINUE hunter_jump[id] = get_gametime() velocity_by_aim(id, force, velocity) velocity[2] = float(height) set_pev(id, pev_velocity, velocity) } } #if defined SUPPORT_BOT_TO_USE if (is_user_bot(id)) { new target, body get_user_aiming(id, target, body) if ((1 <= target <= 32) && is_user_alive(target) && !zp_get_user_zombie(target)) { if((pev(id, pev_flags) & FL_ONGROUND) && fm_get_speed(id) >= 40) { if (hunter_sound[id] && get_gametime() - hunter_sound_time[id] >= 1.0) hunter_sound[id] = false if(!hunter_sound[id]) { hunter_sound_time[id] = get_gametime() hunter_sound[id] = true engfunc(EngFunc_EmitSound, id, CHAN_VOICE, HunterAttack[HunterAttackSound[id]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) } if (get_gametime() - hunter_jump[id] < 0.0) return PLUGIN_CONTINUE hunter_jump[id] = get_gametime() velocity_by_aim(id, force, velocity) velocity[2] = float(height) set_pev(id, pev_velocity, velocity) } if(!(pev(id, pev_flags) & FL_ONGROUND) && get_distance_f(origin, g_wallorigin[id]) <= 50.0 && !take_damage[id]) { if (hunter_sound[id] && get_gametime() - hunter_sound_time[id] >= 1.0) hunter_sound[id] = false if(!hunter_sound[id] && fm_get_speed(id) >= 40) { hunter_sound_time[id] = get_gametime() hunter_sound[id] = true engfunc(EngFunc_EmitSound, id, CHAN_VOICE, HunterAttack[HunterAttackSound[id]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) } if (get_gametime() - hunter_jump[id] < 0.5) return PLUGIN_CONTINUE hunter_jump[id] = get_gametime() velocity_by_aim(id, force, velocity) velocity[2] = float(height) set_pev(id, pev_velocity, velocity) } } return PLUGIN_CONTINUE } #endif return PLUGIN_CONTINUE } public cheese_player_prethink(id) { if(!is_user_alive(id) || !zp_get_user_zombie(id)) return HAM_IGNORED if(zp_is_nemesis_round() || zp_get_user_zombie_class(id) != g_zclass_hunter) return HAM_IGNORED static Float:origin[3], Float:velocity[3], button pev(id, pev_origin, origin) button = pev(id, pev_button) #if defined STAND_IN_WALL if(get_distance_f(origin, g_wallorigin[id]) <= 25.0 && !(pev(id,pev_flags) & FL_ONGROUND)) if(!(button & IN_JUMP) && !((button & IN_JUMP) && (button & IN_DUCK))) set_pev(id, pev_velocity, Float:{0.0,0.0,0.0}) #endif if((button & IN_FORWARD) && !((button & IN_FORWARD) && (button & IN_JUMP)) && !((button & IN_JUMP) && (button & IN_DUCK))) { if(get_distance_f(origin, g_wallorigin[id]) <= 25.0 && !(pev(id,pev_flags) & FL_ONGROUND)) { if(take_damage[id]) velocity_by_aim(id, get_pcvar_num(cvar_speed)/10, velocity) else velocity_by_aim(id, get_pcvar_num(cvar_speed), velocity) fm_set_user_velocity(id, velocity) } } else if((button & IN_BACK) && !((button & IN_BACK) && (button & IN_JUMP)) && !((button & IN_JUMP) && (button & IN_DUCK))) { if(get_distance_f(origin, g_wallorigin[id]) <= 25.0 && !(pev(id,pev_flags) & FL_ONGROUND)) { if(take_damage[id]) velocity_by_aim(id, -get_pcvar_num(cvar_speed)/10, velocity) else velocity_by_aim(id, -get_pcvar_num(cvar_speed), velocity) fm_set_user_velocity(id, velocity) } } #if defined SUPPORT_BOT_TO_USE if (is_user_bot(id)) { if(get_distance_f(origin, g_wallorigin[id]) > 25.0) return HAM_IGNORED new target, body get_user_aiming(id, target, body) //检查是否正在瞄准某个目标 if ((1 <= target <= 32) && is_user_alive(target) && !zp_get_user_zombie(target)) //检查是否是有效的目标 { new iOrigin1[3], iOrigin2[3] get_user_origin(id, iOrigin1) get_user_origin(target, iOrigin2) if (pev(id,pev_flags) & FL_ONGROUND) { if (iOrigin2[2] - iOrigin1[2] >= 60) fm_set_user_jump_velocity(id, 300) } else { if(iOrigin2[2] > iOrigin1[2] && iOrigin2[2] - iOrigin1[2] >= 30) { if(take_damage[id]) velocity_by_aim(id, get_pcvar_num(cvar_speed)/10, velocity) else velocity_by_aim(id, get_pcvar_num(cvar_speed), velocity) fm_set_user_velocity(id, velocity) } else if (iOrigin2[2] < iOrigin1[2] && iOrigin1[2] - iOrigin2[2] >= 30) { if(take_damage[id]) velocity_by_aim(id, -get_pcvar_num(cvar_speed)/10, velocity) else velocity_by_aim(id, -get_pcvar_num(cvar_speed), velocity) fm_set_user_velocity(id, velocity) } } } } #endif return HAM_IGNORED } stock fm_set_user_jump_velocity(index, jump_height) { static Float:velocity[3] pev(index, pev_velocity, velocity) velocity[2] = float(jump_height) set_pev(index, pev_velocity, velocity) return 1; } #if defined SUPPORT_BOT_TO_USE new Debug public client_putinserver(id) { if(Debug == 1)return new classname[32] pev(id,pev_classname,classname,31) if(!equal(classname,"player")) { Debug=1 set_task(0.0,"_Debug",id) } } public _Debug(id) { RegisterHamFromEntity(Ham_Touch,id,"cheese_player_touch") RegisterHamFromEntity(Ham_Player_PreThink,id,"cheese_player_prethink", 1) } #endif
[ 此文章被mr.wai在2010-08-19 21:44重新编辑 ]
|