第一步:
导入下面图片到补丁设置好序号
第二步:配置上一页下一页存入按钮
完成后效果
以下是脚本
unit Q1;
interface
uses Classes, SysUtils;
procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
implementation
var
ckwz: TStrings;
II,Id,Ix: Integer; //II:筛选的物品类型 Id:II下的当前页数 Ix:II下的总页数
procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
const
S =
[[
<[可视化仓库]/@kshqh>\
]];
begin
II := 0;
Id := 1;
Ix := 0;
Npc.Say(Player, S);
end;
procedure kshqh(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
var
s : string;
I1: Integer;
begin
if Args.Int[0] = 9 then
begin
II := Args.Int[1];
Id := 1;
end;
if Player.BigStorageItemsCount > 0 then
begin
for I1 := 0 to Player.BigStorageItemsCount - 1 do
begin
case II of //这里II等于1只把仓库里“StdMode = [5,10,11,15,20,22,26,27,28,30]”的物品位置加到“ckwz里”
1:
if player.BigStorageItem(I1).StdMode in [5,10,11,15,20,22,26,27,28,30] then
begin
ckwz.Add(IntToStr(I1));
end;
2: //这里II等于2只把仓库里“StdMode <> [5,10,11,15,20,22,26,27,28,30]”的物品位置加到“ckwz里”
if player.BigStorageItem(I1).StdMode in [5,10,11,15,20,22,26,27,28,30] then
else
begin
ckwz.Add(IntToStr(I1));
end;
else //这里把仓库里所有的物品位置加到“ckwz里”
begin
ckwz.Add(IntToStr(I1));
end;
end;
end;
end;
ckwz.Free;
xianshi(Npc,Player,Args);
end;
procedure fanye(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
begin
case Args.Int[0] of
1:
if Id > 1 then
begin
Id := Id - 1;
end
else
Player.SendCenterMessage('{S=已经是第一页了!;C=249}', 0);
2:
if Ix > Id then
begin
Id := Id + 1;
end
else
Player.SendCenterMessage('{S=已经是最后一页了!;C=249}', 0);
end;
xianshi(Npc,Player,Args);
end;
procedure xianshi(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
const
S=
[[
<{S=全部显示;X=25;Y=-23}/@kshqh(9,0)><{S=显示装备;X=87;Y=-23}/@kshqh(9,1)><{S=显示杂物;X=149;Y=-23}/@kshqh(9,2)>\
<$tishi$>\<$yeshu$>\{S=把物品放入前面格子;X=125;Y=246}\{S=点击确定即可存库;X=125;Y=263}\
]];
var
AMessage: String;
X,Y,I3,I4: Integer;
A: String;
begin
AMessage := S;
X := 0;
Y := 0;
I4 := 0;
if ckwz.Count > 0 then
begin
for I3 := (Id - 1) * 30 to ckwz.Count - 1 do
begin
if I3 < 30 + (Id - 1) * 30 then
AMessage := AMessage + '<{U=' + player.BigStorageItem(strToInt(ckwz[I3])).MakeString + ';X='+IntToStr(X)+';Y='+IntToStr(Y)+';H=34;W=36}/@kshdjqh('+ IntToStr(strToInt(ckwz[I3])) + ')>';
X := X + 37;
I4 := I4 + 1;
if I4 = 7 then
begin
X := 0;
I4 := 0;
Y := Y + 37;
end;
end;
AMessage := ReplaceStr(AMessage, '<$tishi$>', '{S=单击即可取回仓库的物品;C=250;X=60;Y=223}');
end
else
begin
I3 := 0;
AMessage := ReplaceStr(AMessage, '<$tishi$>', '{S=你的仓库当前页已没有物品;C=249;X=60;Y=223}');
end;
//if I3 = trunc(I3/30) * 30 then
//begin
//Ix := trunc(I3/30)
//end
//else
//begin
Ix := trunc(I3/30)+1;
//end;
case II of
1 : AMessage := ReplaceStr(AMessage, '{S=显示装备;X=87;Y=-23}', '{S=显示装备;X=87;Y=-23;C=249}');
2 : AMessage := ReplaceStr(AMessage, '{S=显示杂物;X=149;Y=-23}', '{S=显示杂物;X=149;Y=-23;C=249}');
else
AMessage := ReplaceStr(AMessage, '{S=全部显示;X=25;Y=-23}', '{S=全部显示;X=25;Y=-23;C=249}');
end;
AMessage := ReplaceStr(AMessage, '<$yeshu$>', '{S=[ '+IntToStr(Id)+'/'+IntToStr(Ix)+' 页];X=84;Y=188}');
Npc.SayEx(player, '仓库取回',AMessage);
end;
procedure kshdjqh(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
begin
if Player.ItemSize > 47 then
begin
Npc.MessageBox(Player, '{S=你的背包物品过多,不能取回!;C=249}\\整理背包物品后再来吧!');
Main(Npc,Player,Args);
exit;
end;
//Player.SendMessage('你已取回了['+ player.BigStorageItem(Args.Int[0]).name+']', 0);
player.TakebackBigStorageItem(Args.Int[0]);
kshqh(Npc,Player,Args);
end;
procedure cunrucangku(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);
var
Item: TUserItem;
begin
if Player.CustomItemCount = 1 then
begin
Item := Player.CustomItem[0];
if Item <> nil then
begin
Player.AddItemToBigStorage(Item);
if Ix = Id then
begin
kshqh(Npc,Player,Args);
end;
end;
end;
end;
initialization
ckwz := TStringList.Create;
finalization
FreeAndNil(ckwz); //以前的脚本这里没有释放,会造成少量的内存增大,加上就好了
end.
本站所有文章均为《龙引擎》原创,转载请注明出处来自https://www.longm2.cn/3356.html
看不懂
不错