专业教程 |   抢沙发  浏览: 33160 
unit Q1;

interface
  uses Classes, SysUtils,FastIniFile;

procedure Main(Npc: TNormNpc; Player: TPlayObject;  Args: TArgs);

implementation
const
S=
[[
\\
{S=『;C=249;Y=33}{s=$playername$;C=250;Y=33;fn=楷体;fs=10}{S=』;C=249;Y=33}{S=欢迎光临;C=94;fn=楷体;fs=10;Y=33}{S=$fuwuqiName$;C=249;fn=楷体;fs=10;Y=33}{s=!;c=249;y=33}\  
{s=$zuozhe$;x=300;C=24;y=32;fs=8}{S=请选择你要回收的类型.;C=94;fn=楷体;fs=10;x=53;Y=46} {S=(注意存放重要物品!);C=249;fn=楷体;fs=10;;Y=46}\\     
{s=设置等级:;y=90}<&{s=最低等级;y=90}/@@InputInteger901(最低等级为:$1$,最低等级)>{s=---;y=90}<&{s=最高等级;y=90}/@@InputInteger901(最高等级为:$2$,最高等级)>\\\     
<&{s=蓝色装备;c=146}/@InputString901(高级品质,蓝色装备)> <&{s=绿色装备;c=250}/@InputString901(高级品质,绿色装备)> <&{s=紫色装备;c=241}/@InputString901(高级品质,紫色装备)> <&{s=暗金装备;c=93}/@InputString901(高级品质,暗金装备)> <&{s=红色装备;c=249}/@InputString901(高级品质,红色装备)> <&{s=橙色装备;c=69}/@InputString901(高级品质,橙色装备)> <&{s=粉色装备;c=253}/@InputString901(高级品质,粉色装备)>\\\     
<&全部装备/@InputString901(高级类型,全部)> <&武器装备/@InputString901(高级类型,武器)> <&衣服装备/@InputString901(高级类型,衣服)> <&首饰装备/@InputString901(高级类型,首饰)> <&马牌装备/@InputString901(高级类型,马牌)> <&符类装备/@InputString901(高级类型,符类)> <&斗笠装备/@InputString901(高级类型,斗笠)>
{S=回收等级:;X=17;Y=67}  {s=$1$;c=249;y=67}{s=---;y=67;c=250}{s=$2$;y=67;c=249}\
{S=回收品质:;x=17;y=110}{s=$p$装备;y=110;c=249}{s=(请点击下面对应颜色来设置要回收最高装备品质!);y=110}\
{S=回收类型:;x=17;y=156}{s=$l$装备;y=156;c=249}{s=(请点击下面对应类型来设置要回收的装备类型!);y=156}\
{s=回收站;x=180;C=24;y=250;fs=16;fn=楷体}\     
<&{S=点击开始回收$1$级到$2$级$p$品质以下的$l$!;fs=12;Y=208}/@ks>                                  
   
]];


var
  BL: Integer;  
  
procedure LoadBL;
var
  BIni: TFastIniFile;
begin
  //一定要注意此处的用法,INI创建后是要释放的
  BIni := TFastIniFile.Create(Gamelib.EnvirPath + '示范版本脚本配置文件.ini'); 
  try
    BL := BIni.ReadInteger('回收','倍数', 0);
  finally
    BIni.Free;
  end;
end;
  
