Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Фишинг ZHE

тут можно задать вопрос по скриптингу
Verana
Novice
Novice
Posts: 60
Joined: 26.06.2015 18:44

Фишинг ZHE

Post by Verana »

Друзья добрый день, есть проблема со скриптом на фишинг, если у чара сломалась удочка он не хочет брать ту что под ногами или рядом, и постоянно выводит сообщение что он сытый, иногда если дать в руки удочку он продолжает писать что чем то занят и алреди что то делать, в итоге не дает ничего взять или перетащить...

Хотелось бы чтоб чар при перевесе скидывал порезанную рыбу в определенном месте,
сам брал удочки в радиусе подбора, и юзал еду тоже на полу (земле)
фишинг происходит на лодке.
вот сам скрипт :


Program FishingZulu;
{$Include 'all.inc'}

type
WaterRecord = Record
t,x,y,z,a: integer;
end;

var
WaterTile: array[0..50] of integer;
WaterPlace: array[0..500] of WaterRecord;
WaterCount: integer;
x,y,c,a,i: integer;
s: boolean;

const
mainbag = $416CBD9F; //сумка с добычей
fishpole = $0DC0; //удочка(или сети)
fishpoleColor = $0000; //цвет удочки в зависимости от цвета дерева
dagger = $0F51; //дагер
Trash = $416CEC12; //Мусорка
cut = 0; //1-Резать рыбу(даггер в руки), 0-не резать

procedure CheckGold;
var bag : Cardinal;

Begin
repeat
Ignore(mainbag);
findtype($0e75,ground);
if (FindCount >= 1) and (GetDistance(finditem) <=2) and (GetDistance(finditem) >=0) and connected and (not dead) then begin
bag := finditem;
useobject(bag);
wait(100);
MoveItem(findtype($0EED,bag), 0, mainbag, 0, 0, 0);
wait(100);
MoveItem(bag, 0, Trash, 0, 0, 0);
end;

until (FindCount < 1) or dead;
End;

procedure MoveSos;
begin
repeat
FindType($099F, backpack);
if (FindCount >= 1) and (GetDistance(finditem) <=2) and (GetDistance(finditem) >=0) and connected and (not dead) then begin
wait(100);
MoveItem(finditem, 0, Trash, 0, 0, 0);
wait(100);
end;
until (FindCount < 1) or dead;
end;

procedure MoveMap;
begin
repeat
FindType($14ED, ground);
if (FindCount >= 1) and (GetDistance(finditem) <=2) and (GetDistance(finditem) >=0) and connected and (not dead) then begin
wait(100);
MoveItem(finditem, 0, Trash, 0, 0, 0);
wait(100);
end;
until (FindCount < 1) or dead;
end;

procedure seaweed;
begin
repeat
FindType($0DBA, ground);
if (FindCount >= 1) and (GetDistance(finditem) <=2) and (GetDistance(finditem) >=0) and connected and (not dead) then begin
wait(100);
MoveItem(finditem, 0, Trash, 0, 0, 0);
wait(100);
end;
until (FindCount < 1) or dead;
end;

procedure fishgrab;
begin
if FindType($09CC, ground) > 0 then
MoveItem(finditem, 0, mainbag, 0, 0, 0);
if FindType($09CD, ground) > 0 then
MoveItem(finditem, 0, mainbag, 0, 0, 0);
if FindType($09CE, ground) > 0 then
MoveItem(finditem, 0, mainbag, 0, 0, 0);
if FindType($09CF, ground) > 0 then
MoveItem(finditem, 0, mainbag, 0, 0, 0);
if FindType($14EB, ground) > 0 then
MoveItem(finditem, 0, mainbag, 0, 0, 0);
if FindType($0DD6, ground) > 0 then
MoveItem(finditem, 0, mainbag, 0, 0, 0);
if FindType($0DD7, ground) > 0 then
MoveItem(finditem, 0, mainbag, 0, 0, 0);
if FindType($0DD8, ground) > 0 then
MoveItem(finditem, 0, mainbag, 0, 0, 0);
end;

procedure CheckDagger;
begin
if (cut = 1) and (RHandLayer<>dagger) then begin
Equipt(RHandLayer, dagger);
end;
if cut = 0 then begin
unequip(RHandLayer);
end;
end;

procedure CheckWaterTile;
var
t: integer;
LCount: integer;
TTile: TStaticCell;
begin
TTile:=ReadStaticsXY(x, y, WorldNum);
LCount:=GetLayerCount(x, y, WorldNum);
i:=0;
while i < LCount do
begin
for t:=0 to 6 do
begin
if TTile.Statics[0].Tile=WaterTile[t] then
begin
WaterPlace[c].t:=TTile.Statics[0].Tile;
WaterPlace[c].x:=x;
WaterPlace[c].y:=y;
WaterPlace[c].z:=TTile.Statics[0].z;
WaterPlace[c].a:=1;
c:=c+1;
end;
end;
i:=i+1;
end;
end;

procedure FindWaterTile;
begin
for x:=GetX(self)-7 to GetX(self)+7 do
for y:=GetY(self)-7 to GetY(self)+7 do
begin
CheckWaterTile;
end;
WaterCount:=c-1;
end;

