战神引擎开发手册

数据类型类型描述范围及备注
Boolean布尔类型(False, True)
Char单字符类型定义一个字符
String字符串定义一串字符
Integer整型-2147483648..2147483647
Cardinal整型(无类型)0..4294967295
Int64Int64-2^63..2^63-1
Word字,表示整数范围小于Integer0 – 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.

    1. 入口函数没有函数名
    2. 这个入口函数必须写在脚本的最后
    3. end后面是句点,不是分号。
    4. 在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(只读)等级LevelByte
    property(只读)玩家角色名NameString
    property(只读)空背包数FreeBagNumInteger
    property(只读)职业JobByte
    property(只读)性别GenderByte
    property(只读)玩家的x坐标My_Xinteger
    property(只读)玩家的y坐标My_Yinteger
    property(只读)金币GoldNuminteger
    property(读写)声望MyShengwaninteger
    property(只读)金刚石MyDiamondnumInteger
    property(只读)pk值MyPKpointInteger
    property(只读)人物幸运值LuckNumInteger
    property(只读)攻击命中HitRateByte
    property(只读)攻击速率QuickRateByte
    property(只读)防御ACWord
    property(只读)最大防御MaxACWord
    property(只读)攻击DCWord
    property(只读)最大攻击MaxDCWord
    property(只读)魔法MCWord
    property(只读)最大魔法MaxMCWord
    property(只读)道术SCWord
    property(只读)最大道术MaxSCWord
    property(只读)当前血量HPInteger
    property(只读)最大血量MaxHPInteger
    property(只读)当前魔法值MPInteger
    property(只读)最大魔法值MaxMPInteger
    property(只读)是否已死亡IsDeadBoolean
    property(只读)不在线(组队、行会成员)IsDeletedBoolean
    property(只读)用戒指、符隐身NormalHideBoolean
    property(只读)当前经验值CurrentExpCardinal
    property(只读)行会名称(可能为空)GuildNamestring
    property(只读)是否为队长IsGroupOwnerBoolean
    property(只读)是否为队员IsTeamMemberBoolean
    property(只读)是否有英雄HaveValidHeroBoolean
    property(只读)元宝数YBNumInteger
    property(只读)使用元宝数UsedYBNumInteger
    property(只读)圣殿灵符NickLinFuinteger
    property(只读)当前灵符数MyLFnuminteger
    property(只读)使用灵符数MyUsedLfNuminteger
    property(只读)秒卡数HaveTimeNuminteger
    property(读写)预留参数IntParaminteger
    property(读写)预留参数StrParamString
    property(只读)升为GM后等级GMLevelByte
    property(只读)英雄性别(0为男,1为女,
    -1为无英雄或未召唤)
    HeroGenderInteger
    property(只读)英雄等级(英雄等级,
    -1为无英雄或未召唤)
    HeroLevelInteger
    property(只读)英雄职业
    (0战士,1法师,2道士
    -1为无英雄或未召唤)
    HeroJobInteger
    property(读写)玩家白金账号等级PlatinaChrLvInteger
    property(只读)玩家行会酒泉数GuildPointInteger

    所有玩家属性的调用,都要通过玩家对象来完成。现在只支持当前调用脚本的玩家对象,使用时就是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(读写)沙城,修门费用RepDoorGoldInteger
    property(读写)沙城,修墙费用RepWallGoldInteger
    property(读写)沙城,雇卫士费用HireGuardGoldInteger
    property(读写)沙城,雇弓箭手费用
    (都在脚本定义)
    HireArcherGoldInteger
    property(只读)返回客户端弹输入框后
    玩家输入的字符串
    InputStrstring
    property(只读)返回客户端弹输入框后
    玩家点的确定or取消。
    True为确定,False为取消
    InputOKboolean
    property(只读)NPC所在地图的X坐标My_XInteger
    property(只读)NPC所在地图的Y坐标My_YInteger

    所有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
    1. 函数接口:procedure PsFirst();
      功能描述:将读取指针移动到数据库查询结构的数据集首
      函数参数:无
      函数返回值:无
    2. 函数接口:procedure PsNext();
      功能描述:将读取指针移动到下一条数据(如果当前数据已经到了最后一条则无法再向下移动)
      函数参数:无
      函数返回值:无
    3. 函数接口:function PsEof() : Boolean;
      功能描述:判断当前读取指针是否已经指到最后一条查询出的数据
      函数参数:无
      函数返回值:True或者False
    4. 函数接口:function ExecuteQuery(const QueryStr: string):Boolean;
      功能描述:执行数据库的查询语句
      函数参数:SQL数据库查询语句
      函数返回值:是否查询到结果
      脚本使用示例:
      This_DB.ExecuteQuery(‘select iname, MaxDc from stditems order by MaxDc desc ;’);
    5. 函数接口:function PsFieldByName(sFieldName : string):string;
      功能描述:根据当前读取记录中,查询对应字段名的数据
      函数参数:待查询的字段名
      函数返回值:以字符串方式返回查询的数据
    温馨提示: 本文最后更新于2026-02-14,某些文章具有时效性,若有错误或已失效,请在下方留言或联系游戏素材网
    © 版权声明
    喜欢就支持一下吧
    点赞11 分享
    评论 抢沙发

    请登录后发表评论

      暂无评论内容