Skocz do zawartości

Błąd


Rekomendowane odpowiedzi

Dziś zacząłem się uczyć 39dll na Racer Online Example. Chciałem sobie tak dla atestu zrobić ze samochud może strzelać kulami ognia :P.

Zrobiłem tak

W cliencie dodałem

w obj_player_self

 

Nowy event press<ctrl>

instance_create(x,y,obj_fireball);

w nowo utworzonym obiekcie obj_fireball

w step dałem

hspeed=(1);
clearbuffer();
writebyte(45);
writeshort(id);
writeshort(x);
writeshort(y);
writeshort(direction);
sendmessage(global.clienttcp);

 

w obj_client w step dodałem po

        case 9:
        //Server message
        script_addline("Server: " + readstring(),c_red);
        break;

dodałem

        case 46: 
        fireid = readshort();
        fireid.x = readshort(); 
        fireid.y = readshort();
        fireid.direction = readshort();
        break;

 

W serverze dodałem tak

w obj_client

    case 45: //update fireball position
    var fireid, fireidx, fireidy, fireiddir;
    fireid = readshort()
    fireidx = readshort()
    fireidy = readshort()
    fireiddir = readshort()
    clearbuffer();
    writebyte(46);
    writeshort(fireid);
    writeshort(fireidx);
    writeshort(fireidy);
    writeshort(fireiddir);
    with(obj_client)
    {
    sendmessage(tcp);
    }
    break;

 

I gdy nacisnę ctrl podczas gry wszystkim graczą wywala błąd ;/

ze coś z tym chyba jest nieteges : fireid.x = readshort();

Odnośnik do komentarza
Udostępnij na innych stronach

kula ci się nie tworzy po porąbałeś id wiadomosci...

i po diabła updatować pozycje kuli oO?

 

Nie dawaj w create kuli wysylania bo wtedy stworzysz kule z wysylanych informacji a ona znoiw wysle wiadomosc i tak w kolko... daj w przycisku CTRL w graczu przy tworzeniu kuli takie cos

clearbuffer();
writebyte(45);
writeshort(x);
writeshort(y);
writeshort(direction);
sendmessage(global.clienttcp);

A w odbieraniu wiadomosci dopisz

 

 case : 45;
  var obj;
  obj=instance_create(readshort(),readshort(),objFireball);
  obj.direction=readshort();
break;

 

Po co tak komplikujesz, poprostu dodaj do samochodu jedną wysyłana informacje o tym czy strzela czy nie, a potem direction, x, y pocisku bedzie okreslane na podstawie direction, x, y samochodu.

Eh... zdaje sie, że Ranmus już kiedyś wam to tłumaczył ale dalej nie czaicie... tak nie można bo dane nie docierają nonstop i na czas, czasami komus lagnie albo poprostu delikatne opuźnienie sprawi że pozycja samochodu i jego dir nie jest takie samo jak u ciebie, to oznacza ze ty strzelisz kule np w dir=40 wyslesz info i tam wzglede opuźnienia kula poleci w dir=50 :/ Tak wiec zrob tak jak ja mówie a nie tak jak mowi Micanser.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...