Skocz do zawartości

Piotrek1910

Użytkownicy
  • Postów

    419
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Piotrek1910

  1. Piotrek1910

    Kompilator

    Ja polecam Visual Studio 2012. Jest za free. Wiele języków programowania, Wersja polska. Ładny wygląd (tutaj zależy dla kogo. Bo jest w stylu metro).
  2. Piotrek1910

    Usuwanie Zera

    Threef nie chce nic mówić ale koledze chodzi o C++ a nie GML.
  3. pablo1517, ok. Ja to ogarniałem na przykładach i tutkach od YYG więc nie za bardzo ogarniam niektóre rzeczy.
  4. Tworzysz jeden buffer a potem do nie upychasz. Tu masz linka do typów bufforów. link np. Strona Clienta: GML var buff = buffer_create(256, buffer_grow, 1); buffer_seek(buff, buffer_seek_start, 0); buffer_write(buff, buffer_u8, 1 ); buffer_write(buff, buffer_s16, x); buffer_write(buff, buffer_s16, y); buffer_write(buff, buffer_s16, direction); network_send_packet( client, buff, buffer_tell(buff) ); buffer_delete(buff); //Dobrze by było usunąć ten buffer jak go już wyślemy.</span> Strona serwera: GML //Odbiera dane od clienta. var t_buffer = buffer_create(256, buffer_grow, 1); xx = buffer_read(buff, buffer_s16); yy = buffer_read(buff, buffer_s16); ddirection = buffer_read(buff, buffer_s16); buffer_delete(t_buffer); Wiem może to troche dziwne wygląda. Troche się to różni od 39dll.dll.
  5. BTW. to ostatnio ogarnąłem MMO w Networkingu. Jakoś tam działa. Jak chcecie moge wam wrzucić.
  6. Ja to robie tak: W create mam zmienną idd i tablice Gracze[32]=0; Potem jak gracz dołącza to: GML Gracze[idd] = instance_create(x,y,obj_other); //Dzięki temu można sterować jednym obiektem jak jest ich tysiące. np. with(Gracze[id]) instance_destroy(); Niszczy dany obiekt. idd++; //Dodaje 1 do id, żeby każdy miał swoje id.</span></span> No i dalej jakiś tam kod.
  7. Nie moge odpalić tego bo mam 8.1. Ale widze błąd. Gdy gracz dołącza tworzy instancje obj_hero, i w tym problem. Bo obj_hero jest sterowany przez ciebie. Stwórz jakiś inny obiekt np. obj_other i tam daj sprita tej samej postaci. Po czym w kodzie powinno wyglądać to tak: GML ds_map_add( m, 'id', instance_create( 0, 0, obj_other ) ); Wtedy wszystko będzie dobrze.
  8. Najlepiej jak byś dał kod to można było zobaczyć co jest źle. Ale widze, że chyba chodzi o to, że jak ktoś dołączy to tworzy tą samą instancje a nie osobną.
  9. Piotrek1910

    Top Hat

    Jak już wydasz oficiala to weś dodaj na steam greenlight. Może dostasz się na steam.
  10. Tak :D. Ale sądzę, że tak jest najlepiej.
  11. Tytuł: GameDos Starter 2 Opis: O to druga część moje programu. Poprzednia wersja nie została jakoś za bardzo przyjęte więc postanowiłem napisać ten program od nowa. Nowości: -możliwość konfiguracji, -samouczki, -możliwość stworzenia pliku .exe (z ikoną) zamiast .bat. Download: Framework 4.5 Download Framework 4.0 Download Nie jestem pewny jak działa. Rozmiar pliku: 2,13 MB Autorzy: Programowanie: Piotrek1910 Screeny: Tak wygląda program: Menu konfiguracji: Lista samouczków :D Błędy, bugi, glicze prosze zgłaszać.
  12. Sądzę, że to jest problem dwóch rzeczy. Windows 8 lub wersji Visual Studio. Pobierz wersje 2012 Visual Studio i wtedy zobacz.
  13. Jak coś napiszesz to najpierw spójrz na date. Po za tym sądzę, że już rozwiązał to.
  14. Ja to zrobiłem u sb tak: 1.Włącza się autoupdater (Napisany w C#) 2.Sprawdza czy jest jakaś aktualizacja, jeżeli tak pobiera ją. 3.Włącza gre.
  15. Nie polecam robić auto-updaterów w game makerze. Ze względu na rozmiar pliku. Program po skompilowaniu z gm 8/8.1 ok 2 mb z Studio ok. 1.5 mb. A w C# ok. 100 kb bez grafiki.
  16. Piotrek1910

    zbugowane GUI ?

    Użyj funkcji virtual_key_show(id); aby zobaczyć gdzie jest położony dany virtual key.
  17. Jeżeli to jest troll no to nara ale jeżeli nie to lepiej żeby autor wysłał swój projekt i wtedy można było by sprawdzić co jest źle.
  18. Troche cofając się o pare postów nie polecam irandom bo za każdym razem losuje tą samą liczbe. Polecam round ( random (x) )
  19. BTW. To gdy ogarniałem Networking pisałem sobie to co ogarnąłem w formie kodu. Jest to taki jakby chat. Może się komuś przydać: Download
  20. Jeżeli to jest wbudowane w program to pewnie działa. Ale nie wiem, bo nie mam eksportu na andka.
  21. Witam ostatnio ogarnąłem Networking w GM:S i pomyślałem, że komuś może się przydać przykład jak zrobić coś takiego. 1.Co potrzebne?: -Game Maker Studio Free, -Cierpliwość. 2.Tworzymy serwer Na samym początku tworzymy object oServer, dodajemy event Create i wklejamy kod: GML server = network_create_server( network_socket_tcp, 6510, 32 ); //Tworzymy serwer z naszym ip (localhost), portem 6510 i z maksymalną liczbą graczy 32 if( server<0 ) //Na wszelki wypadek upewniamy się czy serwer został stworzony. { show_message("Nie mozna sie polaczyc"); //Jeżeli nie to wyświetla komunikat. game_end(); //I kończy gre } else // Jeżeli jednak udało się stworzyć serwer to { show_message("Pomyslnie utworzono serwer"); //Wyświetla komunikat, że udało się stworzyć serwer. } 3.Tworzymy klienta Teraz tworzymy obiekt oClient i w create wklejamy: GML client = network_create_socket( network_socket_tcp ); //Tworzymy socket server = network_connect( client, "127.0.0.1", 6510 ); //Laczymy sie do serwera ip (localhost), i port (6510) if server < 0 //Tak samo jak przy serwerze { show_message("Nie można się połączyc"); game_end(); } else { show_message("Pomyslnie polaczono!"); } 4.Odbieranie danych od klienta Aby serwer mógł odbierać dane od klienta należy utworzyć mape graczy oraz liste socketów Więc w obiekt oServer w Create wklejamy kod: GML Clients = ds_map_create(); //Tworzmy mape klientów socketlist = ds_list_create(); //Tworzmy liste socketów idd = 0; //Przydatne do rozróżniania graczy</span></span></span></span> Teraz w Event Networking: Wklejamy: GML var eventid = ds_map_find_value(async_load, "id"); if( server == eventid ) { var t = ds_map_find_value(async_load, "type"); //Typ polaczenia (połączył się/rozłączył się) var sock = ds_map_find_value(async_load, "socket"); //Pobieramy jego sock if( t==network_type_connect) //Jezeli ktos dolaczyl { ds_list_add( socketlist, sock ); //Dodajemy do listy idd ++; //Dodajemy 1 do idd ds_map_add( Clients, sock, idd ); //Dodajemy do mapy //idd - przypisujemy mu id show_message("Nowy gracz dolaczyl!"); } else //Jeżeli się rozłączył { var inst = ds_map_find_value(Clients, sock ); //Znajdujemy tego gracza ds_map_delete(Clients, sock ); //Usuwamy go z mapy var index = ds_list_find_index( socketlist, sock ); //Znajdujemy go w liscie ds_list_delete(socketlist,index); //I usuwamy } } else if( eventid!=0) //Jezeli nie rowna sie 0 { var buff = ds_map_find_value(async_load, "buffer"); //Tworzymy buffer var wiadomosc = buffer_read(buff, buffer_string ); //No i odbieramy dane show_message(wiadomosc); //Wyświetlanie wiadomosc //var sock = ds_map_find_value(async_load, "id"); //Przydatne do tego niżej //var inst = ds_map_find_value(Clients, sock ); //Przydatne jeżeli chcemy określić od kogo to zostało wysłane } 5.Odbieranie danych od serwera Aby odbierać dane od serwera należy zrobić tak samo jak powyżej, ale nie trzeba dodawać mapy i listy do create. Wystarczy GML var eventid = ds_map_find_value(async_load, "id"); if( client == eventid ) { var buff = ds_map_find_value(async_load, "buffer"); cmd = buffer_read(buff,buffer_string); show_message(cmd); } Tutaj chyba nie musze tłumaczyć 5.Wysyłanie danych do serwera Wysyłanie jest bardzo proste. Spójrzcie na kod: GML var buff = buffer_create(256, buffer_grow, 1); //Tworzymy buffer buffer_seek(buff, buffer_seek_start, 0); //Czyścimy go buffer_write(buff, buffer_string,get_string("Podaj wiadomosc: ","")); //Wpisujemy do buffera naszą wiadomość network_send_packet( client, buff, buffer_tell(buff) ); //Wysyłamy</span></span></span></span> 5.Wysyłanie danych do clienta Jeżeli chcemy wysłać jakąś wiadomość wszystkim graczą wystarczy: GML var t_buffer = buffer_create(256, buffer_grow, 1); //Tworzymy buffer buffer_seek(t_buffer, buffer_seek_start, 0); //Czyścimy go buffer_write(t_buffer , buffer_string,get_string("Podaj wiadomość:","")); //Wpisujemy do buffera naszą wiadomość for (var i = 0; i < ds_list_size(socketlist); i++;) //I wysyłamy do wszystkich graczy { network_send_packet(ds_list_find_value(Clients, i), t_buffer, buffer_tell(t_buffer)); } Jednak jeżeli chcemy wysłać do jednego gracza musimy znać jego id czyli można użyć teraz sock Np. GML buffer_seek(t_buffer, buffer_seek_start, 0); buffer_write(t_buffer, buffer_u8, 3 ); buffer_write(t_buffer , buffer_s8, global.idd); network_send_packet(ds_list_find_value(Clients, global.idd-1), t_buffer, buffer_tell(t_buffer)); Nie wklejacie tego do swojego projektu. Gotowe! Jeżeli wszystko zrobiliście dobrze to powinno działać. Przykład: Download Przykład v2.0 (bez wytłumaczenia i nie ogarnięty troche kod): Download Jeżeli coś nie działa, jakiś bulwers czy po prostu jakaś propozycja pisać w komentarze. #CA14 - Uzjel
×
×
  • Dodaj nową pozycję...