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

Fishing

Only working scripts
FreD
Posts: 7
Joined: 30.08.2005 20:12

Fishing

Post by FreD »

Простенький скрипт на фишинг.

Установите контейнеры в которых удочки и луки:

Code: Select all

Const
	BowChest = $xxxxxxxx;
	PoleChest = $xxxxxxxx;
Еда, стрелы на лодке, также непомешал бы тотем который бы вас лечил.

Тайлы для ловли содержатся в отдельном файле, который распологать в одной папке со скриптом, под именем - Tiles.txt
Их вы можете получить с помощью Injection - ,infotile

Пимер занесения тайлов:

Code: Select all

6041 2970 1025 251
6040 2170 1026 251
6043 2971 1027 251
6044 2971 1028 251
6043 2972 1026 251
6043 2972 1027 251
6040 2972 1028 251
Сам скрипт:

Code: Select all

Program Fishing;
type FishR = record
	tile:word;
	px,py,pz:integer;
end;

var
	ItemCount,i:Integer;
	FishP: array [0..150] of FishR;
	Pole,Eat:Cardinal;
Const
	BowChest = $xxxxxxxx;
	PoleChest = $xxxxxxxx;
{$Include 'all.inc'}

Procedure GetFishTiles(s:String;WPos:Integer);
begin
	s := s + ' ';
	FishP[WPos].tile:=StrToInt(Copy(s,1,Pos(' ',s)-1));
	Delete(s,1,Pos(' ',s));
	FishP[WPos].px:=StrToInt(Copy(s,1,Pos(' ',s)-1));
	Delete(s,1,Pos(' ',s));
	FishP[WPos].py:=StrToInt(Copy(s,1,Pos(' ',s)-1));
	Delete(s,1,Pos(' ',s));
	FishP[WPos].pz:=StrToInt(Copy(s,1,Pos(' ',s)-1));
	Delete(s,1,Pos(' ',s));
end;

Procedure GetCoord;
var
	List:TStringList;
	i:integer;
begin
	List:=TStringList.Create;
	List.LoadFromFile('Tiles.txt');
	for i := 0 to List.Count-1 do
		GetFishTiles(List.strings[i],i);
	ItemCount:=i;
end;

Procedure DeathR;
begin
	if life = 0 then
	begin
		WaitGump('1');
		while life = 0 do
		begin
			wait(1000);
		end;
		FindType($13B2,BowChest);
		if FindCount <> 0 then
			Grab(finditem,1);
		FindType($0F3F,ground);
		if FindCount <> 0 then
			Grab(finditem,100);
	end;
end;

Procedure Kill(Enemy:Cardinal);
var
	RTime:Cardinal;
begin
	Disarm;
	FindType($13B2,backpack);
	Equip(RhandLayer,finditem);
	Attack(Enemy);
	RTime:=Timer;
	While (GetDistance(Enemy)<15) and (Timer < (RTime + (30 *1000))) do
	begin
		if life <80 then
			UOSay('Heal');
		Wait(1000);
	end;
	Disarm;
	SetWarMode(false);
	Equip(LHandLayer,Pole);
end;

Procedure DangerCheak;
var
	Enemy:array[1..4] of Cardinal;
	i:Integer;
begin
	Enemy[1] := $0190;
	Enemy[2] := $0191;
	Enemy[3] := $0010;
	Enemy[4] := $0096;
	Ignore(Self);
	for i:=1 to 4 do
	begin
		FindType(Enemy[i],ground);
		if FindCount>0 then
			Kill(FindItem);
	end;
end;

Procedure Fish(tile:Word;x,y,z:Integer);
var
	FBegin:TDateTime;
