Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
|
Forum - Polski Portal COLOBOTa |
|
|
Repairer |
Autor |
Wiadomość |
Berserker
Dark Ness
Twoja ulubiona misja: Ofrenia
Pomógł: 16 razy Wiek: 24 Dołączył: 24 Mar 2009 Posty: 496 Skąd: Bigos
|
Wysłany: 08-10-2010, 18:02 Repairer
|
|
|
Zeby ozywic troche sfere colobotowa tego forum walne program ktory napisalem calkiem dawno temu. Dziala.
Program jest dla oslaniacza, trzeba mu dac ogniwo zwykle i postawic na stacji energetycznej. On wtedy jezdzi i naprawia budynki i roboty ktore maja malo oslony.
Kod: | extern void object::Repair()
{
object p;
point center, dest;
float dir, orient, dist, angle, time;
int r;
repair test(this);
p = radar(PowerStation);
center = p.position;
time = abstime()-70;
while(true)
{
p = test.get();
if(p == null)
{
if(abstime()-time > 60)
{
test.update();
time = abstime();
}
}
else
{
angle = 0;
errmode(0);
do
{
shield(0, 10);
dir = direction(p.position);
orient = orientation+dir+180;
dest.x = p.position.x + cos(orient+angle*5) * 7.5;
dest.y = p.position.y + sin(orient+angle*5) * 7.5;
dest.z = topo(dest);
dist = distance(p.position, position);
r = goto(dest);
if(r != 0)
{
wait(1);
angle++;
}
}
while(dist > 9);
shield(1, 10);
while(p.shieldLevel < 1);
shield(0, 10);
errmode(1);
}
if(energyCell.energyLevel < 0.5 or p == null)
{
shield(0, 10);
wait(2);
shield(0, 10);
errmode(0);
while(distance(position, center) > 1)
{
goto(center);
wait(2);
shield(0, 10);
}
errmode(1);
while(energyCell.energyLevel < 1) wait(1);
}
}
}
public class repair
{
object target[] = null;
object me;
void repair(object p)
{
target[0] = null;
me = p;
}
object get()
{
if(sizeof(target) == 0) return null;
int i;
object p;
i = 0;
p = target[0];
target[sizeof(target)] = null;
while(i < sizeof(target)-1) target[i++] = target[i];
return p;
}
void update()
{
target = null;
int i;
object p;
i = 0;
do
{
p = retobject(i++);
if(p == null)
{
return;
}
if((p.category >= 4 and p.category <= 23) or (p.category >= 100 and p.category <= 220) or p.category == 300)
{
if(p.shieldLevel < 1 and distance2d(p.position, me.position) < 80)
{
target[sizeof(target)] = p;
}
}
}
while(true);
}
}
|
|
_________________
|
|
|
|
|
|
Nie możesz pisać nowych tematów Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Wersja do druku
|
|
| |
|
|
|
|
Polski Portal COLOBOTa © 2008 - 2012 |
|
|