千年NPC脚本教学【新手篇】
-
近来由于大家对千年私服的成熟化了解,很多玩家提出脚本如何编译,那么今天给大家介绍一下,有兴趣研究的网友请跟帖,本帖禁止提问与广告。
下面我就拿捕盗大将脚本
先打开 捕盗大将.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 收好了..-这就是桂林符~') 效果是一样的
增加条件 要记得关门 也就是 如果有 if 就要有 end;
如果有 if ......then begin 那就要对应有 exit; end; 1000y
onlineN.G.K 王者之风