begin
	FBegin:=Now;
	while (not InJournalBetweenTimes('seem to be',FBegin,Now)>=0) do
	begin
		If TargetPresent then
			CancelTarget;
		DeathR;
		UseObject(Pole);
		WaitForTarget(4000);
		TargetToTile(tile,x,y,z);
		WaitJournalLine(Now, 'a nice fish!|seem to be|You find a message|an old tattered|not a fish!', 20000);
		If (GetType(Pole) = 0) then
		begin
			FindType($0DBF,PoleChest);
			if FindCount > 0 then
				Pole:=finditem
			else
				FullDisconnect;
			
		end;
		DangerCheak;
		CheckSave;
		WaitConnection(10);
	end;
end;

Procedure FishS;
var
	i:Integer;
	FishT:array[1..4] of Cardinal;
begin
	FishT[1] := $09CC;
	FishT[2] := $09CE;
	FishT[3] := $09CD;
	FishT[4] := $09CF;
	for i := 1 to 4 do
		stack(FishT[i],$0000);
end;

begin
	UseObject(BowChest);
	UseObject(PoleChest);
	SetArStatus(true);
	Eat:=0;
	GetCoord;
	Disarm;
	while true do
	begin
		FindDistance := 12;
		FindVertical := 255;
		for i:=0 to ItemCount-1 do
		begin
			if (Timer > (Eat + (15 *60 *1000))) then
			begin
				Hungry(1,ground);
				Eat :=Timer;
			end;
			Fish(FishP[i].tile,FishP[i].px,FishP[i].py,FishP[i].pz);
			if Weight > 350 then FishS;
		end;
	end;
end.
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Re: Fishing

Post by ParadoX »

ггг.. говорит простенький а сам наверное гордится :)

ну скрипт то не под дрим... ибо рыбачит в точке по одному разу... хотя может оно и к лучшему...

по мне так слишком накручено... а вообще - афтар зачёт...
FreD
Posts: 7
Joined: 30.08.2005 20:12

Post by FreD »

Не горжусь :) Валялся у меня он, решил кинуть сюда.
З.Ы.: Рыбачит пока все не выловит в одной точке.
LaST UnIcOrN
Neophyte
Neophyte
Posts: 10
Joined: 11.09.2005 17:16
Contact:

Post by LaST UnIcOrN »

Подскажите как это исправить, все вродеб сделал , но
вот тут ошибку выдает... вот в этой строке если быть точнее..
FishP[WPos].py:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));

Вот сама ошибка.
5:37:49: Compiling
5:37:49: Compiled succesfully
5:37:50: Exception: '' is not a valid integer value at 30.153
5:37:50: Script Fishing.sc stoped successfuly

с этой процедуры.
Procedure GetFishTiles(s:String;WPos:Integer);
begin
s := s + ' ';
FishP[WPos].tile:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
FishP[WPos].px:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
FishP[WPos].py:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
FishP[WPos].pz:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
end;
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

похоже что ошибка в списке тайлов для вылова, просмотри его внимательно
LaST UnIcOrN
Neophyte
Neophyte
Posts: 10
Joined: 11.09.2005 17:16
Contact:

Post by LaST UnIcOrN »

Всё, спасибо за помощь, после совета Мираклеса выяснилось, что в файле с тайлами просто было в самом низу две пустые строки и скрипт просто на них вылетал... в файле не должно быть ни пробелов ни пустых строк... только так как показано в примере. :roll:
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

я не Миралекс)
LaST UnIcOrN
Neophyte
Neophyte
Posts: 10
Joined: 11.09.2005 17:16
Contact:

Post by LaST UnIcOrN »

Alex wrote:я не Миралекс)
и тебе Алекс тоже спасибо :)...
у меня теперь еще такой вопрос... со временем, где-то через часа два зависает и пишется вечно I am already bla bla bla..
попытался немного подправить... но чтото еффект не достиг ..
что сделал неправильно??

Code: Select all

Procedure Fish(tile:Word;x,y,z:Integer); 
var 
   FBegin:TDateTime; 
begin 
   FBegin:=Now; 
   while (not InJournalBetweenTimes('seem to be',FBegin,Now)>=0) do 
   begin 
      DeathR; 
