| 数据类型 | 类型描述 | 范围及备注 |
| Boolean | 布尔类型 | (False, True) |
| Char | 单字符类型 | 定义一个字符 |
| String | 字符串 | 定义一串字符 |
| Integer | 整型 | -2147483648..2147483647 |
| Cardinal | 整型(无类型) | 0..4294967295 |
| Int64 | Int64 | -2^63..2^63-1 |
| Word | 字,表示整数范围小于Integer | 0 – 65535 |
| double | 浮点型(带有小数点的数字) | |
1.变量是指在脚本中可以通过赋值操作来改变其数值的量。
定义格式:
var
变量名称 : 变量类型;
。。。。。。
变量名称以26个英文字母,0~9数字命名。变量名不以数字开头。而变量类型主要就是上面提到的数据类型(在命名变量名时尽量要保证意义清晰,且不要太长)。
例如:
var
ItemCount : Integer;
ItemName : string;
2.局部变量和全局变量
根据变量作用范围可以分为局部变量和全局变量。
局部变量是定义在一个函数的头部,只有本函数可以使用的变量。
全局变量是定义在一个脚本文件中的,当前脚本文件中,只要是在这个全局变量定义后的地方都可以使用这个全局变量。
局部变量例子:
procedure GiveReward();
var
ItemCount : Integer;
ItemName : string;
begin
//这里是函数的主体,这里面是不能定义变量的
end;
全局变量例子:
program Mir2;
var
Count : Integer; //全局变量一般就都在开头定义
procedure TempFunc();
begin
//这是自定义的函数
end;
begin
//这是脚本的入口处,每次玩家调用脚本都是要从这里开始
end;
3.一些特别注意的情况
局部变量和全局变量的作用域覆盖问题:
1.赋值语句就是将一个值赋给一个变量,这个变量没被赋其他值之前就代表这个值。
定义格式:
待赋值变量 := 常量(已赋值变量);
赋值号左右两边要求类型一致。
例如:
var
I : Integer;
Count : Integer;
I := 12;
Count := I;
1.比较操作
=,>, >=, <, <=,这五个比较操作符都可以用与整数之间的比较。等号还可以用于Boolean,Char, String的比较。其他四个操作符就只使用在整型之间的比较。比较的布尔式返回为True或者False。
2.布尔操作
not, and, or这三个布尔操作符可以用于对布尔式进行操作。
例如:
var
flag1 : Boolean;
flag2 : Boolean;
num1 : Integer;
num2 : Integer;
flag1 := False;
flag2 := False;
num1 := 5;
num2 := 4;
flag1 := num1 > num2; //flag1 现在为True
flag1 := not (num1 > num2); //flag1 现在为False
flag1 := (num1 > num2) and flag2; //flag1现在为False
flag1 := (num1 > num2) or flag2; //flag1现在为True
注意:脚本语言中的符号运算优先级与delphi一致。具体再补充。但尽量多通过使用小括号来指定运算优先级,这样往往比使用默认优先级更利于脚本的正确性和可读性。
3.数学计算操作
//……….待编写
var
s1 : string;
s2 : string;
s3 : string;
s1 := ‘hello’;
s2 := ‘world’;
s3 := s1 + s2; //这里的s3就是helloworld
1.if语句完整模板:
if 条件1 then
begin
//代码1(如果代码1只有1行,可以省略begin和end,但为了良好代码习//惯,无论是否只有1行代码要begin和end)
end
else if 条件2 then
begin
//代码2
end
else
begin
//代码3
end;
以上为if语句的完整模板,如果满足条件1,则执行代码1;如果不满足条件1,但满足条件2,则执行代码2;如果条件1和2都不满足,则执行代码3。
2.if语句常用简化模板:
if 条件1 then
begin
//代码1
end;
注:以上的条件1和条件2,都是一个布尔式(可以参见前面的数学操作语句中的布尔操作)。
1.for循环语句
for语句的模板:
for i := 1 to 10 do
begin
//代码1
end;
以上语句的意思是,将变量i先赋值为1,执行一次“代码1”,变量i会自动加1。在变量i小于或者等于10的条件下,都会继续执行“代码1”。for语句经常和数组结合使用,可以用很少代码完成很多事。
2.while循环语句
while语句的模板:
While 条件A do
begin
//代码1
end;
以上语句的意思是,只要条件A为真,代码1就会循环执行下去。但使用while的时候,必须药避免死循环。也就是药避免条件A永远都不为真。
函数在脚本中的使用意义:
函数就是用一个函数调用接口代替一段脚本代码,当脚本中需要使用某功能时,直接调用该接口就可以。
函数的基本定义格式:
procedure FunA(i : Integer);
function Sum(i: Integer; j:Integer) : Integer;
函数分两种类型,一个函数本身只完成某功能,不提供返回值,以procedure定义。另一类函数实现某功能后,还要将计算的值返回给其他变量,也就是可以用这个函数给其他变量赋值。就用function定义,而且还要定义函数返回值的类型。
函数名后面的小括号中的是参数的定义,具体见下面函数参数。
函数的调用方式
脚本中使用函数有两种情况,一是在脚本代码内部调用:
var
total : Integer;
total := Sum(4, 5); //函数调用时,只需要写函数名和参数。
但是,在调用程序提供的玩家,NPC,数据库类的函数时有些特别。
例如:
This_Player.Give(‘屠龙’, 3);
由程序提供的功能函数接口都是需要有这样的类来调用。
二是在对话框中调用某个函数,这里基本与原来一致:
例如:
This_Npc.NpcDialog( This_Player,
‘恩?好像那密室有其他人在\’ +
‘我们先稍等片刻\’ +
‘<关闭/@DoExit>’
);
脚本入口函数
脚本入口函数,就是老脚本中的@main。脚本执行就是从这个函数开始。代码如下:
begin
//……入口函数的代码
end.
- 入口函数没有函数名
- 这个入口函数必须写在脚本的最后
- end后面是句点,不是分号。
- 在npc对话框中写的@main,就会调用到脚本的入口函数
函数参数
函数参数就是在函数名后面的小括号中定义的变量,参数可以在脚本运行时,将不同的变量值传入函数中,得到所需要的结果。
注释就是写在脚本中,但脚本并不执行,只是方便今后理解脚本内容的辅助方式。编写脚本时,写注释是十分重要的,这对于日后脚本的理解维护,或者是功能扩展都极为重要。注释的主要内容有当前脚本的功能,某个函数的作用,某段代码的特殊意义等,总而言之,就是将重要的和容易忘记的记录下来。
pascal script脚本中提供的注释方式有两种。
一种是单行注释:
通过双斜杠 //,可以将本行中,双斜杠后面的内容注释掉。
例子:
var
ItemCount : Integer; //定义物品数量
一种是块注释:
通过打括号{},可以将大括号之间的内容都注释掉
例子:
{
/*
/* 脚本内容 : 本脚本用以对npc的功能进行测试
/* 对应NPC : NPCTest
/* 创建日期 : 2019-01-01
/* 修订记录 :
/*
/**}
以上是写到脚本开头的一段注释,关于脚本文件的一些相关信息可以用类似方式完成。
这部分函数是指由系统支持,可以直接在脚本中调用的函数。
接口详细描述如下:
1.函数接口:function inttostr(i: Integer): string;
功能描述:将一个整型数字转化为字符串
函数参数:i是需要转化的整型数字
函数返回值:返回字符串
脚本调用示例:
var
i : Integer;
s : string;
begin
i := 1000;
s := IntToStr(i); //这里的s就是’1000’,s作为字符串可以输出到对话框或//其他需要字符串的地方
end;
2.函数接口:function Random(i: integer): integer;
功能描述:得到一个大于等于0,小于i的一个随机整数
函数参数:i是随机数的上限
函数返回值:随机数
脚本调用示例:
var
i : Integer;
begin
i := Random(50); //i等于0-49的随机整数
end;
3.函数接口:function GetYear: Word;
功能描述:返回当前年份
函数参数:无
函数返回值:当前年份
4.函数接口:function GetMonth: Word;
功能描述:返回当前月份
函数参数:无
函数返回值:当前月份
5.函数接口:function GetDay: Word;
功能描述:返回当前日期
函数参数:无
函数返回值:当前日期
6.函数接口:function GetHour: Word;
功能描述:返回当前小时
函数参数:无
函数返回值:当前小时
7.函数接口:function GetMin: Word;
功能描述:返回当前分钟
函数参数:无
函数返回值:当前分钟
8.函数接口:function GetDayOfWeek: Word;
功能描述:返回是一周的星期几
函数参数:无
函数返回值:星期天返回1,星期六返回7
9.函数接口:function GetNow: Double;
功能描述:返回代表当前年月日时分秒(微秒)的一个浮点数
函数参数:无
函数返回值:如上
10.函数接口:function GetDateNum(datetime : Double) : Integer;
功能描述:返回代表当前年月日的一个整数(两个这样整数的差,就表示相差几天,这个天数不精确)
函数参数:由GetNow返回的一个浮点数
函数返回值:如上
11.函数接口:function minusDataTime(dt1, dt2: Double): Integer;
功能描述:返回两个时间相差的秒数(这个时间是精确的)
函数参数:两个由GetNow返回的时间
函数返回值:如上
12.函数接口:function ConvertDateTimeToDB(dt : Double) : Integer;
功能描述:由GetNow取到的时间如果要存到数据库,需要通过这个函数转换
函数参数:由GetNow返回的时间
函数返回值:可以使用SetV,或者SetS进行保存的变量值
13.函数接口:function ConvertDBToDateTime(dt : Integer) : Double;’)
功能描述:从数据库中读取被上面ConvertDateTimeToDB转换后的变量
函数参数:由GetNow返回的时间
函数返回值:具体使用再见例子说明
玩家属性是指在脚本中通过玩家对象可以调用的玩家的变量。如果是只读属性,则只能将它的值赋给其他变量,或直接使用。如果是读写属性,则还可以改变这个值。但玩家的属性基本是只读。具体见下表:
| 类型 | 功能描述 | 属性/函数定义 | 类型 |
|---|---|---|---|
| property(只读) | 等级 | Level | Byte |
| property(只读) | 玩家角色名 | Name | String |
| property(只读) | 空背包数 | FreeBagNum | Integer |
| property(只读) | 职业 | Job | Byte |
| property(只读) | 性别 | Gender | Byte |
| property(只读) | 玩家的x坐标 | My_X | integer |
| property(只读) | 玩家的y坐标 | My_Y | integer |
| property(只读) | 金币 | GoldNum | integer |
| 声望 | MyShengwan | integer | |
| property(只读) | 金刚石 | MyDiamondnum | Integer |
| property(只读) | pk值 | MyPKpoint | Integer |
| property(只读) | 人物幸运值 | LuckNum | Integer |
| property(只读) | 攻击命中 | HitRate | Byte |
| property(只读) | 攻击速率 | QuickRate | Byte |
| property(只读) | 防御 | AC | Word |
| property(只读) | 最大防御 | MaxAC | Word |
| property(只读) | 攻击 | DC | Word |
| property(只读) | 最大攻击 | MaxDC | Word |
| property(只读) | 魔法 | MC | Word |
| property(只读) | 最大魔法 | MaxMC | Word |
| property(只读) | 道术 | SC | Word |
| property(只读) | 最大道术 | MaxSC | Word |
| property(只读) | 当前血量 | HP | Integer |
| property(只读) | 最大血量 | MaxHP | Integer |
| property(只读) | 当前魔法值 | MP | Integer |
| property(只读) | 最大魔法值 | MaxMP | Integer |
| property(只读) | 是否已死亡 | IsDead | Boolean |
| property(只读) | 不在线(组队、行会成员) | IsDeleted | Boolean |
| property(只读) | 用戒指、符隐身 | NormalHide | Boolean |
| property(只读) | 当前经验值 | CurrentExp | Cardinal |
| property(只读) | 行会名称(可能为空) | GuildName | string |
| property(只读) | 是否为队长 | IsGroupOwner | Boolean |
| property(只读) | 是否为队员 | IsTeamMember | Boolean |
| property(只读) | 是否有英雄 | HaveValidHero | Boolean |
| property(只读) | 元宝数 | YBNum | Integer |
| property(只读) | 使用元宝数 | UsedYBNum | Integer |
| property(只读) | 圣殿灵符 | NickLinFu | integer |
| property(只读) | 当前灵符数 | MyLFnum | integer |
| property(只读) | 使用灵符数 | MyUsedLfNum | integer |
| property(只读) | 秒卡数 | HaveTimeNum | integer |
| 预留参数 | IntParam | integer | |
| 预留参数 | StrParam | String | |
| property(只读) | 升为GM后等级 | GMLevel | Byte |
| property(只读) | 英雄性别(0为男,1为女, -1为无英雄或未召唤) | HeroGender | Integer |
| property(只读) | 英雄等级(英雄等级, -1为无英雄或未召唤) | HeroLevel | Integer |
| property(只读) | 英雄职业 (0战士,1法师,2道士 -1为无英雄或未召唤) | HeroJob | Integer |
| 玩家白金账号等级 | PlatinaChrLv | Integer | |
| property(只读) | 玩家行会酒泉数 | GuildPoint | Integer |
所有玩家属性的调用,都要通过玩家对象来完成。现在只支持当前调用脚本的玩家对象,使用时就是This_Player。
脚本调用示例:
判断当前玩家背包是否有3个空的
if This_Player.FreeBagNum >= 3 then
begin
//…奖励物品
end
else
begin
//…弹出对话框告知玩家,背包不够
end;
1.函数接口:function GetBagItemCount(const ItemName: string) : Integer;
功能描述:查询当前背包中指定物品个数
函数参数:物品名
函数返回值:返回个数,0为背包中无此物品(注意输入的物品名称正确)
脚本调用示例:
var
ItemName : string;
ItemNum : Integer;
begin
ItemName := ‘屠龙’;
ItemNum := This_Player.GetBagItemCount(ItemName);
end;
2.函数接口:function DelAllThisItem(const ItemName: string):Integer;
功能描述:删除背包中所有指定名称的物品
函数参数:物品名
函数返回值:返回删除了多少个
3.函数接口:function Give(const ItemName: string; ItemCount: Integer): Boolean;
功能描述:给玩家发放指定奖励到玩家背包中,并给出系统消息
函数参数:物品名, 数量
函数返回值:返回是否成功得到奖励
脚本调用示例:
This_Player.Give(‘屠龙’, 3); //玩家在背包中得到3把屠龙,并发出系统消息
4.函数接口:function Take(const ItemName: string; ItemCount: Byte):Integer;
功能描述:玩家背包中被取走指定数量的某物品
函数参数:物品名, 数量
函数返回值:返回是否成功(注意:如果数量不足,物品不会被取走,但返回False)
脚本调用示例:(判断玩家身上是否有10张野猪皮,有就取走野猪皮,给奖励)
if This_Player.GetBagItemCount(‘野猪皮’, 10) then
begin
This_Player.Take(‘野猪皮’, 10);
This_Player.Give(‘井中月’,1);
end;
5.函数接口:procedure TakeBodyEquipByName(const ItemStr: string; TakeNum: integer);
功能描述:按名称删除人物身上道具
函数参数:物品名, 物品数量
函数返回值:无
6.函数接口:function TakeBodyEquipByPos(const nPos: integer):string;
功能描述:按位置删除人物身上道具
函数参数:参数表示身上的哪个位置
函数返回值:返回删除物品的名称
7.函数接口:procedure Flyto(const MapName: string; x: Word; y: Word);功能描述:定点飞行
函数参数:地图名,x坐标,y坐标
函数返回值:无
8.函数接口:procedure RandomFlyTo(const MapName : string); 功能描述:飞到某地图的随机位置
函数参数:地图名
函数返回值:无
9.函数接口:function MapName() : string;
功能描述:获取玩家当前所在地图的地图名称
函数参数:无
函数返回值:返回地图名称
注:
此函数配合玩家的My_x, My_y这两个坐标属性,就可以获得玩家当前的完
整地标属性。可以通过其他接口,将其他玩家传送到自己身边。
10.函数接口:function IsCastle(): boolean;
功能描述:判断是否为沙巴克成员
函数参数:无
函数返回值:True为是沙巴克成员,False为否
11.函数接口:procedure QuestInfo(const Msg: string);
功能描述:任务列表中显示
函数参数:当前任务显示
函数返回值:无
脚本调用示例:(具体见四、 脚本功能开发模板)
This_Player.QuestInfo(
‘[日常]商人遇劫:\’ +
‘一个<[比奇省, 商人, 410, 342]/automove>在快进城时被抢劫\’ +
‘希望你帮忙收拾正在搬货的半兽人\’ +
‘任务:杀死<5个半兽人/c=red>\’ +
‘当前: 已杀N个半兽人\’ +
‘任务奖励:<经验100000/c=yellow>\’ +
‘ <金币10000/c=yellow> \’
);
12.函数接口:function GetV(const nTaskNo, nFieldNo: integer):Integer;
功能描述:读玩家的任务表中的某个任务变量
函数参数:任务编号,第几号任务变量(1-100)
函数返回值:取当前任务变量值
脚本调用示例:(具体见四、 脚本功能开发模板)
13.函数接口:function SetV(const nTaskNo, nFieldNo, nValue: integer):Boolean;
功能描述:设置玩家的任务表中某个任务变量的值
函数参数:任务编号,变量编号,设置为何值
函数返回值:返回设置是否成功,如果变量编号不在1到100之间就会失败
脚本调用示例:(具体见四、 脚本功能开发模板)
14.函数接口:function GetS(const nActNo, nFieldNo: integer):Integer;
功能描述:读玩家的活动表中的某个任务变量
函数参数:任务编号,第几号任务变量(1-50)
函数返回值:取当前任务变量值
脚本调用示例:(具体见四、 脚本功能开发模板)
15.函数接口:function SetS(const nActNo, nFieldNo, nValue: integer):Boolean;
功能描述:设置玩家的任务表中某个任务变量的值
函数参数:任务编号,变量编号,设置为何值
函数返回值:返回设置是否成功,如果变量编号不在1到50之间就会失败
脚本调用示例:(具体见四、 脚本功能开发模板)
16.函数接口:procedure PlayerDialog(const Msg: string);
功能描述:由玩家自己弹出的一个在左上角的对话框
函数参数:对话框中显示内容
函数返回值:无
脚本调用示例:
This_Player.PlayerDialog(‘你已进入付费地图!’);
17.函数接口:procedure PlayerNotice(const Msg: string; const vColor:word);
功能描述:给玩家memo框提示(红色或其他颜色)
函数参数:下面框中显示的内容和颜色(0红,1绿,2蓝,3紫)
函数返回值:无
18.函数接口:procedure CallOut(PsNpc: TObject; SpTime: integer; TimeOutProc : string);
功能描述:在NPC处设定延时执行事件
函数参数:npc对象,延迟时间,指定延时执行的函数标记
函数返回值:无
脚本调用示例:(具体见四、 脚本功能开发模板)
19.函数接口:function IsGuildLord():Boolean;
功能描述:是否为行会老大
函数参数:无
函数返回值:是否
20.函数接口:procedure GainExp(nExp: integer);
功能描述:玩家获取经验
函数参数:获取经验数
函数返回值:无
21.函数接口:procedure IncPkpoint(const AddNum: integer);
功能描述:增加玩家pk值
函数参数:增加的值
函数返回值:无
22.函数接口:procedure DecPkPoint(const X: integer);
功能描述:减少玩家pk值
函数参数:减少的值
函数返回值:无
23.函数接口:function ChgHair(const Kind: Byte):Boolean;
功能描述:改变玩家发型
函数参数:发型的样式(待添加)
函数返回值:是否成功
24.函数接口:function ChgSkillLv(const SkillName: string; ToLv: Byte; skillexp: integer);
功能描述:改变技能等级
函数参数:技能名称,要改变到的级别,改变到此等级时的经验。
函数返回值:无
脚本调用示例:
假设某战士玩家,原来的烈火等级为1,当前等级的技能经验50点
This_Player.ChgSkillLv(‘烈火剑法’,2, 10);
当前此玩家的烈火等级为2, 并且2级后的技能经验为10点
25.函数接口:procedure DoDamageWeapon(const nDamage: integer);
功能描述:减少玩家手上武器的耐久
函数参数:减少的值
函数返回值:无
26.函数接口:function AddGold(Value: integer):Boolean;
功能描述:增加玩家的金币数
函数参数:增加的值
函数返回值:增加是否成功
27.函数接口:function DecGold(Value: integer):Boolean;
功能描述:减少玩家的金币数
函数参数:减少的值
函数返回值:减少是否成功
28.函数接口:function BuildGuild(const GuildStr: string):Boolean;
功能描述:成立行会
函数参数:行会名
函数返回值:是否能成功建立该行会(如重名等情况就会失败)
29.函数接口:function ReqCastleWar:Boolean;
功能描述:申请行会战
函数参数:无
函数返回值:是否可以申请
30.函数接口:procedure AgreeMarry(Npc: Tobject);
功能描述:同意结婚
函数参数:npc对象
函数返回值:无
31.函数接口:DisAgreeMarry();
功能描述:拒绝结婚
函数参数:无
函数返回值:无
/新扩展接口*/
32.函数接口:function GetMyPositionInGuild() : Integer;
功能描述:获取当前人物与行会的关系
函数参数:无
函数返回值:-1为无行会,0表示只是会员,1表示为会长
脚本调用示例:
if This_Player.GetMyPositionInGuild() = 1 then
begin
//执行某些只有行会会长才能执行的操作
end;
33.函数接口:function GetHeroBagItemCount(const ItemName: string): Integer;
功能描述:获取英雄背包中某物品的数量
函数参数: 物品名称
函数返回值:大于等于0表示为该物品的数量, -1为无英雄或未召唤
34.函数接口:function TakeFromHeroBag(const ItemName: string; ItemCount: Byte): Boolean;
功能描述:从英雄背包取物品
函数参数:物品名称, 物品数量
函数返回值:true表示成功. false表示取走动作失败,或者无英雄或未召唤
35.函数接口:function GetItemNameOnBody(const nPos : Integer): string;
功能描述:获取玩家身上某位置的装备名称
函数参数:人物身上的位置
函数返回值:返回当前位置上的装备名称,如果无装备则返回空字符串.
36.函数接口:procedure GroupFly(const sTargetMap : string);
功能描述:由队长发出全体队员飞行到某地图的指令(如果不是队长,则使用此函数无效果)
函数参数:飞行的目标地图
函数返回值:无返回值
37.函数接口:procedure ShiMenFly(const sTargetMap : string; mode: Integer);
功能描述:师门飞行,师傅和徒弟之间三种同飞方式
函数参数:sTargetMap是同飞的目标地图(随机某地点)
mode值表示飞行模式(要求一起飞行的人都在一张地图):
1是师傅带所有徒弟一起飞;
2是某个徒弟和自己师傅一起飞;
3是徒弟和自己师傅以及所有师兄一起飞;
函数返回值:无
38.函数接口:procedure CoupleFly(const sTargetMap : string);
功能描述:夫妻飞行到目标地图,夫妻必须在同一地图
函数参数:飞行的目标地图
函数返回值:无
39.函数接口:function UpGradeHeroSkill(const skill_idx: Integer; skill_exp : Integer) : Boolean;
功能描述:将指定的英雄技能升级若干经验
函数参数:英雄技能号, 升级经验
函数返回值:升级成功返回true. 英雄不存在或者没召唤英雄,或者升级失败都返回false
40.函数接口:function GetHeroCardStudentPrize(): Integer;
功能描述:领取王师弟子奖励
函数参数:无
函数返回值:1表示领取成功,0表示已领取当前级别的奖励,
-1表示不是新手卡用户,-2表示背包空间不足
脚本调用示例:
This_Player.GetHeroCardStudentPrize();
注:如果需要该函数的返回值,也可以取它的值
41.函数接口:function GetHeroCardTecherPrize(PsNpc: TObject) : Integer;
功能描述:领取王师教头奖励
函数参数:npc对象
函数返回值:1领取成功, 0当前级别已领取或弟子级别不够,
-1背包空间不够,-2级别不够50
脚本调用示例:
This_Player.GetHeroCardTeacherPrize(This_Npc);
注:这个里面需要调用This_Npc作为参数.
42.函数接口:procedure TakeDiamond(TakeNum: integer; Npc: TObject);
功能描述:从玩家身上取走金刚石
函数参数:取走的金刚石数量, npc对象
函数返回值:无
43.函数接口:procedure ChangeMapWithOths(const SeachMap: string);
功能描述:将自己和目标地图的所有玩家交换位置
函数参数:要交换的目标地图
函数返回值:无
注: 此函数的使用需要慎重,如果两张地图人数比较多则会较大影响效率
44.函数接口:function TPlayer.CreateHero(heroName: string; hType, heroJob: Integer): Integer;
功能描述:创建英雄
函数参数:heroName 英雄名字;
hType 1代表白日门英雄、2代表酒馆英雄;
heroJob 英雄职业: 1、男战士, 2、男法师, 3、男道士,4、女战士, 5 女法师, 6 女道士。
函数返回值:0 成功进行创建
-1 未能成功创建,已经有英雄;-2 未能成功创建,heroJob不是 1 到 6 之间;-3 未能成功创建,heroName有问题;-4 未能成功创建,hType不是 1 或者 2
45.函数接口:procedure MakeDiamondWithYB(const Num : Integer );
功能描述:用元宝锻造金刚石
函数参数:Num 锻造元宝的数量(要在0到300之间,包含300)
函数返回值:无
46.函数接口:procedure Donatediam(const InPutStr: string);
功能描述:赠送金刚石
函数参数:InputStr 要赠送的玩家及送出多少 格式为: 玩家名 金刚石数量 (如: Donatediam(‘GM01 100’))
函数返回值:无
47.函数接口:procedure AddLF(const nType, nNum : Integer);
功能描述:给玩家增加灵符
函数参数: nType灵符增加的类型,Num 灵符消耗数量
函数返回值:无
48.函数接口:procedure DecLF(const nType, nNum : Integer);
功能描述:玩家消耗灵符
函数参数: nType灵符消耗的类型,Num 灵符消耗数量
函数返回值:无
注:这两个接口中,nType代表的意义是不一样的,DecLF中的nType表示灵符是因为什么消耗的,比如说圣殿灵符等…..而AddLF中的nType则表示该灵符本身属于哪种类型,例如限时灵符等……具体的类型怎么划分有待进一步确定.
49.函数接口:procedure RequestGuildWar(const TargGuildStr: string);
功能描述:玩家申请行会战
函数参数: 申请进行对战的行会名称
函数返回值:无
| 类型 | 功能描述 | 属性/函数定义 | 类型 |
|---|---|---|---|
| property(读写) | 沙城,修门费用 | RepDoorGold | Integer |
| property(读写) | 沙城,修墙费用 | RepWallGold | Integer |
| property(读写) | 沙城,雇卫士费用 | HireGuardGold | Integer |
| property(读写) | 沙城,雇弓箭手费用 (都在脚本定义) | HireArcherGold | Integer |
| property(只读) | 返回客户端弹输入框后 玩家输入的字符串 | InputStr | string |
| property(只读) | 返回客户端弹输入框后 玩家点的确定or取消。 True为确定,False为取消 | InputOK | boolean |
| property(只读) | NPC所在地图的X坐标 | My_X | Integer |
| property(只读) | NPC所在地图的Y坐标 | My_Y | Integer |
所有NPC属性的调用,都要通过NPC对象来完成。
当前只能调用和玩家正在对话的NPC对象,This_NPC.
现在脚本支持的四个NPC属性都是沙巴克城主的。
脚本调用示例:
var
TotalRepFee : Integer; //假设修理的总费用是一个门和四面墙
TotalRepFee := This_NPC.RepDoorGold + 4 * This_NPC.RepWallGold;
1.函数接口:procedure CreateMon(const MapName : string; X, Y, Ranger : Integer; MonName : string; MonNum : Integer);
功能描述:在指定范围刷怪
函数参数:地图名,刷怪中心点x,y坐标,刷怪范围,怪物名称,怪物数量
函数返回值:无
脚本调用示例:
This_NPC.CreateMon(‘3’, 200, 300, 5, ‘魔龙教主’, 10);
这个脚本的含义就是在盟重(200,300)为中心,半径为5格的范围里,刷处10
只魔龙教主,
2.函数接口:procedure ClearMon(const MapName : string);
功能描述:清除某地图上的所有怪
函数参数:地图名
函数返回值:无
脚本调用示例:
This_NPC.ClearMon(‘3’);
这个脚本的含义就是清除盟重的所有怪
3.函数接口:function MapName() : string;
功能描述:返回NPC所在地图的地图名称
函数参数:无
函数返回值:地图名
4.函数接口:procedure NPCSay(const MsgStr: string);
功能描述:游戏中的NPC头顶上冒出白字对话
函数参数:显示的对话内容
函数返回值:无
5.函数接口:procedure NpcNotice(MsgStr: string);
功能描述:NPC发系统红字
函数参数:显示的对话内容
函数返回值:无
6.函数接口:procedure NpcDialog(const Player : TPlayer; Str : string);
功能描述:NPC给玩家弹出对话框(左上角的)
函数参数:玩家对象,对话内容
函数返回值:无
脚本调用示例:
This_Npc.NpcDialog( This_Player,
‘恩?好像那密室有其他人在\’ +
‘我们先稍等片刻\’ +
‘<关闭/@DoExit>’
);
7.函数接口:procedure CloseDialog(const Player: TPlayer);
功能描述:关闭NPC弹出的对话框(左上角的)
函数参数:玩家对象
函数返回值:无
8.函数接口:procedure FillGoods(const GoodName : string; Num, Interval : Integer);
功能描述:商人NPC初始化时用于初始化商铺的物品列表,见脚本初始化
函数参数:物品名,数量, Interval表示此类物品刷新时间(少了就补充,多了就去掉,以秒为单位)
函数返回值:无
脚本调用示例:
//加载道具
This_NPC.FillGoods(‘木剑’, 100, 1);
This_NPC.FillGoods(‘乌木剑’, 21, 1);
9.函数接口:procedure AddStdMode(nMode: Word);
功能描述:设置可以在此商人NPC商铺中修理和卖的东西类型,见脚本初始化
函数参数:属性(mode的参照表)
函数返回值:无
10.函数接口:procedure SetRebate(nRebate : Word);
功能描述:设置商人买卖倍率
函数参数:倍率
函数返回值:This_Npc.SetRebate(120); //当前价格是实际价格的120%
11.函数接口:procedure Click_Buy(Clicker: TPlayer);
功能描述:商人NPC打开物品列表,待玩家买物品
函数参数:玩家类
函数返回值:无
脚本调用示例:
This_Npc.Click_Buy(This_Player);
12.函数接口:procedure Click_Sell(Clicker: TPlayer);
功能描述:商人NPC打开卖物品的框,待玩家卖物品
函数参数:玩家类
函数返回值:无
13.函数接口:procedure Click_Repair(Clicker: TPlayer);
功能描述:NPC打开物品修理框,待玩家进行修理
函数参数:玩家类
函数返回值:无
14.函数接口:procedure procedure Click_SRepair(Clicker: TPlayer);
功能描述:NPC打开物品特别修理框,待玩家进行特别修理
函数参数:玩家类
函数返回值:无
15.函数接口:procedure Click_Storage(Clicker: TPlayer);
功能描述:调出仓库存物品的窗口,待玩家存物品
函数参数:属性(mode的参照表)
函数返回值:无
16.函数接口:procedure Click_GetBack(Clicker: TPlayer);
功能描述:调出仓库中的物品列表,待玩家取物品
函数参数:属性(mode的参照表)
函数返回值:无
17.函数接口:procedure Click_GoldChgBar(Clicker: TPlayer);
功能描述:将玩家身上金币换金条
函数参数:玩家对象
函数返回值:无
18.函数接口:procedure Click_BartoBrick(Clicker: TPlayer);
功能描述:金条换金砖
函数参数:玩家对象
函数返回值:无
19.函数接口:procedure Click_BricktoBar(Clicker: TPlayer);
功能描述:金砖换金条
函数参数:玩家对象
函数返回值:无
20.函数接口:procedure Click_BartoGold(Clicker: TPlayer);
功能描述:金条换金币
函数参数:玩家对象
函数返回值:无
21.函数接口:procedure Click_Makedrug(Clicker: TPlayer);
功能描述:做药
函数参数:玩家对象
函数返回值:无
22.函数接口:procedure InputDialog(Hum: TPlayer; MsgStr : string; DlgType, InputType : Integer);
功能描述:客户端弹出有确定和取消按钮的输入框
函数参数:玩家对象,提示信息,对话框类型,对话框处理函数
函数返回值:无返回值,但脚本可以根据NPC属性中的InputStr和InputOK这两个属性来读取对话框相关属性。详见输入对话框。
23.函数接口:function GetCastleTotalGold():Integer;
功能描述:沙城总收入
函数参数:无
函数返回值:无
24.函数接口:function GetCastleTodayIncome():Integer;
功能描述:沙城今天收入
函数参数:无
函数返回值:无
25.函数接口:procedure Click_TakeOutGold(Hum: TPlayer; const GoldNumStr: string);
功能描述:沙巴克城主取钱
函数参数:玩家类,取钱数量(字符串类型)
函数返回值:无
26.函数接口:procedure Click_SaveGold(Hum: TPlayer; const GoldNumStr: string);
功能描述:沙巴克城主存钱
函数参数:玩家类,存钱数量(字符串类型)
函数返回值:无
27.函数接口:function GetCastleDoorState():string;
功能描述:获取沙巴克城门状态
函数参数:无
函数返回值:返回‘打开’,‘关闭’,‘未知’。
28.函数接口:procedure Click_RepairDoor(Hum: TPlayer);
功能描述:沙巴克城主修城门
函数参数:玩家类(沙巴克城主)
函数返回值:无
29.函数接口:procedure Click_RepairWall(Hum: TPlayer;const nPos: Integer);
功能描述:沙巴克城主修城墙
函数参数:玩家类(沙巴克城主), 标记哪面墙(参数与老脚本一样)
函数返回值:无
30.函数接口:procedure Click_HireGuard(Hum: TPlayer; nPos: Integer);
功能描述:沙巴克城主雇佣卫兵
函数参数:玩家类(沙巴克城主),标记卫兵位置
函数返回值:无
31.函数接口:procedure Click_ HireArcher(Hum: TPlayer; nPos: Integer);
功能描述:沙巴克城主雇佣弓箭手
函数参数:玩家类(沙巴克城主),标记弓箭手位置
函数返回值:无
32.函数接口:procedure OpenCastleDoor(bOpen : Boolean);
功能描述:沙巴克城主开城门
函数参数: True为打开,False为不打开
函数返回值:无
33.函数接口:function ChkStrInFile(const sFileName, sSearchStr : string) : Boolean;
功能描述:在指定文件中查找字符串
函数参数: 进行查找的文件, 要搜索的字符串
函数返回值:找到则返回true,找不到返回false
注: 这个文件是在脚本的Envir文件夹下某文件(或子路径)
脚本调用示例:
This_Npc.ChkStrInFile(‘temp1.txt’, This_Player.Name);
//在Ennvir文件夹下的temp1.txt文件中查找当前玩家角色名是否在文件中.
//temp1.txt是一行一条记录的.
This_Npc.ChkStrInFile(‘PascalScript\temp2.txt’, ‘hello’);
//在Envir文件夹下,查找子文件夹PascalScript中的temp2.txt文件中是否有’hello’
34.函数接口:function AddStrToFile(const sFileName, sAddStr : string) : Boolean;
功能描述:向指定文件中添加字符串
函数参数:文件名, 要添加的字符串
函数返回值:添加成功true, 添加失败false(字符串已存在)
35.函数接口:function DelStrFromFile(const sFileName, sDelStr : string) : Boolean;
功能描述:从指定文件中删除字符串
函数参数:文件名, 要删除的字符串
函数返回值:删除成功true, 删除失败false(字符串不存在)
36.函数接口:function GetAroundMonNum(const sMonName : string) : Integer;
功能描述:获取当前NPC周围3*3格子中,某种怪物的数量
函数参数:怪物名称
函数返回值:返回要查询的数量
37.函数接口:procedure SetMonTargetXY(const x, y : Integer);
功能描述:让地图上所有由NPC刷出来的怪物(而不是通过配置文件,地图自己刷的怪),走到指定的地图坐标.(函数的功能比较简单,不能完成比较复杂的寻路)
函数参数:指定的地图坐标
函数返回值:无
38.函数接口:procedure NpcRecallPlayers(const sSrcMap : string; num : Integer);
功能描述:由NPC召集本GS上某地图内玩家若干名,来当前NPC所在地图
程序中限制了召唤的玩家数量不超过100个,取先进入当前地图的玩家
想法:由这个接口可以开发的东西可能是一堆玩家在某张地图上
到某时间,由某个NPC将抽取前面的一些人来自己的地图
函数参数:指定的地图名称,
函数返回值:无
39.函数接口:procedure PlayDice(Player : TPlayer; iDiceNum : Integer; sFunc : string);
功能描述:扔骰子
函数参数:iDiceNum表示扔几个骰子, sFunc定义了扔完骰子后调用的脚本函数
函数返回值:无
脚本调用示例:
(以前骰子最后的点数是存在人物的d0-d9这10个变量身上,现在则是用人物的0号任务的1-10号变量来存最多10个骰子的大小)
//扔完骰子后的操作
procedure _AfterPlayDice(); //注意这里需要下画线
var
i : Integer;
j : Integer;
begin
i:=This_Player.GetV(0, 1);
j:=This_Player.GetV(0, 2);
This_Npc.NpcDialog(This_Player, ‘你扔的骰子数是’ + IntToStr(i) + IntToStr(j));
end;
//扔骰子
procedure DoPlayDice();
var
i : Integer;
begin
This_Player.SetV(0, 1, (Random(6) + 1));
This_Player.SetV(0, 2, (Random(6) + 1));
This_Npc.PlayDice(This_Player, 2, ‘@AfterPlayDice’); //注意这里需要@
end;
40.函数接口:procedure ClickUpgradeJewels(Player: TPlayer; const nPos : Integer): Integer;
功能描述:升级头盔,项链,戒指,腰带,靴子,手镯这类首饰物品
函数参数:nPos:3项链,4头盔,5右手镯,6左手镯,7右戒指,8左戒指,10腰带,11靴子
函数返回值:无
41.函数接口:procedure ClientAskYBDuanZao(Player: TPlayer);
功能描述:查询元宝锻造情况
函数参数:玩家对象
函数返回值:无
42.函数接口:procedure ClientQuestGetDiam(Player: TPlayer; Num: integer);
功能描述:领取锻造的金刚石
函数参数:玩家对象, 领取的数量
函数返回值:无
43.函数接口:procedure RefreshCredit(Player: TPlayer);
功能描述:查询元宝充值情况
函数参数:玩家对象
函数返回值:无
44.函数接口:procedure ClientReqGetBackLostItem(Player: TPlayer; const LostType: integer);
功能描述:找回或者补领物品
函数参数://LostType
//为1对应原脚本的@GetLostBuyGoods
//为2对应原脚本的@GetLostDealItem
//为3对应原脚本的@GetLostDiamond
函数返回值:无
45.函数接口:procedure ReqItemByGoldID(Player: TPlayer);
功能描述:领取金牌帐号的奖励
函数参数:玩家对象
函数返回值:无
46.函数接口:procedure ReqItemByGoldAct(Player: TPlayer);
功能描述:领取热血勇士奖品
函数参数:玩家对象
函数返回值:无
47.函数接口:procedure ReqItemByPlatina(Player: TPlayer);
功能描述:领取白金角色奖励
函数参数:玩家对象
函数返回值:无
48.函数接口:procedure ClientQueryLastDealMsg(Player: TPlayer);
功能描述:查询最后一次元宝交易记录
函数参数:玩家对象
函数返回值:无
49.函数接口:procedure ClientQueryYbDealItem(Player: TPlayer; flag : Boolean);
功能描述:查询寄售或者是购买的物品
函数参数:flag为true表示寄售,flag为false表示购买
函数返回值:无
50.函数接口:procedure ClientAskOpenYB(Player: TPlayer);
功能描述:开通元宝交易
函数参数:玩家对象
函数返回值:无
51.函数接口:procedure ReqGetFirstUsedGift(Player: TPlayer);
功能描述:领取分红系统奖励,盟重金牌特使中的<分红系统领取奖励/@firstusedyb>
函数参数:玩家对象
函数返回值:无
52.函数接口:procedure OpenEquipAttr(Player : TPlayer);
功能描述:解除封印
函数参数:玩家对象
函数返回值:无
53.函数接口:procedure ClientYBbuyLF(Player: TPlayer; const Num: integer);
功能描述:用元宝买灵符
函数参数:玩家对象
函数返回值:无
54.函数接口:procedure BuyWineFromNpc(Player: TPlayer);
功能描述:买烧酒
函数参数:玩家对象
函数返回值:无
55.函数接口:function UseGuildPoint(Player: TPlayer) : Integer;
功能描述:查询行会酒泉
函数参数:玩家对象
函数返回值: 0表示关闭,1表示开启,-1表示没有行会
56.函数接口:function GetSomeGuildPoint(Player: TPlayer) : Integer;
功能描述:领取行会酒泉泉水
函数参数:玩家对象
函数返回值://1表示领取成功 ‘~@GetPoint_OK’
//0表示没有 ‘~@PointOver’
//-1表示无行会 ‘~@NotGuild’
//-2表示无足够包裹 ‘~@NotEnoughBag’
//-3表示今天领过了 ‘~@ToDayOver’
//-4表示行会酒泉关闭中 ‘~@GuildPointClose’
57.函数接口:function ChangeGPSwitch(Player: TPlayer) : Integer;
功能描述:开启或者关闭行会酒泉
函数参数:玩家对象
函数返回值: 1是开启,0是关闭,-1是无行会, -2是非会长
58.函数接口:procedure GiveWine(Player: TPlayer; const sName: string; iQuality, iDrinkVal: integer);
功能描述:npc根据酒名,品质,酒精度,给玩家造一瓶酒
函数参数:玩家对象, 酒名,品质,酒精度
函数返回值:无
59.函数接口:procedure ClientDrinkWithNpc(Player: TPlayer; const mode : Integer);
功能描述:玩家与NPC喝酒.
函数参数:玩家对象, mode为1表示为招募,为2表示为寄放,为3表示为解雇,为4表示为取回
函数返回值://无返回值,但要求脚本提供回调函数
//Qh_Hvalid_Err
//Qh_NoHave_Err
//Jg_IsFirst_Err
//Jf_Htwo_Err
//NoCall_Err
//Zm_Hvalid_Err
//Zm_Hdisdr_Err
//Zm_Lv_Err
60.函数接口:procedure ClientDrinkAfter(Player: TPlayer; const mode : Integer);
功能描述:斗酒结束后的动作
函数参数:mode为1表示为招募,为2表示为寄放,为3表示为解雇,为4表示为取回
函数返回值:无返回值,单此函数要回调脚本函数procedure zhaomu2()!!!!;
61.函数接口:function ClickUpWeaponNow(Hum: TPlayer): Integer;
功能描述:武器升级
函数参数:玩家对象
函数返回值:0表示升级失败,对应原脚本的 @upgradenow_fail
1表示正在升级,对应原脚本的 @upgradenow_ing
2表示升级成功,对应原脚本的 @upgradenow_ok
62.函数接口:function ClickGetBackUpWeapon(Clicker: TPlayer): Integer;
功能描述:取回升级后的武器
函数参数:玩家对象
函数返回值:-1表示系统发红字,“对不起,你无法再携带了”
0表示取回失败,对应原脚本的 @ getbackupgnow _fail
1表示正在取回,对应原脚本的 @ getbackupgnow _ing
2表示取回成功,对应原脚本的 @ getbackupgnow _ok
63.函数接口:procedure ClickComposeDress(Player: TPlayer; const ProcStr: string);
功能描述:npc根据藏宝图换衣服
函数参数:玩家对象, 藏宝图
函数返回值:无
64.函数接口:function GetCastleGuildName() : string;
功能描述:返回当前沙巴克行会名称
函数参数:无
函数返回值:行会名称
65.函数接口:function GetCastleLoadName() : string;
功能描述:返回当前沙巴克城主名
函数参数:无
函数返回值:沙巴克城主名
(这部分不要轻易在日常编写脚本中使用,只有在做活动时才有可能涉及到这部分),基本使用方式见数据库操作模板。下面的属性和方法都是通过This_DB这个对象在脚本中调用的。
| 类型 | 功能描述 | 属性 |
|---|---|---|
| Property(只读) | 查询后得到结果记录数 | PsRecordCount |
- 函数接口:procedure PsFirst();
功能描述:将读取指针移动到数据库查询结构的数据集首
函数参数:无
函数返回值:无 - 函数接口:procedure PsNext();
功能描述:将读取指针移动到下一条数据(如果当前数据已经到了最后一条则无法再向下移动)
函数参数:无
函数返回值:无 - 函数接口:function PsEof() : Boolean;
功能描述:判断当前读取指针是否已经指到最后一条查询出的数据
函数参数:无
函数返回值:True或者False - 函数接口:function ExecuteQuery(const QueryStr: string):Boolean;
功能描述:执行数据库的查询语句
函数参数:SQL数据库查询语句
函数返回值:是否查询到结果
脚本使用示例:
This_DB.ExecuteQuery(‘select iname, MaxDc from stditems order by MaxDc desc ;’); - 函数接口:function PsFieldByName(sFieldName : string):string;
功能描述:根据当前读取记录中,查询对应字段名的数据
函数参数:待查询的字段名
函数返回值:以字符串方式返回查询的数据












暂无评论内容