sexta-feira, 28 de agosto de 2009

Map Editor para versões 8.5 e inferiores

Bem, não é em todo lugar que se encontra um map editor 8.5 então decidi postar um aqui. É o Remere's Map Editor, um dos melhores editores que existem. Ele será muito útil na criação do mapa de seu OT Server pois possui inúmeras funções. Veja uma demonstração:


(Clique na imagem para ver em tamanho real)

Remere's Map Editor
Créditos: Remere's Map Editor
Visite o site oficial (http://remeresmapeditor.com/)


quinta-feira, 27 de agosto de 2009

Scripts para TibiaBot NG

Irei postar aqui alguns scripts que possuo e que são bem úteis para vocês que usam NG.


Advanced Healer (Cura mana e Life baseado na %)

{ ------------ Advanced heal script by Axell ------------- }
const Strong = 236 // Strong Health Potion ID (Do not change)
const Great = 239 // Great Health Potion ID (Do not change)
const Ultimate = 7643 // Ultimate Health Potion ID (Do not change)
const Rune = 3160 // UH Rune ID (Do not change)
const ManaPotion = 268 // Mana Potion ID (Do not change)
const StrongManaPotion = 237 // Strong Mana Potion ID (Do not change)
const GreatManaPotion = 238 // Great Mana Potion ID (Do not change)
const GreatSpiritPotion = 7642 // Great Spirit Potion ID (Do not change)
{-----------------------------------------------------------}
var
PotionToUse, ManaPotionToUse, LightHealing, StrongHealing:string;
LightMana, StrongMana, defLightLife, defStrongLife, defPotionLife:integer;
ParalyzeStrong, ParalyzePotion, defLightLifeLow, defStrongLifeLow, defPotionLifeLow:integer;
MinMana, Exaustime, ExaustimePotion, ExaustimeMana, MaxMonsters:integer;
MPotion, Potion:integer;
timeStamp, timePotion, timeMana:integer;
LightLife, StrongLife, PotionLife:integer;
Vocation:string;

function TimeNow:integer;
var
hours, minutes, seconds, miliseconds:integer;
begin
DecodeTime(Now, hours, minutes, seconds, miliseconds);
Result := hours * 60 * 60 * 1000 + minutes * 60 * 1000 + seconds * 1000 + miliseconds;
end;

function countMonsters:integer;
var
i, c:integer;
begin
c := 0;
for i := 0 to (Creatures.Count - 1) do
begin
if Creatures.Creature[i].NPC and (Creatures.Creature[i].Z = Self.Z) then
c := c + 1;
end;
Result := c;
end;

begin
LightLife := defLightLife;
StrongLife := defStrongLife;
PotionLife := defPotionLife;

Vocation := 'auto'; // Your character's vocation
{ 'auto' for automatically detection }

UpdateWorld;
Self.PrivateMessage(Self.Name, 'Selecting vocation based on mana ammount...');

if Vocation = 'auto' then
begin
VocationDivider := (Self.MaximumMana-35) / (Self.Level-8);
Vocation := 'Unknown';
if (VocationDivider = 5) then Vocation := 'knight';
else if (VocationDivider = 15) then Vocation := 'paladin';
else if (VocationDivider = 30) then Vocation := 'mage';
end;
{ Thanks for Toor for this part of code }
Sleep(1000);

Self.PrivateMessage(Self.Name, 'You are a ' + Vocation + '.');

case Vocation of
'knight':begin
PotionToUse := 'Great' { Potion/Rune to use for healing } ;
ManaPotionToUse := 'Normal' { Potion to use for mana filling } ;
LightHealing := 'exura' { Light healing spell } ;
StrongHealing := 'exana mort' { Strong healing spell } ;
LightMana := 20 { Mana needed for light healing } ;
StrongMana := 65 { Mana needed for strong healing } ;
defLightLife := 90 { Light healing life percent } / 100 ;
defStrongLife := 75 { Strong healing life percent } / 100 ;
defPotionLife := 50 { Potion healing life percent } / 100 ;
defLightLifeLow := 90 { Low Light healing life percent } / 100 ;
defStrongLifeLow := 50 { Low Strong healing life percent } / 100 ;
defPotionLifeLow := 25 { Low Potion healing life percent } / 100 ;
ParalyzeStrong := 80 { Paralyze healing life percent to use strong spell instead } / 100 ;
ParalyzePotion := 50 { Paralyze healing life percent to use potion/rune instead } / 100 ;
MinMana := 50 { Minimum mana percent to use mana potion } / 100 ;
Exaustime := 1000 { Exaustion time for healing spells } ;
ExaustimePotion := 350 { Exaustion time for healing potions } ;
ExaustimeMana := 700 { Exaustion time for mana potions } ;
MaxMonsters := 2 { Creatures needed to switch to hard mode } ;
end;
'paladin':begin
PotionToUse := 'Spirit' { Potion/Rune to use for healing } ;
ManaPotionToUse := 'Strong' { Potion to use for mana filling } ;
LightHealing := 'Exura Gran' { Light healing spell } ;
StrongHealing := 'Exura Vita' { Strong healing spell } ;
LightMana := 70 { Mana needed for light healing } ;
StrongMana := 140 { Mana needed for strong healing } ;
defLightLife := 90 { Light healing life percent } / 100 ;
defStrongLife := 50 { Strong healing life percent } / 100 ;
defPotionLife := 1 { Potion healing life percent } / 100 ;
defLightLifeLow := 90 { Low Light healing life percent } / 100 ;
defStrongLifeLow := 50 { Low Strong healing life percent } / 100 ;
defPotionLifeLow := 1 { Low Potion healing life percent } / 100 ;
ParalyzeStrong := 65 { Paralyze healing life percent to use strong spell instead } / 100 ;
ParalyzePotion := 50 { Paralyze healing life percent to use potion/rune instead } / 100 ;
MinMana := 80 { Minimum mana percent to use mana potion } / 100 ;
Exaustime := 1000 { Exaustion time for healing spells } ;
ExaustimePotion := 350 { Exaustion time for healing potions } ;
ExaustimeMana := 700 { Exaustion time for mana potions } ;
MaxMonsters := 2 { Creatures needed to switch to hard mode } ;
end;
'mage':begin
PotionToUse := 'Rune' { Potion/Rune to use for healing } ;
ManaPotionToUse := 'Great' { Potion to use for mana filling } ;
LightHealing := 'exura' { Light healing spell } ;
StrongHealing := 'exura gran' { Strong healing spell } ;
LightMana := 20 { Mana needed for light healing } ;
StrongMana := 70 { Mana needed for strong healing } ;
defLightLife := 82 { Light healing life percent } / 100 ;
defStrongLife := 65 { Strong healing life percent } / 100 ;
defPotionLife := 40 { Potion healing life percent } / 100 ;
defLightLifeLow := 82 { Low Light healing life percent } / 100 ;
defStrongLifeLow := 60 { Low Strong healing life percent } / 100 ;
defPotionLifeLow := 35 { Low Potion healing life percent } / 100 ;
ParalyzeStrong := 70 { Paralyze healing life percent to use strong spell instead } / 100 ;
ParalyzePotion := 50 { Paralyze healing life percent to use potion/rune instead } / 100 ;
MinMana := 70 { Minimum mana percent to use mana potion } / 100 ;
Exaustime := 1000 { Exaustion time for healing spells } ;
ExaustimePotion := 350 { Exaustion time for healing potions } ;
ExaustimeMana := 700 { Exaustion time for mana potions } ;
MaxMonsters := 2 { Creatures needed to switch to hard mode } ;
end;
end;

timeStamp := TimeNow;
case PotionToUse of
'Strong':Potion := Strong;
'Great':Potion := Great;
'Ultimate':Potion := Ultimate;
'Spirit':Potion := GreatSpiritPotion;
'Rune':Potion := Rune;
else
Potion := Ultimate;
end;

case ManaPotionToUse of
'Normal':MPotion := ManaPotion;
'Strong':MPotion := StrongManaPotion;
'Great':MPotion := GreatManaPotion;
'Spirit':MPotion := GreatSpiritPotion;
else
MPotion := ManaPotion;
end;

while not Terminated do
begin
UpdateWorld;

if countMonsters <> TimeNow) then
begin
timeStamp := TimeNow;
timePotion := TimeNow;
timeMana := TimeNow;
end;

