开头: // 炼铁狱
任务名称 int Rule = 4;
阵营? int RoundTime = 99;
游戏时间 int PlayerSpawn = 3;
出生点 int PlayerSpawnDir = 100;
面对的角度 int PlayerWeapon = 16;
主要武器 int PlayerWeapon2 = 55;
副武器 int PlayerHP = 5000;
生命值 下面讲解一下int. int可以看做是产生或者设定一个代码的数值,一般设定为0,当然除了上面的那些之外. int设定的代码很多,下面一一进行讲解. int trg* = 0;*为数字, 这个是一个任务过程的总条件.什么意思那?就是讲一个任务过程,包括对话,使用道具,设定NPC任务的一段任务的条件,当符合这个条件的时候任务才会启动.当然这是一个总条件,一个任务过程还有副条件.下面再讲解副条件. int timer* = 0;*为数字 这个是时间代码,也就是一个计时器,当一段任务过程结束后,可让timer*加上一定的数值,数值按秒计算.然后在下一个任务过程的总条件内设定timer*时间结束now&timer*,于是当时间过完后,下一个任务则自动启动(当然如果副条件不符合也是不会启动的.) int reborn = -1; string rebornN 这两个必须同时出现,是设定NPC复活的总条件,其实并没有太多需要讲解的,只要记住如果想让NPC自动复活,就要讲这段代码放到int timer*=0后面(为什么要放在这个后面那?因为NPC自动复活和timer*是密不可分的). 其他暂未研究. 这是最上面的一段int,在OnUpdate()下面还有一段int. int c*;*为数字 这个是设定NPC的名称代码,后面要详细讲到,总之一个任务过程里同时需要几个NPC,就要设定几个int c*. int now = GetGameTime(); 这个是在有timer*的时候需要设定的,总之也是在有timer*的时候记着设定上就行了.. 下面分析讲解一下一个任务过程. if (trg* == 0) 这个就是总条件,其实不一定是这个,还有可能包括其他的,比如timer*(now&timer*),或者同时两个总条件,不过记住,如果条件是2个或者2个以上,就要用&&分开. c = GetChar("XX");或者c = GetAnyChar("XX"); 这个是设定某个名称为XX的NPC为一个代码,然后才能进行下一步的设定.这两个代码作用不同. GetChar只能读取生命值&=0的,如果NPC死亡就不能读取.GetAnyChar可以读取生命值&=0的. if (c &= 0) 此处的可不同于最前面的,这是副条件,包括NPC是否存活或者是否在,还有其他附属条件.包括条件有: c* &= 0,某个NPC是否加入.如果加入数值为1,未加入为-1 GetEnemy(c)==player,得到c这个电脑锁定的人为玩家player(或者设定为NPC也行,同样也是c*) GetHP(c)&GetMaxHP(c)/*,得到c(或者玩家player)的生命值小于最大生命值的*分之一. GetHP(c)&*,得到c(或者玩家player)的生命值小于或者大于*(注意,*这个数值是正常生命的10分之一,比如1000,游戏里就是100,依此类推). Distance(0, 1)&200,得到0和1的位置小于200,不过在if()上面需要这么设定: SetTarget(0, "char", c*或者player); SetTarget(1, "char", player或者c*); 这个条件是讲如果电脑与玩家或者电脑与电脑的横坐标的绝对值的和(貌似是的..) GetTeam(c),得到c(或者玩家player)的队伍,未分队则为0,流星为1,蝴蝶为2 下面就是任务过程的最重要的过程部分了. Perform(c, "xx", xx);,指定NPC做动作,包括: say,说话,Perform(c, "say", "哈哈!");,说得话要用" "引起来. use,使用,Perform(c, "use", 8);,,具体使用的道具请查询道具编码. pause,停顿,Perform(c, "pause", 2);,就是说在运行的过程中,停顿一下,比如玩家与NPC对话,就需要停顿,让对方说完再运行说话.数值按秒计算. faceto,面对,Perform(c, "faceto", player);,可以不设定为player,可以设定为c*. aggress,做挑衅动作,Perform(c, "aggress");. attack,攻击,Perform(c, "attack");,指定做出攻击动作. guard,防御,Perform(c2, "guard", 145);,数值按秒计算. PlayerPerform("xx", xx),指定玩家做出动作,与NPC一样,我只说一下不一样的 block,锁定屏幕,PlayerPerform("block", 1);,1为所住,0为解开. crouch,蹲下,PlayerPerform("crouch", 1);,1为蹲下(保持),0为解开. 其他过程: AddNPC("npc10_05");,加入电脑,注意文件名称. RemoveNPC(c);,移除NPC,注意要与Get(Any)Char同时使用. ChangeBehavior(c, "kill", player);改变NPC的设定.包括一下几种: ChangeBehavior(int id, "wait");NPC在原地做警戒. ChangeBehavior(int id, "idle");NPC在原地不动. ChangeBehavior(int id, "run");NPC在出生点附近乱跑(大多是绕圈圈)。 ChangeBehavior(int id, "follow", string name/ int id); NPC跟随到指定人物[人物参照GetChar()函式]或是指定ID人物. ChangeBehavior(int id, "patrol", int waypoint1, int waypoint2..); NPC在所规定的巡逻点实施巡逻. ChangeBehavior(int id, "attacktarget", int idx, int a); NPC不顾一切的跑到IDX的目标位置,若a为不存在则为跑到目标位置,a值大於0则到目标位置实施攻击. ChangeBehavior(int id, "Kill", string name/ int id); NPC追杀指定人物[人物参照GetChar()函式]或是指定ID人物,若为同队则同於"follow"副指令. 在设定完这些后,记着要让trg*=1或者更高,这样可以避免过程再度重复.另外如果是一个与之相关联的过程,可以让总条件设定为trg*=1,结束为trg*=2,依此类推. 另外,如果要设定timer*,可以在trg*下面设定timer* = now *; 复活设定: if (总条件,随意设定) { c = GetAnyChar("XX"); if (c&=0 && GetHP(c)&=0) { reborn = rebornName = "NPC的文档名称"; trg* = 1; timer* = now *;
此处的数值随意写,按秒算. } 然后下面再设定 if (trg* = 1 && now&timer*) { RemoveNPC(reborn); timer* = now *; trg* = 2; } if (trg*==2 && now&timer*) { AddNPC(rebornName); trg* = 0;
等于0后就可以反复 } 以上就是本人了解的单机任务的设定,还有部分没有了解到,如果有什么错误的地方希望大家提供一下. 高手就表砸偶了 注:实际上那些Int 后面的代码名称可以随意,个人爱好不同,修改时可以随意,不过千万别混了…… 可能不太清楚,见谅
楼主发言:2次 发图:0张 | 更多
星蝶遗迹网:http://www.lxhudiej.icoc.cc/ 提供《流星蝴蝶剑》最新资源下载站。