藏宝湾网游单机站

 找回密码
 注册

QQ登录

只需一步,快速开始

★69 元包站 Gm 手游平台★

★69 元包站 Gm 手游平台★

★Gm 游戏平台【无限资源包站平台,真正体验gm和土豪感觉】★

★白嫖放置传奇 玩通关算你赢★

★白嫖放置传奇 玩通关算你赢★

★白嫖长久耐玩型 放置类挂机传奇游戏 充值可打 安全挂机 可交易 无PK★

★@梦幻长久耐玩全新大唐九黎★

★@!!——梦幻长久耐玩全新大唐九黎——!!★

★★新增全新门派九黎城, ★侵烛系统 ★静脉系统 ★赐福系统 ★战斗动作声效系统 ★全场景NPC、召唤兽迭代最新 ★17个副本,完全还原 ★独家PK系统,享受极致免费PK★★

承接推广
★承接推广★

★承接推广★

☆ 六一活动开放-放置传奇☆

★ 六一活动开放-放置传奇★

★可白嫖 上班摸鱼类 放置文字传奇游戏(放置休闲)qq群756025698★

★三职业复古★开局送神装★爆率100%★零氪首选★

★三职业复古★开局送神装★爆率100%★零氪首选★

★〖双线〗〖无忧传奇〗〖每日新区〗〖开局送神装 100%高爆率 装备元宝打怪爆〗★

承接推广

★承接推广★

★承接推广★

承接推广

★承接推广★

★承接推广★

★DNF★全职业平衡★公益服★
★DNF★全职业平衡★公益服★

【dnf86版本】【怀旧服】【全职业平衡】【非变态服】【非商业服】【774031300】

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

查看: 1149|回复: 2

[分享] [77M2] 传奇引擎 废旧物品回收 脚本

[复制链接]
发表于 2015-6-24 10:59:05 | 显示全部楼层 |阅读模式

[77M2] 传奇引擎 废旧物品回收 脚本

给会使用的朋友. 我不做任何解答. 77M2上手难度++++++

引擎的链接具体大家可以搜索一下 就不发类似广告的链接了.

unit Q36;

interface
  uses Classes, SysUtils, DefiniensConst;
  
procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure FastRecover(Npc: TNormNpc; Player: TPlayObject; Args: TArgs); //一键回收
procedure ViewInfo(Npc: TNormNpc; Player: TPlayObject; Args: TArgs); //查看可用的回收信息

implementation

var
    NameList,
  GoldList,
  ExpList: TStrings;

procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
const
S=
[[
    你好,你想获得更多的金币和经验值吗?哪就将你不要的装备\
都拿我这里回收吧。\\
<查看可回收装备信息/@ViewInfo(0)>\
<一键回收/@@Question(你是否将不需要回收的物品存放好,确定要执行一键回收吗?,@FastRecover)>\\\\
<离开/@exit>
]];
begin
    Npc.Say(Player, S);
end;