{ Paralyze Checks }
if (Self.Slowed)
and ((Self.Health) <=(Self.MaximumHealth * ParalyzePotion)) and ((timePotion + ExaustimePotion) < (TimeNow)) then begin timePotion := TimeNow; Self.Containers.UseItemWithSelf(Potion) // Healed paralyze with potion end else if (Self.Slowed) and ((Self.Health) <=(Self.MaximumHealth * ParalyzeStrong)) and ((Self.Health) >(Self.MaximumHealth * ParalyzePotion))
and ((timeStamp + Exaustime) < (TimeNow)) then begin timeStamp := TimeNow; Self.Say(StrongHealing) // Healed paralyze with strong heal end else if (Self.Slowed) and ((Self.Health) >(Self.MaximumHealth * ParalyzeStrong))
and ((timeStamp + Exaustime) < (TimeNow)) then begin timeStamp := TimeNow; Self.Say(LightHealing); // Healed paralyze with light heal end; UpdateWorld; { Health Checks } if (Self.Health) <(Self.MaximumHealth * PotionLife) and ((timePotion + ExaustimePotion) < (TimeNow)) then begin timePotion := TimeNow; Self.Containers.UseItemWithSelf(Potion) // Self healed with potion end; if ((Self.Health) <(Self.MaximumHealth * StrongLife)) and ((Self.Mana) > (StrongMana))
and ((timeStamp + Exaustime) < (TimeNow)) then begin timeStamp := TimeNow; Self.Say(StrongHealing) // Self healed with strong spell end else if ((Self.Health) <(Self.MaximumHealth * LightLife)) and ((Self.Health) >(Self.MaximumHealth * StrongLife))
and ((Self.Mana) > (LightMana))
and ((timeStamp + Exaustime) < (TimeNow)) then begin timeStamp := TimeNow; Self.Say(LightHealing); // Self healed with light spell end; UpdateWorld; { Mana Check } if (Self.Mana) < (Self.MaximumMana * MinMana) and ((timeMana + ExaustimeMana) < (TimeNow)) then begin timeMana := TimeNow; Self.Containers.UseItemWithSelf(MPotion) end; Sleep(120); end; end;




