千年脚本编写帮助
-
千年用的脚本是基于 Pascal语言,演化而来的,其中变量定义和函数的应用也十分的象,但不用为了写脚本而专门的去学 Pascal语言。
千年有三个常用的数据类型,String 字符串型,Integer 整型,Boolean 布尔型。
一个函数的基本结构是这样的:
procedure OnCreate (aStr : String);
var
定义变量
begin
语句
end;
在每个脚本的前面都会看到一堆函数,这些是千年的库函数,可以直接拿来使用的。例如:callfunc (aText: string) ,可以返回一些信息,具体返回什么由括号里面的 aText参数决定,这些参数在下面会给出。Random (aScope: integer),可以产生 aScope范围内的随机整数。
千年中有两个非常重要的函数,一个是 print,另外一个是 callfunc,用法和参数比较复杂。
/***********事件触发的函数**********/
//当有人靠近时
procedure OnApproach (aStr : String);
//当有人离开时
procedure OnAway (aStr : String);
//当受到掌风攻击时
procedure OnBow (aStr : String);
//当状态改变时
procedure OnChangeState (aStr : String);
//当初始创建时
procedure OnCreate (aStr : String);
//当被双击时
procedure OnDblClick(aStr : String);
//当死亡前
procedure OnDieBefore (aStr : String);
//当死亡后
procedure OnDie (aStr : String);
//当被拖放物品时
procedure OnDropItem (aStr : String);
//当得到命令消息时
procedure OnGetResult (aStr : String);
//当得到改变步长时
procedure OnGetChangeStep (aStr : String);
//当受到攻击时
procedure OnHit (aStr : String);
//当被左鼠标键单击时
procedure OnLeftClick (aStr : String);
//
procedure OnRegen (aStr : String);
//
procedure OnTimer (aStr : String);
//当物件发生翻转打开时,一般是用于门
procedure OnTurnOn (aStr : String);
//当物件发生翻转关闭时,一般是用于门
procedure OnTurnOff (aStr : String);
//当用户开始游戏时
procedure OnUserStart (aStr : String);
//当用户结束游戏时
procedure OnUserEnd (aStr : String);
//当移动时
function OnMove (aStr : String) : String;
//
function OnDanger (aStr : String) : String;
//产生一个随机数(系统函数)
function Random (aScope: integer): integer;
//返回指定参数的消息(系统函数)
function callfunc (aText: string): string;
//执行一条命令,可以是说话、传送、获得玩家的物品等(系统函数)
procedure print (aText: string);
具体参数(略),整理中...........
//转换字符串为整数(系统函数)
function StrToInt (astr: string): integer;
//转换整数为字符串(系统函数)
function IntToStr (aInt: integer): string;
/***********事件触发的函数**********/
function callfunc (aText: string): string; //以下为 aText参数的值
getsysteminfo 获得系统信息
getname 获得名字
getsendername 获得消息发送者名字
getage 获得年龄
getsenderage 获得消息发送者年龄
getsex 获得性别
getsendersex 获得消息发送者性别
getid 获得ID
getsenderid 获得消息发送者ID
getserverid 获得服务器ID
getsenderserverid 获得消息发送者服务器ID
findobjectbyname 用名字查找物件
getposition 获得位置
getsenderposition 获得消息发送者位置
getnearxy 获得亲近的XY
getmapname 获得地图名字
getsendermapname 获得消息发送者地图名字
getmoveablexy 获得移动能的XY
getrace 获得种族
getsenderrace 获得消息发送者种族
getmaxlife 获得最大的生命值
getsendermaxlife 获得消息发送者最大的生命值
getmaxinpower 获得最大的内功值
getsendermaxinpower 获得消息发送者最大的内功值
getmaxoutpower 获得最大的外功值
getsendermaxoutpower 获得消息发送者最大的外功值
getmaxmagic 获得最大的武功值
getsendermaxmagic 获得消息发送者最大的武功值
getlife 获得生命值
getsenderlife 获得消息发送者生命值
getinpower 获得内功值
getsenderinpower 获得消息发送者内功值
getoutpower 获得外功值
getsenderoutpower 获得消息发送者外功值
getmagic 获得武功值
getsendermagic 获得消息发送者武功值
getheadlife 获得头防
getsenderheadlife 获得消息发送者头防
getarmlife 获得手防
getsenderarmlife 获得消息发送者手防
getleglife 获得腿防
getsenderleglife 获得消息发送者腿防
getvirtue 获得浩然值
getsendervirtue 获得消息发送者浩然值
getsendertalent 获得消息发送者技能
getmovespeed 获得移动速度
getsendermovespeed 获得消息发送者移动速度
getuseattackmagic 获得使用攻击性武功
getsenderuseattackmagic 获得消息发送者使用攻击性武功
getuseattackskilllevel 获得使用攻击性技能水平
getsenderuseattackskilllevel 获得消息发送者使用攻击性技能等级
getsendermagicskilllevel 获得消息发送者的武功技能等级
getuseprotectmagic 获得使用的护体
getsenderuseprotectmagic 获得消息发送者使用的护体
procedure print (aText: string); //以下为 aText参数的值
//让NPC在一个地方摆造型,参数2是说明是怪物,参数3是名字,参数4是X坐标,参数5是Y坐标,参数6不详,参数7显示的图片的序列号,参数8不详,参数9是时间。
print ('mapaddobjbytick monster 上古雨中客2 178 176 1 97 false 800');
//弹出一个对话框,参数2为文本文件地址,参数3为对话框类型
print ('showwindow .\help\上古雨中客.txt 0');
//让NPC说一句化,参数2是要说的话
print ('say 看来._准备还是有些不足哇');
print ('putsendermagicitem 雨中客锦囊:1 @上古雨中客 3');
print ('sendsenderchatmessage 拿20个_疾风灵符来 2');
//拿走玩家身上的物品,参数2是物品名,参数3是个数
print ('getsenderitem 雨中客锦囊:1');
//服务器所有玩家屏幕显示一句话,参数2是要显示的字符串,参数3是显示的类型。
print ('sendsenderchatmessage 雨中客任务顺利完成 2');