易码技术论坛

 找回密码
 加入易码
搜索
楼主: laugj

请求统一RPG的脚本语言

[复制链接]
 楼主| 发表于 2004-11-27 12:18:00 | 显示全部楼层
有同感!我根本查找不到仙剑1的资料(详细的那种,详细的装备介绍啊,技能介绍啊,或者剧情全览)
痛苦ing
难度很大!!!!!!!
发表于 2004-11-27 16:54:00 | 显示全部楼层
我新仙剑玩了6遍了(都是为了玩隐藏结局,后来家里上网了,干脆去下载了一个存档!呵呵),什么资料可以问我啊!小弟我定当竭力!
QQ:392581918
发表于 2004-11-30 17:58:00 | 显示全部楼层
我在外地求学,资料在家里,这个要放假了...........
楼上的先帮帮楼主吧,寒假时在帮你们...........
先加偶的QQ吧175523973
 楼主| 发表于 2004-12-1 11:47:00 | 显示全部楼层
谢谢了![em07]
我先在引擎,剧情以后写了呵
发表于 2004-12-6 02:19:00 | 显示全部楼层
楼主,虽然偶是支持了,但你等不能把MU先弄出来,不要等到偶大学才能玩到你的大作,想下都恐怖0..................
 楼主| 发表于 2004-12-7 12:26:00 | 显示全部楼层
不知道怎么说好嘛,原来是想做MU的,由于装备嘛!可是只有装备......
剧情怎么办,真的不想耗费时间和精力到一个不可能做的出色的游戏-->MU
真的不好意思,原来的想法也是有缺陷咯,因为玩情怨的五灵阵 反复的遇到怪物快要我发狂了!所以连仙我也打算做的一张地图都限量的怪物,都打完了就需要出去换个地图在回来继续打,不然会非常无聊!~~~~....dX,.xb....
发表于 2004-12-7 15:56:00 | 显示全部楼层
限量的怪物,,这个想法好啊
发表于 2004-12-7 19:19:00 | 显示全部楼层
恩~~像轩辕剑四一样
发表于 2004-12-10 20:56:00 | 显示全部楼层
。。。大伙还真都来劲。。?都做游戏?
 楼主| 发表于 2004-12-10 22:35:00 | 显示全部楼层
晕晕,那就先锁了这贴吧,反正脚本我自己心中已经有数了, 此贴也为一时糊涂而发毫无意义[em06]
发表于 2004-12-10 22:36:00 | 显示全部楼层
呵呵~~我是观众,凑热闹滴~
发表于 2004-12-10 22:40:00 | 显示全部楼层
大家继续,好点子就是这样讨论出来的^_^
发表于 2004-12-11 14:05:00 | 显示全部楼层
还是老话……

别试图完美移植……

[此贴子已经被作者于2004-12-11 14:09:40编辑过]

 楼主| 发表于 2004-12-14 22:39:00 | 显示全部楼层
我"尽力"完美移植呦~呵呵呵呵呵呵
发表于 2004-12-14 23:56:00 | 显示全部楼层
偶就“尽力”帮你哦呵呵~~
 楼主| 发表于 2004-12-23 23:58:00 | 显示全部楼层
首先,脚本的运行方法:
假设有3个npc
那么每个NPC有个STATE状态和STAGE阶段(剧情进行的阶段)
STATE影响着NPC的状态,比如隐身等
STAGE则影响NPC的剧情脚本
STAGE为0时脚本是一段
为1时是另一段,虽然可以共享脚本,但正常是每个STAGE的数字代表一段脚本,随着更改STAGE的值,NPC做出的动作就各不相同
OFFSET:
偏移量,可正可负,不同的命令中有不同的指针基准(base)
比如LOAD命令是在玩家所有属性信息的指针PLAYER的基础想增加,负数则为一块256字节的可用空间
如次类推不加详细说明
寄存器:
A与B,虚拟的寄存器
用语运算:
A-B可以运算,如何运算B-A?
答:先SWAP即可
能判断A>B否怎么判断B>A?
答:先SWAP即可
总之SWAP配合各种运算可以达到所有效果

