Ir para conteúdo
Faça parte da equipe! (2024) ×

Procuro Script


diegodiehl
 Compartilhar

Posts Recomendados

Ta ai agora desfrute ;]

 

 

 

Const

Wanted='Dragon';// whice monster to keep diagnoling

MinCreatureHP= 20 ;

RampsID = [1950, 1952, 1954, 1956, 385, 1947, 434, 414, 604]

 

var

x: Integer;

 

function IsCreatureBesideYou(c: TCreature): boolean;

begin

UpdateWorld;

if (abs(c.X-self.X) <= 1) and (abs(c.Y-self.Y) <= 1) then begin

if c.Z = self.Z then

begin

Result := True;

Exit;

end;

end;

Result := False;

end;

 

function GetTileFromXYZ(X, Y, Z: integer): TTile;

begin

Result := nil;

if abs((Self.X - 7) - X) > 14 then Exit;

if abs((Self.Y - 5) - Y) > 11 then Exit;

if Self.Z <> Z then Exit;

Result := Screen.Tile[abs((Self.X - 7) - X), abs((Self.Y - 5) - Y)];

end;

function IsTileWalkable(Tile: TTile): boolean;

begin

Result := True;

for Z := 0 to Tile.Count - 1 do

begin

if Tile.Item[Z].Properties.Hole then

begin

Result := False;

end

else if Tile.Item[Z].Properties.Stairs then

begin

Result := False;

end

else if not Tile.Item[Z].Properties.Walkable then

begin

OutputDebugString('Not Walk: ' + IntToStr(Tile.Item[Z].ID));

Result := False;

end;

else

begin

for x := low(RampsID) to high(RampsID) do

begin

if Tile.Item[Z].ID = RampsID[x] then Result := False;

end;

end;

end;

end;

 

function GetCreatureBesideYou: TCreature;

begin

UpdateWorld;

Result := Nil;

for x := 0 to Creatures.Count - 1 do

begin

UpdateWorld;

if (Creatures.Creature[x].Name=Wanted) then

if IsCreatureBesideYou(Creatures.Creature[x]) then

begin

if Creatures.Creature[x].ID <> Self.ID then

begin

UpdateWorld;

Result := Creatures.Creature[x];

Exit;

end;

end;

end;

end;

 

var

Moved:boolean;

 

begin

G:=false;

T:=false;

while not terminated do

begin

updateworld;

Creature:=GetCreatureBesideYou;

if Creature<>nil then

if Creatures.Creature[Wanted].Health > MinCreatureHP then

begin

if (Self.X<>Creature.X) and (Self.Y=Creature.Y) then

begin

Tile:=GetTileFromXYZ(Self.x,Self.y-1,self.z);

if Tile<>nil then

if IsTileWalkable(Tile) then

begin

Self.MoveUp;

Moved:=true;

end;

If (Moved=False) then

begin

Tile:=GetTileFromXYZ(Self.x,Self.y+1,self.z);

if Tile<>nil then

if IsTileWalkable(Tile) then

Self.MoveDown;

end;

end;

Moved:=false;

if (Self.X=Creature.X) and (Self.Y<>Creature.Y) then

begin

Tile:=GetTileFromXYZ(Self.x-1,Self.y,self.z);

if Tile<>nil then

if IsTileWalkable(Tile) then

begin

Self.MoveLeft;

Moved:=true;

end;

If (Moved=False) then

begin

Tile:=GetTileFromXYZ(Self.x+1,Self.y,self.z);

if Tile<>nil then

if IsTileWalkable(Tile) then

Self.MoveRight;

end;

end;

end;

sleep(1000);

end;

end;

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.