千年技术吧+ 关注 关注:3 帖子:256

  

捕盗大将.txt

  • 枫之精英
    unit 捕盗大将;        //定义与脚本相关的NPC内部名称
    
    interface
    
    function  GetToken (aStr, aToken, aSep : String) : String;
    function  CompareStr (aStr1, aStr2 : String) : Boolean;
    function  callfunc (aText: string): string;
    procedure print (aText: string);
    function  Random (aScope: integer): integer;
    function  Length (aText: string): integer;
    procedure Inc (aInt: integer);
    procedure Dec (aInt: integer);
    function  StrToInt (astr: string): integer;
    function  IntToStr (aInt: integer): string;
    procedure exit;
    
    procedure OnGetResult (aStr : String);
    procedure OnLeftClick (aStr : String);
    
    implementation
    
    procedure OnLeftClick (aStr : String);                //鼠标左键激活 这是个条件
    var
       Str : String;
       Race : Integer;
    begin
       Str := callfunc ('getsenderrace');
       Race := StrToInt (Str);
       if Race = 1 then begin
          Str := 'showwindow .\help\捕盗大将.txt 1';              //定义窗口显示 help文件夹下面的对应文件
          print (Str);                  //执行
          exit; 
       end;
    end;
    
    procedure OnGetResult (aStr : String);                         //取得结果 也是个先决条件 下面的脚本都是在这个前提下激活的
    var
       Str, Name : String;
    begin
       if aStr = 'close' then begin                                   //如果接受到 close 这个命令
          exit;                                                               //关闭
       end; 
       if aStr = 'sell' then begin                                    //如果接受到 sell 命令
          Name := callfunc ('getsendername');               //取得发送者角色名称
          Str := 'tradewindow ' + Name;                         //定义交易窗口
          Str := Str + ' 0';
          print (Str);                                                       //执行
          exit;
       end;
       if aStr = 'buy' then begin                                  //如果接受到 buy 命令
          Name := callfunc ('getsendername');             //取得发送者角色名称
          Str := 'tradewindow ' + Name;                        //定义交易窗口
          Str := Str + ' 1';
          print (Str);                                                 //执行
          exit;
       end;
       if aStr = 'make' then begin                                   //如果接受到 make 命令
          Str := callfunc ('getsenderitemexistence 犀牛角:5'); //检查发送者背包里面是否存在某物品:数量
          if Str = 'false' then begin                  //如果条件不成立 即没有 符合数量的物品
             Str := 'say 快弄5个犀牛角再说';        //定义结果
             print (Str);                                    //执行
             exit;
          end;
          if Str = 'true' then begin                    //如果条件成立  即有 符合数量的物品
             Str := callfunc ('getsenderitemexistence 银元:2'); //检查发送者背包里面是否存在某物品:数量
             if Str = 'false' then begin      //如果条件不成立 即没有 符合数量的物品
                Str := 'say 有两个银元吗?';  //定义结果
                print (Str);                      //执行
                exit;
             end;
             if Str = 'true' then begin       //如果条件成立  即有 符合数量的物品
                Str := callfunc ('checkenoughspace'); //检查角色背包是否有剩余空间
                if Str = 'false' then begin             //如果条件不成立 没空位置了
                   print ('say 物品栏已满');       //执行结果
                   exit;
                end;
    
                Str := 'getsenderitem 犀牛角:5';        //变量:从角色背包里面收取 某物品:数量
                print (Str);                                       //执行
                Str := 'getsenderitem 银元:2';           //变量:从角色背包里面收取 某物品:数量
                print (Str);                                        //执行
                Str := 'putsendermagicitem 桂林符:1 @捕盗大将 4';   //发送某物品到角色背包
                print (Str);                                      //执行
                Str := 'say 收好了..-这就是桂林符~';        //定义变量
                print (Str);                                      //执行
                exit;
             end;
          end;
          exit;
       end;
    end;
    
    end.
    
    --------------------------------------------
    
    程序格式一般来说是 
    
    取得信息对比条件变量
    
    条件不成立 返回结果1  条件成立 返回结果2 或者 继续执行下一个条件
    
    然后关门结束
    
       Str := 'say 收好了..-这就是桂林符~';        //定义变量
                print (Str);                                      //执行
    
    这段是分开来的 精简 为 print ('say 收好了..-这就是桂林符~')  效果是一样的
    
    只是点小技巧而已
    
    这段脚本是需要两个物品换取一个物品 如果 只需要一个物品换一个物品
    
    那把兰色部分去掉就行了  如果NPC不需要买卖功能 那红色部分就可以去掉
    
    绿色部分 不需要改动  
    
    增加条件 要记得关门 也就是 如果有 if 就要有 end;
    
    如果有 if ......then begin 那就要对应有 exit; end; 
    
    在下也是新手上路 文中某些注释 不是很专业 还请大家原谅


    1楼  2022/1/22 20:12:57  回复

  发表回复

    发帖