procedure ShowB(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
var
  BMessage: String;
begin               
  BMessage := ReplaceStr(S, '$fuwuqiName$',GameLib.ServerName);
  BMessage := ReplaceStr(BMessage, '$playername$', Player.Name); 
  BMessage := ReplaceStr(BMessage, '$1$', Player.N[48]);
  BMessage := ReplaceStr(BMessage, '$2$', Player.N[49]);  
  BMessage := ReplaceStr(BMessage, '$p$', Player.VarString('高级的品质').asString);
  BMessage := ReplaceStr(BMessage, '$l$', Player.VarString('高级的类型').asString);
  BMessage := ReplaceStr(BMessage, '$zuozhe$', player.S[29]);
  Player.SayEx('回收', BMessage);
end;

procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
begin
  //初次进入NPC清空数据
  Player.VarString('回收品质').AsString := '';
  Player.VarString('回收类型').AsString := '';
  player.S[29]:='回收'; 
  ShowB(Npc, Player, Args);
end;
procedure InputInteger901(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
begin
  case Args.Str[0] of
    '最低等级': Player.N[48] := Args.Int[1];
    '最高等级': Player.N[49] := Args.Int[1];
  end;
  ShowB(Npc, Player, Args);  
end;

procedure InputString901(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
begin
  case Args.Str[0] of
    '高级品质': Player.VarString('高级的品质').AsString :=Copy(Args.Str[1], 1, 2);
    '高级类型': Player.VarString('高级的类型').AsString :=Args.Str[1];    
  end;

         ShowB(Npc, Player, Args);  
end;

procedure ks(Npc: TNormNpc; Player: TPlayObject;        Args: TArgs);
var
  BGoldName: String; 
  I, BBBL, BItemCount, BGoldCount, BExpCount: Integer;
  BBllGoldCount, BBllGameGoldCount, BBllExpCount: Integer;
  BHandle, BHandle1: Boolean;
begin
  BGoldName := '';
  BBllGoldCount := 0;
  BBllGameGoldCount := 0;
  BBllExpCount := 0;  
  BItemCount := 0;
   
  for I := Player.ItemSize - 1 downto 0 do 
  begin  
    if Player.BagItem[I] <> nil then
    begin
      BHandle := False; 
      BHandle1 := False;
      case Player.VarString('高级的类型').AsString of
        '全部': BHandle := Player.BagItem[I].StdMode in [1,2..30,35];
        '武器': BHandle := Player.BagItem[I].StdMode in [5,6,8];
        '衣服': BHandle := Player.BagItem[I].StdMode in [10,11,17,18];
        '首饰': BHandle := Player.BagItem[I].StdMode in [15,19,20..24,26,27,28,30,35];
        '马牌': BHandle := Player.BagItem[I].StdMode = 35;
        '符类': BHandle := Player.BagItem[I].StdMode = 25;
        '斗笠': BHandle := Player.BagItem[I].StdMode = 16;
      end;
         
      case Player.VarString('高级的品质').AsString of
        '白色': BHandle1 := Player.BagItem[I].Color = 0;
        '蓝色': BHandle1 := Player.BagItem[I].Color in [0, 146];
        '绿色': BHandle1 := Player.BagItem[I].Color in [0, 146, 250]; 
        '紫色': BHandle1 := Player.BagItem[I].Color in [0, 146, 250, 241];  
        '暗金': BHandle1 := Player.BagItem[I].Color in [0, 146, 250, 241, 93];  
        '红色': BHandle1 := Player.BagItem[I].Color in [0, 146, 250, 241, 93, 249]; 
        '橙色': BHandle1 := Player.BagItem[I].Color in [0, 146, 250, 241, 93, 249, 69]; 
        '粉色': BHandle1 := Player.BagItem[I].Color in [0, 146, 250, 241, 93, 249, 69, 253]; 
      end;  
      if BHandle and BHandle1 then
      begin    
        BBBL := 1;
        case Player.BagItem[I].Color of
          146: BBBL := 2; 
          250: BBBL := 4; 
          241: BBBL := 6; 
          93: BBBL := 8; 
          249: BBBL := 10; 
          69: BBBL := 12;  
          253: BBBL := 14; 
        end;   
        if (Player.BagItem[I].NeedLevel >= Player.N[48]) and (Player.BagItem[I].NeedLevel <= Player.N[49])and(Copy(player.S[29],pos('--',player.S[29])+4,pos('v',player.S[29])-4)='s') then
        begin
                DEBUG(Player.BagItem[I].Color.ToString); 
          BGoldCount := Player.BagItem[I].NeedLevel * (BBBL + BL);
          BExpCount := Player.BagItem[I].NeedLevel * (BBBL + BL) * 10000; 
          Player.AddExp(BExpCount);    
          BBllExpCount := BBllExpCount + BExpCount;  
          Npc.Take(player,Player.BagItem[I].Name, 1);   
          Inc(BItemCount);
          if Player.BagItem[I].Color = 0 then
          begin
            BGoldName := '金币';  
            Player.Gold := Player.Gold + BGoldCount;
            BBllGoldCount := BBllGoldCount + BGoldCount;
          end
          else
          begin
            BGoldName := '元宝';  
            Player.GameGold := Player.GameGold + BGoldCount;  
            BBllGameGoldCount := BBllGameGoldCount + BGoldCount;
          end;
          Player.GoldChanged;
          Player.SendCenterMessage(Format('本次回收获得%d%s,%d经验!',[BGoldCount, BGoldName, BExpCount]), 0);
          Player.SendMessage(Format('本次回收获得%d%s,%d经验!',[BGoldCount, BGoldName, BExpCount]), 2); 
        end;
      end;
    end;       
  end;
  Player.SendCenterMessage(format('本次回收%d件装备总共获得%d金币%d元宝,%d经验,请继续努力!',[BItemCount, BBllGoldCount, BBllGameGoldCount, BBllExpCount]),0);
  Player.SendMessage(Format('本次回收%d件装备总共获得%d金币%d元宝,%d经验,请继续努力!',[BItemCount, BBllGoldCount, BBllGameGoldCount, BBllExpCount]),2);       
end; 
  
initialization
  LoadBL; //引擎加载的时候就读取回收倍率,只读取一次,减少了访问

end.
 

本站所有文章均为《龙引擎》原创,转载请注明出处来自https://www.longm2.cn/3317.html

作者:《
签名:新一代全方位自定义六职业微端游戏引擎!

相关推荐

发表评论

暂无评论

切换注册

登 录

忘记密码 ?

切换登录

注 册

QQ扫一扫联系客服