Alerta com Poucas Potions ou UH

Const
UH_ID = 3160 // Coloque o id Da Potion Ou da UH
MF_ID = 2874 // Coloque o Id da Mana Potion ou Demais potions
UH_Alert = 5 // ALerta Qnd Tiver com Menos que 5 Uh Ou Potion
MF_Alert = 10 // Alerta Qnd tiver com Menos que 10 potions
While not terminated do
begin
UpdateWorld;
A:=0;
B:=0;
for i:= 0 to Self.Containers.Count -1 do
begin
for G:= 0 to Self.Containers.Container.Count -1 do
begin
if Self.Containers.Container.Item[G].ID = UH_ID
then A:= A +1;
if Self.Containers.Container.Item[G].ID = MF_ID then
if Self.Containers.Container.Item[G].amount = 10
then B:= B + 1;
Sleep(100);
end;
Sleep(100);
end;
if (A <= UH_Alert) or ( B <= MF_Alert ) then PlaySound('C:\Windows\Media\Notify.wav'); sleep(100); end;


Ataca X monstro primeiro

Const
Name=['Orc Shaman']; //aki vc coloka o bixo q vc ker q ataque primeiro
SwitchAt=10;// the % of the current attacked monster
function GetPlace(st:string):integer;
var
x:integer;
begin
Result:=1000;
for x:=Low(Name) To High(Name) do
begin
if Name[x]=st then
Result:=x;
end;
end;
function GetCreatureByID(ID: integer): TCreature;
var
x: integer;
begin
Result := nil;
for x := 0 to Creatures.Count - 1 do
begin
if x >= Creatures.Count then Break;
if Creatures.Creature[x].ID = ID then
begin
Result := Creatures.Creature[x];
Exit;
end;
end;
end;
function IsCreatureBesideYou(c: TCreature): boolean;
begin
UpdateWorld;
Result := False;
if (abs(c.X-self.X) <= 6) and (abs(c.Y-self.Y) <= 6) then begin if c.Z = self.Z then begin Result := True; end; end; end; var x:integer; b:boolean; begin while not terminated do begin b:=false; updateworld; If (Self.Attacking<>0) then
begin
Creature:=GetCreatureByID(Self.Attacking);
if Creature<>nil then
if SwitchAt= Creatures.Count then Break;
if Creatures.Creature[x].NPC then
if Creatures.Creature[x].z=self.z then
if Creatures.Creature[x].Name<>self.name then
if Creatures.Creature[x].Attacking = false then
if IsCreatureBesideYou(Creatures.Creature[x]) then
if GetPlace(Creature.Name)>GetPlace(Creatures.Creature[x].Name) then
begin
sleep(100);
updateworld;
Creatures.Creature[x].attacking:=true;
B:=true;
end;
end;
end;
end;
Sleep(100);
end;
end;



