• Доступ на форум только по приглашениям!

Скрипты для Stealth и Injection под ФЛ.

SnifeR iz da boo

Wizard of Words
Привет. Как и обещал, выкладываю парочку простеньких скриптов. Тем, кто не знаком со стелсом будет сложно разобраться, подробных инструкций писать не буду, но если знакомы с перенастройкой чужих скриптов под себя, то проблем не составит.

Stealth:

Начну с парочки необходимых инклюдов (переделанный чужой чеклаг и мой гетнеймфромклилок).

all.inc
PHP:
procedure CheckLag; 
var starttime : TDateTime; 
begin 
   starttime := Now; 
   ClickOnObject(backpack); 
   repeat 
      wait(50); 
   until (InJournalBetweenTimes('backpack', starttime, Now)<>-1); 
end;

function GetNameFromCliloc(ID : Cardinal) : String;
var
  f : TStringList;
begin
	f := TStringList.Create;
	StrBreakApart(GetCliloc(ID),' | ',f);
	result := f.strings[0];
end;
Teea Reagents Autosell v1:
PHP:
Program Autosell;

////////Пример скрипта авто-продажи на примере скроллов by Teea, v0.1////////
/////////////////////////////////////////////////////////////////////////////
///////////////////////////Краткая инструкция////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Скрипт пытается продать скроллы методом тыка в каждого вендора,
//которые указаны в базе, при этом облетая меджикшопы по рунбуке,
//прописанной в ReagentRuneBook. Скрипт сырой, написан как пример
//для тех, кому интересно понять принцип автоматической скупки и
//продажи (скрипты Autobuy и Autosell соответственно).

//Я не знаю сколько тут возможно продать за один раз, поэтому
//для теста и примера константа Kolvo равна 1 (т.е. будет продаваться
//по 1 скроллу за одно обращение к вендору).

//Изначально скрипт проверяет наличие скроллов в сундуке (Sunduk),
//при общем количестве всех скроллов больше 10 (StartLimit) - начинает продажу.
//Летит по порядку по рунам в рунбуке (ReagentRuneBook), которые можно сверить с именами нпц, описанными ниже:

//Vesper 1: Juliette
//Vesper 2: Sheba, Taipa
//Vesper 3: Taite, Zuleika
//Britain 1: Chimlis, Asia
//Britain 2: Stesha, Zola
//Britain 3: Ruben, Ares
//Skara Brae 1: Curran, Ivar
//Skara Brae 2: Silas, Iain
//Papua 1: Morton, Zorn
//Papua 2: Golda, Damen
//Trinsic: Filmore, Allyn
//Moonglow 1: Deana, Kin
//Moonglow 2: Brodny, Radinka
//Moonglow 3: Elmer, Mackenzie
//Delucia: Maryann, Arella
//Magincia: Ohanna, Latonia

//При дропе хп зовет гвардов. После того, как в паке не остается ниодного скролла
//скрипт возвращается обратно в реколку и опять сканирует сундук на количество скроллов.

//Добор скроллов на рекол осуществляется из сундука (Sunduk). Кому будет интересно - тот сам прикрутит
//покупку регов на рекол прямо на месте у вендоров.


const
////////Настройки:
	Kolvo = 1;				// Сколько скроллов одного типа продаем за 1 раз?
	ReagentRuneBook = $40216CB8;		// ID Рунбуки в паке с рунами к вендорам.
	RecallkaRuneBook = $4026D5C8;		// ID Рунбуки или руны в паке, реколл по которой ведет в реколку.
	Sunduk = $400A3A32;			// ID Сундука в реколке, в котором лежат скроллы и куда скидывать гп.
	StartLimit = 5;			// Сколько должно скопиться скроллов в сундуке, чтобы начать их продажу.
	HowMuchToSell = 5;			// Сколько берем скроллов в пак для дальнейшей продажи.

////////Константы, которые изменять не нужно:
	RuneBookShift = 5;		//6 * n + RuneBookShift

var
	Scrolls : array [0..63] of Cardinal;
	NPC1 : array [0..2] of Cardinal;	// Vesper 1
	NPC2 : array [0..2] of Cardinal;	// Vesper 2
	NPC3 : array [0..2] of Cardinal;	// Vesper 3
	NPC4 : array [0..2] of Cardinal;	// Britain 1
	NPC5 : array [0..2] of Cardinal;	// Britain 2
	NPC6 : array [0..2] of Cardinal;	// Britain 3
	NPC7 : array [0..2] of Cardinal;	// Skara Brae 1
	NPC8 : array [0..2] of Cardinal;	// Skara Brae 2
	NPC9 : array [0..2] of Cardinal;	// Papua 1
	NPC10 : array [0..2] of Cardinal;	// Papua 2
	NPC11 : array [0..2] of Cardinal;	// Trinsic
	NPC12 : array [0..2] of Cardinal;	// Moonglow 1
	NPC13 : array [0..2] of Cardinal;	// Moonglow 2
	NPC14 : array [0..2] of Cardinal;	// Moonglow 3
	NPC15 : array [0..2] of Cardinal;	// Delucia
	NPC16 : array [0..2] of Cardinal;	// Magincia

	i, a, myX, myY, j : integer;

	NPCToBuy : Cardinal;
	ScrollsLeft : Integer;
	Terminated : Boolean;

procedure CheckLag; 
var starttime : TDateTime; 
begin 
   starttime := Now; 
   ClickOnObject(backpack); 
   repeat 
      wait(50); 
   until (InJournalBetweenTimes('backpack', starttime, Now)<>-1); 
end;

procedure put(itemtype : Cardinal; cont : Cardinal);
begin
	while count(itemtype) > 0 do begin
		if Dead then Exit;
		MoveItem(FindType(itemtype,backpack),0,cont,0,0,0);
		wait(500);
	end;
end;

