// TitaniumCollector v2.0 // Created by MROCZA // // Start z ładunkiem. // Licznik wydajności wyłączony. // Oczekiwanie na rudę. // Częściowa tolerancja na błędy. extern void object::TitaniumCollector() { object item; object convert; point flag (0,0); errmode(0); // //int number, start, moment, min, sec; //start = this.lifeTime; //number = 0; // convert = radar(Converter); if ( convert == null ) { message("Brak huty",DisplayError); return; } recharge(); while (true) { if(load == null) { while(true) { item = radar(TitaniumOre); if ( item != null ) break; message("Nie znaleziono więcej tytanu"); wait(10); } if(goto(item.position) == 211) { message("Ruda niedostępna",DisplayError); return; } if(grab()!=0) continue; } else { if(load.category != TitaniumOre) { goto(space(position)); drop(); while(true) { item = radar(TitaniumOre); if ( item != null ) break; message("Nie znaleziono więcej tytanu"); wait(10); } if(goto(item.position) == 211) { message("Ruda niedostępna",DisplayError); return; } if(grab()!=0) continue; } } while(true) { if (goto(convert.position) == 000 ) break; if (goto(convert.position) == 212 ) continue; message("Huta niedostępna",DisplayError); return; } errmode(1); item = radar(Titanium,0,59,0,3); if ( item == null ) { drop(); move(-2); wait(5); } else { turn(60); drop(); turn(-60); grab(); turn(-60); drop(); turn(120); grab(); turn(-60); drop(); turn(-60); grab(); errmode(0); if ( flag.x == 0 ) { goto(space(position,6,50,6)); flag = position; } else { while(goto(flag) == 212) wait(1); } stock(); ////////////////////////////////////////////////////////////////////////////////////////// // // //moment = this.lifeTime; //LICZNIK WYDAJNOŚCI// // //min = (moment - start)/60; // //sec = (moment - start)%60; // //number = number + 1; // //message("Przygotowano kostek: " +number+ " w czasie: " +min+ " min " +sec+ " sek "); // //message("Kostek na minutę: " +number/((moment - start)/60) ); // // // ////////////////////////////////////////////////////////////////////////////////////////// } recharge(); } } ////////////////////////////////////////////////////////////////////////////////////////////////////// void object::recharge() { object item; errmode(0); if (energyCell.category == PowerCell) { if ( energyCell.energyLevel < 0.3 ) { item = radar(PowerStation); if(item != null) { while(true) { if (goto(item.position) == 000 ) break; if (goto(item.position) == 212 ) continue; message("Stacja energetyczna niedostępna",DisplayError); return; } while( energyCell.energyLevel < 1 ) wait(1); } } } else { if ( energyCell.energyLevel < 0.05 ) { float min = 0; while (true) { item = radar(NuclearCell,0,360,min,1000); if (item.energyLevel >= 0.5) break; min = distance (item.position, position) + 0.02; } while(true) { if (goto(item.position) == 000 ) break; if (goto(item.position) == 212 ) continue; message("Ogniwo atomowe niedostępne",DisplayError); return; } errmode(1); grab (InFront); goto (space(position)); drop (Behind); grab (EnergyCell); drop (InFront); grab (Behind); drop (EnergyCell); } } } ////////////////////////////////////////////////////////////////////////////////////////////////////// void object::stock() { object item; float angle; int i, j; errmode(1); item = radar(Converter); if(direction(item.position) > 0) { turn(direction(item.position)-180); } else { turn(direction(item.position)+180); } jet(1); wait(0.5); move(4); jet(-1); wait(0.6); errmode(0); while(true) { angle = 0; if(category == WingedGrabber) j=9; else j=7; for(i=0; i