CheckTargetError(5, 2); 
      UseObject(Pole); 
      WaitForTarget(4000); 
      TargetToTile(tile,x,y,z); 
      WaitJournalLine(Now, 'a nice fish!|seem to be|You find a message|an old tattered|not a fish!', 20000); 
      If (GetType(Pole) = 0) then 
      begin 
SetARStatus(true); 
waitconnection(3000); 
CheckSave; 
wait(3000); 
SetARStatus(true); 
while WaitJournalLine(Now, 'I am already performing another action', 20000) do   // вот тут пытался вписать, чтобы дисконнектило если появляется фраща I am bla bla bla
 FullDisconnect;
         FindType($0DBF,PoleChest); 
         if FindCount > 0 then 
            Pole:=finditem 
         else 
            FullDisconnect; 
                end; 
      DangerCheak; 
      CheckSave; 
      WaitConnection(10); 
   end; 
end; 

Заранее спасибо за ответ.
Last edited by LaST UnIcOrN on 08.07.2006 1:27, edited 1 time in total.
Acronym
Novice
Novice
Posts: 114
Joined: 10.05.2005 18:42
Location: Odessa, NDW
Contact:

Post by Acronym »

заключай код скриптов в тег code когда постишь на форуме
LaST UnIcOrN
Neophyte
Neophyte
Posts: 10
Joined: 11.09.2005 17:16
Contact:

Post by LaST UnIcOrN »

ок исправил... прошу прощения , что не сделал этого сразу... так что кто-то может помочь? :roll:
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

юзай canceltarget перед использованием обьекта, вместо checktargeterror
LaST UnIcOrN
Neophyte
Neophyte
Posts: 10
Joined: 11.09.2005 17:16
Contact:

Post by LaST UnIcOrN »

Alex wrote:юзай canceltarget перед использованием обьекта, вместо checktargeterror
непоможет . Так зависание идет именно удочки, у меня такое даже на простом клиенте было.. и пока не перезайдешь дабл клик на удочку будет писать типа что итем уже используется, а если скриптом работать то ай ем олрэди бла бла бла... спасает только реконнект.. поетому и попросил помочь со словами и реконнектом при них... :roll:
Alex
Moderator
Moderator
Posts: 351
Joined: 07.04.2005 4:41

Post by Alex »

checktargeterror именно этим занимаеться что реконектит чара если видит эти строки в журнале
LaST UnIcOrN
Neophyte
Neophyte
Posts: 10
Joined: 11.09.2005 17:16
Contact:

Post by LaST UnIcOrN »

Code: Select all

begin 
   FBegin:=Now; 
   while (not InJournalBetweenTimes('seem to be',FBegin,Now)>=0) do 
   begin 
      If TargetPresent then //то , что вы говорили указать
         CancelTarget;  // то, что вы говорили указать
      DeathR; 
      UseObject(Pole); 
      WaitForTarget(4000); 
      TargetToTile(tile,x,y,z); 
      WaitJournalLine(Now, 'a nice fish!|seem to be|You find a message|an old tattered|not a fish!', 20000); 
      If (GetType(Pole) = 0) then 
      begin 
         FindType($0DBF,PoleChest); 
         if FindCount > 0 then 
            Pole:=finditem 
         else 
            FullDisconnect; 
вот это в первоначально скрипте ...
Пробывал итак поставить и так как пробывал уже я переделать.. результат один и тотже... всеравно через час примерно появляется Ай эм бла бла бла. . .
Diego
Neophyte
Neophyte
Posts: 15
Joined: 11.07.2006 8:08
Contact:

Post by Diego »

У меня такае же лажа... через некоторое время после запуска скрипта пишет "I am already.... " пробывал задержку увеличить - не получилось....
подскажите пожалуйста... просто я в скриптаз полный ноль ...
и у меня скрипт запускаеться, только пишет:
"Compiling
compiling succesfully
UseObjtct error : Object not finded" ?
вроде всё приавильно делал... если можете обьясните.... тут или в асю 334353710
зарание спасибо!
Post Reply