procedure init;
begin
	SetEventProc(evItemInfo, '');
	SetEventProc(evDrawObject, '');
	SetEventProc(evDrawGamePlayer, '');
	SetEventProc(evUpdateChar, '');
	SetEventProc(evSpeech, '');
	SetEventProc(evUnicodeSpeech, '');
	SetEventProc(evICQDisconnect, ''); 
	SetEventProc(evICQError, ''); 
	SetEventProc(evICQIncomingText, '');
	NPC1[1] := $0000A65A; //Juliette
	NPC1[2] := $0000A272; //

	NPC2[1] := $00000942; //Sheba
	NPC2[2] := $00000B3C; //Taipa

	NPC3[1] := $0000A273; //Taite
	NPC3[2] := $0000A65C; //Zuleika

	NPC4[1] := $0002026C; //Chimlis
	NPC4[2] := $000204FC; //Asia

	NPC5[1] := $0001FFBC; //Stesha
	NPC5[2] := $0001FFBA; //Zola

	NPC6[1] := $00020932; //Ruben
	NPC6[2] := $0002074F; //Ares

	NPC7[1] := $000004D7; //Curran
	NPC7[2] := $00000433; //Ivar

	NPC8[1] := $00000CBB; //Silas
	NPC8[2] := $000004C9; //Iain

	NPC9[1] := $000174F2; //Morton
	NPC9[2] := $000174F4; //Zorn

	NPC10[1] := $0000A91B; //Golda
	NPC10[2] := $0000A10D; //Damen

	NPC11[1] := $00000A66; //Filmore
	NPC11[2] := $00000619; //Allyn

	NPC12[1] := $000016C9; //Deana
	NPC12[2] := $000008E7; //Kin

	NPC13[1] := $000012B9; //Brodny
	NPC13[2] := $000018EA; //Radinka

	NPC14[1] := $00000A34; //Elmer
	NPC14[2] := $000018EC; //Mackenzie

	NPC15[1] := $0000A32E; //Maryann
	NPC15[2] := $0000A8A7; //Arella

	NPC16[1] := $00001524; //Ohanna
	NPC16[2] := $00000E58; //Latonia
	
	Scrolls[0] := $1F2E;	//Clumsy
	Scrolls[1] := $1F2F;	//Create Food
	Scrolls[2] := $1F30;	//Feeblemind
	Scrolls[3] := $1F31;	//Heal
	Scrolls[4] := $1F32;	//Magic Arrow
	Scrolls[5] := $1F33;	//Night Sight
	Scrolls[6] := $1F2D;	//Reactive Armor
	Scrolls[7] := $1F34;	//Weaken
	Scrolls[8] := $1F35;	//Agility
	Scrolls[9] := $1F36;	//Cunning
	Scrolls[10] := $1F37;	//Cure
	Scrolls[11] := $1F38;	//Harm
	Scrolls[12] := $1F39;	//Magic Trap
	Scrolls[13] := $1F3A;	//Magic Untrap
	Scrolls[14] := $1F3B;	//Protection
	Scrolls[15] := $1F3C;	//Strength
	Scrolls[16] := $1F3D;	//Bless
	Scrolls[17] := $1F3E;	//Fireball
	Scrolls[18] := $1F3F;	//Magic Lock
	Scrolls[19] := $1F40;	//Poison
	Scrolls[20] := $1F41;	//Telekinesis
	Scrolls[21] := $1F42;	//Teleport
	Scrolls[22] := $1F43;	//Unlock
	Scrolls[23] := $1F44;	//Wall of Stone
	Scrolls[24] := $1F45;	//Arch Cure
	Scrolls[25] := $1F46;	//Arch Protection
	Scrolls[26] := $1F47;	//Curse
	Scrolls[27] := $1F48;	//Fire Field
	Scrolls[28] := $1F49;	//Greater Heal
	Scrolls[29] := $1F4A;	//Lighting
	Scrolls[30] := $1F4B;	//Mana Drain
	Scrolls[31] := $1F4C;	//Recall
	Scrolls[32] := $1F4D;	//Blade Spirits
	Scrolls[33] := $1F4E;	//Dispel Field
	Scrolls[34] := $1F4F;	//Incognito
	Scrolls[35] := $1F50;	//Magic Reflection
	Scrolls[36] := $1F51;	//Mind Blast
	Scrolls[37] := $1F52;	//Paralyze
	Scrolls[38] := $1F53;	//Poison Field
	Scrolls[39] := $1F54;	//Summ. Creature
	Scrolls[40] := $1F55;	//Dispel
	Scrolls[41] := $1F56;	//Energy Bolt
	Scrolls[42] := $1F57;	//Explosion
	Scrolls[43] := $1F58;	//Invisibility
	Scrolls[44] := $1F59;	//Mark
	Scrolls[45] := $1F5A;	//Mass Curse
	Scrolls[46] := $1F5B;	//Paralyze Field
	Scrolls[47] := $1F5C;	//Reveal
	Scrolls[48] := $1F5D;	//Chain Lighting
	Scrolls[49] := $1F5E;	//Energy Field
	Scrolls[50] := $1F5F;	//Flame Strike
	Scrolls[51] := $1F60;	//Gate Travel
	Scrolls[52] := $1F61;	//Mana Vampire
	Scrolls[53] := $1F62;	//Mass Dispel
	Scrolls[54] := $1F63;	//Meteor Swarm
	Scrolls[55] := $1F64;	//Polymorph
	Scrolls[56] := $1F65;	//Earthquake
	Scrolls[57] := $1F66;	//Energy Vortex
	Scrolls[58] := $1F67;	//Resurrection
	Scrolls[59] := $1F68;	//Air Elemental
	Scrolls[60] := $1F69;	//Summon Daemon
	Scrolls[61] := $1F6A;	//Earth Elemental
	Scrolls[62] := $1F6B;	//Fire Elemental
	Scrolls[63] := $1F6C;	//Water Elemental

	SetAutoSellDelay(0);
end;

function RecallRune(RuneBook: Cardinal; Rune: Byte):Boolean;
var 
	Counter: Byte; 
	X, Y: Word; 
