Page 1 of 1

выгрузка руды с сортировкой

Posted: 27.05.2012 13:50
by alpi
всем привет

уже пару часов бьюсь, ничего не выходит сделать.
задача: при выгрузке руды из пака в зависимости от типа - складывать в разные сумки сундука.

пробовал делать по счетчику цикла - руду до 15 сбрасывать в 1 ящик, после 15 в другой.
когда не вышло - втупую вписал каждой руде, в какой ящик ее ложить.
не помогло - в сундуке 1 оказывается руда, которая должна быть в сундуке 2, и наоборот.
не понимаю, почему не работает.

Code: Select all

oretype[30].name := 'Eldar';
oretype[30].id := $19B9;
oretype[30].color := $0BA7;
oretype[30].container := Sunduk_viha;

Code: Select all

	repeat  
	  For i := 1 to 30 do
	   begin
	     
	    if Count(oretype[i].id) > 0 then
		 begin
		  tmp_sunduk := oretype[i].container;
          tmpstack := FindtypeEx(oretype[i].id,oretype[i].color,tmp_sunduk,False);
          if GetQuantity(tmpstack) >= 65000 then Ignore(tmpstack);
          if tmpstack = 0 then tmpstack := tmp_sunduk;
		  moveitem(findtype(oretype[i].id,backpack),999,tmp_sunduk,0,0,0); wait(500);
		 end;
		
	   end;
	until (Count(Ore1) = 0) and (Count(Ore2) = 0) and (Count(Ore3) = 0) and (Count(Ore4) = 0);
помогите разобраться кто силен плз :?

Re: выгрузка руды с сортировкой

Posted: 27.05.2012 14:50
by CFA
думаю стоит заменить Count(oretype.id) и findtype(oretype.id,backpack) на FindTypeEx(oretype.id,oretype.color, backpack, false)
тк иначе не будет учитываться ее цвет, и перетаскиваться будет первая попавшаяся руда подходящего цвета.

Re: выгрузка руды с сортировкой

Posted: 28.05.2012 1:41
by alpi
*facepalm*
спасибо :)

Re: выгрузка руды с сортировкой

Posted: 28.05.2012 14:24
by nepopus
Для тех, кто играет на дрв может пригодиться(необходимая инфа о руде и ингах):

Code: Select all

type toreinfo = record
  name: string;
  oreColor: word;
  ingotColor: word;
  ingotType: word;
end;

var
  oreInfo: array of toreinfo;
  oreType: array of word;