Healer Stages (Caso esteja com pouca vida, ele utiliza uma magia mais potente, caso não tenha perdido tanta life ele usa uma magia mais leve)

Const
// Coloque aqui o Regular Healer//
MinHP1 = 3900
MinMana1 = 70
Spell1 = 'Exura Gran'
// Coloque aqui o Intense healer //
MinHP2 = 2500
MinMana = 140
Spell2 = 'Exura Vita'

begin
while not Terminated do
begin
if MinHP1 <= MinHP2 then begin Self.DisplayText('MinHP1 MUST be higher then MinHP2!'); Break; end; UpdateWorld; if (Self.Health <>= MinHP2) then
begin
if Self.Mana > MinMana
then Self.Say(Spell1)
else Self.say(Spell2);
sleep(1000); // Delay after saying exura here (or uh if not enough mana)
end;
UpdateWorld;
if Self.Health < MinHP2 then begin Self.say(Spell2); sleep(1000); // delay after intense healing here end; UpdateWorld; Sleep(100); // delay after checkign your HP end; end;


Auto Utani Gran Hur (dá utani gran hur ou utani hur quando acaba)

Const
Spell = 'Utani Gran Hur'
MinMana = 100

while not terminated do
begin
UpdateWorld;
if not self.hasting then
if self.mana >= MinMana then
Self.Say(Spell);
sleep(1000);
end;



Ataca o bixo com o itenrvalo de 2 segundos

Const
MonsterList = ['Centipede', 'Dworc Venomsniper', 'Dworc Fleshhunter', 'Dworc Voodoomaster'] //Coloque o nome da Criatura aqui
Delay = 2000 //this is the delay time after attack again

function GetCreatureByName: TCreature;
var
x: integer;
begin
Result := nil;
for x := 0 to Creatures.Count - 1 do
begin
if x >= Creatures.Count then Break;
if Creatures.Creature[x].Z = Self.Z then
for i := low(MonsterList) to high(monsterlist) do
if Creatures.Creature[x].Name = MonsterList then
begin
Result := Creatures.Creature[x];
Exit;
end;
end;
end;

While not terminated do
begin
UpdateWorld;
Sleep(delay*1000);
C := GetCreatureByName;
if C <> nil then
if not self.attacking then
C.Attacking := true;
sleep(100);
end;



Maker de Enchanted Spear

Const
SpearID = 3277
Spell = 'Exeta con'
MinMana = 390
MinSoul = 5
WeaponID = 3291