procedure FastRecover(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
var
    I, Idx, AGold, AExp: Integer;
begin
    AGold := 0;
  AExp := 0;
  for I := Player.ItemSize - 1 downto 0 do //循环处理包裹物品
  begin
    if Player.BagItem[I] <> nil then  //如果该包裹为不为空
    begin     
        Idx := NameList.IndexOf(Player.BagItem[I].Name); //查看是否有和该物品对应的回收信息
      if Idx >= 0 then
      begin
        AGold := AGold + StrToIntDef(GoldList[Idx], 0); //取出对应的金币
        AExp := AExp + StrToIntDef(ExpList[Idx], 0); //取出对应的经验值
        Player.DeleteItem(Player.BagItem[I]); //删除背包物品  
      end;
    end;
  end;
  if (AGold > 0) or (AExp > 0) then
  begin
      Player.Gold := Player.Gold + AGold; //增加金币
    Player.GoldChanged; //更新金币信息
    Player.AddExp(AExp); //增加经验值
      Player.SendCenterMessage(Format('本次回收装备共获得金币{S=%d;C=249} 经验值{S=%d;C=249}', [AGold, AExp]), 0); //发送回收信息   
  end
  else
      Npc.MessageBox(Player, '你身上毛都没有一根,想回收点撒呢?');
end;

procedure ViewInfo(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
const
S=
[[
                      {S=【物品回收信息】;C=254}\
{S=物品名                     回收金币        回收经验值;C=243}\
$INFO$
<{S=第一页;Y=130}/@ViewInfo(0)>  <{S=上一页;Y=130}/@ViewInfo(1,$ForwardPage$)>  <{S=下一页;Y=130}/@ViewInfo(2,$NextPage$)>  <{S=末尾页;Y=130}/@ViewInfo(3)>  <{S=返回;Y=130}/@main>
]];
LINESTR = '{S=$Name$}{S=$Gold$;X=162}{S=$Exp$;X=258}\';
var
    Message, InfoStr, ANodeStr: String;
  nForwardPage,
  nNextPage,
  nPage,
  I, nStart, nEnd, nIndex: Integer;
begin
  nPage := Args.Int[1]; //取出当前点击的页
  case Args.Int[0] of //根据类型获得当前要返回的页
    0: nPage := 0;
    1: nPage := nPage - 1;
    2: nPage := nPage + 1;
    3: nPage := NameList.Count div 6; //最大页
  end;        
  //取出将要返回的页信息
  nForwardPage := nPage - 1;
  nNextPage := nPage + 1;
  if nForwardPage < 0 then
      nForwardPage := 0;
  if nNextPage > (NameList.Count div 6) then
    nNextPage := NameList.Count div 6;
  if nPage < 0 then
      nPage := 0;
  if nPage > (NameList.Count div 6) then
    nPage := NameList.Count div 6;
   
  InfoStr := '';
  nStart := nPage * 6; //要取的物品位置为 页*12
  nEnd := nStart + 5;  //在当前位置上+11表示一共循环12个物品   
  for I := nStart to nEnd do
  begin
      if I < NameList.Count then
    begin
        //如果位置没超出回收表
        ANodeStr := LINESTR;
      ANodeStr := ReplaceStr(ANodeStr, '$Name$', NameList[I]); //替换物品名称           
      ANodeStr := ReplaceStr(ANodeStr, '$Gold$', GoldList[I]); //替换物品可兑换的荣誉点数         
      ANodeStr := ReplaceStr(ANodeStr, '$Exp$', ExpList[I]); //设置每行的第一个物品名称的X坐标           
      InfoStr := InfoStr + ANodeStr;      
    end;
  end;
    Message := S;
  Message := ReplaceStr(Message, '$INFO$', InfoStr);
  Message := ReplaceStr(Message, '$ForwardPage$', IntToStr(nForwardPage));
  Message := ReplaceStr(Message, '$NextPage$', IntToStr(nNextPage));
  Npc.Say(Player, Message);
end;

//解析一行数据
function ParseItem(const Value: String; var ItemName: String; var Gold, Exp: Integer): Boolean;
var
  List: TStrings;
begin
  Result := False;
  List := TStringList.Create;
  try
    ExtractStrings([','], [], Value, List);
    if List.Count = 3 then
    begin
      ItemName := List[0];   
      Gold := StrToIntDef(List[1], 0);
      Exp := StrToIntDef(List[2], 0);
      Result := True;
    end;
  finally
    List.Free;
  end;  
end;

procedure ReadNationRecover;
var
    List: TStrings;
  ALine, AName, APoint: String;  
  I, AGold, AExp: Integer;
begin
{
    另外一种方式(将物品列表保存在外部文本文件):
  List := TStringList.Create;
  try         
      List.LoadFrom('.\普通金币回收.txt');
    //加载列表
  finally
      List.Free;
  end;
}
  List := Gamelib.TryGetResource('普通金币回收'); //从版本文件中查找回收表,Gamelib.TryGetResource返回的对象永远不要自己去释放
  if List <> nil then //如果找到了回收表
  begin
    for I := 0 to List.Count - 1 do
    begin
      ALine := Trim(List[I]); //取出一行
      if (ALine <> '') and (ALine[1] <> ';') then //如果行不为空,并且第一个字符不是“;”
      begin
          if ParseItem(ALine, AName, AGold, AExp) then
        begin
            NameList.Add(AName);
          GoldList.Add(IntToStr(AGold));
          ExpList.Add(IntToStr(AExp));
        end;
      end;
    end;
  end;      
end;

initialization
    NameList := TStringList.Create;
  GoldList := TStringList.Create;
  ExpList := TStringList.Create;
  ReadNationRecover; //初始化的时候就加载回收表
  
finalization
    FreeAndNil(NameList);
    FreeAndNil(GoldList);
    FreeAndNil(ExpList);

end.



回复

使用道具 举报

 楼主| 发表于 2015-6-24 11:00:55 | 显示全部楼层
记得加上 '普通金币回收'
;物品名,金币数量,经验值
凝霜,5000,10000
井中月,5000,10000
银蛇,5000,10000
修罗,5000,10000
炼狱,5000,10000
魔杖,5000,10000
罗刹,5000,10000
无极棍,5000,10000
洛阳铲,5000,10000
祈祷之刃,5000,10000
血饮,5000,10000
裁决之杖,5000,10000
屠龙,5000,10000
骨玉权杖,5000,10000
龙纹剑,5000,10000
嗜魂法杖,5000,10000
龙牙,5000,10000
怒斩,5000,10000
逍遥扇,5000,10000
命运之刃,5000,10000
游龙剑,5000,10000
天龙圣剑,5000,10000
倚天剑,5000,10000
回复 支持 反对

使用道具 举报

发表于 2015-6-24 12:03:25 | 显示全部楼层
不明觉厉~
回复 支持 反对

使用道具 举报

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

本版积分规则

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明

排行榜|联系我们|小黑屋|手机版|Archiver|游戏藏宝湾 |

GMT+8, 2026-6-8 07:49 , Processed in 0.162554 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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