begin
  setlength(oreInfo, 30);
  oreInfo[0].name :=       'Iron';
  oreInfo[0].oreColor :=    $0000;
  oreInfo[0].ingotColor :=  $0000;
  oreInfo[0].ingotType :=   $1BEF;
  ////////////
  oreInfo[1].name :=       'Rusty';
  oreInfo[1].oreColor :=    $0750;
  oreInfo[1].ingotColor :=  $0750;
  oreInfo[1].ingotType :=   $1BEF;
  ////////////
  oreInfo[2].name :=       'Old Copper';
  oreInfo[2].oreColor :=    $0590;
  oreInfo[2].ingotColor :=  $0590;
  oreInfo[2].ingotType :=   $1BEF;
  ////////////
  oreInfo[3].name :=       'Dull Copper';
  oreInfo[3].oreColor :=    $060A;
  oreInfo[3].ingotColor :=  $060A;
  oreInfo[3].ingotType :=   $1BEF;
  ////////////
  oreInfo[4].name :=       'Copper';
  oreInfo[4].oreColor :=    $0088;
  oreInfo[4].ingotColor :=  $0000;
  oreInfo[4].ingotType :=   $1BE3;
  ////////////
  oreInfo[5].name :=       'Bronze';
  oreInfo[5].oreColor :=    $0488;
  oreInfo[5].ingotColor :=  $0488;
  oreInfo[5].ingotType :=   $1BEF;
  ////////////
  oreInfo[6].name :=       'Silver';
  oreInfo[6].oreColor :=    $0482;
  oreInfo[6].ingotColor :=  $0000;
  oreInfo[6].ingotType :=   $1BF5;
  ////////////
  oreInfo[7].name :=       'Gold';
  oreInfo[7].oreColor :=    $0032;
  oreInfo[7].ingotColor :=  $0000;
  oreInfo[7].ingotType :=   $1BE9;
  ////////////
  oreInfo[8].name :=       'Shadow';
  oreInfo[8].oreColor :=    $096B;
  oreInfo[8].ingotColor :=  $096B;
  oreInfo[8].ingotType :=   $1BEF;
  ////////////
  oreInfo[9].name :=       'Rose';
  oreInfo[9].oreColor :=    $0014;
  oreInfo[9].ingotColor :=  $0014;
  oreInfo[9].ingotType :=   $1BEF;
  ////////////
  oreInfo[10].name :=      'Agapite';
  oreInfo[10].oreColor :=   $0193;
  oreInfo[10].ingotColor := $0193;
  oreInfo[10].ingotType :=  $1BEF;
  ////////////
  oreInfo[11].name :=      'Blood rock';
  oreInfo[11].oreColor :=   $04C2;
  oreInfo[11].ingotColor := $04C2;
  oreInfo[11].ingotType :=  $1BEF;
  ////////////
  oreInfo[12].name :=      'Verite';
  oreInfo[12].oreColor :=   $07D5;
  oreInfo[12].ingotColor := $07D5;
  oreInfo[12].ingotType :=  $1BEF;
  ////////////
  oreInfo[13].name :=      'Valorite';
  oreInfo[13].oreColor :=   $00CE;
  oreInfo[13].ingotColor := $00CE;
  oreInfo[13].ingotType :=  $1BEF;
  ////////////
  oreInfo[14].name :=      'Mitheril';
  oreInfo[14].oreColor :=   $052D;
  oreInfo[14].ingotColor := $052D;
  oreInfo[14].ingotType :=  $1BEF;
  ////////////
  oreInfo[15].name :=      'Black Rock';
  oreInfo[15].oreColor :=   $0455;
  oreInfo[15].ingotColor := $0455;
  oreInfo[15].ingotType :=  $1BEF;
  ////////////
  oreInfo[16].name :=      'Obsidian';
  oreInfo[16].oreColor :=   $0028;
  oreInfo[16].ingotColor := $0028;
  oreInfo[16].ingotType :=  $1BEF;
  ////////////
  oreInfo[17].name :=      'Plutonium';
  oreInfo[17].oreColor :=   $08AF;
  oreInfo[17].ingotColor := $08AF;
  oreInfo[17].ingotType :=  $1BEF;
  ////////////
  oreInfo[18].name :=      'Dragon';
  oreInfo[18].oreColor :=   $0085;
  oreInfo[18].ingotColor := $0085;
  oreInfo[18].ingotType :=  $1BEF;
  ////////////
  oreInfo[19].name :=      'Crystaline';
  oreInfo[19].oreColor :=   $09A4;
  oreInfo[19].ingotColor := $09A4;
  oreInfo[19].ingotType :=  $1BEF;
  ////////////
  oreInfo[20].name :=      'Krynite';
  oreInfo[20].oreColor :=   $010F;
  oreInfo[20].ingotColor := $010F;
  oreInfo[20].ingotType :=  $1BEF;
  ////////////
  oreInfo[21].name :=      'Vulcan';
  oreInfo[21].oreColor :=   $09DA;
  oreInfo[21].ingotColor := $09DA;
  oreInfo[21].ingotType :=  $1BEF;
  ////////////
  oreInfo[22].name :=      'Sand Rock';
  oreInfo[22].oreColor :=   $008F;
  oreInfo[22].ingotColor := $008F;
  oreInfo[22].ingotType :=  $1BEF;
  ////////////
  oreInfo[23].name :=      'Blood Crest';
  oreInfo[23].oreColor :=   $09EC;
  oreInfo[23].ingotColor := $09EC;
  oreInfo[23].ingotType :=  $1BEF;
  ////////////
  oreInfo[24].name :=      'Steel';
  oreInfo[24].oreColor :=   $09D3;
  oreInfo[24].ingotColor := $09D3;
  oreInfo[24].ingotType :=  $1BEF;
  ////////////
  oreInfo[25].name :=      'Elvin';
  oreInfo[25].oreColor :=   $09E6;
  oreInfo[25].ingotColor := $09E6;
  oreInfo[25].ingotType :=  $1BEF;
  ////////////
  oreInfo[26].name :=      'Gorgan';
  oreInfo[26].oreColor :=   $09F0;
  oreInfo[26].ingotColor := $09F0;
  oreInfo[26].ingotType :=  $1BEF;
  ////////////
  oreInfo[27].name :=      'Acid';
  oreInfo[27].oreColor :=   $09B9;
  oreInfo[27].ingotColor := $09B9;
  oreInfo[27].ingotType :=  $1BEF;
  ////////////
  oreInfo[28].name :=      'Aqua';
  oreInfo[28].oreColor :=   $0060;
  oreInfo[28].ingotColor := $0060;
  oreInfo[28].ingotType :=  $1BEF;
  ////////////
  oreInfo[29].name :=      'Eldar';
  oreInfo[29].oreColor :=   $0BA7;
  oreInfo[29].ingotColor := $0BA7;
  oreInfo[29].ingotType :=  $1BEF;

  setlength(oreType, 4);
  oreType[0] := $19B7;     //Руда 1шт.
  oreType[1] := $19BA;     //Руда 2шт.
  oreType[2] := $19B8;     //Руда 3шт.
  oreType[3] := $19B9;     //Руда 4шт.