begin 
	Result := False; 
	X := GetX(Self); 
	Y := GetY(Self); 
	while Isgump do CloseSimpleGump(0); 
	if Dead or not Connected then Exit; 
	UseObject(RuneBook); 
	CheckLag; 
	Counter := 5;
	while Counter > 0 do begin 
		if IsGump then Break; 
		CheckLag; 
		Counter := Counter - 1; 
	end; 
	if IsGump then begin 
		if NumGumpButton(0, 6 * Rune + RuneBookShift) then begin 
			CheckLag; 
			Wait(3000); 
			CheckLag; 
			Result := (X <> GetX(Self)) or (Y <> GetY(Self)); 
		end else Result := False; 
	end else Result := False; 
end;


procedure CheckHP;
begin
	if HP < (MaxHP-10) then begin
		UOSay('guards');
		wait(1500);
	end;
end;


procedure Discharge;
begin
	put($0EED,Sunduk);
end;

procedure GetReagents;
var
  ReagentDiff : Integer;
begin
	if Dead then Exit;
	UseObject(Sunduk);
	checklag;
	wait(500);
	FindDistance:=2;
	UseObject(FindType($0E42,Ground)); // $0E42 - тип сундука. Просто дополнительная открывалка другим способом на всякий случай.
	while gettype(Sunduk) = 0 do begin
		UseObject(Sunduk);
		wait(500);
	end;
	checklag;
	wait(800);
	if (count(BP) < 20) then begin
		ReagentDiff := 20 - count(BP);
		MoveItem(FindType(BP,Sunduk),ReagentDiff,BackPack,0,0,0);
	end;
	checklag;
	wait(500);
	if (count(BM) < 20) then begin
		ReagentDiff := 20 - count(BM);
		MoveItem(FindType(BM,Sunduk),ReagentDiff,BackPack,0,0,0);
	end;
	checklag;
	wait(500);
	if (count(MR) < 20) then begin
		ReagentDiff := 20 - count(MR);
		MoveItem(FindType(MR,Sunduk),ReagentDiff,BackPack,0,0,0);
	end;
	checklag;
	wait(500);
end;

procedure GetScrolls;
var
  HowMuchWeGotSunduk,HowMuchWeGotBackPack : Integer;
begin
	if Dead then Exit;
	ScrollsLeft := 0;
	HowMuchWeGotSunduk := 0;
	HowMuchWeGotBackPack := 0;
	for j := 0 to 63 do begin
		FindType(Scrolls[j], Sunduk);
		HowMuchWeGotSunduk := HowMuchWeGotSunduk + FindFullQuantity;
	end;
	if HowMuchWeGotSunduk > StartLimit then begin
		while HowMuchWeGotBackPack < HowMuchToSell do begin
			for j := 0 to 63 do begin
				FindType(Scrolls[j],Sunduk);
				if FindFullQuantity > 0 then begin
					MoveItem(Finditem,HowMuchToSell,BackPack,0,0,0);
					checklag;
					wait(500);
				end;
				FindType(Scrolls[j],backpack);
				HowMuchWeGotBackPack := HowMuchWeGotBackPack + FindFullQuantity;
				if HowMuchWeGotBackPack > HowMuchToSell then break;
			end;
		end;
	end;
end;


////////Основа:

begin
	init;

      while not Terminated do begin
	GetReagents;
	Discharge;
	// Ждем пока хп не отрегенится. Кому надо - встройте сюда любой авто-хил.
	while HP < (MaxHP -10) do wait(500);

	GetScrolls;	

	ScrollsLeft := 0;
	for j := 0 to 63 do begin
		FindType(Scrolls[j], backpack);
		ScrollsLeft := ScrollsLeft + FindFullQuantity;
	end;
	
	if ScrollsLeft > 0 then begin
		for i := 1 to 16 do begin
			myX := GetX(self);
			myY := GetY(self);
			while GetX(self) = myX do begin
				while Mana < 11 do begin
					CheckHP;
					UseSkill('Meditation');
					wait(1000);
				end;
				CheckHP;
				RecallRune(ReagentRuneBook,i-1);
			end;
			for a := 1 to 2 do begin
				case i of
				1 :
				    begin
					NPCToBuy := NPC1[a];
				    end;
				2 :
				    begin
					NPCToBuy := NPC2[a];
				    end;
				3 :
				    begin
					NPCToBuy := NPC3[a];
				    end;
				4 :
				    begin
					NPCToBuy := NPC4[a];
				    end;
				5 :
				    begin
					NPCToBuy := NPC5[a];
				    end;
				6 :
				    begin
					NPCToBuy := NPC6[a];
				    end;
				7 :
				    begin
					NPCToBuy := NPC7[a];
				    end;
				8 :
				    begin
					NPCToBuy := NPC8[a];
				    end;
				9 :
				    begin
					NPCToBuy := NPC9[a];
				    end;
				10 :
				    begin
					NPCToBuy := NPC10[a];
				    end;
				11 :
				    begin
					NPCToBuy := NPC11[a];
				    end;
				12 :
				    begin
					NPCToBuy := NPC12[a];
				    end;
				13 :
				    begin
					NPCToBuy := NPC13[a];
				    end;
				14 :
				    begin
					NPCToBuy := NPC14[a];
				    end;
				15 :
				    begin
					NPCToBuy := NPC15[a];
				    end;
				16 :
				    begin
					NPCToBuy := NPC16[a];
				    end;
				end;
				SetContextMenuHook(NPCToBuy,2);
				ScrollsLeft := 0;
				// Продажа:
				for j := 0 to 63 do begin
					FindType(Scrolls[j], backpack);
					if FindFullQuantity > 0 then begin
						AutoSell(Scrolls[j],$0000,Kolvo);
						RequestContextMenu(NPCToBuy);
						CheckLag;
						wait(300);
						AutoSell(Scrolls[j],$0000,0);
						CheckHP;
					end;
				end;
				CheckLag;
				// Подсчет оставшихся:
				for j := 0 to 63 do begin
					FindType(Scrolls[j], backpack);
					ScrollsLeft := ScrollsLeft + FindFullQuantity;
				end;
				CheckHP;
				if ScrollsLeft = 0 then Break;
			end;
			if ScrollsLeft = 0 then Break;
		end;
		myX := GetX(self);
		myY := GetY(self);
		while GetX(self) = myX do begin
			while Mana < 11 do begin
				CheckHP;
				UseSkill('Meditation');
				wait(1000);
			end;
			CheckHP;
			WaitTargetObject(RecallkaRuneBook);
			Cast('Recall');
			CheckLag; 
			Wait(3000); 
		end;
	end else begin
		AddToSystemJournal('## Ждем минуту, т.к. не взяли ниодного скролла.');
		wait(60000);
	end;
      end;
