【教程】【NPC】【AI-Walker】配合aiwalker创建一个NPC 新手教程

例子在此
#include <amxmodx>
#include <amxmisc>
#include <aiwalker>
#include <fakemeta_util>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#define PLUGIN_NAME"LB‘s NPC"
#define PLUGIN_VERSION"1.0"
#define PLUGIN_AUTHOR"LB"
new g_szmodel = { "models/ai/normal_zombie.mdl" }//模型路径
new g_modelid
new g_fTime
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_forward(FM_StartFrame, "fw_StartFrame_Post", 1)//fakemeta
register_clcmd("say /t","te")//创建NPC的命令
}
public plugin_precache()
{
g_modelid = precache_model(g_szmodel)
}
public te(id)
{
new Float<img src="static/image/smiley/default/shocked.gif" border="0" smilieid="6" alt=":o">rigin
new Float:g_fTime = 0.0
pev(id, pev_origin, origin)
origin += 40.0
for(new i=1;i<=40;i++)
{
new ientity = CreateAi(origin, "sb", g_modelid, { -16.0, -10.0, -36.0 }, { 16.0, 10.0, 36.0 }, 200.0, 200.0, 0.1, 5.0, 75.0, 6.0, 0.01, 2.0, 3)//NPC属性(例:生命,速度,详情见下面INC)
SetAiAnim(ientity, 0, 2, 3, 4, { 5, 6, 7 })//NPC模型动作(不懂就用小飞本来的僵尸模型,然后这个直接复制)
}
}
public fw_StartFrame_Post()
{
if (get_gametime() - g_fTime > 2.0)
{
g_fTime = get_gametime()
}
}
源码完
以下节选自AI-Walker.inc
{
/*
以下是自定义pev,只是为了用起来方便,用原来的pev值也无所谓
AI静止动作:pev_idle
AI移动动作:pev_move
AI跳跃动作:pev_jump
AI攻击动作:pev_attack
AI死亡动作:pev_die
AI名字:pev_ainame
AI最大生命:pev_max_health
AI最大速度:pev_maxspeed
AI重力:pev_gravity
AI队伍:pev_team
AI攻击伤害:pev_damage
AI攻击范围:pev_distance
AI攻击速度:pev_attackrate
AI反应时间:pev_thinkrate
AI播放死亡动作的时间:pev_dyingtime
*/
/*以下是数据接口---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
//获取该实体是否是AI
native bool:IsAi(iEntity)
//创建一个AI(创建坐标,AI名字,AI模型缓存索引,AI体型Max,AI体型Min,AI最大生命,AI最大速度,AI重力,AI伤害,AI伤害距离,AI攻击速度,AI反应时间,AI播放死亡动作的时间,AI队伍),返回AI的实体索引
native CreateAi(Float<img src="static/image/smiley/default/shocked.gif" border="0" smilieid="6" alt=":o">rigin, AiName, modelindex, Float:maxhull, Float:minhull, Float:maxhealth, Float:maxspeed, Float:gravity, Float:damage, Float:distance, Float:attackrate, Float:thinkrate, Float:dyingtime, team)
//设置该AI实体的动作(ID索引, 静止动作, 移动动作, 跳跃动作, 攻击动作, 死亡动作)
native SetAiAnim(iEntity, idle, move, jump, attack, die)
/*
在创建AI的时候设置动作就可以了
new modelindex
public plugin_precache() modelindex = engfunc(EngFunc_PrecacheModel, "models/zombie.mdl")
makezombie()
{
new Float:MAX_HULL, Float:MIN_HULL
MAX_HULL = -16.0
MAX_HULL = -10.0
MAX_HULL = -36.0
MIN_HULL = 16.0
MIN_HULL = 10.0
MIN_HULL = 36.0
new iEntity = CreateAi(origin, "SB僵尸", modelindex, MAX_HULL, MIN_HULL, 100.0, 240.0, 1.0, 5.0, 70.0, 1.0, 0.5, 2.0, 1)
SetAiAnim(iEntity, 1, 2, 3, 4, {5, 6, 7})
}
*/
//移除该名字的所有AI
native RemoveAi(const ainame)
//移除所有AI
native RemoveAllAi()
//获取该名字的所有AI数量
native GetAIAmount(const ainame)
//获取所有AI的数量
native GetAllAIAmount()
//播放AI的动作
native SendAiAnim(iEntity, anim)
}

在此感谢
@我是那鸡
@小飞CS
大神别吐槽,此帖给新手看。



吧主给个精呗!

@MS一B



分类