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