end.
 

SnifeR iz da boo

Wizard of Words
Teea Reagents Autobuy v1:
PHP:
Program Autobuy;

{$Include 'all.inc'}

const
	BP = $0F7A;
	MR = $0F86;
	BM = $0F7B;
	Blanks = $0E34;
	Kolvo = 300;
	ReagentRuneBook = $40216CB8; 
	RuneBookShift = 5; //6 * n + RuneBookShift

var
	NPC1 : array [0..2] of Cardinal;
	NPC2 : array [0..2] of Cardinal;
	NPC3 : array [0..2] of Cardinal;
	NPC4 : array [0..2] of Cardinal;
	NPC5 : array [0..2] of Cardinal;
	NPC6 : array [0..2] of Cardinal;
	NPC7 : array [0..2] of Cardinal;
	NPC8 : array [0..2] of Cardinal;
	NPC9 : array [0..2] of Cardinal;
	NPC10 : array [0..2] of Cardinal;
	NPC11 : array [0..2] of Cardinal;
	NPC12 : array [0..2] of Cardinal;
	NPC13 : array [0..2] of Cardinal;
	NPC14 : array [0..2] of Cardinal;
	NPC15 : array [0..2] of Cardinal;
	NPC16 : array [0..2] of Cardinal;
	NPC17 : array [0..2] of Cardinal;
	
	i, a, myX, myY : integer;

	NPCToBuy : Cardinal;

procedure init;
begin
	SetEventProc(evItemInfo, '');
	SetEventProc(evDrawObject, '');
	SetEventProc(evDrawGamePlayer, '');
	SetEventProc(evUpdateChar, '');
	SetEventProc(evSpeech, '');
	SetEventProc(evUnicodeSpeech, '');
	SetEventProc(evICQDisconnect, ''); 
	SetEventProc(evICQError, ''); 
	SetEventProc(evICQIncomingText, '');
	NPC1[1] := $0000A65A; //Juliette
	NPC1[2] := $0000A272; //

	NPC2[1] := $00000942; //Sheba
	NPC2[2] := $00000B3C; //Taipa

	NPC3[1] := $0000A273; //Taite
	NPC3[2] := $0000A65C; //Zuleika

	NPC4[1] := $0002026C; //Chimlis
	NPC4[2] := $000204FC; //Asia

	NPC5[1] := $0001FFBC; //Stesha
	NPC5[2] := $0001FFBA; //Zola

	NPC6[1] := $00020932; //Ruben
	NPC6[2] := $0002074F; //Ares

	NPC7[1] := $000004D7; //Curran
	NPC7[2] := $00000433; //Ivar

	NPC8[1] := $00000CBB; //Silas
	NPC8[2] := $000004C9; //Iain

	NPC9[1] := $000174F2; //Morton
	NPC9[2] := $000174F4; //Zorn

	NPC10[1] := $0000A91B; //Golda
	NPC10[2] := $0000A10D; //Damen

	NPC11[1] := $00000A66; //Filmore
	NPC11[2] := $00000619; //Allyn

	NPC12[1] := $000016C9; //Deana
	NPC12[2] := $000008E7; //Kin

	NPC13[1] := $000012B9; //Brodny
	NPC13[2] := $000018EA; //Radinka

	NPC14[1] := $00000A34; //Elmer
	NPC14[2] := $000018EC; //Mackenzie

	NPC15[1] := $0000A32E; //Maryann
	NPC15[2] := $0000A8A7; //Arella

	NPC16[1] := $00001524; //Ohanna
	NPC16[2] := $00000E58; //Latonia

	SetAutoBuyDelay(0);
end;

function RecallRune(RuneBook: Cardinal; Rune: Byte):Boolean; //New 
var 
Counter: Byte; 
X, Y: Word; 
begin 
Result := False; 
X := GetX(Self); 
Y := GetY(Self); 
while Isgump do CloseSimpleGump(0); 
if Dead or not Connected then Exit; 
UseObject(RuneBook); 
CheckLag; 
Counter := 5;
while Counter > 0 do begin 
	if IsGump then Break; 
	CheckLag; 
	Counter := Counter - 1; 
end; 
if IsGump then begin 
	if NumGumpButton(0, 6 * Rune + RuneBookShift) then begin 
		CheckLag; 
		Wait(3000); 
		CheckLag; 
		Result := (X <> GetX(Self)) or (Y <> GetY(Self)); 
	end else Result := False; 
end else Result := False; 
end;

