查看: 17794|回复: 1

[传奇战神引擎脚本] 战神引擎冲级奖励脚本-已修复BUG

  [复制链接]

4783

主题

5079

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
18913

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2020-4-5 16:50:55 | 显示全部楼层 |阅读模式
战神引擎冲级奖励脚本-已修复BUG https://www.gmbbs.net/

{冲级奖励
作者:开心就好
内容:升到一定级别领取一定的装备,个别装备全服领取数目有限
部分项目每天都可以领取,相当于签到功能
}


PROGRAM Mir2;
var
sum1:Integer;  
sum2:Integer;
sum3:Integer;
sum4:Integer;
sum5:Integer;
sum6:Integer;
sum7:Integer;
sum8:Integer;
sum9:Integer;
sumG7 :Integer;
sumG8 :Integer;
sumG9 :Integer;
sumG70 :String;
sumG80 :String;
sumG90 :String;  
Procedure _doexit;
begin
   This_Npc.CloseDialog(This_Player);
end;

procedure domain;

begin

sumG70 :=inttostr(5 - sumG7);
sumG80 :=inttostr(5 - sumG8);
sumG90 :=inttostr(3 - sumG9);
  { if  GetG(51,7) < 0 then//删除其面大括号即可以用此初始化代码
     begin
         SetG(51,7,0) ;  
         setG(51,8,0) ;
         SetG(51,9,0) ;    //该代码为初始化全服剩余装备的代码,可放在此脚本里,GM只需运行一次就行,
                 //运行之后需要再次注释,防止无限初始化无限领取装备}
                 
                 
{//以下代码为玩家私有变量,可领装备初始化,可以把这段代码放在mud2.0\Mir200\Envir\PsMapQuest
//LogonQuest.pas:登陆执行脚本里面,这样就可以不用在此脚本里面不用进行
// if  (This_Player.GetV() > 1) or  (This_Player.GetV() < 0) then 的这样的判断语句

if This_Player.GetV(50,2) < 0 then
This_Player.setV(50,1,0) ;       
This_Player.setV(50,2,0) ;       
This_Player.setV(50,3,0) ;       
This_Player.setV(50,4,0) ;       
This_Player.setV(50,5,0) ;       
This_Player.setV(50,6,0) ;       
This_Player.setV(50,7,0) ;       
This_Player.setV(50,8,0) ;
This_Player.setV(50,9,0) ;
end;//       以上任务标号如果与其他脚本重复,则极易出错!!! 编辑最好记下自己所有已用任务代码  }



         This_NPC.NpcDialog(This_Player,
           '31级可以每日领取100灵符'+'  '+'<不限名额/c=red>'+'  '+'<领取/@lq1>\|'
      +'32级可以领取200灵符礼包'+'  '+'<不限名额/c=red>'+'  '+'<领取/@lq2>\|'
          +'33级可以领取本职业首饰'+'    '+'<不限名额/c=red>'+'  '+'<领取/@lq3>\|'
          +'34级可以领取本职业衣服'+'    '+'<不限名额/c=red>'+'  '+'<领取/@lq4>\|'
      +'35级可以在取高级技能书'+'    '+'<不限名额/c=red>'+'  '+'<领取/@lq5>\|'
          +'36级可以领取本职业武器'+'    '+'<不限名额/c=red>'+'  '+'<领取/@lq6>\|'
          +'37级可以领取隐身戒指一个'+' '+'<还剩/C=red>'+sumG70+'<个/C=red>'+'  '+'<领取/@lq7>\|'
          +'38级可以领取传送戒指一个'+' '+'<还剩/C=red>'+sumG80+'<个/C=red>'+'  '+'<领取/@lq8>\|'
          +'39级可以领取麻复护三选一'+' '+'<还剩/C=red>'+sumG90+'<个/C=red>'+'  '+'<领取/@lq9>\|'
      );

       end;
procedure _lq1;
var

today:Integer;
begin
today := GetDateNum(GetNow);

    if This_Player.GetV(52,1) <> today then //此段为每天都能领一次的设置   
    begin
       This_Player.SetV(52,1,today);
         This_Player.setV(50,1,0) ;
    end;
    sum1 := This_Player.GetV(50,1)  ;
    if   sum1 < 1 then
    begin
         if  This_Player.Level >= 31 then//这里设定每档的领取等级,为方便测试可以改1级
            begin
            if  This_Player.FreeBagNum >= 2 then  
            begin
               This_Player.Give('100灵符礼包' , 1);
               This_NPC.NpcDialog(This_Player,
             '装备已放入您的包裹!');
             This_Player.setV(50,1,sum1 + 1) ;

              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!\'
                        );

               end else
              This_NPC.NpcDialog(This_Player,
              '你的等级不够!\'
                         );      
               end else
               This_NPC.NpcDialog(This_Player,
               '你已经领过一次了,请明天再来!\'
                         );
end;

procedure _lq2;

begin
    if  (This_Player.GetV(50,2) > 1) or  (This_Player.GetV(50,2) < 0)  then //此段中的 (This_Player.GetV(50,2) > 1)可以不用,一般默认都是-1,不会大于
    begin
         This_Player.setV(50,2,0) ;
    end;
        sum2 := This_Player.GetV(50,2)  ;
    if   sum2 < 1 then
    begin

         if  This_Player.Level >= 32 then
         begin
            if  This_Player.FreeBagNum >= 2 then
            begin  
               This_Player.Give('200灵符礼包' , 1);
               This_NPC.NpcDialog(This_Player,
             '装备已放入您的包裹!');
             This_Player.setV(50,2,sum2 + 1) ;

              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!');
              end else
              This_NPC.NpcDialog(This_Player,
              '你的等级不够!');         
               end else
               This_NPC.NpcDialog(This_Player,
               '你已经领过一次了!');
    end;


procedure _lq3;

begin
    if  (This_Player.GetV(50,3) > 1) or  (This_Player.GetV(50,3) < 0) then
    begin
         This_Player.setV(50,3,0) ;
    end;
        sum3 := This_Player.GetV(50,3)  ;
    if   sum3 < 1 then
    begin

         if  This_Player.Level >= 33 then
            begin
            if  This_Player.FreeBagNum >= 7 then  

                case This_Player.Job of                //按职业给予装备  可以自行修改
                0 : begin
                This_Player.Give('圣战手镯' , 2);
                                  This_Player.Give('圣战戒指' , 2);
                                  This_Player.Give('圣战头盔' , 1);
                This_Player.Give('圣战项链' , 1);
                This_NPC.NpcDialog(This_Player,
                '装备已放入您的包裹!');
                This_Player.setV(50,3,sum3 + 1) ;  
                    end;
                1  :  begin
                      This_Player.Give('法神手镯' , 2);
                                        This_Player.Give('法神戒指' , 2);
                                        This_Player.Give('法神头盔' , 1);
                                        This_Player.Give('法神项链' , 1);
                                        This_NPC.NpcDialog(This_Player,
                      '装备已放入您的包裹!');
                       This_Player.setV(50,3,sum3 + 1) ;  
                                        end;
                 2 :  begin
                   This_Player.Give('天尊手镯' , 2);
                               This_Player.Give('天尊戒指' , 2);
                                     This_Player.Give('天尊头盔' , 1);
                               This_Player.Give('天尊项链' , 1);
                    This_NPC.NpcDialog(This_Player,
                   '装备已放入您的包裹!');
                   This_Player.setV(50,3,sum3 + 1) ;
                   end;
              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!');
              end else
              This_NPC.NpcDialog(This_Player,
              '你的等级不够!');         
               end else
               This_NPC.NpcDialog(This_Player,
               '你已经领过一次了!');
    end;


procedure _lq4;

begin
    if  (This_Player.GetV(50,4) > 1) or  (This_Player.GetV(50,4) < 0) then
    begin
         This_Player.setV(50,4,0) ;
    end;
        sum4 := This_Player.GetV(50,4)  ;
    if   sum4 < 1 then
    begin
         if  This_Player.Level >= 34 then   
            begin
            if  This_Player.FreeBagNum >= 2 then    //按职业给装备
                 case   This_Player.Job   of
                0 : begin
                    if   This_Player.Gender = 0 then  //按性别给装备
                   This_Player.Give('天魔神甲',1)
                   else
                   This_Player.Give('圣战宝甲',1);
                   This_NPC.NpcDialog(This_Player,
                '装备已放入您的包裹!');
                This_Player.setV(50,4,sum4 + 1) ;  
                    end;
                1  :  begin
                      if   This_Player.Gender = 0 then
                       This_Player.Give('法神披风',1)
                   else
                   This_Player.Give('霓裳羽衣',1);
                                        This_NPC.NpcDialog(This_Player,
                      '装备已放入您的包裹!');
                       This_Player.setV(50,4,sum4 + 1) ;  
                                        end;
                 2 :  
                   begin
                      if   This_Player.Gender = 0 then
                       This_Player.Give('天尊道袍',1)
                   else
                   This_Player.Give('天师长袍',1);
                                        This_NPC.NpcDialog(This_Player,
                      '装备已放入您的包裹!');
                       This_Player.setV(50,4,sum4 + 1) ;  
                   end;
              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!');
              end else
              This_NPC.NpcDialog(This_Player,
              '你的等级不够!');      
               end else
               This_NPC.NpcDialog(This_Player,
               '你已经领过一次了!');
    end;
procedure _lq5;

begin
    if  (This_Player.GetV(50,5) > 1) or  (This_Player.GetV(50,5) < 0) then
    begin
         This_Player.setV(50,5,0) ;
    end;
        sum5 := This_Player.GetV(50,5)  ;
    if   sum5 < 1 then
    begin

         if  This_Player.Level >= 35 then
            begin
            if  This_Player.FreeBagNum >= 2 then  //按职业给技能
               case   This_Player.Job   of
                0 : begin

                   This_Player.Give('狮子吼',1);
                   This_NPC.NpcDialog(This_Player,
                '技能书已经已放入您的包裹!');
                This_Player.setV(50,5,sum5 + 1) ;  
                    end;
                1  :  begin

                   This_Player.Give('流星火雨',1);
                                        This_NPC.NpcDialog(This_Player,
                      '技能书已放入您的包裹!');
                       This_Player.setV(50,5,sum5 + 1) ;  
                                        end;
                 2 :  
                   begin

                   This_Player.Give('飓风破',1);
                                        This_NPC.NpcDialog(This_Player,
                      '技能书已放入您的包裹!');
                       This_Player.setV(50,5,sum5 + 1) ;  
                   end;
              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!');
              end else
              This_NPC.NpcDialog(This_Player,
              '你的等级不够!');      
               end else
               This_NPC.NpcDialog(This_Player,
               '你已经领过一次了!');
end;  

procedure _lq6;

begin
    if  (This_Player.GetV(50,6) > 1) or  (This_Player.GetV(50,6) < 0) then
    begin
         This_Player.setV(50,6,0) ;
    end;
        sum6 := This_Player.GetV(50,6)  ;
    if   sum6 < 1 then
    begin

         if  This_Player.Level >= 36 then
            begin
            if  This_Player.FreeBagNum >= 2 then  //按职业给装备
             case   This_Player.Job   of
                0 : begin

                   This_Player.Give('屠龙',1);
                   This_NPC.NpcDialog(This_Player,
                '武器已经已放入您的包裹!');
                This_Player.setV(50,6,sum6 + 1) ;  
                    end;
                1  :  begin

                   This_Player.Give('龙牙',1);
                                        This_NPC.NpcDialog(This_Player,
                      '武器已放入您的包裹!');
                       This_Player.setV(50,6,sum6 + 1) ;  
                                        end;
                 2 :  
                   begin

                   This_Player.Give('逍遥扇',1);
                                        This_NPC.NpcDialog(This_Player,
                      '武器已放入您的包裹!');
                       This_Player.setV(50,6,sum6 + 1) ;  
                   end;
              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!');  
              end else
              This_NPC.NpcDialog(This_Player,
              '你的等级不够!');      
               end else
               This_NPC.NpcDialog(This_Player,
               '你已经领过一次了!');
end;

procedure _lq7;

begin
    if  (This_Player.GetV(50,7) > 1) or  (This_Player.GetV(50,7) < 0)    then
    begin
         This_Player.setV(50,7,0);   
    end;
    if  (GetG(51,7) > 5)  or (GetG(51,7) < 0) then  // (GetG(51,7) > 5) 此判断可以不用 ,公有变量一般很少默认大于5,以防一万故加上
    begin
         SetG(51,7,0);   
    end;
       sum7 := This_Player.GetV(50,7);
       sumG7 :=  GetG(51,7);

    if  sumG7 < 5 then
         begin
         if   sum7 < 1 then
              begin
                if  This_Player.Level >= 1 then
                    begin
                      if  This_Player.FreeBagNum >= 2 then
                      begin
                      This_Player.Give('隐身戒指' , 1);
                      This_NPC.NpcDialog(This_Player,
                      '装备已放入您的包裹!');
                      This_Player.setV(50,7,sum7 + 1) ;
                       SetG(51,7,sumG7 + 1);
              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!');
                end else  
               This_NPC.NpcDialog(This_Player,
              '你的等级不够!');      
               end else               
               This_NPC.NpcDialog(This_Player,
               '你已经领过一次了!');
               end else
               This_NPC.NpcDialog(This_Player,
               '服务器戒指已被领完!');
    end;

procedure _lq8;

begin
    if  (This_Player.GetV(50,8) > 1) or  (This_Player.GetV(50,8) < 0)  then
    begin
         This_Player.setV(50,8,0) ;   
    end;
     if  (GetG(51,8) > 5)  or (GetG(51,8) < 0)  then //) or (GetG(51,8) <> 4) or  (GetG(51,8) <> 3) or (GetG(51,8) <> 2) or (GetG(51,8) <> 1)
         begin
         SetG(51,8,0) ;   
    end;
       sum8 := This_Player.GetV(50,8);
       sumG8 :=  GetG(51,8)  ;
    if  sumG8 < 5 then
         begin
         if   sum8 < 1 then
              begin
                if  This_Player.Level >= 1 then
                    begin
                      if  This_Player.FreeBagNum >= 2 then
                      begin
               This_Player.Give('传送戒指' , 1);
               This_NPC.NpcDialog(This_Player,
             '装备已放入您的包裹!');
             This_Player.setV(50,8,sum8 + 1) ;
                SetG(51,8, sumG8 + 1);

              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!');
               end else  
               This_NPC.NpcDialog(This_Player,
              '你的等级不够!');      
               end else
               This_NPC.NpcDialog(This_Player,
               '你已经领过一次了!');
               end else
               This_NPC.NpcDialog(This_Player,
               '服务器戒指已被领完!');
    end;
procedure _lq9;  //三选1  

begin
    if   (This_Player.GetV(50,9) > 1) or  (This_Player.GetV(50,9) < 0)  then
    begin
         This_Player.setV(50,9,0) ;   
    end;
    if (GetG(51,9) > 5)  or (GetG(51,9) < 0)  then
    begin    //) or (GetG(51,9) <> 2) or  (GetG(51,9) <> 1)  
         SetG(51,9,0) ;   
    end;
       sum9 := This_Player.GetV(50,9);
       sumG9 :=  GetG(51,9)  ;
    if  sumG9 < 3 then
         begin
         if   sum9 < 1 then
              begin
                if  This_Player.Level >= 1 then
                    begin
                      if  This_Player.FreeBagNum >= 2 then
                      begin
               This_NPC.NpcDialog(This_Player, '你要选择的戒指是\'
+ '{cmd}<麻痹/@mb>     ^<复活/@fh>   ^ <护身/@hs>   ^<返回/@main>');
              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!');
               end else  
               This_NPC.NpcDialog(This_Player,
              '你的等级不够!');      
               end else
               This_NPC.NpcDialog(This_Player,
               '你已经领过一次了!');
               end else
               This_NPC.NpcDialog(This_Player,
               '服务器戒指已被领完!');
    end;

procedure _mb;
begin

   if  This_Player.FreeBagNum >= 2 then
                      begin
               This_Player.Give('麻痹戒指' , 1);
               This_NPC.NpcDialog(This_Player,
             '装备已放入您的包裹!');
             This_Player.setV(50,9,sum9 + 1) ;
                SetG(51,9, sumG9 + 1);

              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!');

    end;
procedure _fh;
begin

   if  This_Player.FreeBagNum >= 2 then
                      begin
               This_Player.Give('复活戒指' , 1);
               This_NPC.NpcDialog(This_Player,
             '装备已放入您的包裹!');
             This_Player.setV(50,9,sum9 + 1) ;
                SetG(51,9, sumG9 + 1);

              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!');

    end;
procedure _hs;
  begin

   if  This_Player.FreeBagNum >= 2 then
                      begin
               This_Player.Give('护身戒指' , 1);
               This_NPC.NpcDialog(This_Player,
             '装备已放入您的包裹!');
             This_Player.setV(50,9,sum9 + 1) ;
                SetG(51,9, sumG9 + 1);

              end else
              This_NPC.NpcDialog(This_Player,
              '没有足够的包裹空间!');

    end;
Begin
  domain;

end.

【GM论坛[www.gmbbs.net]免责声明】
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
4、论坛的所有内容都不保证其准确性,完整性,有效性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请告之,本站将立即删除。
   提问发帖求助请点此发帖 https://www.gmbbs.net/
发表于 2022-7-2 22:39:41 | 显示全部楼层
这个东西不错,我只想说一句很好很强大!
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表