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; function VarDateTime(const AVarName: String ): TVarValue; function VarFloat(const AVarName: String ): TVarValue; function VarBoolean(const AVarName: String ): TVarValue; 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; 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: 超时时间 单位毫秒。 function AddMonNpc(MonName:String; NpcName:String; MapName:String; MapX:Integer; MapY:Integer;AUnitName:String;Camp:Byte;Nation:Byte; AttackDiffCamp:Boolean=True; AttackDiffNation:Boolean=True; AttackRed:Boolean=False;AttackMonAttackRed:Boolean=False;MissionX:Integer;MissionY:Integer;); 增加怪物Npc(MonName: 怪物名称,NpcName: NPC名称,MapName: 目标地图名称,MapX, MapY: 刷新位置,AUnitName: 和怪物NPC关联的脚本单元名,Camp: 阵营,Nation: 国别,AttackDiffCamp: 是否攻击不同阵营对象,AttackDiffNation: 是否攻击不同国别对象,AttackRed: 是否攻击红名,AttackMon: 是否攻击怪物) function RemoveMonNpc(const NpcName:String; MapName:String; MapX:Integer; MapY:Integer;): Boolean; 删除一个怪物NPC(NpcName: NPC名称,MapName: 目标地图名称,MapX, MapY: 位置) function AddMonNpcEx(MonName:String; NpcName:String; Map:TEnvirnoment; MapX:Integer; MapY:Integer;AUnitName:String;Camp:Byte;Nation:Byte; AttackDiffCamp:Boolean=True; AttackDiffNation:Boolean=True; AttackRed:Boolean=False;AttackMonAttackRed:Boolean=False;MissionX:Integer;MissionY:Integer;); 增加怪物Npc(MonName: 怪物名称,NpcName: NPC名称,Map: 目标地图名称,MapX, MapY: 刷新位置,AUnitName: 和怪物NPC关联的脚本单元名,Camp: 阵营,Nation: 国别,AttackDiffCamp: 是否攻击不同阵营对象,AttackDiffNation: 是否攻击不同国别对象,AttackRed: 是否攻击红名,AttackMon: 是否攻击怪物) function RemoveMonNpcEx(const NpcName:String; Map:TEnvirnoment; MapX:Integer; MapY:Integer;): Boolean; 删除一个怪物NPC(NpcName: NPC名称,Map: 目标地图名称,MapX, MapY: 位置) function GetIPLocal(const IP:String):String; 查询IP地址信息 procedure AsyncHttpGet(Ident:String;URL:String;TimeOut:Cardinal = 5000) 支持httpget功能
参数说明:1.ident:请求标志,自定义数据,当httpost 完成或者错误的时候 此数据会原封不动传递到下文的OnAsyncHttpGetResult中 2.URL:远程服务器URL 3.TimeOut: 超时时间 单位秒 function RandomRange(const Min,Max:Int64):Int64; 获取一个指定范围内的随机数(Min:最小数,Max:最大数)
例: A := GameLib.RandomRange(100,200); 随机从100- 200中间取一个数, 包含100,200 function GameLib.SaveUserItemToString(UserItem:TUserItem):String 将一个物品对象转化为字符串 function GameLib.LoadUserItemFromString(Str:String):TUserItem; 将一个字符串转化为物品对象
引擎官网:www.91M2.com 交流群:5555999 此引擎仅供测试,切勿用于商业用途。如有侵权请立即联系我们,我们将在第一时间删除。