function GetItemFromOpenBackpack(ID: integer): TItem;
var
y: integer;
begin
Result := nil;
for x := 0 to Self.Containers.Count - 1 do
begin
if x >= Self.Containers.Count then Break;
for y := 0 to Self.Containers.Container[x].Count - 1 do
begin
if y >= Self.Containers.Container[x].Count then Break;
if Self.Containers.Container[x].Item[y].ID = ID then
begin
Result := Self.Containers.Container[x].Item[y];
Exit;
end;
end;
end;
end;

While not terminated do
begin
UpdateWorld;
if Self.Mana >= MinMana then
if Self.Soul >= MinSoul then
begin
Spear := GetItemFromOpenBackpack(SpearID);
if Spear <> nil then
Spear.MoveToBody(Self.RightHand,1);
Sleep(800);
UpdateWorld;
If Self.RightHand.ID = SpearID then
Self.Say(Spell);
UpdateWorld;
Weapon := GetItemFromOpenBackpack(WeaponID);
if Weapon <> nil then
Weapon.MoveToBody(Self.RightHand,0);
end;
sleep(500);
end;



Troca gold em OT Server

procedure StackItems;
var
T: array of integer;
x, y, z: integer;
Temp: integer;
begin
UpdateWorld;
T := VarArrayCreate([0, 19] , 3);
Temp := -1;
for x := 0 to Self.Containers.Count - 1 do
begin
if x >= Self.Containers.Count then Break;
for z := 0 to Self.Containers.Container[x].Count - 1 do
begin
T[z] := Self.Containers.Container[x].Item[z].ID;
end;
for y := 0 to Self.Containers.Container[x].Count - 1 do
begin
if y >= Self.Containers.Container[x].Count then Break;
if Self.Containers.Container[x].Item[y].Properties.Pilable then
begin
if Self.Containers.Container[x].Item[y].Amount < 100 then begin for z := y + 1 to Self.Containers.Container[x].Count - 1 do begin if T[z] = Self.Containers.Container[x].Item[y].ID then begin if Self.Containers.Container[x].Item[z].Amount < 100 then begin Self.Containers.Container[x].Item[y].movetocontainer(Self.Containers.Container[x], z, 0); end; end; end; end; end; end; end; end; while not Terminated do begin UpdateWorld; StackItems; for x := 0 to Self.Containers.Count - 1 do begin for y := 0 to Self.Containers.Container[x].Count - 1 do begin if Self.Containers.Container[x].Item[y].ID = 3035 then begin if Self.Containers.Container[x].Item[y].Amount = 100 then begin Self.Containers.Container[x].Item[y].Use; Break; end; end; end; end; Sleep(1000); end;



Usa diversos mana potions para curar a mana

const
minMana = 4500; //Mana pra usar MP

while not Terminated do
begin
UpdateWorld;
if (Self.Mana < minMana) then begin Self.Containers.UseItemWithSelf(238) // ID do potion que vai ser usado Sleep(1000); end; Sleep(100); end;

Rune Maker que utiliza a blank rune nas 2 mãos

var
RingID: integer;
AmuletID: integer;
ShieldID: integer;
XbowID: integer;
function GetItemFromOpenBackpack(ID: integer): TItem;
var
y: integer;
begin
Result := nil;
for x := 0 to Self.Containers.Count - 1 do
begin
if x >= Self.Containers.Count then Break;
for y := 0 to Self.Containers.Container[x].Count - 1 do
begin
if y >= Self.Containers.Container[x].Count then Break;
if Self.Containers.Container[x].Item[y].ID = ID then
begin
Result := Self.Containers.Container[x].Item[y];
Exit;
end;
end;
end;
end;
begin
RingID := 3147; //blank ID
AmuletID := 3147; //blank ID
while not Terminated do
begin
UpdateWorld;
if RingID <> 0 then
begin
if Self.Ring.ID = 0 then
begin
Ring := GetItemFromOpenBackpack(RingID);
if Ring <> nil then
begin
Ring.MoveToBody(Self.LeftHand, 0);
end;
end;
end;
UpdateWorld;
if AmuletID <> 0 then
begin
if Self.Amulet.ID = 0 then
begin
Amulet := GetItemFromOpenBackpack(AmuletID);
if Amulet <> nil then
begin
Amulet.MoveToBody(Self.RightHand, 0);
end;
end;
end;
Sleep(100);
end;
end;