begin
	init;
	
	for i := 1 to 16 do
	begin
		myX := GetX(self);
		myY := GetY(self);
		while GetX(self) = myX do
		begin
			while Mana < 11 do begin
				UseSkill('Meditation');
				wait(1000);
			end;
			//WaitTargetObject(RuneToShop[i]);
			//cast('Recall');
			//wait(3000);
			RecallRune(ReagentRuneBook,i-1);
		end;
		for a := 1 to 2 do
		begin
			case i of
			1 :
			    begin
				NPCToBuy := NPC1[a];
			    end;
			2 :
			    begin
				NPCToBuy := NPC2[a];
			    end;
			3 :
			    begin
				NPCToBuy := NPC3[a];
			    end;
			4 :
			    begin
				NPCToBuy := NPC4[a];
			    end;
			5 :
			    begin
				NPCToBuy := NPC5[a];
			    end;
			6 :
			    begin
				NPCToBuy := NPC6[a];
			    end;
			7 :
			    begin
				NPCToBuy := NPC7[a];
			    end;
			8 :
			    begin
				NPCToBuy := NPC8[a];
			    end;
			9 :
			    begin
				NPCToBuy := NPC9[a];
			    end;
			10 :
			    begin
				NPCToBuy := NPC10[a];
			    end;
			11 :
			    begin
				NPCToBuy := NPC11[a];
			    end;
			12 :
			    begin
				NPCToBuy := NPC12[a];
			    end;
			13 :
			    begin
				NPCToBuy := NPC13[a];
			    end;
			14 :
			    begin
				NPCToBuy := NPC14[a];
			    end;
			15 :
			    begin
				NPCToBuy := NPC15[a];
			    end;
			16 :
			    begin
				NPCToBuy := NPC16[a];
			    end;
			end;
			SetContextMenuHook(NPCToBuy,1);
			AutoBuy(BP,$0000,Kolvo);
			RequestContextMenu(NPCToBuy);
			CheckLag;
			AutoBuy(BM,$0000,Kolvo);
			RequestContextMenu(NPCToBuy);
			CheckLag;
			AutoBuy(MR,$0000,Kolvo);
			RequestContextMenu(NPCToBuy);
			CheckLag;
			AutoBuy(Blanks,$0000,Kolvo);
			RequestContextMenu(NPCToBuy);
			CheckLag;
			wait(300);
			AutoBuy(BM,$0000,0);
			AutoBuy(BP,$0000,0);
			AutoBuy(MR,$0000,0);
			AutoBuy(Blanks,$0000,0);
		end;
	end;
end.
 

SnifeR iz da boo

Wizard of Words
Injection:

Самодельный рейлрайтер (для записи координат для ламбера и мининга в файл). Работать так:
1) биндим exec Mark1
2) летим в шахту.
3) жмем бинд, создается файл C:\Mining1.dat и туда записываются первые координаты.
4) потом просто ходим и жмем бинд, чтоб записать в файл новые координаты.

Почему выложил рейлрайтер? На днях выложу простенький скрипт для обкопки нубомайна, как найду время почистить его от ненужных довесов от полноценного скрипта. Может тогда уже администрация сделает телепорт оттуда персонажей с минингом выше 85 (как это сделано в нубоданже).

Teea Mining RailWriter v1
PHP:
sub Mark1()
	RailWrite(1)
end sub

sub Mark2()
	RailWrite(2)
end sub

sub Mark3()
	RailWrite(3)
end sub

sub Mark4()
	RailWrite(4)
end sub

sub Mark5()
	RailWrite(5)
end sub

sub Mark6()
	RailWrite(6)
end sub

sub Mark7()
	RailWrite(7)
end sub

sub Mark8()
	RailWrite(8)
end sub

sub RailWrite(ZoneNum) 
	var TreeCount=0
	var f=file("C:\Mining"+str(ZoneNum)+".dat") 
	var s=0
	if not f.open() then
		f.create()
	endif
	while not f.eof() and not fatal error
		s=safe call f.ReadLn()
		TreeCount=TreeCount+1
	wend
	s=safe call f.writeln(str(UO.GetX('self'))+' '+str(UO.GetY('self')))
	f.close() 
	uo.print('Amount of saved coords: '+str(TreeCount))
end sub
 

SnifeR iz da boo

Wizard of Words
Это не копи-паст и не плагиат.

Я говорил, что выложу то, что писал с нуля или переделывал под особенности нашего сервера сам. То, что чужое - я об этом написал.

Кстати автоселл написан по твоему заказу, Рене. Делает то, что ты просил. Настройки ты не уточнял, поэтому как бы это не мои проблемы.


Игрокам:
Когда допишу скрипт-вендора и набалуюсь с ним выложу и его тоже. Кстати, вендор не спамящий, поэтому вас другие игроки не будут за глаза матом крыть, как это делают, например, с "вендором" Violetta.
 

Rene

Banned
Это не копи-паст и не плагиат.

Я говорил, что выложу то, что писал с нуля ...
Отсюда: Stealth Client Forum :: View topic - Mining SA

PHP:
function RecallRune(RuneBook: Cardinal; Rune: Byte):Boolean; //New 
var 
Counter: Byte; 
X, Y: Word; 
begin 
Result := False; 
X := GetX(Self); 
Y := GetY(Self); 
CheckLag(LagWait); 
Wait(WaitTime); 
while Isgump do CloseSimpleGump(0); 
if Dead or not Connected then Exit; 
UseObject(RuneBook); 
CheckLag(LagWait); 
Counter := WaitCycles; 
while Counter > 0 do begin 
if IsGump then Break; 
Wait(WaitTime); 
CheckLag(LagWait); 
Inc(Counter); 
end; 
if IsGump then begin 
if NumGumpButton(0, RuneBookShift + Rune) then begin 
CheckLag(LagWait); 
Wait(RecalTime); 
CheckLag(LagWait); 
Result := (X <> GetX(Self)) or (Y <> GetY(Self)); 
end else Result := False; 
end else Result := False; 
end;
Вариант"с нуля" от Sniffer'а:

PHP:
function RecallRune(RuneBook: Cardinal; Rune: Byte):Boolean; //New 
var 
Counter: Byte; 
X, Y: Word; 
begin 
Result := False; 
X := GetX(Self); 
Y := GetY(Self); 
while Isgump do CloseSimpleGump(0); 
if Dead or not Connected then Exit; 
UseObject(RuneBook); 
CheckLag; 
Counter := 5; 
while Counter > 0 do begin 
if IsGump then Break; 
CheckLag; 
Counter := Counter - 1; 
end; 
if IsGump then begin 
if NumGumpButton(0, 6 * Rune + RuneBookShift) then begin 
CheckLag; 
Wait(3000); 
CheckLag; 
Result := (X <> GetX(Self)) or (Y <> GetY(Self)); 
end else Result := False; 
end else Result := False; 
end;
Без комментариев. Мой макрос на скупку - 24 строки. А этот - просто монстр.
 

