藏宝湾网游单机站

 找回密码
 注册

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门派全新大唐九黎★

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

★承接推广★

★承接推广★

★承接推广★

查看: 1324|回复: 2

[分享] [77M2] 传奇引擎 天下第一 脚本

[复制链接]
发表于 2015-6-24 10:11:51 | 显示全部楼层 |阅读模式
[77M2] 传奇引擎 天下第一   脚本

给会使用的朋友

具体大家可以搜索一下 这个引擎,就不发链接了.

unit Q25;

interface
  uses Classes, SysUtils, DateUtils, DefiniensConst;  
  
procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure txdy_req(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure txdy_update(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure txdy_updateTime(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure txdy_updateState(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure txdy_updateState1(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure txdy_zx(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure txdy_rule(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
      
implementation

const
    S_XWYD    =    '{S=<虚位以待>;C=255}';

procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
const
S_My=
[[
{S=你申请时的信息;C=243}\
 申请人物名称:{S=<$Name$>;C=242}\
 申请人物等级:{S=<$Level$>;C=242}\
 申请人物<$PointName$>:{S=<$Point$>;C=242}\
 保持纪录时间:{S=<$Time$>;C=242}\
 {S=上次维护时间;C=250}:{S=<$RegTime$>;C=242}\
<更新信息/@txdy_update>  <维护雕像/@txdy_updateTime>  <更换形像/@txdy_updateState>  <{S=注销我的信息;C=253}/@@Question(确定注销天下第一信息吗?,@txdy_zx)>\\
<关闭/@exit>\
]];
S_His=
[[
 想为自己树立一尊雕像吗?从此扬名天下!现在机会来了,赶快申\
请吧!\
 {S=申请成功后,可以自由设定雕像的样子完全为你量身打造!;C=250}\
{S=本届<$_Name$>信息;C=243}\
 申请人物名称:{S=<$Name$>;C=242}\
 申请人物等级:{S=<$Level$>;C=242}\
 申请人物<$PointName$>:{S=<$Point$>;C=242}\
 保持纪录时间:{S=<$Time$>;C=242}\
<我要申请/@txdy_req>  <申请条件/@txdy_rule>  <关闭/@exit>\
]];
var
    AMessage: String;
    AName: String;
  _AName: String;
  ALvl: Integer;
  APoint: Integer;
  APointName: String;
  ARegTime: TDateTime;  
  ATimeTick,
  AKeepTick: Integer;
  AFound: Boolean;
begin   
    case Npc.Tag of
    100:
    begin
        AName            :=    Gamelib.A[_A_TXDY_ZS_NAME_IDX];
      ALvl            :=    Gamelib.G[_G_TXDY_ZS_Lvl_Idx];  
      APoint        :=    Gamelib.G[_G_TXDY_ZS_Dc_Idx];         
      AKeepTick    :=    Gamelib.G[_G_TXDY_ZS_JL_Idx];   
      ARegTime    :=    StrToDateTimeDef(Gamelib.A[_A_TXDY_ZS_Time_IDX], 0);
        APointName:=    '攻击';
      _AName        :=    '战圣';
    end;
    101:
    begin        
        AName            :=    Gamelib.A[_A_TXDY_FS_NAME_IDX];
      ALvl            :=    Gamelib.G[_G_TXDY_FS_Lvl_Idx];  
      APoint        :=    Gamelib.G[_G_TXDY_FS_Mc_Idx];   
      AKeepTick    :=    Gamelib.G[_G_TXDY_FS_JL_Idx];   
      ARegTime    :=    StrToDateTimeDef(Gamelib.A[_A_TXDY_FS_Time_IDX], 0);   
      APointName:=    '魔法';   
      _AName        :=    '法神';
    end;
    102:
    begin   
        AName            :=    Gamelib.A[_A_TXDY_DS_NAME_IDX];
      ALvl            :=    Gamelib.G[_G_TXDY_DS_Lvl_Idx];  
      APoint        :=    Gamelib.G[_G_TXDY_DS_Sc_Idx];   
      AKeepTick    :=    Gamelib.G[_G_TXDY_DS_JL_Idx];   
      ARegTime    :=    StrToDateTimeDef(Gamelib.A[_A_TXDY_DS_Time_IDX], 0);      
      APointName:=    '道术';   
      _AName        :=    '道尊';
    end;   
    103:
    begin
        AName            :=    Gamelib.A[_A_TXDY_CK_NAME_IDX];
      ALvl            :=    Gamelib.G[_G_TXDY_CK_Lvl_Idx];  
      APoint        :=    Gamelib.G[_G_TXDY_CK_Pc_Idx];   
      AKeepTick    :=    Gamelib.G[_G_TXDY_CK_JL_Idx];   
      ARegTime    :=    StrToDateTimeDef(Gamelib.A[_A_TXDY_DS_Time_IDX], 0);      
      APointName:=    '刺术';   
      _AName        :=    '游侠';
    end;
    else
    begin  
        Npc.MessageBox(Player, '。。。');
      Exit;
    end;
  end;
  if AName = Player.Name then
      AMessage    :=    S_My
  else
      AMessage    :=    S_His;
  AFound        :=    AName <> '';      
  if ARegTime > 0 then
      ATimeTick    :=    AKeepTick + DateUtils.MinutesBetween(Now, ARegTime)
  else
      ATimeTick    :=    AKeepTick;
  ATimeTick    :=    ATimeTick div 60;
  AMessage    :=    ReplaceStr(AMessage, '<$_Name$>', _AName);
  AMessage    :=    ReplaceStr(AMessage, '<$Name$>', IIF(AFound, AName, ''));
  AMessage    :=    ReplaceStr(AMessage, '<$Level$>', IIF(AFound, IntToStr(ALvl), ''));
  AMessage    :=    ReplaceStr(AMessage, '<$PointName$>', APointName);
  AMessage    :=    ReplaceStr(AMessage, '<$Point$>', IIF(AFound, IntToStr(APoint), ''));
  AMessage    :=    ReplaceStr(AMessage, '<$Time$>', IIF(AFound, IntToStr(ATimeTick)+'小时', ''));
  AMessage    :=    ReplaceStr(AMessage, '<$RegTime$>', IIF(AFound, DateTimeToStr(ARegTime), ''));
  Npc.Say(Player, AMessage);
end;

function CheckJob(Npc: TNormNpc; Player: TPlayObject): Boolean;
begin
    Result    :=    False;
    case Npc.Tag of
    100:    Result    :=    Player.Job = 0;
    101:    Result    :=    Player.Job = 1;
    102:    Result    :=    Player.Job = 2;  
    103:  Result    :=    Player.Job = 3;  
  end;
  if not Result then
      Npc.MessageBox(Player, '{S=你的职业不符合要求;C=249}');
end;

function CheckRegedName(Npc: TNormNpc; Player: TPlayObject): Boolean;
begin
    Result    :=    False;
    case Npc.Tag of
    100:    Result    :=    Gamelib.A[_A_TXDY_ZS_NAME_IDX] = Player.Name;
    101:    Result    :=    Gamelib.A[_A_TXDY_FS_NAME_IDX] = Player.Name;
    102:    Result    :=    Gamelib.A[_A_TXDY_DS_NAME_IDX] = Player.Name;
    103:    Result    :=    Gamelib.A[_A_TXDY_CK_NAME_IDX] = Player.Name;
  end;
  if not Result then
      Npc.MessageBox(Player, '{S=雕像不属于你;C=249}');
end;

function GetRegedName(Npc: TNormNpc): String;
begin
    Result    :=    '';
    case Npc.Tag of
    100:    Result    :=    Gamelib.A[_A_TXDY_ZS_NAME_IDX];
    101:    Result    :=    Gamelib.A[_A_TXDY_FS_NAME_IDX];
    102:    Result    :=    Gamelib.A[_A_TXDY_DS_NAME_IDX];
    103:    Result    :=    Gamelib.A[_A_TXDY_CK_NAME_IDX];
  end;
end;

function CheckRegedBalance(Npc: TNormNpc; Player: TPlayObject): Boolean;
begin
    Result    :=    False;
    case Npc.Tag of
    100: Result    :=    (Player.Level >= Gamelib.G[_G_TXDY_ZS_Lvl_Idx]) and (Player.DCMax >= Gamelib.G[_G_TXDY_ZS_Dc_Idx]);  
    101: Result    :=    (Player.Level >= Gamelib.G[_G_TXDY_FS_Lvl_Idx]) and (Player.MCMax >= Gamelib.G[_G_TXDY_FS_Mc_Idx]);  
    102: Result    :=    (Player.Level >= Gamelib.G[_G_TXDY_DS_Lvl_Idx]) and (Player.SCMax >= Gamelib.G[_G_TXDY_DS_Sc_Idx]);  
    103: Result    :=    (Player.Level >= Gamelib.G[_G_TXDY_CK_Lvl_Idx]) and (Player.PCMax >= Gamelib.G[_G_TXDY_CK_Pc_Idx]);  
  end;
  if not Result then
  begin
      case Npc.Tag of
      100:    Npc.MessageBox(Player, '{S=你的属性低于当前已注册战圣的属性;C=249}');
      101:    Npc.MessageBox(Player, '{S=你的属性低于当前已注册法神的属性;C=249}');
      102:    Npc.MessageBox(Player, '{S=你的属性低于当前已注册道尊的属性;C=249}');
      103:    Npc.MessageBox(Player, '{S=你的属性低于当前已注册刺客的属性;C=249}');
    end;
  end;
end;

procedure txdy_req(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
var
    AJob, AProperties, AFeature, AFeatureEx, AOffset: Integer;
begin
    if CheckJob(Npc, Player) then
  begin
      if (GetRegedName(Npc) = '') or CheckRegedBalance(Npc, Player) then
    begin            
      AJob := Player.Job;
      AProperties := Player.Properties;
        AFeature := Player.Feature;
      AFeatureEx := Player.FeatureEx;
      case Npc.Tag of
        100:
        begin
          Gamelib.A[_A_TXDY_ZS_NAME_IDX]            :=    Player.Name;
          Gamelib.G[_G_TXDY_ZS_Lvl_Idx]                :=    Player.Level;  
          Gamelib.G[_G_TXDY_ZS_Dc_Idx]                :=    Player.DCMax;   
          Gamelib.G[_G_TXDY_ZS_JL_Idx]                :=    0;         
          Gamelib.G[_G_TXDY_ZS_Properties_Idx] :=    AProperties;
          Gamelib.G[_G_TXDY_ZS_Feature_Idx]        :=    AFeature;
          Gamelib.G[_G_TXDY_ZS_FeatureEx_Idx]    :=    AFeatureEx;
          Gamelib.G[_G_TXDY_ZS_OFFSET_Idx]        :=    40;
          Gamelib.A[_A_TXDY_ZS_Time_IDX]            :=    DateTimeToStr(Now);   
          Npc.RankLevelName    :=    '{S=' + Player.Name + ';C=253}';                  
          Npc.SetEffigyState(AJob, AProperties, AFeature, AFeatureEx, 40);
          Gamelib.Broadcast('恭喜玩家【'+Player.Name+'】成功申请天下第一战圣');
          Main(Npc, Player, Args);
        end;
        101:
        begin
          Gamelib.A[_A_TXDY_FS_NAME_IDX]            :=    Player.Name;
          Gamelib.G[_G_TXDY_FS_Lvl_Idx]                :=    Player.Level;  
          Gamelib.G[_G_TXDY_FS_Mc_Idx]                :=    Player.MCMax;   
          Gamelib.G[_G_TXDY_FS_JL_Idx]                :=    0;           
          Gamelib.G[_G_TXDY_FS_Properties_Idx] :=    AProperties;
          Gamelib.G[_G_TXDY_FS_Feature_Idx]        :=    AFeature;
          Gamelib.G[_G_TXDY_FS_FeatureEx_Idx]    :=    AFeatureEx;
          Gamelib.G[_G_TXDY_FS_OFFSET_Idx]        :=    40;
          Gamelib.A[_A_TXDY_FS_Time_IDX]            :=    DateTimeToStr(Now);
          Npc.RankLevelName    :=    '{S=' + Player.Name + ';C=253}';                  
          Npc.SetEffigyState(AJob, AProperties, AFeature, AFeatureEx, 40);
          Gamelib.Broadcast('恭喜玩家【'+Player.Name+'】成功申请天下第一法神');
          Main(Npc, Player, Args);
        end;
        102:
        begin
          Gamelib.A[_A_TXDY_DS_NAME_IDX]            :=    Player.Name;
          Gamelib.G[_G_TXDY_DS_Lvl_Idx]                :=    Player.Level;  
          Gamelib.G[_G_TXDY_DS_Sc_Idx]                :=    Player.SCMax;   
          Gamelib.G[_G_TXDY_DS_JL_Idx]                :=    0;        
          Gamelib.G[_G_TXDY_DS_Properties_Idx] :=    AProperties;
          Gamelib.G[_G_TXDY_DS_Feature_Idx]        :=    AFeature;
          Gamelib.G[_G_TXDY_DS_FeatureEx_Idx]    :=    AFeatureEx;
          Gamelib.G[_G_TXDY_DS_OFFSET_Idx]        :=    40;
          Gamelib.A[_A_TXDY_DS_Time_IDX]            :=    DateTimeToStr(Now);
          Npc.RankLevelName    :=    '{S=' + Player.Name + ';C=253}';                  
          Npc.SetEffigyState(AJob, AProperties, AFeature, AFeatureEx, 40);
          Gamelib.Broadcast('恭喜玩家【'+Player.Name+'】成功申请天下第一道尊');
          Main(Npc, Player, Args);
          end;
        103:
        begin
          Gamelib.A[_A_TXDY_CK_NAME_IDX]            :=    Player.Name;
          Gamelib.G[_G_TXDY_CK_Lvl_Idx]                :=    Player.Level;  
          Gamelib.G[_G_TXDY_CK_Pc_Idx]                :=    Player.PCMax;   
          Gamelib.G[_G_TXDY_CK_JL_Idx]                :=    0;      
          Gamelib.G[_G_TXDY_CK_Properties_Idx] :=    AProperties;
          Gamelib.G[_G_TXDY_CK_Feature_Idx]        :=    AFeature;
          Gamelib.G[_G_TXDY_CK_FeatureEx_Idx]    :=    AFeatureEx;
          Gamelib.G[_G_TXDY_CK_OFFSET_Idx]        :=    40;
          Gamelib.A[_A_TXDY_CK_Time_IDX]            :=    DateTimeToStr(Now);
          Npc.RankLevelName    :=    '{S=' + Player.Name + ';C=253}';                  
          Npc.SetEffigyState(AJob, AProperties, AFeature, AFeatureEx, 40);
          Gamelib.Broadcast('恭喜玩家【'+Player.Name+'】成功申请天下第一道尊');
          Main(Npc, Player, Args);
          end;
      end;
    end;
  end;
end;

procedure txdy_update(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
begin
    if CheckJob(Npc, Player) and CheckRegedName(Npc, Player) then
  begin
      case Npc.Tag of
      100:
      begin
        Gamelib.G[_G_TXDY_ZS_Lvl_Idx]        :=    Player.Level;  
        Gamelib.G[_G_TXDY_ZS_Dc_Idx]        :=    Player.DCMax;   
        Gamelib.G[_G_TXDY_ZS_JL_Idx]        :=    Gamelib.G[_G_TXDY_ZS_JL_Idx] + DateUtils.MinutesBetween(StrToDateTimeDef(Gamelib.A[_A_TXDY_ZS_Time_IDX], 0), Now);   
        Gamelib.A[_A_TXDY_ZS_Time_IDX]    :=    DateTimeToStr(Now);
        Npc.MessageBox(Player, '信息更新完成');
        Main(Npc, Player, Args);
      end;
      101:
      begin
        Gamelib.G[_G_TXDY_FS_Lvl_Idx]        :=    Player.Level;  
        Gamelib.G[_G_TXDY_FS_Mc_Idx]        :=    Player.MCMax;   
        Gamelib.G[_G_TXDY_FS_JL_Idx]        :=    Gamelib.G[_G_TXDY_FS_JL_Idx] + DateUtils.MinutesBetween(StrToDateTimeDef(Gamelib.A[_A_TXDY_FS_Time_IDX], 0), Now);   
        Gamelib.A[_A_TXDY_FS_Time_IDX]    :=    DateTimeToStr(Now);
        Npc.MessageBox(Player, '信息更新完成');
        Main(Npc, Player, Args);
      end;
      102:
      begin
        Gamelib.G[_G_TXDY_DS_Lvl_Idx]        :=    Player.Level;  
        Gamelib.G[_G_TXDY_DS_Sc_Idx]        :=    Player.SCMax;   
        Gamelib.G[_G_TXDY_DS_JL_Idx]        :=    Gamelib.G[_G_TXDY_DS_JL_Idx] + DateUtils.MinutesBetween(StrToDateTimeDef(Gamelib.A[_A_TXDY_DS_Time_IDX], 0), Now);   
        Gamelib.A[_A_TXDY_DS_Time_IDX]    :=    DateTimeToStr(Now);
        Npc.MessageBox(Player, '信息更新完成');
        Main(Npc, Player, Args);
        end;
      103:
      begin
        Gamelib.G[_G_TXDY_CK_Lvl_Idx]        :=    Player.Level;  
        Gamelib.G[_G_TXDY_CK_Pc_Idx]        :=    Player.PCMax;   
        Gamelib.G[_G_TXDY_CK_JL_Idx]        :=    Gamelib.G[_G_TXDY_CK_JL_Idx] + DateUtils.MinutesBetween(StrToDateTimeDef(Gamelib.A[_A_TXDY_CK_Time_IDX], 0), Now);   
        Gamelib.A[_A_TXDY_CK_Time_IDX]    :=    DateTimeToStr(Now);
        Npc.MessageBox(Player, '信息更新完成');
        Main(Npc, Player, Args);
        end;
    end;
  end;
end;

procedure txdy_updateTime(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
begin
    if CheckJob(Npc, Player) and CheckRegedName(Npc, Player) then
  begin
      case Npc.Tag of
        100:
        begin
          Gamelib.G[_G_TXDY_ZS_JL_Idx]        :=    Gamelib.G[_G_TXDY_ZS_JL_Idx] + DateUtils.MinutesBetween(StrToDateTimeDef(Gamelib.A[_A_TXDY_ZS_Time_IDX], 0), Now);   
          Gamelib.A[_A_TXDY_ZS_Time_IDX]    :=    DateTimeToStr(Now);
            Npc.MessageBox(Player, '雕像维护完成');
          Main(Npc, Player, Args);
        end;
        101:
        begin
          Gamelib.G[_G_TXDY_FS_JL_Idx]        :=    Gamelib.G[_G_TXDY_FS_JL_Idx] + DateUtils.MinutesBetween(StrToDateTimeDef(Gamelib.A[_A_TXDY_FS_Time_IDX], 0), Now);
          Gamelib.A[_A_TXDY_FS_Time_IDX]    :=    DateTimeToStr(Now);
            Npc.MessageBox(Player, '雕像维护完成');
          Main(Npc, Player, Args);
        end;
        102:
        begin
          Gamelib.G[_G_TXDY_DS_JL_Idx]        :=    Gamelib.G[_G_TXDY_DS_JL_Idx] + DateUtils.MinutesBetween(StrToDateTimeDef(Gamelib.A[_A_TXDY_DS_Time_IDX], 0), Now);
          Gamelib.A[_A_TXDY_DS_Time_IDX]    :=    DateTimeToStr(Now);
            Npc.MessageBox(Player, '雕像维护完成');
          Main(Npc, Player, Args);
        end;
        102:
        begin
          Gamelib.G[_G_TXDY_CK_JL_Idx]        :=    Gamelib.G[_G_TXDY_CK_JL_Idx] + DateUtils.MinutesBetween(StrToDateTimeDef(Gamelib.A[_A_TXDY_CK_Time_IDX], 0), Now);
          Gamelib.A[_A_TXDY_CK_Time_IDX]    :=    DateTimeToStr(Now);
            Npc.MessageBox(Player, '雕像维护完成');
          Main(Npc, Player, Args);
        end;
      end;
  end;
end;

procedure txdy_updateState(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
const
S=
[[
 雕像的样子是跟据人物当前的着装来显示。雕像的衣服、武器和发\
型是跟据你当前的穿着来显示,人物的造形你可以进行选择。请选择\
你要雕刻的造形!\\
<站立造形/@txdy_updateState1(40)>    <走路造形/@txdy_updateState1(107)>    <跑步造形/@txdy_updateState1(173)>  <攻击造形一/@txdy_updateState1(240)>\\
<攻击造形二/@txdy_updateState1(436)>  <攻击造形三/@txdy_updateState1(514)>  <{S=随机造型;C=250}/@txdy_updateState1(-1)>\\
<返回/@main>\
]];
begin
    Npc.Say(Player, S);
end;

procedure txdy_updateState1(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
var
  AJob,
  AProperties,
    AState,
  AFeature,
  AFeatureEx: Integer;
begin
    if CheckJob(Npc, Player) and CheckRegedName(Npc, Player) then
  begin
    AJob := Player.Job;
        AState :=    Args.Int[0];  
    AProperties := Player.Properties;
    AFeature :=    Player.Feature;
    AFeatureEx    :=    Player.FeatureEx;
    if AState = -1 then
    begin      
      if Player.Job = 3 then  
        AState    :=    Random(888) //刺客素材888张
      else
        AState    :=    Random(600);   
    end;
    case Npc.Tag of
      100:
      begin      
        Gamelib.G[_G_TXDY_ZS_Properties_Idx] :=    AProperties;
          Gamelib.G[_G_TXDY_ZS_Feature_Idx]        :=    AFeature;
        Gamelib.G[_G_TXDY_ZS_FeatureEx_Idx]    :=    AFeatureEx;
        Gamelib.G[_G_TXDY_ZS_OFFSET_Idx]        :=    AState;     
      end;
      101:
      begin            
        Gamelib.G[_G_TXDY_FS_Properties_Idx] :=    AProperties;
          Gamelib.G[_G_TXDY_FS_Feature_Idx]        :=    AFeature;
        Gamelib.G[_G_TXDY_FS_FeatureEx_Idx]    :=    AFeatureEx;
        Gamelib.G[_G_TXDY_FS_OFFSET_Idx]        :=    AState;     
      end;
      102:
      begin            
        Gamelib.G[_G_TXDY_DS_Properties_Idx] :=    AProperties;
          Gamelib.G[_G_TXDY_DS_Feature_Idx]        :=    AFeature;
        Gamelib.G[_G_TXDY_DS_FeatureEx_Idx]    :=    AFeatureEx;
        Gamelib.G[_G_TXDY_DS_OFFSET_Idx]        :=    AState;     
      end;
      103:
      begin         
        Gamelib.G[_G_TXDY_CK_Properties_Idx] :=    AProperties;
          Gamelib.G[_G_TXDY_CK_Feature_Idx]        :=    AFeature;
        Gamelib.G[_G_TXDY_CK_FeatureEx_Idx]    :=    AFeatureEx;
        Gamelib.G[_G_TXDY_CK_OFFSET_Idx]        :=    AState;     
      end;
    end;
    Npc.SetEffigyState(AJob, Player.Properties, Player.Feature, Player.FeatureEx, AState);
    txdy_updateState(Npc, Player, Args);
  end;
end;

procedure txdy_zx(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
begin
    if CheckJob(Npc, Player) and CheckRegedName(Npc, Player) then
  begin
    case Npc.Tag of
      100:
      begin
          Gamelib.A[_A_TXDY_ZS_NAME_IDX]            :=    '';
        Gamelib.G[_G_TXDY_ZS_Lvl_Idx]                :=    0;
        Gamelib.G[_G_TXDY_ZS_Dc_Idx]                :=    0;
        Gamelib.G[_G_TXDY_ZS_JL_Idx]                :=    0;   
        Gamelib.G[_G_TXDY_ZS_Properties_Idx] :=    -1;      
        Gamelib.G[_G_TXDY_ZS_Feature_Idx]        :=    -1;
        Gamelib.G[_G_TXDY_ZS_FeatureEx_Idx]    :=    -1;
        Gamelib.G[_G_TXDY_ZS_OFFSET_Idx]        :=    0;
        Gamelib.A[_A_TXDY_ZS_Time_IDX]            :=    '';
      end;
      101:
      begin
          Gamelib.A[_A_TXDY_FS_NAME_IDX]            :=    '';
        Gamelib.G[_G_TXDY_FS_Lvl_Idx]                :=    0;
        Gamelib.G[_G_TXDY_FS_Mc_Idx]                :=    0;
        Gamelib.G[_G_TXDY_FS_JL_Idx]                :=    0;   
        Gamelib.G[_G_TXDY_FS_Properties_Idx] :=    -1;        
        Gamelib.G[_G_TXDY_FS_Feature_Idx]        :=    -1;
        Gamelib.G[_G_TXDY_FS_FeatureEx_Idx]    :=    -1;
        Gamelib.G[_G_TXDY_FS_OFFSET_Idx]        :=    0;
        Gamelib.A[_A_TXDY_FS_Time_IDX]            :=    '';   
      end;
      102:
      begin
          Gamelib.A[_A_TXDY_DS_NAME_IDX]            :=    '';
        Gamelib.G[_G_TXDY_DS_Lvl_Idx]                :=    0;
        Gamelib.G[_G_TXDY_DS_Sc_Idx]                :=    0;
        Gamelib.G[_G_TXDY_DS_JL_Idx]                :=    0;
        Gamelib.G[_G_TXDY_DS_Properties_Idx] :=    -1;            
        Gamelib.G[_G_TXDY_DS_Feature_Idx]        :=    -1;
        Gamelib.G[_G_TXDY_DS_FeatureEx_Idx]    :=    -1;
        Gamelib.G[_G_TXDY_DS_OFFSET_Idx]        :=    0;
        Gamelib.A[_A_TXDY_DS_Time_IDX]            :=    '';   
      end;
      103:
      begin
          Gamelib.A[_A_TXDY_CK_NAME_IDX]            :=    '';
        Gamelib.G[_G_TXDY_CK_Lvl_Idx]                :=    0;
        Gamelib.G[_G_TXDY_CK_Pc_Idx]                :=    0;
        Gamelib.G[_G_TXDY_CK_JL_Idx]                :=    0;   
        Gamelib.G[_G_TXDY_CK_Properties_Idx] :=    -1;        
        Gamelib.G[_G_TXDY_CK_Feature_Idx]        :=    -1;
        Gamelib.G[_G_TXDY_CK_FeatureEx_Idx]    :=    -1;
        Gamelib.G[_G_TXDY_CK_OFFSET_Idx]        :=    0;
        Gamelib.A[_A_TXDY_CK_Time_IDX]            :=    '';   
      end;
    end;
    Npc.RankLevelName    :=    S_XWYD;
    Npc.SetEffigyState(0, -1, -1, -1, 0);
    Main(Npc, Player, Args);
  end;
end;

procedure txdy_rule(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
const
S=
[[
{S=申请天下第一<$Name$>条件:;C=243}\ \
 道术高于本届<$Name$>的<$PName$>。\{S=或者;C=243}\
 道术等于本届<$Name$>的<$PName$>,并且等级高于本届<$Name$>的等级。\\\\
<返回/@main>\
]];
var
    AName,
  APName,
  AMessage: String;
begin
    case Npc.Tag of
    100:
    begin
        AName    :=    '战圣';  
      APName:=    '攻击';
    end;
    101:
    begin        
        AName    :=    '法神';  
      APName:=    '魔法';
    end;
    102:
    begin   
        AName    :=    '道尊';  
      APName:=    '道术';
    end;
    103:
    begin   
        AName    :=    '游侠';  
      APName:=    '刺术';
    end;
    else
    begin  
        Npc.MessageBox(Player, '。。。');
      Exit;
    end;
  end;
  AMessage    :=    ReplaceStr(S, '<$Name$>', AName);
  AMessage    :=    ReplaceStr(AMessage, '<$PName$>', APName);
  Npc.Say(Player, AMessage);
end;

procedure InitNPC;
var
    ANPC_ZS: TNormNpc;
    ANPC_FS: TNormNpc;
    ANPC_DS: TNormNpc;
    ANPC_CK: TNormNpc;
  AName: String;
  AJob,  
    AState,   
  AProperties,
  AFeature,
  AFeatureEx: Integer;
begin
    ANPC_ZS    :=    Gamelib.FindMerchantByTag(100);
  if ANPC_ZS <> nil then
  begin               
      AName    :=    Gamelib.A[_A_TXDY_ZS_NAME_IDX];
    if AName  = '' then
    begin              
      AJob                :=    0;
            AState            :=    0;  
      AProperties :=  -1;
      AFeature        :=    -1;
      AFeatureEx    :=    0;
      AName                :=    S_XWYD;
    end
    else
    begin               
        AJob                :=    0;
        AName                :=    '{S=' + AName + ';C=253}';   
      AProperties :=  Gamelib.G[_G_TXDY_ZS_Properties_Idx];
        AState            :=    Gamelib.G[_G_TXDY_ZS_OFFSET_Idx];
      AFeature        :=    Gamelib.G[_G_TXDY_ZS_Feature_Idx];  
      AFeatureEx    :=    Gamelib.G[_G_TXDY_ZS_FeatureEx_Idx];
    end;
    ANPC_ZS.RankLevelName    :=    AName;   
        ANPC_ZS.SetEffigyState(AJob, AProperties, AFeature, AFeatureEx, AState);
  end;
  
    ANPC_FS    :=    Gamelib.FindMerchantByTag(101);
  if ANPC_FS <> nil then
  begin               
      AName    :=    Gamelib.A[_A_TXDY_FS_NAME_IDX];
    if AName  = '' then
    begin               
        AJob                :=    0;
            AState            :=    0;   
      AProperties :=  -1;
      AFeature        :=    -1;
      AFeatureEx    :=    0;
      AName                :=    S_XWYD;
    end
    else
    begin           
        AJob                :=    1;
        AName                :=    '{S=' + AName + ';C=253}';   
      AProperties :=  Gamelib.G[_G_TXDY_FS_Properties_Idx];
        AState            :=    Gamelib.G[_G_TXDY_FS_OFFSET_Idx];
      AFeature        :=    Gamelib.G[_G_TXDY_FS_Feature_Idx];  
      AFeatureEx    :=    Gamelib.G[_G_TXDY_FS_FeatureEx_Idx];
    end;  
    ANPC_FS.RankLevelName    :=    AName;     
        ANPC_FS.SetEffigyState(AJob, AProperties, AFeature, AFeatureEx, AState);
  end;

    ANPC_DS    :=    Gamelib.FindMerchantByTag(102);
  if ANPC_DS <> nil then
  begin               
      AName    :=    Gamelib.A[_A_TXDY_DS_NAME_IDX];
    if AName  = '' then
    begin         
        AJob                :=    0;
            AState            :=    0;  
      AProperties :=  -1;
      AFeature        :=    -1;
      AFeatureEx    :=    0;
      AName                :=    S_XWYD;
    end
    else
    begin     
        AJob                :=    2;
        AName                :=    '{S=' + AName + ';C=253}';  
      AProperties :=  Gamelib.G[_G_TXDY_DS_Properties_Idx];
        AState            :=    Gamelib.G[_G_TXDY_DS_OFFSET_Idx];
      AFeature        :=    Gamelib.G[_G_TXDY_DS_Feature_Idx];  
      AFeatureEx    :=    Gamelib.G[_G_TXDY_DS_FeatureEx_Idx];
    end;  
    ANPC_DS.RankLevelName    :=    AName;     
        ANPC_DS.SetEffigyState(AJob, AProperties, AFeature, AFeatureEx, AState);
  end;

    ANPC_CK    :=    Gamelib.FindMerchantByTag(103);
  if ANPC_CK <> nil then
  begin               
      AName    :=    Gamelib.A[_A_TXDY_CK_NAME_IDX];
    if AName  = '' then
    begin         
        AJob                :=    0;
            AState            :=    0;
      AProperties :=  -1;
      AFeature        :=    -1;
      AFeatureEx    :=    0;
      AName                :=    S_XWYD;
    end
    else
    begin     
        AJob                :=    2;
        AName                :=    '{S=' + AName + ';C=253}';  
      AProperties :=  Gamelib.G[_G_TXDY_CK_Properties_Idx];
        AState            :=    Gamelib.G[_G_TXDY_CK_OFFSET_Idx];
      AFeature        :=    Gamelib.G[_G_TXDY_CK_Feature_Idx];  
      AFeatureEx    :=    Gamelib.G[_G_TXDY_CK_FeatureEx_Idx];
    end;  
    ANPC_CK.RankLevelName    :=    AName;     
        ANPC_CK.SetEffigyState(AJob, AProperties, AFeature, AFeatureEx, AState);
  end;
end;

initialization
    InitNPC;

end.



 楼主| 发表于 2015-6-24 10:15:42 | 显示全部楼层
记得在

RobotManagerNPC里面加:
procedure CheckBestInTheWorld(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
procedure CheckBestInTheWorld(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
var
        ANPC_ZS: TNormNpc;
        ANPC_FS: TNormNpc;
        ANPC_DS: TNormNpc;
        ANPC_CK: TNormNpc;
        ARegTime: TDateTime;
begin
        //第一战士
  ANPC_ZS        :=        Gamelib.FindMerchantByTag(100); //查找第一战士NPC,参数100是NPC配置中指定的唯一标识
        if ANPC_ZS <> nil then
  begin
                if Gamelib.A[_A_TXDY_ZS_NAME_IDX] <> '' then
    begin  
            ARegTime        :=        StrToDateTimeDef(Gamelib.A[_A_TXDY_ZS_Time_IDX], 0);
            if DateUtils.HoursBetween(ARegTime, Now) >=72 then
      begin
        ANPC_ZS.SetEffigyState(0, -1, -1, -1, 0);
        Gamelib.Broadcast('[系统]【' + Gamelib.A[_A_TXDY_ZS_NAME_IDX] + '】 的天下第一战士雕像已破碎');
              Gamelib.A[_A_TXDY_ZS_NAME_IDX]        :=        '';
        ANPC_ZS.RankLevelName        :=        '';                                  
      end;
    end;
  end;     
   
  //第一法师
  ANPC_FS        :=        Gamelib.FindMerchantByTag(101);       
  if ANPC_FS <> nil then
  begin
                if Gamelib.A[_A_TXDY_FS_NAME_IDX] <> '' then
    begin  
            ARegTime        :=        StrToDateTimeDef(Gamelib.A[_A_TXDY_FS_Time_IDX], 0);
            if DateUtils.HoursBetween(ARegTime, Now) >=72 then
      begin
        ANPC_FS.SetEffigyState(0, -1, -1, -1, 0);
        Gamelib.Broadcast('[系统]【' + Gamelib.A[_A_TXDY_FS_NAME_IDX] + '】 的天下第一法师雕像已破碎');
              Gamelib.A[_A_TXDY_FS_NAME_IDX]        :=        '';               
        ANPC_FS.RankLevelName        :=        '';                  
      end;
    end;
  end;     
   
  //第一道士
  ANPC_DS        :=        Gamelib.FindMerchantByTag(102);
  if ANPC_DS <> nil then
  begin
                if Gamelib.A[_A_TXDY_DS_NAME_IDX] <> '' then
    begin  
            ARegTime        :=        StrToDateTimeDef(Gamelib.A[_A_TXDY_DS_Time_IDX], 0);
            if DateUtils.HoursBetween(ARegTime, Now) >=72 then
      begin
        ANPC_DS.SetEffigyState(0, -1, -1, -1, 0);
        Gamelib.Broadcast('[系统]【' + Gamelib.A[_A_TXDY_DS_NAME_IDX] + '】 的天下第一道士雕像已破碎');
              Gamelib.A[_A_TXDY_DS_NAME_IDX]        :=        '';       
        ANPC_DS.RankLevelName        :=        '';                          
      end;
    end;
  end;

  //第一刺客
  ANPC_CK        :=        Gamelib.FindMerchantByTag(103);
  if ANPC_CK <> nil then
  begin
                if Gamelib.A[_A_TXDY_CK_NAME_IDX] <> '' then
    begin  
            ARegTime        :=        StrToDateTimeDef(Gamelib.A[_A_TXDY_CK_Time_IDX], 0);
            if DateUtils.HoursBetween(ARegTime, Now) >=72 then
      begin
        ANPC_CK.SetEffigyState(0, -1, -1, -1, 0);
        Gamelib.Broadcast('[系统]【' + Gamelib.A[_A_TXDY_CK_NAME_IDX] + '】 的天下第一刺客雕像已破碎');
              Gamelib.A[_A_TXDY_CK_NAME_IDX]        :=        '';       
        ANPC_CK.RankLevelName        :=        '';                          
      end;
    end;
  end;
end;
发表于 2015-6-24 12:05:38 | 显示全部楼层
不明觉厉~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2025-5-28 17:45 , Processed in 0.032307 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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