夜游神论坛,传奇一条龙,GM论坛,GM部落

 找回密码
 立即注册

QQ登录

只需一步,快速开始

安全 WRIDC 996 php 88A
查看: 2257|回复: 0

[手游教程] GowLom2战神引擎常用脚本接口

[复制链接]

签到天数: 1 天

[LV.1]初来乍到

47

主题

47

帖子

2

钻石

Rank: 1

积分
94
发表于 2019-8-22 20:23:01 | 显示全部楼层 |阅读模式
[size=18.018px]给物品 :
[size=18.018px]      This_Player.Give('屠龙',2);
[size=18.018px]      ***给物品前务必判断包裹中是否有足够的空间,否则将不能给予物品,但相应货币或者材料将会正常扣除***
[size=18.018px]空包裹:
[size=18.018px]      This_Player.FreeBagNum
[size=18.018px]      如要给玩家2个屠龙,屠龙不可堆叠,所以至少需要两个包裹空位:
[size=18.018px]     if This_Player.FreeBagNum >= 2 then
[size=18.018px]     This_Player.Give('屠龙',2);
[size=18.018px]包裹中物品数量:
[size=18.018px]     This_Player.GetBagItemCount('物品')
[size=18.018px]扣除物品
[size=18.018px]     This_Player.Take('屠龙',2');
[size=18.018px]     ***扣除物品前物品判断包裹中是否有足够的物品,切记在扣除的方法中判断***
[size=18.018px]    if This_Player.GetBagItemCount ('屠龙') >= 2 then
[size=18.018px]    This_Player.Take('屠龙',2');

[size=18.018px]随机数:
[size=18.018px]    random(x) 返回值为0到 x-1 中的随机一个整数数
[size=18.018px]    比如random(10) 返回值为0-9 中随机一个整数
[size=18.018px]*综合以上常用接口,活动为使用100个金刚石可抽取随机一个武器,1%的概率抽取屠龙档武器 19%怒斩档  80%裁决   
[size=18.018px]procedure _getRdmWP;
[size=18.018px]var Rdm_int : integer;
[size=18.018px]WpName : string;
[size=18.018px]begin
[size=18.018px]    Rdm_int := random(100);  //获取随机数,随机数为 0-99中随机一个数字
[size=18.018px]   
[size=18.018px]    if This_Player.GetBagItemCount('金刚石') >= 100 then// 查看包裹中是否有足够的金刚石
[size=18.018px]    begin
[size=18.018px]        if This_Player.FreeBagNum >=1 then// 查看是否有足够的包裹空间
[size=18.018px]        begin
[size=18.018px]            if Rdm_int < 1 then // 随机到0的概率为1%
[size=18.018px]            begin
[size=18.018px]                case random(3) of
[size=18.018px]                    0 : WpName := '屠龙';
[size=18.018px]                    1 : WpName := '嗜魂法杖';
[size=18.018px]                    2 : WpName := '逍遥扇';
[size=18.018px]                end;
[size=18.018px]            end else if Rdm_int < 20 then //随机到1-19的概率为19%
[size=18.018px]            begin
[size=18.018px]                case random(3) of
[size=18.018px]                    0 : WpName := '怒斩';
[size=18.018px]                    1 : WpName := '龙牙';
[size=18.018px]                    2 : WpName := '龙纹剑';
[size=18.018px]                end;
[size=18.018px]            end else if Rdm_int < 100 then //随机到20-99的概率为80%
[size=18.018px]            begin
[size=18.018px]                case random(3) of
[size=18.018px]                    0 : WpName := '裁决之杖';
[size=18.018px]                    1 : WpName := '骨玉权杖';
[size=18.018px]                    2 : WpName := '无极棍';
[size=18.018px]                end;
[size=18.018px]            end;
[size=18.018px]            
[size=18.018px]            This_Player.Take('金刚石',100);
[size=18.018px]            This_Player.Give(WpName , 1);
[size=18.018px]            This_NPC.NpcDialog(This_Player,
[size=18.018px]            WpName + '已放入您的包裹!\|'
[size=18.018px]            +'{cmd}<继续使用100个金刚石抽取武器/@getRdmWP>');
[size=18.018px]        end else
[size=18.018px]        This_NPC.NpcDialog(This_Player,
[size=18.018px]        '没有足够的包裹空间!\|'
[size=18.018px]        +'{cmd}<返回/@main>');
[size=18.018px]    end else
[size=18.018px]    This_NPC.NpcDialog(This_Player,
[size=18.018px]    '没有足够的金刚石,不可抽取\|'
[size=18.018px]    +'{cmd}<返回/@main>');
[size=18.018px]end;

[size=18.018px]begin  //脚本入口  使用<返回/@main> 可跳转到此处
[size=18.018px]    This_NPC.NpcDialog(This_Player,
[size=18.018px]    '巴拉巴拉巴拉一堆废话\|'
[size=18.018px]    +'{cmd}<100金刚石抽取武器/@getRdmWP>');
[size=18.018px]end.

[size=18.018px]获取时间 :
[size=18.018px]   GetYear : 返回当前年份
[size=18.018px]   GetMonth : 返回当前月份
[size=18.018px]   GetDay : 返回当前日期
[size=18.018px]   GetDayOfWeek : 返回星期几   
[size=18.018px]   GetHour : 返回当前小时数
[size=18.018px]   GetMin: 返回当前分钟数
[size=18.018px]   GetNow() : 获取当前时间浮点数,返回值为double
[size=18.018px]   GetDateNum(datatime : double) 返回值为datatime 所对应的数字
[size=18.018px]   如2019年1月1日 使用GetDateNum(GetNow)  返回值为43466  
[size=18.018px]查改变量:
[size=18.018px]    私人变量为V,S ,服务器变量为G
[size=18.018px]    使用方法详见《程序变量操作指南》
[size=18.018px]增加、查询、扣除灵符:
[size=18.018px]   增加 :This_Player.AddLF(nType,LF_NUM);
[size=18.018px]   查询 :This_Player.MyLFnum
[size=18.018px]   扣除 :This_Player.DecLF(nType, LF_NUM, false);
[size=18.018px]   LF_NUM : 灵符数量
[size=18.018px]   nType : 编号,一般为0
[size=18.018px]   ***扣除前务必查询是否有足够的灵符***
[size=18.018px]增加、查询、扣除金币:
[size=18.018px]   增加 : This_Player.AddGold(GoldNum);
[size=18.018px]   查询 :This_Player.GoldNum
[size=18.018px]   扣除 :This_Player.DecGold(GoldNum);
[size=18.018px]   GoldNum : 金币数量
[size=18.018px]   ***扣除前务必查询是否有足够的金币***
[size=18.018px]增加、查询、扣除声望:
[size=18.018px]   查询:This_Player.MyShengwan
[size=18.018px]   声望的增加和扣除直接赋值即可
[size=18.018px]   如扣除10点声望
[size=18.018px]   if This_Player.MyShengwan >= 10 then
[size=18.018px]   This_Player.MyShengwan := This_Player.MyShengwan - 10;
[size=18.018px]   增加10点声望
[size=18.018px]   This_Player.MyShengwan := This_Player.MyShengwan + 10;
[size=18.018px]   ***扣除前务必查询是否有足够的声望***
[size=18.018px]元宝购买:
[size=18.018px]   This_Player.PsYBConsum(This_NPC,'回调函数名称',交易编号,元宝数量,购买个数);
[size=18.018px]   交易编号为大于20000的整数,建议每次活动使用不同的编号,方便后期统计使用
[size=18.018px]   回调函数必须返回boolean值,回调函数名称及逻辑都需自定义编写,请参照下面例子中的 function YB_NewComeBag(price, num: Integer):boolean;
[size=18.018px]   ***调用该接口时请判断好前置条件,该接口一经调用先扣除元宝,再执行回调函数***
[size=18.018px]如:2018年10月1日至7日每天12:00-19:00 可使用2元宝或2灵符随机抽奖(优先扣除灵符),奖励为5灵符(9%)、10声望(20%)、10000经验(40%)、10万金币(30%)、2个金条(1%)


[size=18.018px]procedure giveYBprz();  //灵符和元宝抽取奖励完全一样,自定义一个方法,方便调用 ,*****自定义方法内容需要写在调用之前*****
[size=18.018px]var rmd : integer;
[size=18.018px]itemStr : string;
[size=18.018px]begin
[size=18.018px]   
[size=18.018px]    rmd := random(100);
[size=18.018px]    if rmd < 9 then
[size=18.018px]    begin
[size=18.018px]        This_Player.AddLF(0,5);
[size=18.018px]        itemStr := '5灵符';
[size=18.018px]    end else if rmd < 29 then
[size=18.018px]    begin
[size=18.018px]        This_Player.MyShengwan := This_Player.MyShengwan + 10;
[size=18.018px]        itemStr := '10声望';
[size=18.018px]    end else if rmd < 69 then
[size=18.018px]    begin
[size=18.018px]        This_Player.Give('经验',10000);
[size=18.018px]        itemStr := '1万经验';
[size=18.018px]    end else if rmd < 99 then
[size=18.018px]    begin
[size=18.018px]        This_Player.AddGold(100000);
[size=18.018px]        itemStr := '10万金币';
[size=18.018px]    end else
[size=18.018px]    begin
[size=18.018px]        This_Player.Give('金条',2);
[size=18.018px]        itemStr := '2个金条';
[size=18.018px]        This_NPC.NpcNotice('恭喜“' + This_Player.Name + ' ”参加两元宝抽奖时获得了' + itemStr + '!!!'); //系统公告红字,全服可见
[size=18.018px]    end;  
[size=18.018px]    This_Npc.NpcDialog(This_Player,
[size=18.018px]    '你获得了:' + itemStr + '\|'+
[size=18.018px]    '{cmd}<继续使用2元宝抽奖/@RdmYBPrz>'
[size=18.018px]    );
[size=18.018px]end;
[size=18.018px]procedure _RdmYBPrz;
[size=18.018px]begin
[size=18.018px]    if (GetYear = 2018) and (GetMonth = 10) and (GetDay >= 1) and (GetDay <= 7) then
[size=18.018px]    begin
[size=18.018px]        if (GetHour >= 12) and (GetHour < 19) then  //注意结束时间,19:00:00-19:59:59 GetHour均返回19
[size=18.018px]        begin
[size=18.018px]            if This_Player.FreeBagNum >= 2 then
[size=18.018px]            begin
[size=18.018px]                if This_Player.MyLFnum >= 2 then //优先使用灵符,灵符足够直接扣除灵符并给与奖励
[size=18.018px]                begin
[size=18.018px]                    This_Player.DecLF(0,2,false);
[size=18.018px]                    giveYBprz();    //直接调用给奖励方法 *****自定义方法内容需要写在调用之前*****
[size=18.018px]                end else                           //灵符不足则使用元宝
[size=18.018px]                This_Player.PsYBConsum(This_NPC,'YB_NewComeBag',20001,2,1);  //YB_NewComeBag为自定义回调函数名称, 20001为扣除编号,方便统计,2为元宝数量,1为个数(一般使用1即可)
[size=18.018px]            end else
[size=18.018px]            This_NPC.NpcDialog(This_Player, '包裹空间不足,请整理后再来抽取奖励!');
[size=18.018px]        end else
[size=18.018px]        This_NPC.NpcDialog(This_Player, '每日抽奖时间为12:00-19:00!');
[size=18.018px]    end else
[size=18.018px]    This_NPC.NpcDialog(This_Player, '活动时间为10月1日至7日!');
[size=18.018px]end;
[size=18.018px]function YB_NewComeBag(price, num: Integer):boolean; //YB_NewComeBag为自定义回调函数名称,其余参数为固定格式 ,不可以改变
[size=18.018px]begin
[size=18.018px]   result := true;
[size=18.018px]   giveYBprz(); //直接调用给奖励方法 *****自定义方法内容需要写在调用之前*****
[size=18.018px]end;
[size=18.018px]begin
[size=18.018px]     This_NPC.NpcDialog(This_Player, '巴拉巴拉巴拉巴拉废话先来一段\|'
[size=18.018px]     +'{cmd}<2元宝抽奖/@RdmYBPrz>');
[size=18.018px]end.

[size=18.018px]地图刷怪  检测地图怪物数量:
[size=18.018px]   检测某地图指定怪物数量:This_NPC.CheckMapMonByName(mapName , monName)
[size=18.018px]   检测指定地图所有怪物数量:CheckOtherMapMon(mapname) ;该接口不需要npc调用
[size=18.018px]   指定地图刷怪:This_NPC.CreateMon(地图名,X,Y,R,怪物名称,数量);
[size=18.018px]   如:This_NPC.CreateMon('D5071',20,23,10,'混沌牛魔王',1);

[size=18.018px]传送:
[size=18.018px]This_Player.Flyto(地图名,x,y); 将角色传送至某地图的x、y点
[size=18.018px]This_Player.RandomFlyTo(地图名); 将角色传送至某地图的随机点
[size=18.018px]如:  
[size=18.018px]This_Player.Flyto('D711',200 + random(3) - 1,204 + random(3) - 1);
[size=18.018px]表示将角色传送至地图 D711的 200,204的 3*3范围内随机点  


[size=18.018px]获取角色信息:   
[size=18.018px]This_Player.Name         角色名称
[size=18.018px]This_Player.Gender       角色性别0:男   1:女
[size=18.018px]This_Player.Level         角色等级
[size=18.018px]This_Player.Job            角色职业0:战士 1:法师  2:道士


[size=18.018px]行会相关:
[size=18.018px]This_Player.IsCastle               是否为沙巴克行会
[size=18.018px]This_Player.GuildName            返回行会名称,没有行会返回''
[size=18.018px]This_npc.GetCastleGuildName  获取沙巴克行会行会名称
[size=18.018px]   

[size=18.018px]组队,for循环:

[size=18.018px]Procedure _doexit;
[size=18.018px]begin
[size=18.018px]   This_Npc.CloseDialog(This_Player);
[size=18.018px]end;
[size=18.018px]procedure _SP_Wealth_5_1;
[size=18.018px]begin
[size=18.018px]  This_NPC.NpcDialog(This_Player,
[size=18.018px]  '<财神宝库一/@SP_Wealth_5_1_1>    <财神宝库二/@SP_Wealth_5_1_2>    <财神宝库三/@SP_Wealth_5_1_3>'
[size=18.018px]  );
[size=18.018px]end;
[size=18.018px]procedure SP_Wealth_open(roomIdx:integer);
[size=18.018px]var
[size=18.018px]  Group: TBaseGroup;
[size=18.018px]  MemberCount,i: Integer;
[size=18.018px]  APlayer: TPlayer;
[size=18.018px]  bIsstu: boolean;
[size=18.018px]  s: string;
[size=18.018px]begin
[size=18.018px]   if This_Player.MapName <> 'GA0' then
[size=18.018px]    Exit;
[size=18.018px]     Group := This_Player.MyGroup;
[size=18.018px]     if Group = nil then
[size=18.018px]     begin
[size=18.018px]        This_NPC.NpcDialog(This_Player,
[size=18.018px]        '财神宝库需要组队才能进入。');
[size=18.018px]        exit;
[size=18.018px]     end
[size=18.018px]     
[size=18.018px]     if not This_Player.IsGroupOwner then
[size=18.018px]     begin
[size=18.018px]        This_Npc.NpcDialog(This_Player,
[size=18.018px]        '您不是所在队伍的队长,不能进入。'
[size=18.018px]        );
[size=18.018px]        Exit;
[size=18.018px]     end;
[size=18.018px]     
[size=18.018px]     if This_Player.Level < 35 then
[size=18.018px]     begin
[size=18.018px]        This_Npc.NpcDialog(This_Player,
[size=18.018px]        '你的等级未到35级,不能带领大家进入宝库。'
[size=18.018px]        );
[size=18.018px]        Exit;
[size=18.018px]     end;
[size=18.018px]     
[size=18.018px]     if (This_Player.MyLFnum < 10) then
[size=18.018px]     begin
[size=18.018px]        This_Npc.NpcDialog(This_Player,
[size=18.018px]        '你身上携带的灵符不足10张,不能带领大家进入宝库。'
[size=18.018px]        );
[size=18.018px]        Exit;
[size=18.018px]     end
[size=18.018px]     
[size=18.018px]     MemberCount := Group.GetMemberCount;
[size=18.018px]     //整队飞到房间中
[size=18.018px]    bIsstu := True;      
[size=18.018px]    for i := 0 to MemberCount - 1 do
[size=18.018px]    begin
[size=18.018px]       APlayer := TPlayer(Group.GetMember(i));
[size=18.018px]       if APlayer <> This_Player then
[size=18.018px]       begin
[size=18.018px]          if compareText(APlayer.MapName,'GA0') <> 0 then
[size=18.018px]          begin
[size=18.018px]            s := '你队伍里' + APlayer.Name + '不在庄园,不能进入。\';
[size=18.018px]            bIsstu := false;
[size=18.018px]            break;
[size=18.018px]          end;  
[size=18.018px]       end;                                                      
[size=18.018px]    end;
[size=18.018px]  
[size=18.018px]    if bIsstu = false then
[size=18.018px]    begin
[size=18.018px]       This_NPC.NpcDialog(This_Player,s);
[size=18.018px]       exit;
[size=18.018px]    end
[size=18.018px]    else                  
[size=18.018px]    begin
[size=18.018px]       This_Player.DecLF(30018,10,false);
[size=18.018px]       This_Player.CallOut(This_NPC,1800,'callOutFlyBack');
[size=18.018px]       for i := 0 to MemberCount - 1 do
[size=18.018px]       begin
[size=18.018px]          APlayer := TPlayer(Group.GetMember(i));
[size=18.018px]          if APlayer <> This_Player then
[size=18.018px]          begin
[size=18.018px]            if compareText(APlayer.MapName,'GA0') = 0 then
[size=18.018px]            begin
[size=18.018px]              APlayer.CallOut(This_NPC,1800,'callOutFlyBack');   //1800秒后执行传出房间的函数
[size=18.018px]            end;  
[size=18.018px]          end;         
[size=18.018px]       end;
[size=18.018px]      
[size=18.018px]       case roomIdx of
[size=18.018px]          1:This_Player.GroupFly('D5074~04');
[size=18.018px]          2:This_Player.GroupFly('D5074~02');
[size=18.018px]          3:This_Player.GroupFly('D5074~03');
[size=18.018px]       end;           
[size=18.018px]    end;
[size=18.018px]        
[size=18.018px]end;
[size=18.018px]procedure callOutFlyBack; //传出房间的函数,判断是否在活动地图,如果在活动地图,传送回庄园
[size=18.018px]begin
[size=18.018px]  if (CompareText(This_Player.MapName,'D5074~04') = 0) or (CompareText(This_Player.MapName,'D5074~02') = 0)
[size=18.018px]  or (CompareText(This_Player.MapName,'D5074~03') = 0) then
[size=18.018px]  
[size=18.018px]    This_Player.RandomFlyTo('GA0');
[size=18.018px]end;
[size=18.018px]procedure _SP_Wealth_5_1_1;
[size=18.018px]begin
[size=18.018px]   SP_Wealth_open(1);
[size=18.018px]end;
[size=18.018px]procedure _SP_Wealth_5_1_2;
[size=18.018px]begin
[size=18.018px]   SP_Wealth_open(2);
[size=18.018px]end;
[size=18.018px]procedure _SP_Wealth_5_1_3;
[size=18.018px]begin
[size=18.018px]   SP_Wealth_open(3);
[size=18.018px]end;
[size=18.018px]begin
[size=18.018px]   This_NPC.NpcDialog(This_Player,
[size=18.018px]     '宝库中每过一段时间出现守卫,击败守卫掉落大量珍贵道具,\'
[size=18.018px]     +'还可能出现传说中的“夕兽”,记得要带够足量的“爆竹”哦。\'
[size=18.018px]     +'进入条件:35级玩家为队长,由35级玩家消耗10张灵符,\'
[size=18.018px]     +'带领小队进入,进入后,你的小队有30分钟探宝时间。\ \'
[size=18.018px]     +'<财神宝库一/@SP_Wealth_5_1_1>    <财神宝库二/@SP_Wealth_5_1_2>    <财神宝库三/@SP_Wealth_5_1_3>'
[size=18.018px]     );
[size=18.018px]end.





上一篇:owLom2战神引擎文本符号详解
下一篇:GowLom2战神引擎脚本引用方法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

传奇广告代理|传奇脚本|微变传奇|单职业传奇|热血传奇|传奇私服|GM论坛|英雄合击|小黑屋|百度统计|夜游神论坛 |网站地图

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.