Skocz do zawartości

Pental Stary

Zbanowani
  • Postów

    354
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Pental Stary

  1. To był żart, ale masz jakiś lepszy pomysł?
  2. To na dole jest nieważne, gdy ping = 0 :P . Ale gnysku, ja to rozumiem. Ale napisz mi kod step klienta. I nie mów o skopiowaniu, bo podczas gdy mam usunąć i dodać zarazem 100 linijek kodu, jaka jest szansa, że nie popełnię błędu? GRACZ to KLIENT NA SERWERZE, czy GRACZ U KLIENTA? Ja już kompletnie nie kumam tego 39dll. Zrobisz mi taki przykład najprostszy, który ja próbowałem zrobić? Zaglądałem do setek artykułów i przykładów - i każdy ma inną strukturę odbierania i wysyłania danych :/ .
  3. Rozszyfrowujemy kodowanie plików graficznych i wysyłamy na naszą stronę odpowiednie dane, po czym ściągamy plik!
  4. Tak, po czym klient stworzy kolejnego klienta... Bez sensu ogólnie. Pokaż kod w step klienta po case 0: :P . A ja nie wiem jak to ma wyglądać, Help :P . Edit: Klient w prawdzie się tworzy, jednak pozostałe dane nie są odbierane :/ . Pytanie powyżej wciąż aktualne.
  5. @echo off echo ### echo #<twój znak># echo ### Teraz podpiąć to pod GMa wystarczy :) .
  6. Gnysek nadal nie działa :confused: .Rozmiar wiadomości to wartość ujemna - tego nie rozumiem.
  7. Wiem, wiem, jakoś się od Platyny zaraziłem. W takim razie jesteś mazo :P .

  8. Dwa pytania: "A co to setnagle() i jeżeli będzie 100 klientów, każdy będzie co stepa odbierał identyczne dane??" @Edit po tym jak nie akceptuję i tak nie działa.
  9. Kocham cię gnysek :) . Dzięki, zaraz przetestuję :) . @Edit. Nie działa, już cie nie kocham.
  10. Ona jest bez sensu ogólnie, ale to nie ma znaczenia. Chodzi o to, że rozmiar wysyłanej wiadomości jest a minusie. Pierwsza tablica mówi, czy jest gracz, czy nie (-1 lub 1), a druga to obiekty. Pierwszą trza więc wywalić.
  11. Gnysku, zrobiłem to zanim Tymon napisał posta, a może w trakcie pisania, n / c :) . Bo na kompie miałem już to poprawione, a dalej nie działało, pokazałem Tymonowi ten temat i wyłapałem te błędy.
  12. No więc biorę się za 39dll, żeby nie być gorszym :P . I mam problem. Serwer nie tworzy obiektu Client, gdy dołącza gracz do gry. O to kod step serwera: GML socket = tcpaccept( tcp, true ); if ( !socket ) exit; while( true ) { message = receivemessage( socket ); if ( message <= 0 ) break; caption = readbyte(); switch( caption ) { case 0: // doszedl gracz _name = readstring(); _x = readint(); _y = readint(); if ( playC < 10 ) { for( i = 0; i < 10; i += 1; ) { if ( play[ i ] == -1 ) { play[ i ] = true; playO[ i ] = instance_create( _x, _y, Client ); playO[ i ].i = i; playO[ i ].name = _name; playC += 1; break; } } } clearbuffer(); writebyte( 0 ); writebyte( i ); writestring( _name ); writeint( _x ); writeint( _y ); sendmessage( socket ); break; case 1: // odszedl jakis gracz _id = readint(); with( playO[ _id ] ) instance_destroy(); playC -= 1; play[ _id ] = -1; clearbuffer(); writebyte( 1 ); writebyte( _id ); sendmessage( socket ); break; case 2: // gracz wykonal jakis ruch _id = readbyte(); _x = readint(); _y = readint(); playO[ _id ].x = _x; playO[ _id ].y = _y; clearbuffer(); writebyte( 2 ); writebyte( _id ); writeint( _x ); writeint( _y ); sendmessage( socket ); break; } } A to Create gracza: GML dllinit( 0, true, false ); x = random( 300 ); y = random( 300 ); name = get_string( "Podaj nazwę gracza:", "nowy_gracz" ); tcp = tcpconnect( get_string( "Podaj ip serwera:", "localhost" ), 123, true ); if ( !tcpconnected( tcp ) ) { show_message( "Nie udało się połączyć z serwerem!" ); dllfree(); game_end(); } myid = -1; socket = tcpaccept( tcp, true ); clearbuffer(); writebyte( 0 ); writestring( name ); writeint( x ); writeint( y ); sendmessage( socket ); Dam jeszcze na wszelki wypadek step klienta: GML if ( myid == -1 ) exit; socket = tcpaccept( tcp, true ); if ( !socket ) exit; while( true ) { message = receivemessage( socket ); if ( message <= 0 ) break; caption = readbyte(); switch( caption ) { case 0: // doszedl gracz _id = readbyte(); _name = readstring(); _x = readint(); _y = readint(); if ( myid == -1 ) myid = _id; else { _i = instance_create( _x, _y, Client ); _i.i = _id; } break; case 1: // odszedl jakis gracz _id = readint(); global.i = _id; with( Client ) { if ( _id == global.i ) instance_destroy(); } break; case 2: // gracz wykonal jakis ruch _id = readbyte(); _x = readint(); _y = readint(); with( Client ) { if ( _id == global.i ) { x = _x; y = _y; } } break; } } Co jest źle :P ?
  13. Ranmusie, nikt mi nie każe grać w gry z powodu, że mam komputer :) . A prawie wszystkie tytuły kojarzę, jednak w mało gier z wymienionych grałem :P . Platyna, żart nie jest śmieszny, gdy się tłumaczy, o co w nim chodzi :P .
  14. Nobody, lepiej na tablicy, każda funkcja z listy to linijka kodu, a tablica jest bardziej elastyczna. Mazo, zaraz dam ci kod i pokażę, jak ja to widzę :) . (btw. czemu Michała uważano za nooba? dla mnie to on niedługo będzie w "elicie GMClanu" :P ) Dobra, ja to widzę tak: GML socket = tcpaccept( tcp, true ); if ( !socket ) exit; while( true ) { message = receivemessage( socket ); if ( message <= 0 ) break; clearbuffer(); caption = readbyte(); switch( caption ) { case 0: // doszedl gracz _name = readstring(); _x = readint(); _y = readint(); if ( playC < 10 ) { for( i = 0; i < 10; i += 1; ) { if ( play[ i ] == -1 ) { play[ i ] = true; playO[ i ] = instance_create( _x, _y, Client ); playO[ i ].i = i; playO[ i ].name = _name; playC += 1; break; } } } clearbuffer(); writebyte( 0 ); writebyte( i ); writestring( _name ); writeint( _x ); writeint( _y ); sendmessage( socket ); break; case 1: // odszedl jakis gracz _id = readshort(); with( playO[ _id ] ) instance_destroy(); playC -= 1; play[ _id ] = -1; clearbuffer(); writebyte( 1 ); writebyte( _id ); sendmessage( "socket" ); break; } } Sam dopiero uczę się 39dll, ale już kiedyś do tego zaglądałem i całkiem proste mi się wydaje :P . Pisałem to chwilkę, z pytaniami wal śmiało :) . E, widzę różnicę między twoim Create'em a moim, więc masz: GML dllinit( 0, true, false ); tcp = tcplisten( 123, 10, true ); if ( !tcp ) { show_message( 'Nie udało się założyć serwera!' ); dllfree(); game_end(); } for( i = 0; i < 10; i += 1; ) { play[ i ] = -1; playO[ i ] = -1; } playC = 0;
  15. Przykład się przyda wielu nowym, ogólnie idziesz do przodu Michał :P .
  16. Ale serwer odbiera ok. <ilość graczy> razy więcej danych niż gracze. Dodatkowo, także wysyła dane. Nie dziw się różnicą FPSów pomiędzy klientem a serwerem, bo ona i tak jest niewielka :P . Wysyłaj dane tylko wtedy, gdy jest jakikolwiek widoczny ruch, choćby gra była nie wiem jak dynamiczna.
  17. A co ile klatek wysyłasz dane? Jeżeli co stepa, to silnik mmo jest już bez sensu. Chociaż wątpię, że popełniasz taki błąd :P . Sorka sorka, nie doczytałem. Ale to bez sensu. Dane wysyłaj tylko wtedy, gdy dla innego klienta jest zauważalna jakakolwiek zmiana. Np. gdy robi ruch.
  18. PoksiPolku, ktoś kto ma komputer musi grać w gry? Wspaniała logika. Chwalcie się lepiej swoim dziewczynom, że znacie ponad 60 gier z obrazka :) .
  19. Wybaczcie, nie każdy jest no - lifem. Ja z wymienionych gier to znam prawie wszystkie, ale nie grałem w większość z nich.
  20. Lol, dawids, cienki jesteś, ja trzy xD . (RM, WORMSY, SIMSY)
  21. Nie słuchaj się Cracka - sam nick dobrze przedstawia jego wiedzę ^^ . Im większa tym lepsza, jak ktoś ma 19 - stkę lub większy ekran monitora, to zobaczy rozmazane pixelki.
×
×
  • Dodaj nową pozycję...