Subir anel e amuleto

var
RingID: integer;
AmuletID: integer;
ShieldID: integer;
XbowID: integer;
function GetItemFromOpenBackpack(ID: integer): TItem;
var
y: integer;
begin
Result := nil;
for x := 0 to Self.Containers.Count - 1 do
begin
if x >= Self.Containers.Count then Break;
for y := 0 to Self.Containers.Container[x].Count - 1 do
begin
if y >= Self.Containers.Container[x].Count then Break;
if Self.Containers.Container[x].Item[y].ID = ID then
begin
Result := Self.Containers.Container[x].Item[y];
Exit;
end;
end;
end;
end;
begin
RingID := 3098; //ID Number de algum anel
AmuletID := 0; //ID number de algum amuleto
while not Terminated do
begin
UpdateWorld;
if RingID <> 0 then
begin
if Self.Ring.ID = 0 then
begin
Ring := GetItemFromOpenBackpack(RingID);
if Ring <> nil then
begin
Ring.MoveToBody(Self.Ring, 0);
end;
end;
end;
UpdateWorld;
if AmuletID <> 0 then
begin
if Self.Amulet.ID = 0 then
begin
Amulet := GetItemFromOpenBackpack(AmuletID);
if Amulet <> nil then
begin
Amulet.MoveToBody(Self.Amulet, 0);
end;
end;
end;
Sleep(100);
end;
end;



Treinar com slime (Dê follow na Slime mãe)

function Attacking: boolean;
begin
UpdateWorld;
for x := 0 to Creatures.Count - 1 do
begin
UpdateWorld;
if Creatures.Creature[x].Attacking then
begin
Result := True;
Exit;
end;
end;
Result := False;
Exit;
end;
function GetFollowedCreatureID: integer;
begin
UpdateWorld;
for x := 0 to Creatures.Count - 1 do
begin
UpdateWorld;
if Creatures.Creature[x].Following then
begin
Result := Creatures.Creature[x].ID;
Exit;
end;
end;
end;
var
MotherSlime, X1, Y1: integer;
begin
MotherSlime := GetFollowedCreatureID;
while not Terminated do
begin
UpdateWorld;
if not Attacking then
begin
UpdateWorld;
for x := 0 to Creatures.Count - 1 do
begin
UpdateWorld;
if Creatures.Creature[x].ID <> MotherSlime then
begin
if (Creatures.Creature[x].Name <> Self.Name) and Creatures.Creature[x].NPC then
begin
UpdateWorld;
X1 := Creatures.Creature[x].X;
Y1 := Creatures.Creature[x].Y;
if (X1 - Self.X = 1) or (X1 - Self.X = 0) or (X1 - Self.X = -1) then
begin
UpdateWorld;
if (Y1 - Self.Y = 1) or (Y1 - Self.Y = 0) or (Y1 - Self.Y = -1) then
begin
Creatures.Creature[x].Attacking := true;
Break;
end;
end;
end;
end;
end;
end;
Sleep(1000);
end;
end;

TibiaBot NG para 8.50 (Ensinando a crackear)

Bem, atualmente está sendo difícil crackear os novos boots, sem contar que 99% dos cracks baixados contém algum malware (vírus). Por isso decidi ensinar aqui como crackear o NG.
Não é muito simples, então preste bastante atenção.

Programas que você precisará:

TibiaBot NG 4.5.0 (Versão que será editada)

TibiaBot NG 4.9.0 (Versão atual)

PowerHex (Editor Hexadecimal que iremos usar para crackear nosso Bot)


Então vamos lá.

OBS.: Alguns anti-vírus detectam o PowerHex como vírus, mas não se assuste, pois qualquer editor de programas como ele serão tomados como vírus apesar de não serem.

1º: Certifique-se de não ter no seu computador nenhuma versão do TibiaBot NG instalada,
se tiver desinstale e instale a versão 4.5.0.

2º: Instale o PowerHEX.

3º: Abra o Tibiabot NG e clique em "enter key",
aparecerá uma janela. Copie o código que aparecer na frente de "Hardware fingerprint".
Deixe o Bot aberto;

4º: Abra o PowerHex e clique em “Try PRO version”.

5º: Quando abrir a janela do HexEditor vá em File ->
Open -> Process. Ou aperte Ctrl + 3.

6º: Quando abrir a janela de processos ache os loader.exe,
clique no segundo e vá em “Open Process”.

7º: Procure o Botão “Search and Replace”, ou aperte Ctrl + f.
Abrirá a janela “Search and Replace”.
Na frente do botão Search cole o seu Hardware fingerprint
( aquele número que eu disse pra você copiar do Tibiabot NG ).
Aperte “Search”. No campo de baixo(na frente do botão Replace)
coloque: “82AD-20CE” (sem aspas) e aperte o botão Replace;

8º: Ainda no “Search and Replace”, onde ta “text” mude pra “Hex”.
Coloque “358AC0E665" na frente do Search e aperte “Search”.
Vá na frente do Replace e coloque “B8CE20AD82", clique em “Replace”.
lembrando vocês a não colocarem as aspas!

9º: Coloque “33865C200000" na frente de Search.
Clique em “Search”. Coloque “B8CE20AD8290" na frente de Replace.
Clique em “Replace”;

10º: Volte ao Bot. No campo Name coloque “Slawomir T Kordjalik”.
E no Key coloque “000016-YNCHXM-D99JAW-BFV18Y-PG4XBG-W22TD7-ZQHE6J-97VYZX-42QGQY-KP4TGQ”.
Aperte OK;

11º: Aparecerá a mensagem “Key is valid and has been stored”.

(Tutorial acima retirado de http://avalon.forumcommunity.net/?t=10650259)

Após ter conclúido esses 11 passos, seu TibiaBot NG 4.5.0 estará crackeado, porém não é essa a versão que queremos, então faça o seguinte:

-Insta-le o TibiaBot NG 4.9.0 normalmente; (Cuidado para não substituir a pasta do 4.5.0!)

-Vá até a pasta do TibiaBot NG 4.5.0 e copie o arquivo chamado "loader.exe" e cole dentro da pasta do 4.9.0, feito isso, abra o o loader colado (na pasta do 4.9.0) e pronto! Seu TibiaBot NG 4.9.0 está crackeado e funcionando!

Dicas de segurança:

- Nunca baixe Bots já crackeados de nenhum site pois 100% deles contém vírus, pois quando você crackeia seu Bot, ele irá funcionar apenas em seu computador, não existe essa de baixar Bot crackeado.

Tibia MC (MultiClient) 8.50

Está lançado o novo e mais seguro Tibia MC da Blackd Tools, ele é um arquivo que depois de colado na pasta do Tibia abre quantos clientes você quiser sem modificar o programa! Isso ajuda a evitar bans causados por MCs que modificam o Clint do Tibia.

Veja como é simples instalar e por para funcionar:

Quando baixar, dezipe o executável dentro da pasta do Tibia 8.50:



Feito isso, vá no ícone BlackdMC e abra-o, irá aparecer o seguinte:


Agora basta clicar em "Launch Tibia 8.5 with multiclient, without client modification" e você poderá abrir mais de um Tibia, mas lembre-se de que para abrir outros clientes você deve usar esse mesmo método.

BlackdMC 8.5




Créditos 100% à Blackd Tools (www.blackdtools.com)
Acesse o site oficial para mais Downloads.