楼主: crazyforyou

【授人以渔】 转载 长篇基础技术介绍——JS NPC脚本篇

 

该用户从未签到

初级会员

枫币
405
威望
0
贡献
0
在线时间
59 小时
注册时间
2020-8-13
发表于 2021-8-8 10:12:28 | 显示全部楼层
撒大啊阿斯顿撒
  • TA的每日心情
    无聊
    2021-1-20 14:51
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    新人上路

    枫币
    119
    威望
    0
    贡献
    0
    在线时间
    7 小时
    注册时间
    2021-1-11
    发表于 2021-8-8 10:56:28 | 显示全部楼层
    想學來看看 謝謝大大
  • TA的每日心情
    开心
    2021-8-8 16:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    新人上路

    枫币
    31
    威望
    0
    贡献
    0
    在线时间
    0 小时
    注册时间
    2021-8-8
    QQ
    发表于 2021-8-8 16:10:12 | 显示全部楼层
    7 77777777777777777777777777

    该用户从未签到

    新人上路

    枫币
    28
    威望
    0
    贡献
    0
    在线时间
    2 小时
    注册时间
    2019-5-4
    QQ
    发表于 2021-8-12 08:28:03 | 显示全部楼层
    123213213213

    该用户从未签到

    新人上路

    枫币
    7
    威望
    0
    贡献
    0
    在线时间
    0 小时
    注册时间
    2021-8-4
    发表于 2021-8-12 10:23:21 | 显示全部楼层
    学会了吗
    回复

    使用道具 举报

    该用户从未签到

    新人上路

    枫币
    15
    威望
    0
    贡献
    0
    在线时间
    2 小时
    注册时间
    2021-8-12
    QQ
    发表于 2021-8-13 12:47:29 | 显示全部楼层
    66666666666666666666666666
  • TA的每日心情
    开心
    2021-8-15 08:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    新人上路

    枫币
    25
    威望
    0
    贡献
    1
    在线时间
    0 小时
    注册时间
    2021-8-15
    发表于 2021-8-15 08:41:03 来自手机 | 显示全部楼层
    学习一波
    回复

    使用道具 举报

    该用户从未签到

    新人上路

    枫币
    80
    威望
    0
    贡献
    0
    在线时间
    9 小时
    注册时间
    2021-8-5
    QQ
    发表于 2021-8-15 20:58:58 | 显示全部楼层
    111111111111111111111

    该用户从未签到

    新人上路

    枫币
    7
    威望
    0
    贡献
    0
    在线时间
    1 小时
    注册时间
    2021-8-16
    QQ
    发表于 2021-8-16 10:18:48 | 显示全部楼层
    js脚本是什么? js=javascript 是个网页上通用的脚本代码 虽然叫javascript 但是和java没有太大关系,在java中倒是可以很容易调用js脚本,并把内部函数暴露给js脚本  脚本目录的结构 item 目录 里的文件是id.js 当你使用或获取 物品的会执行对应id的脚本  quest 任务 对应的id.js  接到 任务 执行任务 完成对应的任务都可能触发对应的 脚本  event 这个的文件名随意,脚本内会指定触发的时间间隔等一些触发条件  npc 点击对应npc就会触发其中的脚本  portal 一般是到达某地图,登陆服务器等触发的事件,没固定名称,会根据 enter 函数 执行触发条件  js的书写语法 完整的js教程看http://www.w3school.com.cn/js/index.asp  这里只说下基本语法,和java 较类似 大括号 是用来表示开始和结束的,一般在每个函数,if,for ,while ,switch的时候都要表明开始很结束 分号,一句话执行后都要用分号来表示这句话结束了 例子: var status;分号,一句话结束了 function start() {     status = -1; }大括号开始很结束  if(status==1) {im.dispose();} else {}大括号  switch (selection) {             case 0:                 im.warp(100000000, 0);                 break; default: break;}//大括号  //和/**/这个是注释,//表示后面到换行前的都是废话,没任何作用  /*   这里面的都是废话,包括换行  指导遇到后面那个 */  关键字介绍: var 是申明变量,一般是是存放状态的,一般都会声明 全局变量 var status;用来 保存我是点到第几级菜单了,或者第几次点击这个npc了 例如: var status; function 是说这是和函数 后面添函数,一般都有固定的函数名要求,后面是一个括号,里面是参数列表,也一般是固定的,名称是随意的,但顺序是很重要的,这里的参数是你这里在这个函数内使用的,一般是服务端在接收后,把一些他知道的消息告诉你,就算没有参数,你也要来个括号 例如 function start() {     status = -1; }  作用域介绍: 一般我这里只说函数内和函数外,你函数内的var 申明的变量,只能在这个函数里让他的值,如果你在函数外声明的,在所有函数都可以修改,查看他的值  函数调用: 脚本里的函数和变量除了你可以在这个脚本里看得到的以外其他的都是服务端已经定义好的。 函数就是一些代码的集合 比如: function start() {     status = -1;     action(1, 0, 0);//这里,我调用了下面定义的action函数,他是有3个参数的,我这里也要写3个参数,参数可以是变量比如status或者直接是常量,1,0这些 }  function action(mode, type, selection) {}  函数的返回值: 在一个函数里你可以返回一个数给调用函数的那个东西比如x=action(1,0,0);就是把action返回值给x 如何写返回值 就是在函数体内,写 return 返回的东西; 不返回,但是要退出函数就return 比如 function action(mode, type, selection) {return 1;}//返回1这个数 注意,return 以后,这个函数后面的代码不会再执行了  常见的符号  = 赋值,就是把右边的东西,拷贝都左边 比如 status = -1; + - * / 数学运算加减乘除 ()这个一般把一堆的东西搞成一个集合,比如函数定义和函数调用的时候,还有在for if switch while结构的时候都会出现, 还有就是像我门在四则运算里,它可以让某个算式先算 .是对类函数调用时候先指定对象,再指定 函数, 我门一般就用到cm im两个  ++ 自加1相当于 x=x+1;   ++在变量前还是后是有区别的,但是作为新手不用管 双引号 说明里边是字符,字符必须上双引号如x="#r Welcome" -- 类似上面的相当于 x=x-1;  == 判断左右是否一样,如果一样就返回true,否则false ,如果是true,在判断语句中就会进到分支里 != 判断左右是否不一样  >  >=   <= < 一看就知道是啥  再介绍两个逻辑运算的 || 或 &&与   高中数学中的简单 逻辑学过我们都知道 或 与是啥了 , 这两个一般只对 前面几个判断结果的 再次运算 x==1 || x==2 这个就是x是一或二 x>1&&x<5 这个就是 1<x<5  常见的控制结构: 顺序结构: 就是一条条代码用分号不停写下去,分号后面换不换行是无所谓的函数为了看起来好看点,换行是必要的  分支判断: if判断 最常用结构 if(x==1){y=1;} //像这样,先判断 x是否为1 如果是 1 ,就y变成 1 , 实际的话 if(cm.getJob()==1) { cm.sendSimple("是这个职业哦!");}  另外常用的是if(x==1){y=1;}else {y=2;} 这个和上面不同的是如果x不是1,那么y就要变成2 实际的话 if(cm.getJob()==1) { cm.sendSimple("是这个职业哦!");}else{ cm.sendSimple("不是这个职业哦!");}  另外还有一种 就是很多判断 ,我建议如果是对一个变量的多值判断用switch if(x==1){y=1;}else if(x==2){y=2;} else if(x==3){y=3;}else {y=4};  switch 判断 这个就是对某一个值判断他到底是多少 1 还是 2 还是 3;或者其他 基本结构 switch(x) { case 1:y=1;break;//这个不用加大括号,但是结尾要加break case 2:y=2;break; default :y=2;break;//default 这个就是前面所有没出现的情况 } 我们来看一段实际的代码 switch (selection) {             case 0:                 im.warp(100000000, 0);                 break;             case 1:                 im.warp(101000000, 0);                 break;             case 2:                 im.warp(102000000, 0);                 break;             case 3:                im.warp(103000000, 0);                 break;  } 这段就是先判断 selection,按照他不同的值,触发不同 事件  循环 我看一般没什么在脚本出现就不讲了  好了 看个实际的脚本讲解下   //看到没有,开始的注释 /*         脚本类型:                 传送NPC            修改:                     一纸离人醉丶            技术指导:              芬芬时尚潮流 */ var status = 0; //常见的全局变量  function start() {//关于函数的 名称 被服务端调用的时机 以及形参,我会在下个帖子讲     status = -1;//函数赋值     action(1, 0, 0);//调用函数 }  function action(mode, type, selection) {     if (status == 0 && mode == 0) { //判断 与         cm.dispose(); //调用类对象的函数 cm对服务端有的函数,你把它当成已经声明的变量使用         return;//返回     }     if (mode == 1) {         status++; //加加     } else {         status--;//减减     }     if (cm.getMapId() == 180000001) {              cm.sendOk("很遗憾,您因为违反用户守则被禁止游戏活动,如有异议请联系管理员.")             cm.dispose();         }      else if (status == 0) {         var selStr = "#L0#黄金祭坛#L1#苦难之屋"; //格式文本之后将         cm.sendSimple(selStr);     } else if (status == 1) { //这个就是嵌套的if 多值判断         switch (selection) { //switch判断         case 0:             if (cm.getPlayer().getLevel() > 80) {                 cm.warp(252030100);             } else { //简单的if                 cm.sendOk("你的等级小于80,不能进入 请练级");             }             cm.dispose();             break; //break要记得         case 1:             if (cm.getPlayer().getLevel() > 80) {                 cm.warp(252020700);             } else {                 cm.sendOk("你的等级小于80,不能进入 请练级");             }             cm.dispose();             break; //可不要default          }     } }

    该用户从未签到

    新人上路

    枫币
    64
    威望
    0
    贡献
    0
    在线时间
    19 小时
    注册时间
    2021-8-12
    发表于 2021-8-21 00:07:22 来自手机 | 显示全部楼层
    谢谢楼主
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    枫叶物语即使倒闭也绝对不会变质
    Copyright © 2001-2013 Discuz Team. Powered by Discuz! X3.5 |网站地图 | 本站已运行: