Oryginalna strona colobot.cba.pl umarła, gdy cba.pl przestało oferować darmowy hosting. To jest statyczny mirror, pobrany w 2018. ~krzys_h
 Polski Portal COLOBOTa - COLOBOT Polish Portal
Forum - Polski Portal COLOBOTa
Strona głównaStrona główna UżytkownicyUżytkownicy GrupyGrupy StatystykiStatystyki


Poprzedni temat «» Następny temat
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);
    }
}
_________________
 
 
     
Wyświetl posty z ostatnich:   
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Polski Portal COLOBOTa © 2008 - 2012