- 精华
- 阅读权限
- 180
- 好友
- 相册
- 分享
- 听众
- 收听
- 注册时间
- 2008-11-1
- 在线时间
- 小时
- 最后登录
- 1970-1-1
|
[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.
|
|