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