SnifeR iz da boo

Wizard of Words
Ну забыл я эту функцию в инклюды всунуть ну и что? Что меняет то? Основа скрипта то мной написана. Опять ты всё каверкаешь так, как тебе удобно. Постом выше написано так:
выложу то, что писал с нуля или переделывал под особенности нашего сервера сам.
Так что давай прежде, чем ты будешь тут пытаться меня в чем-то уличить - ты хотя бы глаза откроешь.

Я рад, что твой макрос то 24 строки, то 27. Вперед, выкладывай в паблик. А то языком все горазды. Толку от твоих слов, если это никому, кроме тебя, пользы не приносит?

Короче, кому будут нужны рабочие скрипты под ваши задачи и кто будет готов расплатиться игровой валютой - пожалуйста в асю, мою тему не составит труда найти в торговом разделе. Также проконсультирую по вопросам использования инжи и стелса на нашем шарде и помогу, чем смогу любому, кто напишет мне в асю. На след. неделе выложу пару пвп-скриптов для инжи, чтобы опробовать могли те, кто бегает.
 

Grek (Adonis)

Wizard of Words
парни извините что вмешиваюсь но много скриптов есть в инете похожих подобныи и тд...

в вот авто лут.. авто ресс тимейта... и многое интересное... трудно найти и подогнать.. вот этим мериться надо и скидывать.. а не то что можно найти в инете...

я не скриптер и бегаю на разоре... ПРОТИВ ИНЖЫ ВООБЩЕ... кто бы не говорил что разор не уступает ей...это лишь слова... не видел я не разоре авто-реса. и авто-лута...

так что я бы ее вообще прикрыл так как данноя прога имеет большое приемущество от стандарта разора!!!
 

SnifeR iz da boo

Wizard of Words
в вот авто лут.. авто ресс тимейта... и многое интересное... трудно найти и подогнать.. вот этим мериться надо и скидывать.. а не то что можно найти в инете...
На след. неделе выложу пару пвп-скриптов для инжи, чтобы опробовать могли те, кто бегает.
Тынц. Просто я их у нас пока еще не тестил.
 

Grek (Adonis)

Wizard of Words
АВТОЛУТ ОН ВЫЛОЖИТ ИЛИ АВТОРЕСС???

СОМНИВАЮСЬ Я.....

А ОСТАЛЬНОЕ НАЙТИ МОЖНО ТАКИМ СПОСОБОМ....

ПИШЕМ ВСТРОКЕ ГУГЛА ИЛИ ИНОГО ПОДОБНОГО РЕСУРСА..."ПВП СКРИПТЫ ДЛЯ ИНЖЫ" И ВОТ ОНИ ТЕБЕ ... ПОТОМ МЕНЯЕШЬ ФРАЗУ КАК ТЕБЕ НАДО И ОПА ЕЩЕ ЧТО ТО НАШЕЛ И ТАК ТЫ ВЫЙДЕШЬ НА ОЧЕНЬ ПОХОЖЕЕ...
 

SnifeR iz da boo

Wizard of Words
АВТОЛУТ ОН ВЫЛОЖИТ ИЛИ АВТОРЕСС???

СОМНИВАЮСЬ Я.....

А ОСТАЛЬНОЕ НАЙТИ МОЖНО ТАКИМ СПОСОБОМ....

ПИШЕМ ВСТРОКЕ ГУГЛА ИЛИ ИНОГО ПОДОБНОГО РЕСУРСА..."ПВП СКРИПТЫ ДЛЯ ИНЖЫ" И ВОТ ОНИ ТЕБЕ ... ПОТОМ МЕНЯЕШЬ ФРАЗУ КАК ТЕБЕ НАДО И ОПА ЕЩЕ ЧТО ТО НАШЕЛ И ТАК ТЫ ВЫЙДЕШЬ НА ОЧЕНЬ ПОХОЖЕЕ...

Я себя процитировал. Да, могу выложить и авто-таргет, и авто-рес, и авто-резалку. Авто-лута готового нет, т.к. он везде запрещен и очень быстро палится, поэтому я его не писал, но и это не проблема. Выложу на первое время 1-2 скрипта на выбор.
 

Grek (Adonis)

Wizard of Words
Я себя процитировал. Да, могу выложить и авто-таргет, и авто-рес, и авто-резалку. Авто-лута готового нет, т.к. он везде запрещен и очень быстро палится, поэтому я его не писал, но и это не проблема. Выложу на первое время 1-2 скрипта на выбор.
мне не надо.. я разор. и лутаю быстрее многих скриптов...
 

SnifeR iz da boo

Wizard of Words
На нашем сервере есть небольшая защита от фаст-лута: задержка на перемещение предметов. Но как бы все равно авто-лут получается быстрей, т.к. можно лутать самое нужное по типам предметов.
 

macT

Hero Player
Автолутер+сортировщик. Актуально для ПВМ. Под Injection.
Кто бы что не говорил, а автолутер даже с задержками получается быстрее, чем руками.
Как работает:
Выгребает итемы из списка из последнего открытого контейнера (lastcontainer) в контейнер lootpack (в моём случае мешочек, чтоб в паке не было срача) . Это делает функция LootMeNow() :)

Функция LootToChest() выгребает всё из контейнера lootpack в Destcontainer ( в моём случае сундук в доме).

Функция LootForSale () сортирует потроха, лежащие в DestContainer, когда накопилось много, а продать надо и ковыряться лень. :) Всё, что на продажу идёт в lootpack, a то, что продавать не надо сортируется по сумкам, например в банке, либо оставляется лежать в DestContainer.