脚本语法
1 TALK  TALK "LEN=256"[,ICO][,MODE]  ;对话 例: TALK "你好你好!",1,0 //0在上面,1在下面,2全屏显示,3全屏滚屏速度1,4全屏滚屏速度2,5全屏滚屏速度3
2 MESSAGE  MESSAGE "LEN=20"   ;消息 例: MESSAGE "得到'蜂王密'" //根据字符长度的不同,框架大小就不同
3 ADDITEM  ADDITEM <ID>[,COUNT]   ;添家装备 例: ADDITEM 2,20 //增加ID为2的装备20件
4 CHKITEM  CHKITEM <ID>    ;检测装备 例: CHKITEM 2 //检测玩家有多少件ID为2的装备,结果送至寄存器A
5 DELITEM  DELITEM <ID>[,COUNT]   ;删除装备 例: DELITEM 2,10 //删除10件ID为2的装备
6 RESITEM  RESITEM <CHAR>    ;复位装备 例: RESITEM 0 //把李逍遥身上穿的装备清楚
7 SETITEM  SETITEM <ID>,<LOCATE>,<CHAR>  ;装备装备 例: SETITEM 2,1,0 //把ID为2的装备装在李逍遥'手'上(比如刀~剑)
8 ADDSKILL ADDSKILL <ID>,<CHAR>   ;添加法术 例: ADDSKILL 8,1 //让赵灵儿学会ID为8的法术
9 CHKSKILL CHKSKILL <ID>,<CHAR>   ;检测法术 例: CHKSKILL 0,0 //检测李逍遥是否学会了'治疗述'
10 RESSKILL RESSKILL <CHAR>    ;复位法术 例: RESSKILL 1 //将赵灵儿的法术全部清楚掉
11 JUMP  JUMP <OFFSET>[,OFFSET2...]  ;跳转语句 例: JUMP label1 /*直接跳到label1处*/ JUMP label1,label2 /*随机跳到label1或label2*/
12 RNDNUM  <RANGE>     ;随机数字 例: RNDNUM 50 //生成0-50的数字送到寄存器A
13 SWAP  SWAP     ;寄存器调换 例A=600000,B=80000) SWAP (A=80000,B=600000)
14 ADD  ADD     ;加法运算 A+B->A 例A=600000,B=80000) ADD (A=680000,B=80000)
15 SUB  SUB     ;减法运算 A-B->A 例A=600000,B=80000) SUB (A=520000,B=80000)
16 MUL  MUL     ;乘法运算 A*B->A 例:(A=60,B=8) SUB (A=480,B=8)
17 DIV  DIV     ;除法运算 A/B->A 例:(A=40,B=8) DIV (A=5,B=8)
18 COPY  COPY     ;复制运算 A=B 例:(A=20,B=60) COPY (A=60,B=60)
19 SET  SET <NUM>[,SIZE]   ;设定寄存器A A=? 例:SET 5000,2 //将5000这个数字以int形式存与寄存器A中
20 LOAD  LOAD <OFFSET>[,SIZE]   ;读取数据 A=(?) 例OAD +4,2 //将当前地图的id以int格式发送到寄存器A中(在角色信息的地址基础上的偏移量,是什么要根据程序中的排列数据决定)
21 SEND  SEND <OFFSET>[,SIZE]   ;送数据 (?)=A 例OAD +4,2 //将当前寄存器的值以int形式发送到当前人物的地图上(在角色信息的地址基础上的偏移量,是什么要根据程序中的排列数据决定)
22 BIG  BIG <OFFSET>    ;判断A>B? 例:BIG label1 //A>B就跳转到label1否则继续
23 EQUAL  EQUAL <OFFSET>    ;判断A=B? 例:EQUAL label1 //A=B就跳转到label1否则继续
24 DELAY  DELAY <MS>    ;延时 例ELAY 150 //延时150毫秒
25 END  END [MODE]    ;结束脚本 例:END 0 //0.结束脚本退回游戏中玩家的操作 1.显示战斗失败 2.直接重新开始 3.通关
26 BATTLE  BATTLE <ARRARY>,<BACKGROUND_ID>  ;进入战斗状态 例:BATTLE 5,-1 //5是预定好的id为5的怪物组合方式,组合方式人为编写,-1为默认当前地图的背景图片,
27 SHOW  SHOW <CHAR>    ;激活人物 例:SHOW 1 //让赵灵儿出现(赵的ID=1,李=0,林=2,阿奴=3,后期巫后替换林的位置)
28 HIDE  HIDE <CHAR>    ;隐藏人物 例:HIDE 1 //让赵灵儿消失(但不清楚其属性等信息)
29 INKEY  INKEY     ;等待按键 例:INKEY //键值送到寄存器A中
30 PLAY  PLAY <OFFSET>,<MASK?>,<X>,<Y>,<W>,<H>,<MS>[X,Y,W,H,MS] ;播放动画 例LAY 0,0,0,0,160,80,100,0,0,160,80,100,0,0,160,80,100 //播放在图库的0偏移量的3张全屏图片连续组成的动画,每张图片显示完后延时100毫秒
31 AUTO  AUTO <DIRECTION>,<STEP>,<SCREEN> ;让玩家自己走动 例:AUTO 0,5,1 //让主角向上走5步,SCREEN为1时拖屏,0时屏幕不动,人物可以走出去(不会有BUG出现),3时视角跟着主角移动
32 SETPLAYER SETPLAYER <OFFSET>,<LEN>  ;更换玩家在地图上的MASK图片 例:SETPLAYER +768,768 //将16x16图库偏移768字节的数据暂时当作当前的人物MASK图片
33 RESPLAYER RESPLAYER    ;还原玩家MASK图片 例:RESPLAYER //顾名思义,还原到正常状态
34 SETSTATE SETSTATE <NUM>,<NPC>   ;设置NPC状态 例:SETSTATE 2,1 //将ID为1的NPC状态值设为2(0为可走上去,不激活脚本,1为不可以走上去,按输入激活脚本,2为不可走上去,在往上面走一步后激活脚本(人物不走上去,在NPC旁边继续想那方向走就激活脚本),3为可以走上去,人走上去后在激活脚本0)
35 SETSTAGE SETSTAGE <NUM>,<NPC>   ;设置NPC阶段 例:SETSTATE 1,0 //将ID为0的NPC阶段值设为1(阶段值不同 NPC激活的脚本的位置就不同)
36 BUY  BUY <ID>[,ID,ID...]   ;出现购买窗口 例:BUY 2,3,4,5,6 //出现ID为2、3、4、5、6的装备,以够玩家选择
37 SELL  SELL     ;出现当铺窗口 例:SELL //出现自己的装备栏 和一价钱栏
38 SETBLOCK SETBLOCK <OFFSET>,<NPC>   ;设置NPC的block图片 例:SETBLOCK +1536,0 //将ID为0的NPC在地图上显示的图片换为16x16图片库的+1536字节所在的数据(即使当前NPC就在视线内,也不即时发生变化)
39 RESCREEN RESCREEN    ;恢复屏幕 例:TALK "呵呵" INKEY RESCREEN //先出现对话框'呵呵',等待按键后恢复地图状态(TALK功能使用前会根据是否已经恢复过屏幕而重新拷贝屏幕,能用到RESCREEN功能的命令还有MESSAGE和PLAY等)
40 SETMAP  SETMAP <ID>,<X>,<Y>,<DIRECTION>  ;更换地图 例:SETMAP 2,3,3,1 //转换到第3张地图上的x:3,Y:3位置上,玩家方向想右
41 DEBUG  DEBUG     ;进入调试状态 例EBUG //运行后会出项类似WQXHEX的界面,当程序中 IS_DEBUG为-1时可以使用,否则无效
发表于 2004-12-24 00:03:00 | 显示全部楼层
先问问你脚本所占RAM有多少?
 楼主| 发表于 2004-12-24 11:36:00 | 显示全部楼层
RAM有2k
 楼主| 发表于 2004-12-24 11:38:00 | 显示全部楼层
加一条:
42 GETSTAGE GETSTAGE <NPC>    ;得到NPC的STAGE值 送至A 例:GETSTAGE 8 //得到ID为8的STAGE值送到A
发表于 2004-12-24 11:43:00 | 显示全部楼层
内存占用上控制的还不错。
努力吧……期待大作。
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-20 01:42 , Processed in 0.016275 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表