> GameLib介绍 GameLib属于公众使用类 包括以下功能 系统消息广播、读取服务端基本信息、读取全局变量、克隆一个指定玩家对象、获取一个指定玩家对象、获取一个指定行会对象、获取一个指定城堡对象、行会操作相关功能、地图操作相关功能、副本地图操作相关功能、商人\\NPC操作相关功能 > Gamelib函数 | **GameLib** | | | --- | --- | | **名称** | **功能** | | property ServerName: String | 服务器名称 | | property ServerID: String | 服务器ID | | property StartTime: TDateTime | M2启动时间 | | property Path: String | M2路径 | | property EnvirPath: String | M2 Envir文件夹路径 | | property G\[index: Integer \]: Integer | 服务器整型变量(index:1-500) 保存 | | property A\[index: Integer \]: String | 服务器字符串变量(index:1-500) 保存 | | property I\[index: Integer \]: Integer | 服务器整型变量(index:1-500) | | property U\[index: Integer \]: String | 服务器字符串变量(index:1-500) | | property PlayCount: Integer | 在线玩家总数 | | property Player\[Index: Integer \]: TPlayObject | 取一个在线玩家 | | property DBEngine: TDBEngine | 数据库管理对象 | | property Toptenz: TToptenz | 排行榜 | | property ClientSpeed: Integer | 客户端速度 | | property ReloadScriptEngine | 重载脚本引擎 | | procedure Lock; | 引擎互斥处理 | | procedure UnLock; | 引擎互斥处理 | | function TryGetResource(const AName: String ): TStrings ; | 尝试获取一个版本中的资源数据,如果不存在则返回nil,返回的资源不可释放 | | function Varstring(const AVarName: String ): TVarValue; | 定义或读取服务器变量,该变量从Envir\\Vars\\Server.ini中存取 | | function Varinteger(const AVarName: String ): TVarValue; | 定义或读取服务器变量,该变量从Envir\\Vars\\Server.ini中存取 | | function VarDateTime(const AVarName: String ): TVarValue; | 定义或读取服务器变量,该变量从Envir\\Vars\\Server.ini中存取 | | function VarFloat(const AVarName: String ): TVarValue; | 定义或读取服务器变量,该变量从Envir\\Vars\\Server.ini中存取 | | function VarBoolean(const AVarName: String ): TVarValue; | 定义或读取服务器变量,该变量从Envir\\Vars\\Server.ini中存取 | | function FindPlayer(const AName: String ): TPlayObject; | 查找一个玩家对象 | | function FindPlayerEx(const AAccount, AName: String ): TPlayObject; | 根据账号和角色名查找一个玩家对象 | | function CreateGuild(const AName, AChief: String ): TGuild; | 创建一个行会(Name为行会名,Chief为创建人) | | function FindGuild(const sGuildName: string): TGuild; | 查找一个行会 | | function DeleteGuild(const sGuildName: string): Boolean; | 删除一个行会 | | function AddGuildWar(const SourceGuild, DestGuild: String ): Boolean; | 添加一个行会战 | | function FindCastle(const Name: String ): TUserCastle; | 查找城堡,比如Gamelib.FindCastle('沙巴克') | | Procedure Kick(const APlayName: String ); | 将一个玩家踢下线 | | Procedure KickAll; | 将全部玩家踢下线 | | procedure ClearMapMon(const AMapName: String ; ANoDrop: Boolean=True; const AMonName: String =''); | 清除地图怪物,NoDrop指定是否不爆出物品 | | procedure Broadcast(const Msg: String ); | 广播消息 | | procedure BroadcastSay(const Msg: String ; FontColor: Byte; Backgound: Byte); | 广播消息 | | procedure BroadcastTopMessage(const Message: String ); | 广播消息 | | procedure BroadcastCenterMessage(const Message: String ; DuraTick:Integer = 2000); | 广播消息 | | procedure BroadcastCountDownMessage(const Message: String ); | 广播消息 | | procedure StartQuest(const AQManagerMethod: String ); | 开始提问(即在线玩家执行相同的函数,比如弹窗让玩家选择是否传送到某地) | | function FindStdItem(ItemIndex: Integer ): TStdItem; | 查找物品定义 | | function FindItemIndex(const Name: String ): Integer ; | 查找物品序号 | | function FindMap(const AMap: String ): TEnvirnoment; | 查找一个地图 | | function AddMapRoute(const Flag, Source: String ; SourceX, SourceY: Integer ; const Dest: string; DestX, DestY: Integer ; UsefulLife: Integer =0; Looks: Integer =-1; ShowName: Boolean=False): Boolean; | 增加一个地图入口。Flag为入口唯一标记,Source为入口,Dest为出口。UsefulLife为入口存在时长(秒),Looks为在地图上显示的效果,-1不显示,该效果可从UI特效中加载。ShowName指定是否在客户端显示入口名称(Flag) | | function DeleteMapRoute(const Name: String ): Boolean; | 删除一个通过AddMapRoute增加的地图入口 | | function CreateDuplicateMap(const Name: String ; UsefulLife: Integer ): TEnvirnoment; | 创建一个副本地图,Name为副本地图名称,UsefulLife为副本时长(秒) | | function CloseDuplicateMap(const MapName: String ): Boolean; | 关闭(删除)一个指定名称的副本地图 | | function AddNpc(const Name: String ; const Map: String ; MapX, MapY, Appr: Integer ; const AUnitName: String =''): TNormNpc; | 增加一个NPC。UnitName为NPC要调用的入口函数所在的单元 | | function RemoveNpc(const Name: String ; const Map: String ; MapX, MapY: Integer ): Boolean; | 移除一个指定位置的NPC | | procedure ShowEffect(const Map: String ; const MapX, MapY, Effect, IntervalTime: Integer ); | 在地图上显示一个特效(可从UI特效中加载) | | procedure RecallMap(const ASourceMap, ADestMap: String ); | 将地图上的玩家全部移到另外一个地图 | | function MonGen(const Amap, AMonName: String; AMonCount, AMapX, AMapY, ARange: Integer; ACamp: Byte=0; ANation: Byte=0; ATag: Integer = 0; ARevivalEvent: Boolean = 0; ADieEvent: Boolean = 0; AKillerEvent: Boolean = 0; ADamageEvent: Boolean = 0):TActorList | 在指定的地图上刷怪。AMap 所在地图ID;AMonName 怪物名称;AMonCount, 刷怪数量; AMapX, AMapY, ARange 刷怪的坐标X ,坐标Y, 刷怪范围; ACamp 阵营ID;ANation 国家ID; ATag 怪物标记;ARevivalEvent 是否 刷新触发;ADieEvent 是否 死亡触发; AKillerEvent 是否 杀人触发; ADamageEvent 是否 受到伤害触发; | | function MonGenEX(const AEnvir :TEnvirnoment;const AMonName: String; AMonCount, AMapX, AMapY, ARange: Integer; ACamp: Byte=0; ANation: Byte=0; ATag: Integer = 0; ARevivalEvent: Boolean = 0; ADieEvent: Boolean = 0; AKillerEvent: Boolean = 0; ADamageEvent: Boolean = 0):TActorList | 在指定的地图上刷怪。AEnvir 所在地图对象: TEnvirnoment; AMonName 怪物名称;AMonCount, 刷怪数量; AMapX, AMapY, ARange 刷怪的坐标X ,坐标Y, 刷怪范围;ACamp 阵营ID;ANation 国家ID ;ATag 怪物标记;ARevivalEvent 是否 刷新触发; ADieEvent 是否 死亡触发;AKillerEvent 是否 杀人触发;ADamageEvent 是否 受到伤害触发; | | function MobPlace(const AMissionMap: String; AMissionX, AMissionY: Integer; const AMonName: String; AX, AY: Integer; ACount: Integer=1; ARange: Integer=0; ACamp: Byte = 0; ANation: Byte = 0; ATag: Integer = 0; ARevivalEvent: Boolean = 0; ADieEvent: Boolean = 0; AKillerEvent: Boolean = 0; ADamageEvent: Boolean = 0):TList | 在指定的地图上刷怪,并且向AMissionX、AMissionY坐标集中,AMissionX刷新后自动前往集中坐标X;AMissionY 刷新后自动前往集中坐标Y;AX,AY 刷新坐标X,Y;其他参数与Mongen一样 | | function MobPlaceEX(const AEnvir : TEnvirnoment; AMissionX, AMissionY: Integer; const AMonName: String; AX, AY: Integer; ACount: Integer=1; ARange: Integer= 0; ACamp: Byte= 0; ANation: Byte = 0; ATag: Integer = 0; ARevivalEvent: Boolean = 0; ADieEvent: Boolean = 0; AKillerEvent: Boolean = 0; ADamageEvent: Boolean = 0):TList | 在指定的地图上刷怪,AEnvir所在地图对象:TEnvirnoment;并且向AMissionX、AMissionY坐标集中, AMissionX刷新后自动前往集中坐标X;AMissionY刷新后自动前往集中坐标Y;AX, AY 刷新坐标X,Y;其他参数与Mongen一样 | | function FindNpc(const NpcName: String ): TNormNpc; | 查找NPC | | function FindMerchant(const MapName, MerchantName: String ): TNormNpc; | 查找一个商人 | | function FindMerchantByTag(ATag: Integer ): TNormNpc; | 根据唯一ID查找一个商人 | | procedure SavePlayerToFile(Source: TPlayObject; const AFileName: String ); | 将玩家信息保存到文件 | | function AddClonePlayer(Source: TPlayObject; const AName: String ; Envir: TEnvirnoment; MapX, MapY: Integer ): TActor; | 克隆一个玩家 | | function AddClonePlayerFromFile(const AFileName, AName: String ; Envir: TEnvirnoment; MapX, MapY: Integer ): TActor; | 从玩家文件信息中克隆一个玩家 | | function DelayGoto(ID, AIntervalTime: Integer ; Once: Boolean=False): Boolean; | 给服务器增加一个时钟事件,触发TimeManageNpc中的GlobalEventExecute函数 | | procedure ClearDelayGoto(ID: Integer ); | 清除一个服务器的时钟 | | function ThrowItem(const MapName, ItemName: String ; MapX, MapY, Range, Count: Integer ; Owner: TActor): Boolean; | 在地图上爆出指定数量的物品。Owner表示可以拾取物品的角色,默认为nil,即都可拾取 查看范例 | | function ThrowItemEx(Map: TEnvirnoment;const ItemName: String ; MapX, MapY, Range, Count: Integer ; Owner: TActor): Boolean; | 在地图上爆出指定数量的物品。Owner表示可以拾取物品的角色,默认为nil,即都可拾取 查看范例 | | function RandomUpgrade(UserItem: TUserItem): Boolean ; | 随机升级物品属性 | | function RandomUpgradePoint(UserItem: TUserItem): Boolean ; | 随机升级物品附加属性 | | procedure RandomUpgradeLevel(UserItem: TUserItem); | 随机升级强化等级属性 | | procedure SendMail(const AFrom, ATo, ASubject, AContent: String ); | 发送一封邮件 | | procedure AddRobot(ExecTime: TDateTime; const AMethod: String ); | 添加一个指定时间执行的机器人,执行一次后删除 | | procedure WriteLog(const LogKind: Byte; const Log: String ); | 写入Log(LogKind为自己能识别的值) | | procedure ReNamePlayer(PlayObject: TPlayObject; const NewName: String ); | 修改人物名称 | | function GetLastThrowItemList:TList | 用于获取 GameLib.ThrowItem 和 GameLib.ThrowItemEx 丢出在地上的物品对象 | | function SaveItemToStore(Item: TUserItem; const ChrName: String;EventType:Integer;Param:String=''); | 将物品保存本地物品库,并返回保存后的物品存储序号,EventType 表示物品存储进去的途径 可自定义 | | function GetStoreItems(const ChrName: String): TStoreItemList; | 根据角色名获取其存储的所有物品 | | function GetStoreItemsWithType(const ChrName: String;EventType:Integer): TStoreItemList; | 根据角色名和 存储的途径类型 获取角色对应途径的所有物品 | | function GetStoreItemsOnlyType(EventType:Integer): TStoreItemList; | 根据存储途径类型 获取所有人存储的物品 | | function CopyUserItem(Item: TUserItem): TUserItem; | 拷贝物品(当从公共物品库取出物品 要添加到背包 或者需要放置到其他位置 需要拷贝一份。否则会内存错乱) | | function GetItemEventType(const Index: String): Integer; | 根据保存编号 得到其存储数据类型 | | function DeleteStoreItems(IndexList: TStringList): Integer; | 批量删除存储的物品 。返回删除的数量 | | function GetGuildCount; Integer; | 获取服务器上总共的行会数量量 | | function GetGuildByIndex(Index: Integer): Guild; | 获取具体的行会对象 | | function QueryPerformanceFrequency:int64; | 获取CPU每秒震荡次数 | | function QueryPerformanceCounter:int64; | 获取获取当前震荡总数(两次震荡总数相减,就是两次间隔的CPU震荡次数) 用于获取超高精度的时间计算。可用于精确到纳秒的计时器 可以用于脚本中做性能测试分析。 | | procedure AsyncHttpPostJson(Ident:String;URL:String;Json:String;TimeOut:Cardinal = 5000); | 用于支持http提交json功能。 参数说明: ident:请求标志 自定义数据 这个当httpost 完成或者错误的时候 此数据会原封不动传递到下文的OnAsyncHttpPostResult 中 URL:远程服务器URL Json : 要提交的json字符串内容。 TimeOut: 超时时间 单位秒。 | | Procedure AsyncHttpGet(Ident:String;URL:String;TimeOut:Cardinal = 5000); | 用于支持httpget功能 参数说明: ident:请求标志 自定义数据 这个当httpost 完成或者错误的时候 此数据会原封不动传递到下文的OnAsyncHttpGetResult 中 URL:远程服务器URL TimeOut: 超时时间 单位秒。 | | procedure RandomRange(const Min,Max:Int64):Int64; | 用于获取一个指定范围内的随机数 和random()不一样是 random 返回的是 integer类型 这个返回的是int64。 例: A := GameLib.RandomRange(1000000000000,200000000000); 意思就是从 随机 从 1000000000000 - 200000000000中间取一个数 包含 1000000000000,200000000000 | | procedure GetIPLocal(const IP:String):String; | 用于查询IP地址信息 | | function AddMonNpc(const MonName: UnicodeString; const NpcName: UnicodeString; const MapName: UnicodeString; MapX, MapY: Integer; const AUnitName: String; Camp, Nation: Byte; AttackDiffCamp, AttackDiffNation, AttackRed, AttackMon: Boolean): TActor; | 添加一个怪物NPC (MonName: 怪物名称;NpcName: NPC名称;MapName: 目标地图名称;MapX, MapY: 刷新位置;AUnitName: 和怪物NPC关联的脚本单元名;Camp: 阵营;Nation: 国别;AttackDiffCamp: 是否攻击不同阵营对象;AttackDiffNation: 是否攻击不同国别对象;AttackRed: 是否攻击红名;AttackMon: 是否攻击怪物) | | function RemoveMonNpc(const NpcName: UnicodeString; const MapName: UnicodeString; MapX, MapY: Integer): Boolean; | 删除一个怪物NPC(NpcName: NPC名称;MapName: 目标地图名称;MapX, MapY: 刷新位置) | | function AddMonNpcEX(const MonName: UnicodeString; const NpcName: UnicodeString;map:TEnvirnoment; MapX, MapY: Integer; const AUnitName: String; Camp, Nation: Byte; AttackDiffCamp, AttackDiffNation, AttackRed, AttackMon: Boolean): TActor; | 添加一个怪物NPC(同addmonnpc,区别在于mapname改为地图对象map) | | function RemoveMonNpEX(const NpcName: UnicodeString; map:TEnvirnoment; MapX, MapY: Integer): Boolean; | 删除一个怪物NPC(RemoveMonNp,区别在于mapname改为地图对象map) | | function GameLib.SaveUserItemToString(UserItem:TUserItem):String; | 将一个物品对象转化为字符串 | | function GameLib.LoadUserItemFromString(Str:String):TUserItem; | 将一个字符串转化为物品对象 |