JS教学,如何整理制作NPC对话的文字
发布时间:2015-5-6 阅读指数:
今天介绍,属性文本 就是带有各种效果的文字 ,比如可以点的,有颜色的,下划线的等等
这篇带图,顺便把上篇各种对话框说明下
一个不需要指定任何状态的NPC
function start() {
cm.sendOk("I am an NPC without a status.");
cm.dispose();
}
因为不需要状态 直接start 调用就可以
另外一个例子
function start() {
cm.sendOk("Here is another example of an NPC without status.");
}
function action(mode, type, selection) {
cm.warp(100000000, 0);
cm.gainItem(4001126, 1);
cm.sendOk("See? Here, I warped you and gave you an item without using status.");
cm.dispose();
}
点了以后,传送,获得物品,再讲话,结束
属性文本
#b = Blue text. 蓝色文本,在这之后的字在没设置其他属性下为蓝色字
如 #b 蓝色字
#c[itemid]# Shows how many [itemid] the player has in their inventory.
显示玩家背包里的道具数量
如 #c1002357#
#d = Purple text. 紫色字体 颜色之间一起用以最后一个为准
#e = Bold text. 粗体
如 #b #e 蓝色粗体字
#f[imagelocation]# - Shows an image inside the .wz files.
显示wz文件中的图片指定路径 可以是物品 技能 地图等等
#g = Green text. 绿色字体
#h # - Shows the name of the player. 显示玩家名称
如 [#h#]你好
#i[itemid]# - Shows a picture of the item.
显示 物品 图片
#k = Black text. 黑色子图
#L[number]# Selection open.
#l - Selection close.
这两个连用
#L0#这是选项1#l
#m[mapid]# - Shows the name of the map.
显示地图名称
#n = Normal text (removes bold).
恢复正常字体
#o[mobid]# - Shows the name of the mob.
显示 怪物名称
#p[npcid]# - Shows the name of the NPC.
显示npc名称
#q[skillid]# - Shows the name of the skill.
显示技能名称
#r = Red text. 红色字体
#s[skillid]# - Shows the image of the skill.
显示技能图片
#t[itemid]# - Shows the name of the item.
显示物品名称
#v[itemid]# - Shows a picture of the item.
显示物品图片 和前面的i可能相同
#x - Returns "0%" (need more information on this).
#z[itemid]# - Shows the name of the item.
显示物品名称,和前面t同
#B[%]# - Shows a 'progress' bar.
显示进度条
#F[imagelocation]# - Shows an image inside the .wz files.
同前面f
\r\n - Moves down a line. 换行
\r = Return Carriage
\n = New Line
\t = Tab (4 spaces) 制表符 4个空格
\b = Backwards 回退
这里又把前面说一次
dispose
结束对话允许再次对话
Ends the conversation with an NPC, allows you to talk to NPCs again.
How to use: cm.dispose();
sendNext
有下一个的窗口
Shows a conversation window with a 'Next' button.
How to use: cm.sendNext("[text]");
sendPrev
有上一个的窗口
Shows a conversation window with a 'Prev' (previous) button.
How to use: cm.sendPrev("[text]");
sendNextPrev
Shows a conversation window with a 'Next' and 'Prev' button (see above).
How to use: cm.sendNextPrev("[text]");
sendOk
Shows a conversation window with an 'Ok' button.
How to use: cm.sendOk("[text]");
sendYesNo
Shows a conversation window with a 'Yes' and 'No' button, 'No' ends the conversation unless otherwise stated.
How to use: cm.sendYesNo("[text]");
sendAcceptDecline
有确认取消的窗口
Shows a conversation window with an 'Accept' and 'Decline' button. 'Decline' ends the conversation unless otherwise stated.
How to use: cm.sendAcceptDecline("[text]");
sendSimple
没有东西的窗口,但是实际是有下一个的
有代码
if (!text.contains("#L")) {
sendNext(text);
return;
}
文本如果没有包括"#L"就是那个有选项的就有Next
Shows a conversation window with no buttons.
How to use: cm.sendSimple("[text]");
sendStyle
带风格的窗口,一般不常用有需要的风格变量
Shows a style-select window.
How to use: cm.sendStyle("[Text]", [variable]); // You'll need to declare the variable in a Var statement.
warp
传送 ,第二个参数 是0的话用默认的传送点
Warps the player to a map.
How to use: cm.warp([mapid], [portal]); // Set [portal] as 0 if you want default.
openShop
Opens a shop window.
How to use: cm.openShop([shopid]);
haveItem
Checks if the player has an item (in their inventories or equipped).
How to use: cm.haveItem([itemid]);
gainItem
Gives the player an item/takes an item from a player.
How to use: cm.gainItem([itemid],[ammount]); // Change [ammount] to -[ammount] to take an item.
changeJob
Changes the job of the player.
How to use: cm.changeJob([jobid]);
getJob
Finds out what job the player has.
How to use: cm.getJob();
startQuest
Starts a quest.
How to use: cm.startQuest([questid]);
completeQuest
Finishes a quest.
How to use: cm.completeQuest([questid]);
forfeitQuest
Forfeits a quest.
How to use: cm.forfeitQuest([questid]);
getMeso
Finds out how many mesos a player has.
How to use: cm.getMeso();
gainMeso
Gives a player mesos/takes mesos from a player.
How to use: cm.gainMeso([ammount]); // use -[ammount] to take mesos.
gainExp
Gives a player exp/takes exp from a player.
How to use: cm.gainExp([ammount]); // use -[ammount] to take exp.
getLevel
Finds out the level of the player.
How to use: cm.getLevel();
teachSkill
Teaches a player a skill.
How to use: cm.teachSkill([skillid],[skilllevel],[maxskilllevel]);
get[Stat]
Finds out the [Stat] of the player. [Stat] being: HP, MP, STR, DEX, INT, LUK.
How to use: cm.get[Stat]();
modifyNX
Gives/Takes the player nx
How to use: cm.gainNX([amount]);
Make it negative to make it take away.
send函数返回接收
-----------
sendNext(); & sendOk();
-----------
Type = 0
If end chat - mode = -1 结束对话后下次收到-1
If next/ok - mode = 1 按ok或下一个
-----------
sendNextPrev();
-----------
Type = 0
If end chat - mode = -1 结束对话
If next - mode = 1 下一个
if back - mode = 0 返回
-----------
sendYesNo();
-----------
Type = 1
If end chat - mode = -1
If yes - mode = 1
If no - mode = 0
-----------
sendAcceptDecline();
-----------
Type = 12
If end chat - mode = -1
If accept - mode = 1
If decline - mode = 0
-----------
sendGetText();
-----------
Nothing o____o its something special <3
-----------
sendGetNumber();
-----------
Type = 3
If end chat - mode = 0
if ok - mode = 1
-----------
sendSimple();
-----------
Type = 4
If end chat - mode = 0
if select - mode = 1 选择
这里再介绍 几个js的语法
数组
var x=[1,2,3];
访问就是 x[下标]
下表从0开始
x[0]就是1
比如
item = [4000313, 4001129, 4001126];
function start() {
cm.sendSimple("Which would you like? \r\n #L0# Golden Maple Leaf #l \r\n #L1# Maple Coin #l \r\n #L2# Maple Leaf #l");
}
function action(mode, type, selection) {
if (mode == 1) {
cm.gainItem(item[selection], 1);
}
cm.dispose();
}
可以避免 用switch
Math 是js的内部函数,见我前面那个贴的连接
var rand = Math.floor(Math.random()*100);
字典
var x={"x":1,"y":2};
访问和数组很象 x["x"]就是1
还有cm的一些函数返回本身是类的对象,直接继续点下去访问
如 cm.getPlayer().getJob()
本文来源于心动冒险岛(www.leyoucx.com),如需转载[JS教学,如何整理制作NPC对话的文字],请写明出处
上一篇:
科普单机冒险岛架设所需要的必备软件以及环境
下一篇:
如何给装备加上时间限制