PHP:
sub LootMeNow()
    var forsale = 0
    var from = 'lastcontainer'
    var where = 'lootpack'
    lootSorter(from, where, forsale)
end sub

sub LootForSale()
    var forsale = 1
    var from = 'DestContainer'
    var where = ''
    lootSorter(from,where,forsale)
end sub

sub LootToChest()
    var forsale = 0
    var from = 'lootpack'
    var where = 'DestContainer'
    lootSorter(from,where,forsale)
end sub


sub lootSorter(from,where,forsale)
var i,j
    Dim cont[4]
    cont[0] = 'lootpack'
    cont[1] = 'DestContainer'
    cont[2] = '0x400390C4' #банк для камушков
    cont[3] = '0x400FF7F0' #реги банк



    Dim loot[200]
    
    loot[0] = '0x1F36 0' #cunning
    loot[1] = '0x1F44 1' #wall of stone
    loot[2] = '0x1F3C 0' #strenght
    loot[3] = '0x1F2D 0' #reactive
    loot[4] = '0x1F46 0' #arch
    loot[5] = '0x1F3F 0' #lock
    loot[6] = '0x1F3D 0' #bless
    loot[7] = '0x1F3B 0' #protect
    loot[8] = '0x1F38 0' #harm
    loot[9] = '0x1F48 0' #firefield
    loot[10] = '0x1F40 0' #poison
    loot[11] = '0x1F31 0' #heal
    loot[12] = '0x1F35 0' #agility
    loot[13] = '0x1F2F 0' #create food
    loot[14] = '0x1F43 0' #unlock
    loot[15] = '0x1F2D 0' #reactive armor
    loot[16] = '0x1F42 0' #teleport
    loot[17] = '0x1F30 0' #feeblimind
    loot[18] = '0x1F2E 0' #clumsy
    loot[19] = '0x1F4D 1' #blade spirits
    loot[20] = '0x1F4E 0' #dispel field
    loot[21] = '0x1F4F 0' #incognito
    loot[22] = '0x1F50 1' #magic reflection
    loot[23] = '0x1F51 0' #mind blast
    loot[24] = '0x1F52 1' #paralyze
    loot[25] = '0x1F53 0' #poison field
    loot[26] = '0x1F54 0' #summon creature  
    loot[27] = '0x1F55 0' #dispel
    loot[28] = '0x1F4A 1' #light
    loot[29] = '0x1F3A 0' #untrap
    loot[30] = '0x1F45 0' #arch cure
    loot[31] = '0x1F32 0' #magic arrow
    loot[32] = '0x1F33 0' #night sight
    loot[33] = '0x1F4C 1' #recall
    loot[34] = '0x1F37 0' #cure
    loot[35] = '0x1F3E 0' #fireball
    loot[36] = '0x1F4B 0' #mana drain
    loot[37] = '0x1F34 0' #weaken
    loot[38] = '0x1F49 1' #GH
    loot[39] = '0x1F47 0' #curse
    loot[40] = '0x1F41 0' #telekinesis
    loot[41] = '0x1F39 0' #magic trap
    loot[42] = '0x1079 1' #кожа обычная
    loot[43] = '0x0F8D 3' #ss
    loot[44] = '0x1BD1 1' #перья
    loot[45] = '0x0F16 2' #аметист
    loot[46] = '0x0F25 2' #пис оф амбер
    loot[47] = '0x0F15 2' #цитрин
    loot[48] = '0x0F26 2' #даймонд
    loot[49] = '0x0F21 2' #стар сапфир
    loot[50] = '0x0F19 2' #sapphire
    loot[51] = '0x0F10 2' #emerland
    loot[52] = '0x0F13 2' #ruby
    loot[53] = '0x0F2D 2' #tourmaline
    loot[54] = '0x0F7A 3' #bp
    loot[55] = '0x0F7B 3' #bm
    loot[56] = '0x0F84 3' #ga
    loot[57] = '0x0F85 3' #gs
    loot[58] = '0x0F86 3' #mr
    loot[59] = '0x0F88 3' #ns
    loot[60] = '0x0F8C 3' #sa
    loot[61] = '0x0EED 1' #gp
    loot[62] = '0x14EC 1' #map
    loot[63] = '0x0F8E 1' #nox crystall
    loot[64] = '0x1F5C 0' #reveal
    loot[65] = '0x1F56 0' #energy bolt
    loot[66] = '0x1F69 0' #summon daemon
    loot[67] = '0x1F5E 0' #energy field
    loot[68] = '0x1F58 0' #invisibility
    loot[69] = '0x1F5C 0' #reveal
    loot[70] = '0x0F8F 1' #grave dust
    loot[71] = '0x1F5F 1' #FS
    loot[72] = '0x1F5B 0' #paralyze sield
    loot[73] = '0x1F59 0' #mark
    loot[74] = '0x1F6B 0' #fire elem
    loot[75] = '0x108A 1' #ring
    loot[76] = '0x3193 1' #tourquose
    loot[77] = '0x3192 1' #dark sapphire
    loot[78] = '0x1F5D 0' #chain light
    loot[79] = '0x1F62 0' #mass dispel
    loot[80] = '0x1F64 0' #polymorph
    loot[81] = '0x0F78 1' #batwings
    loot[82] = '0x1F60 0' #gatetravel
    loot[83] = '0x1F66 0' #vortex
    loot[84] = '0x1F63 0' #meteor
    loot[85] = '0x1F67 0' #ress
    loot[86] = '0x1F6A 0' #earth elem
    loot[87] = '0x1F61 0' #mana vampire
    loot[88] = '0x1F5A 0' #mass curse
    loot[89] = '0x1F65 0' #earthquake
    loot[90] = '0x1F6C 0' #water elem
    loot[91] = '0x1F68 0' #air elem
    loot[92] = '0x1F57 0' #explosion
    loot[93] = '0x0F7E 1' #bones
    for i = 0 to 93
        if forsale == 1 then
            where = cont[val(right(loot[i],1))]    
        endIf
        uo.FindType(Left(loot[i],6),'-1',from)
            if not where == from then
                while uo.FindCount('finditem') > 0 
                    uo.MoveItem('finditem','-1', where)
                    wait(800)
                    uo.FindType(Left(loot[i],6),'-1',from)
                wend
            endIf
    next
