Usa obisidian knife ou Wooden Stak
Autor: Nando Down | Publicado: 2011-07-07T19:18:00-07:00

const
obsidian_knife = 5908; //id da obsidian ou woden stak
skin_body = [4011, 4047, 4052, 4057]; //id dor corpos

function searchIntArray(id:integer): boolean;
var
i: integer;
begin
result := false;
for i := low(skin_body) to high(skin_body) do begin
if skin_body = id then result := true;
end;
end;

function GetItemFromOpenBackpack(ID: integer): TItem;
var
y: integer;
begin
Result := nil;
for x := 0 to Self.Containers.Count - 1 do
begin
if x &gt;= Self.Containers.Count then Break;
for y := 0 to Self.Containers.Container[x].Count - 1 do
begin
if y &gt;= 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;

function SkinBodies(id:integer): Boolean;
var
x, y: integer;
knife: TItem;
t: integer;
begin
UpdateWorld;
knife := GetItemFromOpenBackpack(obsidian_knife);
if knife = nil then
begin
Self.DisplayText('An Obsidian Knife could not be found, please open a container with it.');
exit;
end;
t := -1;
for x := -1 to 1 do begin
for y := -1 to 1 do begin
// if Screen.Tile[7+x, 5+y].Count &gt;= 3 then begin
// t := -2
// end else t := -1;
if searchIntArray(Screen.Tile[7+x, 5+y].Item[Screen.Tile[7+x, 5+y].Count+t].ID) = true then begin
UpdateWorld;
knife := GetItemFromOpenBackpack(obsidian_knife);
if knife &lt;&gt; nil then begin
knife.UseWithGround(Self.X+X, Self.Y+Y, Self.Z);
Self.DisplayText('Attempted to skin a creature with the ID ' +  IntToStr(Screen.Tile[7+x, 5+y].Item[Screen.Tile[7+x, 5+y].Count-1].ID) +  '.');
Sleep(100);
UpdateWorld;
end;
end;
end;
end;
end;

begin
while not terminated do begin
UpdateWorld;
SkinBodies(skin_body);
Sleep(100);
end;
end;

id de corpos mortos
4011 Minotaur
4025 Dragons
4047 Minotaur mage
4052 Minotaur archer
4057 Minotaur guard
4062 Dragon lord
4112 Behemoth
4212 Bonebeast
4321 Lizard Templar
4324 Lizard Sentinel
4327 Lizard Snakecharmer
4097 Demon
4137 Vampire
const
SpellList = ['exiva', 'utevo lux', 'exani tera', 'exura', 'exana pox',
'exori mort', 'exura gran', 'exani hur', 'exori flam', 'exori vis',
'utevo gran lux', 'exevo con', 'utamo vita', 'utani hur', 'exevo pan',
'exevo con pox', 'exevo con mort', 'exevo flam hur', 'exura sio',
'exeta res', 'exura vita', 'utani gran hur', 'exevo vis lux',
'utevo res ina', 'utevo res', 'exevo con flam', 'exana ina', 'utevo vis lux',
'exevo grav vita', 'exevo gran vis lux', 'exana mas mort', 'utana vid',
'exori', 'exori con', 'exori gran', 'exori hur', 'exori gran',
'exura gran mas res', 'exevo mort hur', 'exeta vis', 'exevo gran mas pox',
'adevo grav pox', 'adana pox', 'adura gran', 'adevo grav flam', 'adori',
'adeta sio', 'adori flam', 'adito grav', 'adevo grav vis', 'adevo res pox',
'adito tera', 'adori gran flam', 'adura vita', 'adevo mas pox', 'adori gran',
'adevo res flam', 'adevo ina', 'adevo mas flam', 'adana mort',
'adevo mas grav pox', 'adevo mas hur', 'adevo grav tera',
'adevo mas grav flam', 'adevo mas vis', 'adevo mas grav vis',
'adori vita vis', 'adana ani'];
procedure Event_Message(Channel: integer; Name, Text: String);
begin
UpdateWorld;
if (Channel = 1) and (Name &lt;&gt; Self.Name) then
begin
for x := Low(SpellList) to High(SpellList) do
begin
if (Pos(AnsiLowerCase(SpellList[x]), AnsiLowerCase(Text)) = 1) then
begin
if AnsiLowerCase(SpellList[x]) = AnsiLowerCase(Text) then
Break;
if (Text[Length(SpellList[x]) + 1] = ' ') and (Text[Length(SpellList[x]) + 2] = '"') then
Break;
end;
if x = High(SpellList) then
PlaySound('C:\WINDOWS\Media\Notify.wav');
end;
end;
end;
while not Terminated do
begin
UpdateWorld;
ProcessEvents;
Sleep(100);
end;