|
GowLom2战神引擎常用脚本接口 给物品 : This_Player.Give('屠龙',2); **给物品前务必判定包裹中是否有充足的空间,否则将不能给予物品,但相应货币大概质料将会正常扣除** 空包裹: This_Player.FreeBagNum 如要给玩家2个屠龙,屠龙不可堆叠,以是至少必要两个包裹空位: if This_Player.FreeBagNum >= 2 then This_Player.Give('屠龙',2); 包裹中物品数目: This_Player.GetBagItemCount('物品') 扣除物品 This_Player.Take('屠龙',2'); **扣除物品前物品判定包裹中是否有充足的物品,牢记在扣除的方法中判定** if This_Player.GetBagItemCount ('屠龙') >= 2 then This_Player.Take('屠龙',2'); 随机数: random(x) 返回值为0到 x-1 中的随机一个整数数 比如random(10) 返回值为0-9 中随机一个整数 *综合以上常用接口,活动为使用100个金刚石可抽取随机一个武器,1%的概率抽取屠龙档武器 19%怒斩档 80%裁决 procedure _getRdmWP; var Rdm_int : integer; WpName : string; begin Rdm_int := random(100); //获取随机数,随机数为 0-99中随机一个数字 if This_Player.GetBagItemCount('金刚石') >= 100 then// 查察包裹中是否有充足的金刚石 begin if This_Player.FreeBagNum >=1 then// 查察是否有充足的包裹空间 begin if Rdm_int < 1 then // 随机到0的概率为1% begin case random(3) of 0 : WpName := '屠龙'; 1 : WpName := '嗜魂法杖'; 2 : WpName := '清闲扇'; end; end else if Rdm_int < 20 then //随机到1-19的概率为19% begin case random(3) of 0 : WpName := '怒斩'; 1 : WpName := '龙牙'; 2 : WpName := '龙纹剑'; end; end else if Rdm_int < 100 then //随机到20-99的概率为80% begin case random(3) of 0 : WpName := '裁决之杖'; 1 : WpName := '骨玉权杖'; 2 : WpName := '无极棍'; end; end; This_Player.Take('金刚石',100); This_Player.Give(WpName , 1); This_NPC.NpcDialog(This_Player, WpName + '已放入您的包裹!\|' +'{cmd}<继续使用100个金刚石抽取武器[url=]/@getRdmWP>'[/url]); end else This_NPC.NpcDialog(This_Player, '没有充足的包裹空间!\|' +'{cmd}<返回[url=]/@main>'[/url]); end else This_NPC.NpcDialog(This_Player, '没有充足的金刚石,不可抽取\|' +'{cmd}<返回[url=]/@main>'[/url]); end; begin //脚本入口 使用<返回[url=]/@main[/url]> 可跳转到此处 This_NPC.NpcDialog(This_Player, '巴拉巴拉巴拉一堆废话\|' +'{cmd}<100金刚石抽取武器[url=]/@getRdmWP>'[/url]); end. 获取时间 : GetYear : 返回当前年份 GetMonth : 返回当前月份 GetDay : 返回当前日期 GetDayOfWeek : 返回星期几 GetHour : 返回当前小时数 GetMin: 返回当前分钟数 GetNow() : 获取当前时间浮点数,返回值为double GetDateNum(datatime : double) 返回值为datatime 所对应的数字 如2019年1月1日 使用GetDateNum(GetNow) 返回值为43466 查改变量: 私人变量为V,S ,服务器变量为G 使用方法详见《步伐变量利用指南》 增长、查询、扣除灵符: 增长 :This_Player.AddLF(nType,LF_NUM); 查询 :This_Player.MyLFnum 扣除 :This_Player.DecLF(nType, LF_NUM, false); LF_NUM : 灵符数目 nType : 编号,一样平常为0 **扣除前务必查询是否有充足的灵符** 增长、查询、扣除金币: 增长 : This_Player.AddGold(GoldNum); 查询 :This_Player.GoldNum 扣除 :This_Player.DecGold(GoldNum); GoldNum : 金币数目 **扣除前务必查询是否有充足的金币** 增长、查询、扣除声望: 查询:This_Player.MyShengwan 声望的增长和扣除直接赋值即可 如扣除10点声望 if This_Player.MyShengwan >= 10 then This_Player.MyShengwan := This_Player.MyShengwan - 10; 增长10点声望 This_Player.MyShengwan := This_Player.MyShengwan + 10; **扣除前务必查询是否有充足的声望** 元宝购买: This_Player.PsYBConsum(This_NPC,'回调函数名称',交易业务编号,元宝数目,购买个数); 交易业务编号为大于20000的整数,发起每次活动使用差别的编号,方便后期统计使用 回调函数必须返回boolean值,回调函数名称及逻辑都需自界说编写,请参照下面例子中的 function YB_NewComeBag(price, num: Integer):boolean; **调用该接口时请判定好前置条件,该接口一经调用先扣除元宝,再实行回调函数** 如:2018年10月1日至7日天天12:00-19:00 可使用2元宝或2灵符随机抽奖(优先扣除灵符),夸奖为5灵符(9%)、10声望(20%)、10000履历(40%)、10万金币(30%)、2个金条(1%)
procedure giveYBprz(); //灵符和元宝抽取夸奖完全一样,自界说一个方法,方便调用 ,****自界说方法内容必要写在调用之前**** var rmd : integer; itemStr : string; begin rmd := random(100); if rmd < 9 then begin This_Player.AddLF(0,5); itemStr := '5灵符'; end else if rmd < 29 then begin This_Player.MyShengwan := This_Player.MyShengwan + 10; itemStr := '10声望'; end else if rmd < 69 then begin This_Player.Give('履历',10000); itemStr := '1万履历'; end else if rmd < 99 then begin This_Player.AddGold(100000); itemStr := '10万金币'; end else begin This_Player.Give('金条',2); itemStr := '2个金条'; This_NPC.NpcNotice('恭喜“' + This_Player.Name + ' ”到场两元宝抽奖时得到了' + itemStr + '!!!'); //体系公告红字,全服可见 end; This_Npc.NpcDialog(This_Player, '你得到了:' + itemStr + '\|'+ '{cmd}<继续使用2元宝抽奖[url=]/@RdmYBPrz>'[/url] ); end; procedure _RdmYBPrz; begin if (GetYear = 2018) and (GetMonth = 10) and (GetDay >= 1) and (GetDay <= 7) then begin if (GetHour >= 12) and (GetHour < 19) then //留意竣事时间,19:00:00-19:59:59 GetHour均返回19 begin if This_Player.FreeBagNum >= 2 then begin if This_Player.MyLFnum >= 2 then //优先使用灵符,灵符充足直接扣除灵符并给与夸奖 begin This_Player.DecLF(0,2,false); giveYBprz(); //直接调用给夸奖方法 ****自界说方法内容必要写在调用之前**** end else //灵符不敷则使用元宝 This_Player.PsYBConsum(This_NPC,'YB_NewComeBag',20001,2,1); //YB_NewComeBag为自界说回调函数名称, 20001为扣除编号,方便统计,2为元宝数目,1为个数(一样平常使用1即可) 本帖隐蔽的内容 end else This_NPC.NpcDialog(This_Player, '包裹空间不敷,请整理后再来抽取夸奖!'); end else This_NPC.NpcDialog(This_Player, '逐日抽奖时间为12:00-19:00!'); end else This_NPC.NpcDialog(This_Player, '活动时间为10月1日至7日!'); end; function YB_NewComeBag(price, num: Integer):boolean; //YB_NewComeBag为自界说回调函数名称,别的参数为固定格式 ,不可以改变 begin result := true; giveYBprz(); //直接调用给夸奖方法 ****自界说方法内容必要写在调用之前**** end; begin This_NPC.NpcDialog(This_Player, '巴拉巴拉巴拉巴拉废话先来一段\|' +'{cmd}<2元宝抽奖[url=]/@RdmYBPrz>'[/url]); end. 舆图刷怪 检测舆图怪物数目: 检测某舆图指定怪物数目:This_NPC.CheckMapMonByName(mapName , monName) 检测指定舆图全部怪物数目:CheckOtherMapMon(mapname) ;该接口不必要npc调用 指定舆图刷怪:This_NPC.CreateMon(舆图名,X,Y,R,怪物名称,数目); 如:This_NPC.CreateMon('D5071',20,23,10,'混沌牛魔王',1); 传送: This_Player.Flyto(舆图名,x,y); 将脚色传送至某舆图的x、y点 This_Player.RandomFlyTo(舆图名); 将脚色传送至某舆图的随机点 如: This_Player.Flyto('D711',200 + random(3) - 1,204 + random(3) - 1); 表现将脚色传送至舆图 D711的 200,204的 3*3范围内随机点
获取脚色信息: This_Player.Name 脚色名称 This_Player.Gender 脚色性别0:男 1:女 This_Player.Level 脚色品级 This_Player.Job 脚色职业0:兵士 1:法师 2:羽士
行会相干: This_Player.IsCastle 是否为沙巴克行会 This_Player.GuildName 返回行会名称,没有行会返回'' This_npc.GetCastleGuildName 获取沙巴克行会行会名称 组队,for循环: Procedure _doexit; begin This_Npc.CloseDialog(This_Player); end; procedure _SP_Wealth_5_1; begin This_NPC.NpcDialog(This_Player, '<财神宝库一[url=]/@SP_Wealth_5_1_1[/url]> <财神宝库二[url=]/@SP_Wealth_5_1_2[/url]> <财神宝库三[url=]/@SP_Wealth_5_1_3>'[/url] ); end; procedure SP_Wealth_open(roomIdx:integer); var Group: TBaseGroup; MemberCount,i: Integer; APlayer: TPlayer; bIsstu: boolean; s: string; begin if This_Player.MapName <> 'GA0' then Exit; Group := This_Player.MyGroup; if Group = nil then begin This_NPC.NpcDialog(This_Player, '财神宝库必要组队才华进入。'); exit; end if not This_Player.IsGroupOwner then begin This_Npc.NpcDialog(This_Player, '您不是所在队伍的队长,不能进入。' ); Exit; end; if This_Player.Level < 35 then begin This_Npc.NpcDialog(This_Player, '你的品级未到35级,不能领导各人进入宝库。' ); Exit; end; if (This_Player.MyLFnum < 10) then begin This_Npc.NpcDialog(This_Player, '你身上携带的灵符不敷10张,不能领导各人进入宝库。' ); Exit; end MemberCount := Group.GetMemberCount; //整队飞到房间中 bIsstu := True; for i := 0 to MemberCount - 1 do begin APlayer := TPlayer(Group.GetMember(i)); if APlayer <> This_Player then begin if compareText(APlayer.MapName,'GA0') <> 0 then begin s := '你队伍里' + APlayer.Name + '不在庄园,不能进入。\'; bIsstu := false; break; end; end; end; if bIsstu = false then begin This_NPC.NpcDialog(This_Player,s); exit; end else begin This_Player.DecLF(30018,10,false); This_Player.CallOut(This_NPC,1800,'callOutFlyBack'); for i := 0 to MemberCount - 1 do begin APlayer := TPlayer(Group.GetMember(i)); if APlayer <> This_Player then begin if compareText(APlayer.MapName,'GA0') = 0 then begin APlayer.CallOut(This_NPC,1800,'callOutFlyBack'); //1800秒后实行传出房间的函数 end; end; end; case roomIdx of 1:This_Player.GroupFly('D5074~04'); 2:This_Player.GroupFly('D5074~02'); 3:This_Player.GroupFly('D5074~03'); end; end; end; procedure callOutFlyBack; //传出房间的函数,判定是否在活动舆图,假如在活动舆图,传送回庄园 begin if (CompareText(This_Player.MapName,'D5074~04') = 0) or (CompareText(This_Player.MapName,'D5074~02') = 0) or (CompareText(This_Player.MapName,'D5074~03') = 0) then This_Player.RandomFlyTo('GA0'); end; procedure _SP_Wealth_5_1_1; begin SP_Wealth_open(1); end; procedure _SP_Wealth_5_1_2; begin SP_Wealth_open(2); end; procedure _SP_Wealth_5_1_3; begin SP_Wealth_open(3); end; begin This_NPC.NpcDialog(This_Player, '宝库中每过一段时间出现保卫,击败保卫掉落大量贵重道具,\' +'还大概出现传说中的“夕兽”,记得要带够足量的“爆竹”哦。\' +'进入条件:35级玩家为队长,由35级玩家斲丧10张灵符,\' +'领导小队进入,进入后,你的小队有30分钟探宝时间。\ \' +'<财神宝库一[url=]/@SP_Wealth_5_1_1[/url]> <财神宝库二[url=]/@SP_Wealth_5_1_2[/url]> <财神宝库三[url=]/@SP_Wealth_5_1_3>'[/url] ); end.
来源:传奇手游版本库 |
|