end sub
 

macT

Hero Player
Локпикинг под инжу. Для запуска нужно:
Добавить тип lockpicks - отмычки. (в игре ,addtype lockpicks)
Добавить объект lpchest - сундук, который будет ломать (в игре ,addobject lpchest)
Добавить объект keyforchest -ключ, которым ломаемый сундук будем открывать. (,addobject keyforchest)
PHP:
uo.FindType('lockpicks','-1','0x402A376B')
Цифробуквенный ID это ID сундука откуда добирать отмычки.


PHP:
sub lockpicking()
 var startlp
     while uo.Count('lockpicks') > 0
     startlp = uo.Count('lockpicks')
    uo.waitTargetObject('lpchest')
    uo.UseType('lockpicks')
    wait(4000)
        if uo.Count('lockpicks') < startlp then
            wait(100)
        else
            uo.waitTargetObject('lpchest')
            uo.UseObject('keyforchest')
            wait(1000)
        endIf
    if uo.Count('lockpicks') < 10 then
        uo.FindType('lockpicks','-1','0x402A376B')
        uo.MoveItem('finditem','100','backpack')
        wait(800)
    end if
    wend
end sub
 

Rene

Banned
Те кто понимают скрипты инжи, им достаточно кинуть скрипт, те кто не понимают - им нужно описание на лист А4, что, где, куда.
 

macT

Hero Player
Ну, а тем, кто хоть немного знаком с програмированием достаточно глянуть в мануал.

Поэтому вот вам мойскрипт для резиста + магери + медитация


PHP:
sub resist()
    var i
    dim regs[2]
        regs[0] = '0x0F8D' #ss
        regs[1] = '0x0F8C' #sa

while not UO.Dead()
if uo.Mana > 40 then
        for i = 0 to 1 
        if uo.Count(regs[i]) < 5 then
            uo.FindType(regs[i],'-1','DestContainer')
                if uo.FindCount('finditem') > 0 then
                    uo.MoveItem('finditem','500') #количество настроить по вкусу
                    wait(700)
                endIf
        next
    endIf
    uo.waitTargetSelf()
    uo.Cast("Flame Strike") #что кастим
    wait(4500)
        while uo.Life < 90
        repeat
         if uo.Count('bandage') < 10 then
             uo.FindType('bandage','-1', 'DestContainer')
                 if uo.FindCount('finditem') > 0 then
                     uo.MoveItem('finditem','500')
                     wait(700)
                 else
                     uo.Print("Bandag netu vihodim")
                     uo.Exec('terminate resist')
                 endIf
         endIf
            uo.BandageSelf()
            wait(3500)
        until uo.Life == 150
        wend
else
    uo.UseSkill("Meditation")
     repeat    
         wait(100)
     until uo.Mana > 99
uo.UseObject('shield') #сбиваем медитацию
endIf
wend
end sub
 

Rene

Banned
Интересно, а почему ты не используешь переменные чара, как например UO.STR, еще не совсем понял, зачем ждать медитацию до 99, если нужно манны на фсы, то достаточно восстановить до 40, ну или до 80, для двух кастов. Конечно хорошо, когда макрос много сценариев охватывает, но людям, которым нужно прокачать скил достаточно основных действий, без лишних настроек. Скрипты должны быть универсальными, а если и требуется ввести переменную, то желательно объявлять её в начале скрипта.

Еще один момент, вот такими циклами, как у тебя, инжа загрузает процессор,а это тормозит УО. И если включены сообщения инжекта, то при bandageself в углу пишется, что бинтов нет, не нужно проверять этот итем и искать его у персонажа, инжа это делает сама.

К примеру вот твой скрипт, но не в виде крокодила: простой, понятный, доступный, работает.

PHP:
sub resist()
  
    uo.set('quiet','0') #Включаем отображение сообщений инжекта

     var count = 1 #Системная переменная
     var ss = '0x0F8D' #Тип итема реагента SS
     var sa = '0x0F8C' #Тип итема реагента SA
     
  while (uo.skillval('Magic Resistance',1)<1000) and (count<>0) 
  #Качаем пока резист не гм и есть реагенты
  
   while UO.Life < UO.Str #Автохил
     uo.bandageself()
     sleep(3500)
   wend

   while uo.Mana < 40 #Медитация
    uo.useskill('Meditation')
    sleep(1000) 
   wend 

   uo.findtype(ss)  #Проверяем, есть ли в рюкзаке персонажа реагент ss
   if uo.findcount() > 0 then
     count = 0
   end if
  
   uo.findtype(sa) #Проверяем, есть ли в рюкзаке персонажа реагент sa 
   if uo.findcount() > 0 then
    count = 0
   end if
   
   uo.waittargetself() #Ловушка прицела не себя
   uo.cast('Flame Strike') #Каст магии FS
   sleep(3000)   

  wend 
  
  if count == 0 then
   uo.msg('Закончились реагенты') #Скажем всем, что закончились реагенты
  end if
 
end sub
 
Последнее редактирование:

macT

Hero Player
Ну тут на вкус и цвет все фломастеры разные. Тут как бы скрипт был заточен чисто на мои нужды он работал и не претендует на звание скрипт года. Честно сказать не заметил особой потери производительности при использовании скрипта. Что касается переменных, то тут опять же про фломастеры. С медиацией в варианте с фсами можно и не ждать до 99, всё равно часть маны остаётся.

Если сможешь внести разъяснения почему так, то думаю это будет полезно и мне и остальным, кто пытается освоить инжект.
 
Верх