procedure Fishing;

begin
for a:=0 to WaterCount do
begin
Hungry(1,-1);
wait (800);
if WaterPlace[a].a = 1 then begin
WaitTargetTile(WaterPlace[a].t, WaterPlace[a].x, WaterPlace[a].y, WaterPlace[a].z);
wait(5000);
//if Length(LastJournalMessage)=34 then begin
//WaterPlace[a].a:=0;
//AddToSystemJournal('Заброкован таил');
//ClearJournal;
//end;
if FindTypeEx( fishpole, fishpoleColor, Ground, True ) > 0 then begin
//AddToSystemJournal('Fishing Poles found: ' + IntToStr(FindCount));
//UseType(fishpole, 0);
UseObject( FindItem );
end;
if cut = 0 then begin
fishgrab;
end;
CheckGold;
//MoveSos;
//MoveMap;
seaweed;
end;
end;
end;

begin
SetARStatus(true);

s:=true;

WaterTile[0]:=6038;
WaterTile[1]:=6039;
WaterTile[2]:=6040;
WaterTile[3]:=6041;
WaterTile[4]:=6042;
WaterTile[5]:=6043;
WaterTile[6]:=6044;


FindWaterTile;

AddToSystemJournal('Найдено тайлов для рыбалки: '+IntToStr(WaterCount));
while not Dead and s do begin
if cut = 1 then begin
CheckDagger;
end;
Fishing;
end;
end.

За одно скину инклюд на hungry:

procedure Hungry(NeededLevel : Integer; Container : Cardinal);
var HArray : array [0..11] of String;
CurrentLevel : Integer;
HasError : Boolean;
TimeSayHungry : TDateTime;
FoodID : Cardinal;
i,c,difference : Integer;
begin
if Not Connected then Exit;
if (NeededLevel < 0) or (NeededLevel > 11) then Exit;
HArray[0] := 'You are absolutely stuffed!';
HArray[1] := 'You are stuffed';
HArray[2] := 'hungry at all';
HArray[3] := 'You are a little hungry';
HArray[4] := 'You are somewhat hungry';
HArray[5] := 'You are REALLY hungry';
HArray[6] := 'Your stomash hurts';
HArray[7] := 'Your stomash hurts and you feel dizzy';
HArray[8] := 'You are starving';
HArray[9] := 'You are almost dying of hunger';
HArray[10] := 'You are DYING of hunger...';
HArray[11] := 'Are you still alive?';
HasError := true;
TimeSayHungry := Now;
UOSay('.hungry');
wait(100);
i:=0;
while i < 100 do
begin
for c := 0 to 11 do
if InJournalBetweenTimes(HArray[c],TimeSayHungry,Now) >= 0 then
begin
CurrentLevel := c;
HasError := false;
i := 100;
end;
wait(100);
i := i + 1;
end;
if HasError then
begin
AddToSystemJournal('Error with Hungry: Lag? Conection error? Something else?');
Exit;
end;
difference := CurrentLevel - NeededLevel;
FindType($097B,Container);
if (difference > 0) and (FindCount > 0) then for i := 1 to difference do
begin
FoodID := FindType($097B,Container);
if FoodID <> $00 then UseObject(FoodID);
wait(200);
end;
if FindType($097B,Container) = 0 then AddToSystemJournal('No Food');
end;
Verana
Novice
Novice
Posts: 60
Joined: 26.06.2015 18:44

Re: Фишинг ZHE

Post by Verana »

И на этом спасбо, попытка не пытка)
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Фишинг ZHE

Post by Vizit0r »

Друзья добрый день, есть проблема со скриптом на фишинг, если у чара сломалась удочка он не хочет брать ту что под ногами или рядом, и постоянно выводит сообщение что он сытый, иногда если дать в руки удочку он продолжает писать что чем то занят и алреди что то делать, в итоге не дает ничего взять или перетащить...
такое надо ловить при работе скрипта, а не глазами по коду.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Sonick071
Neophyte
Neophyte
Posts: 41
Joined: 21.04.2015 22:27

Re: Фишинг ZHE

Post by Sonick071 »

А вдруг кто-то любит играть в компилятор и найдет ошибку.
Если б не было stealth, то его следовало б придумать!
Verana
Novice
Novice
Posts: 60
Joined: 26.06.2015 18:44

Re: Фишинг ZHE

Post by Verana »

Единственное о чем прошу это чтоб показали как настроить подбор удочки с пола лодки если в паке его не нашлось
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Re: Фишинг ZHE

Post by Macks »

Verana wrote:Единственное о чем прошу это чтоб показали как настроить подбор удочки с пола лодки если в паке его не нашлось
Там уже все есть.
Может дистанция неверная или дистанция поиска не выставлена?
Удочка точно прямо под ногами?
Verana
Novice
Novice
Posts: 60
Joined: 26.06.2015 18:44

Re: Фишинг ZHE

Post by Verana »

