Попытался вставить в новый скрипт для мининга старую функцию анализа респов металла в шахте. В итоге получаю следующее:
Code: Select all
In 0x0x0 we have
In 1352x3792x0 we h
In 0x0x0 we have
In 1353x3792x0 we h
In 0x0x0 we have
In 1354x3792x0 we h
In 0x0x0 we have C䥯渀 ㌀㘀 砀㌀㜀㤀㈀砀 眀攀 栀愀瘀攀
In 0x0x0 we have C䥯渀 ㌀㜀㈀砀㌀㜀㤀㌀砀 眀攀 栀愀瘀攀
In 0x0x0 we have C䥯渀 ㌀㜀 砀㌀㜀㤀㌀砀 眀攀 栀愀瘀攀
In 0x0x0 we have C䥯渀 ㌀㘀 砀㌀㜀㤀㌀砀 眀攀 栀愀瘀攀
In 0x0x0 we have Copper䤠渀 ㌀㔀㠀砀㌀㜀㤀㌀砀 眀攀 栀愀瘀攀 䌀漀瀀瀀
In 0x0x0 we have Copper䤠渀 ㌀㔀㘀砀㌀㜀㤀㐀砀 眀攀 栀愀瘀攀 䌀漀瀀瀀
In 0x0x0 we have Copper䤠渀 ㌀㔀㤀砀㌀㜀㤀㐀砀 眀攀 栀愀瘀攀 䌀漀瀀瀀In 0x0x0 we have Copper
Исходный Скрипт
Code: Select all
Program MiningFindResp;
var
runebooks: array of cardinal;
mineTimer: TDateTime;
iR, STATE: integer;
info_minepoint: string;
const
home_runebook = $7E4904BB;
book_type = $0EFA;
runebook_color = $021E;
spellbook_color = $0000;
dropX = 1998;
dropY = 1165;
ore_type = $19B9;
cooper_type = $1BF2;
pickaxe_type = $0E85;
tools_type = $1EB9;
//
STATE_CORRECT = 100;
STATE_ERROR_ARRAY_RUNEBOOK = 101;
STATE_ERROR_NOT_SPELLBOOK = 102;
STATE_MINEORE = 103;
{$Include 'all.inc'}
{$Include 'recalling.inc'}
{$Include 'charmove.inc'}
{$Include 'checkequipt.inc'}
procedure addNewVarToArray(new_elem: cardinal; iE: integer);
begin
SetArrayLength(runebooks,(1 + iE));
runebooks[iE]:= new_elem;
end;
procedure CreatedArrayRunebook;
var
e: integer;
begin
e:= 0;
While CountEx(book_type, runebook_color, backpack) > 0 do begin
CheckStability;
FindTypeEx(book_type, runebook_color, backpack, false);
if finditem <> home_runebook then begin
addNewVarToArray(finditem, e);
e:= e + 1;
end;
Ignore(finditem);
end;
addToSystemJournal('Total count runebooks = '+IntToStr(GetArrayLength(runebooks)));
IgnoreReset;
end;
procedure WriteToFile(filepath: string; data: string);
var
file: TFileStream;
begin
try
file := TFileStream.Create(filepath,fmOpenReadWrite);
file.seek(0, soFromEnd);
except
file := TFileStream.Create(filepath,fmCreate);
end;
file.WriteBuffer(data,Length(data));
file.Free;
end;
procedure AnalyzeMine(x: integer; y: integer; z: integer);
var
coord_string: string;
present_ores: string;
result_string: string;
ores: array[0..10] of string;
c : integer;
present: boolean;
begin
present := false;
ores[0] := 'Lavarock';
ores[1] := 'Icerock';
ores[2] := 'Shadow';
ores[3] := 'Azu';
ores[4] := 'Doom';
ores[5] := 'BlueSteel';
ores[6] := 'DarkRuby';
ores[7] := 'Cry';
ores[8] := 'Onix';
ores[9] := 'Mifril';
ores[10] := 'Gem';
coord_string := 'In ' + inttostr(x) + 'x' + inttostr(y) + 'x' + inttostr(z) + ' we have ';
for c := 0 to 10 do
begin
if InJournalBetweenTimes(ores[c],mineTimer,Now) > 0 then
begin
present := true;
present_ores := present_ores + ores[c] + ' ';
end;
end;
if present = true then
begin
result_string := coord_string + present_ores + #13#10;
WriteToFile('C:\Ores.txt',result_string);
end;
end;
procedure GrabOre(need_ore: integer);
var g : Byte;
OreCol : Array [1..11] of Word;
Begin
CheckStability;
if ObjAtLayer(RhandLayer) <> 0 then
begin
Disarm;
wait(1000);
end;
OreCol[1] := $093F; //Mifril
OreCol[2] := $0946; //Onyx
OreCol[3] := $0487; //Crystalit
OreCol[4] := $05D7; //Gem
OreCol[5] := $094E; //Blue Steel
OreCol[6] := $0214; //Dark Ruby
OreCol[7] := $0943; //doom
OreCol[8] := $094A; //azurite
OreCol[9] := $0940; //shadow
OreCol[10] := $09F9; //ice
OreCol[11] := $006F; //lava
for g := 1 to need_ore do
begin
CheckStability;
FindTypeEx(ore_type,OreCol[g],ground,false);
if FindCount > 0 then
begin
if (g <= 3) then begin beep; wait(100); beep; wait(100); beep; wait(100); end;
Grab(finditem, GetQuantity(finditem));
wait(500);
CheckStability;
end;
end;
End;
procedure DropOre;
var
OreColor : Word;
Begin
CheckStability;
While Count(ore_type) > 0 do begin
FindType(ore_type,backpack);
if FindCount > 0 then begin
OreColor := GetColor(finditem);
stack(ore_type,OreColor);
CheckStability;
end;
end;
End;
procedure CheckPickAxe;
var
copper, tools : cardinal;
Begin
CheckStability;
if (Count(pickaxe_type) < 5) then begin
FindType(tools_type,ground);
if FindCount > 0 then begin
tools := finditem;
repeat
CheckStability;
FindType(cooper_type,ground);
if FindCount > 0 then begin
Copper := finditem;
wait(500);
UseObject(tools);
WaitTargetObject(copper);
WaitGump('3717');
WaitJournalLine(Now, 'You create|destroy|You put', 30000);
wait(500);
end else begin
AddToSystemJournal('Не найден Copper, не могу сделать кирок!!!');
FullDisconnect;
end;
until Count(pickaxe_type) >= 5;
end else begin
AddToSystemJournal('Не найден tinkers tools, летать дальше безпонту!!!');
FullDisconnect;
end;
end;
End;
procedure GotoOnDropLoc;
Begin
CheckStability;
repeat
CharMove(dropX,dropY,0,true,1);
CheckStability;
until (GetX(self) = dropX) and (GetY(self) = dropY);
End;
procedure HomeFunction;
begin
if CastRecall(home_runebook) then begin
GotoOnDropLoc;
DropOre;
CheckPickAxe;
GrabRecallReagent(15);
Hungry(1, -1);
end;
end;
procedure MineOre;
var
pickaxe : cardinal;
TileX, TileY : integer;
begin
wait(1000);
for TileX:= (GetX(self) - 2) to (GetX(self) + 2) do begin
for TileY:= (GetY(self) - 2) to (GetY(self) + 2) do begin
if TargetPresent then CancelTarget;
if GetType(ObjAtLayer(RHandLayer)) <> pickaxe_type then begin
if not CheckEquipt(pickaxe_type, RhandLayer) then begin
HomeFunction;
exit;
end;
end;
CheckStability;
pickaxe:= ObjAtLayer(RHandLayer);
mineTimer:= now;
UseObject(pickaxe);
WaitTargetXYZ(TileX,TileY,GetZ(self));
WaitJournalLine(Now, 'no more ore|broke|stop mining|cannot see|far away|cannot mine|what is this?!', 30000);
AnalyzeMine(TileX,TileY,GetZ(self));
CheckStability;
GrabOre(3);
end;
end;
GrabOre(11);
end;
function VerificationSetting : integer;
begin
if (GetArrayLength(runebooks) = 0) then begin
result:= STATE_ERROR_ARRAY_RUNEBOOK; exit;
end;
if (FindTypeEx(book_type, spellbook_color, backpack, true) = 0) then begin
result:= STATE_ERROR_NOT_SPELLBOOK; exit;
end;
result:= STATE_CORRECT;
end;
begin
if not Connected then WaitConnection(3000);
CheckStability;
CreatedArrayRunebook;
STATE:= VerificationSetting;
if STATE <> STATE_CORRECT then begin
addToSystemJournal('ERROR: '+IntToStr(STATE));
FullDisconnect;
end;
CheckStability;
SetArStatus(true);
AddToSystemJournal('Script [ Mining ] by Magros');
while true do begin
for iR:= 0 to (GetArrayLength(runebooks)-1) do begin
if CastRecall(runebooks[iR]) then begin
addToSystemJournal('Recall in the '+IntToStr(iR)+' mine.');
info_minepoint:= #13#10 + 'Now Mine №'+IntToStr(iR)+' for RB $'+intToHex(runebooks[iR],8)+ #13#10;
WriteToFile('C:\Ores.txt',info_minepoint);
STATE:= STATE_MINEORE;
end;
if STATE = STATE_MINEORE then MineOre;
if Weight > 300 then begin
HomeFunction;
end;
end;
end;
end.
Конечный скрипт
Code: Select all
Program Megatiles;
type LumberR = record
tile:word;
px,py,pz:integer;
end;
Var
LumberP: array of LumberR;
oreCol,ItemCount,b,iR: Integer;
ctime,mineTimer : TDateTime;
info_minepoint: string;
const
MineX = 1353;
MineY = 3795;
vozleX = 1346;
vozleY = 3799;
lodkaZ = -2;
Trap = $5C169843;
TynkType = $1EB9;
PickType = $0E85;
IngotType = $1BF2;
IngotColor = $0000;
oreType = $19B9;
PickGump = '3717';
WLimit = 250;
eda = $097B;
{$Include 'all.inc'}
Procedure GetLumberTiles(s:String;WPos:Integer);
begin
s := s + ' ';
LumberP[WPos].tile:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
LumberP[WPos].px:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
LumberP[WPos].py:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
LumberP[WPos].pz:=StrToInt(Copy(s,1,Pos(' ',s)-1));
Delete(s,1,Pos(' ',s));
end;
Procedure GetCoord;
var
List:TStringList;
b:integer;
begin
List:=TStringList.Create;
List.LoadFromFile('D:\ultimaonline(goldenworld)\Ultima Online Golden World\Stealth_v1.0 (RC 3)\Scripts\1337.txt');
for b := 0 to List.Count-1 do
begin
setArrayLength(LumberP, getArrayLength(LumberP) + 1);
GetLumberTiles(List.strings[b],b);
end;
ItemCount:=b;
end;
procedure checkpidars;
begin
FindDistance := 20;
while findtype($0F6C, ground) <> 0 do
begin
Wait(1000);
end
end;
procedure checkcoord;
begin
if (GetZ(self) = lodkaZ) then
begin
checkpidars;
repeat
UseObject(Trap);
wait(500);
Raw_Move(2,True);
until (GetZ(self) <> lodkaZ);
wait(500);
checkpidars;
newmovexy(vozleX,vozleY, True, 0, True);
wait(500);
checkpidars;
newmovexy(MineX,MineX, True, 0, True);
end
end;
procedure CheckIngot;
begin
FindType(IngotType, Backpack);
if (FindFullQuantity < 4) then
begin
FindTypeEx(IngotType,IngotColor,Ground,False);
MoveItem(finditem, 4, Backpack, 0,0,0);
wait(500);
end
end;
procedure CheckPick;
begin
if (Count(PickType) < 4) then
begin
repeat
CheckIngot;
If TargetPresent Then CancelTarget;
UseObject(FindType(TynkType, Ground));
WaitJournalLine(Now, 'Select your', 10000);
WaitTargetObject(FindType(IngotType,BackPack));
WaitGump(PickGump);
WaitJournalLine(Now, 'You create|destroy|You put', 30000);
until (Count(PickType) >= 4);
end
end;
procedure DropOre;
begin
repeat
FindType(oreType,Backpack);
if (FindCount > 0) then
begin
oreCol:=GetColor(finditem);
stack(oreType,GetColor(finditem));
wait(500);
end;
until (Count(oreType) = 0);
Addtosystemjournal('=========================================');
FindType(oreType,ground);
Addtosystemjournal('Всего руды на лодке - '+intToStr(findfullquantity));
FindType(TynkType,ground);
Addtosystemjournal('Тулзов на лодке - '+intToStr(findfullquantity));
FindType(eda,ground);
Addtosystemjournal('Еды осталось - '+intToStr(findfullquantity));
Addtosystemjournal('=========================================');
end;
procedure GotoOnBoad;
begin
checkpidars;
newmovexy(vozleX,vozleY, True, 0, True);
wait(500);
repeat
UseObject(Trap);
wait(500);
until (GetZ(self) = lodkaZ);
Hungry(1,ground);
DropOre;
CheckPick;
ClearJournal;
checkcoord;
end;
procedure checktools;
begin
if (Count(PickType) = 0) then
begin
GotoOnBoad;
end
end;
procedure WriteToFile(filepath: string; data: string);
var
file: TFileStream;
begin
try
file := TFileStream.Create(filepath,fmOpenReadWrite);
file.seek(0, soFromEnd);
except
file := TFileStream.Create(filepath,fmCreate);
end;
file.WriteBuffer(data,Length(data));
file.Free;
end;
procedure AnalyzeMine(x: integer; y: integer; z: integer);
var
coord_string: string;
present_ores: string;
result_string: string;
ores: array[0..10] of string;
c : integer;
present: boolean;
begin
present := false;
ores[0] := 'Copper';
ores[1] := 'Cooper';
ores[2] := 'Iron';
ores[3] := 'Steel';
ores[4] := 'Anra';
ores[5] := 'Valurit';
ores[6] := 'Lavalorck';
ores[7] := 'Cry';
ores[8] := 'Onix';
ores[9] := 'Mifril';
ores[10] := 'Gem';
coord_string := 'In ' + inttostr(x) + 'x' + inttostr(y) + 'x' + inttostr(z) + ' we have ';
for c := 0 to 10 do
begin
if InJournalBetweenTimes(ores[c],mineTimer,Now) > 0 then
begin
present := true;
present_ores := present_ores + ores[c] + ' ';
end;
end;
if present = true then
begin
result_string := coord_string + present_ores + #13#10;
WriteToFile('C:\Ores.txt',result_string);
wait(10000);
end;
end;
procedure MineOre;
var
TileX, TileY : integer;
begin
If TargetPresent Then CancelTarget;
if (GetType(ObjAtLayer(RhandLayer)) <> PickType) then
begin
UseObject(FindType(PickType, Backpack));
end;
if (GetType(ObjAtLayer(RhandLayer)) = PickType) then
begin
UseObject(ObjAtLayer(RhandLayer));
end;
WaitJournalLine(Now, 'Select a place', 10000);
WaitTargetSelf;
WaitJournalLine(Now, 'no more ore|broke|stop mining|cannot see|perform another action|far awaycannot mine|what is this?!', 30000);
AnalyzeMine(TileX,TileY,GetZ(Self));
AnalyzeMine(GetX(self),GetY(Self),GetZ(self));
end;
procedure checkweight;
begin
if (Weight > WLimit) then
begin
GoToonboad;
end;
end;
BEGIN
SetArStatus(true);
Getcoord;
ClearJournal;
findvertical:=255;
While (not Dead) do
begin
for b :=0 to ItemCount-1 do
begin
checkcoord;
checktools;
CheckWeight;
checkpidars;
newmovexy(LumberP[b].px,LumberP[b].py,true, 0,true);
wait(1000);
mineore;
end
end
END.
Что подправить для получения правильных данных? (локация и металлы)
upd 6.01.2014
Вот то что скрипт пишет, но немного в большем интервале времени
Содержимое
Code: Select all
In 0x0x0 we haveIn 1352x3792x0 we hIn 0x0x0 we haveIn 1353x3792x0 we hIn 0x0x0 we haveIn 1354x3792x0 we hIn 0x0x0 we have C䥯渀 ㌀㘀 砀㌀㜀㤀㈀砀 眀攀 栀愀瘀攀In 0x0x0 we have C䥯渀 ㌀㜀㈀砀㌀㜀㤀㌀砀 眀攀 栀愀瘀攀In 0x0x0 we have C䥯渀 ㌀㜀 砀㌀㜀㤀㌀砀 眀攀 栀愀瘀攀In 0x0x0 we have C䥯渀 ㌀㘀 砀㌀㜀㤀㌀砀 眀攀 栀愀瘀攀In 0x0x0 we have Copper䤠渀 ㌀㔀㠀砀㌀㜀㤀㌀砀 眀攀 栀愀瘀攀 䌀漀瀀瀀In 0x0x0 we have Copper䤠渀 ㌀㔀㘀砀㌀㜀㤀㐀砀 眀攀 栀愀瘀攀 䌀漀瀀瀀In 0x0x0 we have Copper䤠渀 ㌀㔀㤀砀㌀㜀㤀㐀砀 眀攀 栀愀瘀攀 䌀漀瀀瀀In 0x0x0 we have Copper䤠渀 ㌀㘀㈀砀㌀㜀㤀㐀砀 眀攀 栀愀瘀攀 䌀漀瀀瀀In 0x0x0 we have Copper䤠渀 ㌀㘀㔀砀㌀㜀㤀㐀砀 眀攀 栀愀瘀攀 䌀漀瀀瀀In 0x0x0 we have Copper Iro䥮渀 ㌀㘀㘀砀㌀㜀㤀㐀砀 眀攀 栀愀瘀攀 䌀漀瀀瀀攀爀 䤀In 0x0x0 we have Copper Iro䥮渀 ㌀㘀㜀砀㌀㜀㤀㐀砀 眀攀 栀愀瘀攀 䌀漀瀀瀀攀爀 䤀In 0x0x0 we have Copper Iron SIn 1374x3795x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1367x3795x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1364x3795x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1360x3795x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1358x3795x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1357x3795x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1356x3795x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1355x3795x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1372x3797x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1368x3797x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1365x3797x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1363x3797x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1359x3797x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1370x3799x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1369x3800x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1375x3800x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1380x3800x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1390x3800x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1390x3801x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1381x3801x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1378x3801x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1374x3801x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1371x3801x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1369x3801x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1378x3802x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1379x3802x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1381x3802x0 we have Copper IroIn 0x0x0 we have Copper Iron SIn 1382x3802x0 we have Copper IroIn 0x0x0 we hav䥥渀 ㌀㠀㜀砀㌀㠀 ㌀砀 眀攀 栀In 0x0x0 we hav䥥渀 ㌀㜀㘀砀㌀㠀 ㌀砀 眀攀 栀In 0x0x0 we hav䥥渀 ㌀㜀㈀砀㌀㠀 ㌀砀 眀攀 栀In 0x0x0 we hav䥥渀 ㌀㜀㐀砀㌀㠀 㐀砀 眀攀 栀In 0x0x0 we hav䥥渀 ㌀㜀㘀砀㌀㠀 㐀砀 眀攀 栀In 0x0x0 we have Co䥰渀 ㌀㜀㜀砀㌀㠀 㐀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㠀㠀砀㌀㠀 㐀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㤀 砀㌀㠀 㐀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㠀㤀砀㌀㠀 㔀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㠀㜀砀㌀㠀 㔀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㠀㌀砀㌀㠀 㔀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㠀 砀㌀㠀 㔀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㜀㠀砀㌀㠀 㔀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㜀㜀砀㌀㠀 㔀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㜀㔀砀㌀㠀 㔀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㜀㌀砀㌀㠀 㔀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㜀 砀㌀㠀 㔀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㜀㜀砀㌀㠀 㘀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㤀 砀㌀㠀 㜀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㠀㠀砀㌀㠀 㜀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Co䥰渀 ㌀㠀 砀㌀㠀 㜀砀 眀攀 栀愀瘀攀 In 0x0x0 we have Coppe䥲渀 ㌀㜀㤀砀㌀㠀 㜀砀 眀攀 栀愀瘀攀 䌀漀瀀In 0x0x0 we have Coppe䥲渀 ㌀㜀㠀砀㌀㠀 㜀砀 眀攀 栀愀瘀攀 䌀漀瀀In 0x0x0 we have Coppe䥲渀 ㌀㜀㘀砀㌀㠀 㜀砀 眀攀 栀愀瘀攀 䌀漀瀀In 0x0x0 we have Coppe䥲渀 ㌀㜀㘀砀㌀㠀 㠀砀 眀攀 栀愀瘀攀 䌀漀瀀In 0x0x0 we have Coppe䥲渀 ㌀㠀㤀砀㌀㠀 㤀砀 眀攀 栀愀瘀攀 䌀漀瀀In 0x0x0 we have Copper IIn 1378x3810x0 we have CoppeIn 0x0x0 we have Copper IIn 1380x3810x0 we have CoppeIn 0x0x0 we have Copper IIn 1386x3810x0 we have CoppeIn 0x0x0 we have Copper IIn 1388x3810x0 we have CoppeIn 0x0x0 we have Copper IIn 1389x3810x0 we have CoppeIn 0x0x0 we have Copper IIn 1386x3811x0 we have CoppeIn 0x0x0 we have Copper IIn 1378x3811x0 we have CoppeIn 0x0x0 we have Copper IIn 1377x3811x0 we have CoppeIn 0x0x0 we have Copper IIn 1376x3812x0 we have CoppeIn 0x0x0 we have Copper IIn 1377x3812x0 we have CoppeIn 0x0x0 we have Copper IIn 1386x3812x0 we have CoppeIn 0x0x0 we have Copper IIn 1389x3812x0 we have CoppeIn 0x0x0 we have Copper IIn 1390x3812x0 we have CoppeIn 0x0x0 we have Copper IIn 1384x3813x0 we have CoppeIn 0x0x0 we have Copper IIn 1379x3813x0 we have CoppeIn 0x0x0 we have Copper IIn 1378x3813x0 we have CoppeIn 0x0x0 we have Copper IIn 1377x3814x0 we have CoppeIn 0x0x0 we have Copper IIn 1383x3814x0 we have CoppeIn 0x0x0 we have Copper IIn 1385x3814x0 we have CoppeIn 0x0x0 we have Copper IIn 1386x3814x0 we have CoppeIn 0x0x0 we have Copper IIn 1387x3814x0 we have CoppeIn 0x0x0 we have Copper IIn 1389x3815x0 we have CoppeIn 0x0x0 we have Copper IIn 1377x3815x0 we have CoppeIn 0x0x0 we have Copper IIn 1376x3815x0 we have CoppeIn 0x0x0 we have CoppIn 1380x3816x0 we have C