黑枫叶冒险论坛

超级管理员

181

帖子

26

回复

1019

积分

楼主
发表于 2023-01-03 00:21:33 | 查看: 575 | 回复: 9

js脚本是什么?

js=javascript 是个网页上通用的脚本代码 虽然叫javascript 但是和java没有太大关系,在java中倒是可以很容易调用js脚本,并把内部函数暴露给js脚本


脚本目录的结构

item

目录 里的文件是id.js 当你使用或获取 物品的会执行对应id的脚本


quest

任务 对应的id.js  接到 任务 执行任务 完成对应的任务都可能触发对应的 脚本


event

这个的文件名随意,脚本内会指定触发的时间间隔等一些触发条件


npc

点击对应npc就会触发其中的脚本


portal

一般是到达某地图,登陆服务器等触发的事件,没固定名称,会根据 enter 函数 执行触发条件



这里只说下基本语法,和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

         }

    }

}


游客,如果您要查看本帖隐藏内容请 回复

普通会员

0

帖子

2

回复

4

积分
沙发
发表于 2023-07-10 20:43:40

1111111111111

普通会员

0

帖子

16

回复

27

积分
板凳
发表于 2023-09-08 09:17:35

66666666666666

普通会员

1

帖子

139

回复

30

积分
地板
发表于 2023-11-04 23:55:33
多谢大佬分享~~~~~~~~~~

普通会员

0

帖子

723

回复

64

积分
4#
发表于 2023-11-30 15:26:53
多谢大佬分享~~~~~~~~~~


普通会员

0

帖子

56

回复

16

积分
5#
发表于 2024-05-22 03:02:29

666666666666666666666

普通会员

1

帖子

78

回复

111

积分
6#
发表于 2024-06-07 23:15:48

谢谢分享,学习学习~受益良多   学习了

普通会员

1

帖子

78

回复

111

积分
7#
发表于 2024-06-07 23:15:51

谢谢分享,学习学习~受益良多   学习了

普通会员

1

帖子

78

回复

111

积分
8#
发表于 2024-06-07 23:15:51

谢谢分享,学习学习~受益良多   学习了

普通会员

0

帖子

26

回复

56

积分
9#
发表于 2024-10-18 12:55:55

谢谢分享,学习学习~受益良多   学习了


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

声明:本站一切资源均来自互联网分享,仅用于学习和研究请勿商业用途

版权所有 黑枫叶 V1.0 © 2023