end.

Re: выгрузка руды с сортировкой

Posted: 29.05.2012 0:25
by alpi
огромное спасибо, пригодится!
мой список поскромнее :) так же для дрв.

Code: Select all

   begin 
oretype[1].name := 'Iron';
oretype[1].color := $0000;
oretype[2].name := 'Rusty';
oretype[2].color := $0750;
oretype[3].name := 'Old Copper';
oretype[3].color := $0590;
oretype[4].name := 'Dull Copper';
oretype[4].color := $060A;
oretype[5].name := 'Copper';
oretype[5].color := $0088;
oretype[6].name := 'Bronze';
oretype[6].color := $0488;
oretype[7].name := 'Silver';
oretype[7].color := $0482;
oretype[8].name := 'Gold';
oretype[8].color := $0032;
oretype[9].name := 'Shadow';
oretype[9].color := $096B;
oretype[10].name := 'Rose';
oretype[10].color := $0014;
oretype[11].name := 'Agapite';
oretype[11].color := $0193;
oretype[12].name := 'Blood Rock';
oretype[12].color := $04C2;
oretype[13].name := 'Verite';
oretype[13].color := $07D5 ;
oretype[14].name := 'Valorite';
oretype[14].color := $00CE;
oretype[15].name := 'Mytheril';
oretype[15].color := $052D;
oretype[16].name := 'Black Rock';
oretype[16].color := $0455;
oretype[17].name := 'Obsidian';
oretype[17].color := $0028;
oretype[18].name := 'Plutonium';
oretype[18].color := $08AF;
oretype[19].name := 'Dragon';
oretype[19].color := $0085;
oretype[20].name := 'Crystaline';
oretype[20].color := $09A4;
oretype[21].name := 'Krynite';
oretype[21].color := $010F;
oretype[22].name := 'Vulcan';
oretype[22].color := $09DA;
oretype[23].name := 'Sand Rock';
oretype[23].color := $008F;
oretype[24].name := 'Blood Crest';
oretype[24].color := $09EC;
oretype[25].name := 'Steel';
oretype[25].color := $09D3; 
oretype[26].name := 'Elvin';
oretype[26].color := $09E6;
oretype[27].name := 'Gorgan';
oretype[27].color := $09F0;
oretype[28].name := 'Acid';
oretype[28].color := $09B9;
oretype[29].name := 'Aqua';
oretype[29].color := $0060;
oretype[30].name := 'Eldar';
oretype[30].color := $0BA7;