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