藏宝湾网游单机站

 找回密码
 注册

QQ登录

只需一步,快速开始

★【黑暗之光SF★我是大主宰SF】【神将三国SF】★

★【0.1折】★【变态网页游戏私服】★

★神将三国网页版上线送V5 5w元宝 5000w铜币 我是大主宰上线满v,80万元宝,小怪都爆元宝,耐玩长久稳定★

【原始传奇SF/维京传奇SF】【GM包站手游】

★【原始传奇SF/维京传奇SF】【GM包站手游】★

★2025火爆『传奇岁月+赤焰号角+维京传奇+原始传奇』爆战力称号BUFF+神装99999999万人PK★

首创可以单机 可以互动 可以赚烟钱的传奇

★全网独家 可以单机 可以互动的传奇!★

★全网唯一持续更新的可单机游戏!每15-25天更新一次内容,保持游戏新鲜度!! 众多独家的功能特色,众多你没见过的全新玩法,有能力的赚点烟钱,还能偶尔沙城战斗!★

★承接推广★
★承接推广★

★承接推广★

☆六一新区开放-放置传奇☆

★六一新区开放-放置传奇★

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

★三职业复古★开局送神装★爆率100%★散人逆袭★

★三职业复古★开局送神装★爆率100%★散人逆袭★

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

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

★承接推广★

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

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

★承接推广★

★承接推广★

★承接推广★

★梦幻16门派全新大唐九黎★

★梦幻16门派全新大唐九黎★

★★新增全新门派九黎城,★不做垃圾,力争什么都做到最好★持续更新,长久稳定★

★承接推广★

★承接推广★

★承接推广★

查看: 970|回复: 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, 2025-5-29 12:53 , Processed in 0.055232 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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