Я и под собой их кидал всеравно не берет, может на лодке высота другая? Где именно та часть которая отвечает за расстояние и подбор удочек, если можно выделите я попробую значения поменять какие нибудь... На еду уже отдельный скрипт с пола нашел а вот с удочками пока никак...
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Re: Фишинг ZHE

Post by Macks »

Verana wrote:Я и под собой их кидал всеравно не берет, может на лодке высота другая? Где именно та часть которая отвечает за расстояние и подбор удочек, если можно выделите я попробую значения поменять какие нибудь... На еду уже отдельный скрипт с пола нашел а вот с удочками пока никак...

Code: Select all

if FindTypeEx( fishpole, fishpoleColor, Ground, True ) > 0 then begin
//AddToSystemJournal('Fishing Poles found: ' + IntToStr(FindCount));
//UseType(fishpole, 0);
UseObject( FindItem );
Попробуйте дабклик на удочку под ногами, может у вас просто так нельзя?
Нужно в руки брать или в бакпак?
И раскомментируйте запись в журнал, будет видно, нашел или нет.
Verana
Novice
Novice
Posts: 60
Joined: 26.06.2015 18:44

Re: Фишинг ZHE

Post by Verana »

дабл кликом у нас вообще ничего не одевается надо перетаскивать... Но другие скрипты с перетаскиванием вроде нормально работают, к примеру ламбер, топор из пака в руки и так же из пака выкладывет логи под собой... Но вот удочки с пола в пак нивкакую не кладется(
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Re: Фишинг ZHE

Post by Macks »

Verana wrote:дабл кликом у нас вообще ничего не одевается надо перетаскивать... Но другие скрипты с перетаскиванием вроде нормально работают, к примеру ламбер, топор из пака в руки и так же из пака выкладывет логи под собой... Но вот удочки с пола в пак нивкакую не кладется(
Попробуй поменять.

Code: Select all

if FindTypeEx( fishpole, fishpoleColor, Ground, True ) > 0 then begin
//AddToSystemJournal('Fishing Poles found: ' + IntToStr(FindCount));
//UseType(fishpole, 0);
UseObject( FindItem );
на

Code: Select all

if FindTypeEx( fishpole, fishpoleColor, Ground, True ) > 0 then begin
AddToSystemJournal('Fishing Poles found: ' + IntToStr(FindCount));
Disarm;
Wait(1000);
Equip(LhandLayer, FindItem );
Wait(500); 
UseObject( FindItem );
Verana
Novice
Novice
Posts: 60
Joined: 26.06.2015 18:44

Re: Фишинг ZHE

Post by Verana »

попробовал, такой вариант тоже не сработал... но зато выяснилось, что если сделать дабл клик на удочку то она сразу в руки берется, каким образом это можно использовать в скрипте? чтоб он при отсутствии удочки в руках сразу кликал на нее на полу? извиняюсь, вы выше спрашивали про дабл клик, на сервере оружие таким образом нельзя в руки взять и другие предметы тоже, а вот удочка с земли одевается, не ожидал...
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Re: Фишинг ZHE

Post by Macks »

Verana wrote:попробовал, такой вариант тоже не сработал...
Не пишет в журнал что нашел удочку?

Не берет в руки?

Не ловит?
Roman
Neophyte
Neophyte
Posts: 37
Joined: 03.11.2014 21:48

Re: Фишинг ZHE

Post by Roman »

Verana wrote:попробовал, такой вариант тоже не сработал... но зато выяснилось, что если сделать дабл клик на удочку то она сразу в руки берется, каким образом это можно использовать в скрипте? чтоб он при отсутствии удочки в руках сразу кликал на нее на полу? извиняюсь, вы выше спрашивали про дабл клик, на сервере оружие таким образом нельзя в руки взять и другие предметы тоже, а вот удочка с земли одевается, не ожидал...
UseObject( FindItem ); // это и есть даблклик по удочке
может на твоем сервере findtypeex по каким-то причинам не работает. попробуй findtype использовать
Verana
Novice
Novice
Posts: 60
Joined: 26.06.2015 18:44

Re: Фишинг ZHE

Post by Verana »

Macks wrote:
Verana wrote:попробовал, такой вариант тоже не сработал...
Не пишет в журнал что нашел удочку?

Не берет в руки?

Не ловит?

В итоге удочка так и остается на земле, и ничего не пишет, нет попытки поднять или еще каких то явных действий хотя скрипт работает... Если кинуть удочку в пак он ее сразу же берет в руки и начинает ловить...
Verana
Novice
Novice
Posts: 60
Joined: 26.06.2015 18:44

Re: Фишинг ZHE

Post by Verana »

UseObject( FindItem ); // это и есть даблклик по удочке
может на твоем сервере findtypeex по каким-то причинам не работает. попробуй findtype использовать[/quote]

спасибо попробовал и вот что пишет...

13:16:24:493 [4]: Compiler: [Error] (C:\Games\Steth\Scripts\Fishing4.sc at 161:54): Invalid number of parameters

вот эта строчка 161:54

if FindType( fishpole, fishpoleColor, Ground, True ) > 0 then begin (я так понял ему уже знак больше не нравится ?)
Post Reply