-
Postów
122 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez staniki
-
UWAGA! - Od razu mówię, że skrypt wymaga zarejestrowanej wersji GMa, lub niezarejestrowanej 5.0. Podam link do pobrania. Kurs wymaga umiejętności programowania w GML! <_< Od razu mówię, że zrobienie gry multiplayer wcale nie jest łatwe, więc dla osób początkujących nie radziłbym korzystać z tego skryptu. Jeżeli chcecie zrobić dobrą grę multiplayer, to najpierw zróbcie grę singleplayer. Wiele osób zadaje pytanie czy można zrobić grę MMORPG jak Tibia i jak. Od razu mówię, że można, ale jak to nie powiem, sami kombinujcie :P . Podam wam za to kilka przydatnych skryptów, opiszę co dają i gdzie je wstawić. Zaczynajmy. 1. Kiedy już utworzyłeś grę i chciałbyś ją przekształcić na grę multiplayer. Do tego na początku potrzebne stworzenie sesji, a następnie gracze do niej dołączają. Są dwie możliwości takiego tworzenia: 1) Tworzysz klienta i serwer osobno, każdy pełni osobną funkcję (chyba nie muszę tłumaczyć) 2) Tworzysz klienta z możliwością tworzenia sesji i dołączania do nich (tak jak np. w Counter Strike'u itp.) Kod wygląda następująco: 1) Tworzenie sesji : GML mplay_init_tcpip("127.0.0.1"); //inicjuje adres IP, do którego gra ma być podłączona, standardowo 127.0.0.1 if mplay_session_find()=0 //szuka czy nie ma sesji, czy jest mplay_session_create("GMClanServer",200+1,"Gracz"); //jeżeli nie ma jeszcze sesji na danym adresie IP, to tworzy sesję "GMClanServer", a jednocześnie dołącza do gry jako gracz "Gracz", maksymalna ilość graczy to 200 2) Dołączanie do sesji : GML mplay_init_tcpip("127.0.0.1"); //inicjuje adres IP, do którego gra ma być podłączona, standardowo 127.0.0.1 if mplay_session_find()!=0 //sprawdza czy serwer jest ONLINE mplay_session_join(0,"Gracz2"); //jeżeli jest to dołącz do gry jako gracz "Gracz2" Tak wygląda właśnie tworzenie i dołączanie sesji. Jeśli rozumiesz to, to przejdźmy do kroku 2. 2. Jeżeli już dołączysz do sesji, potrzebną rzeczą jest pobranie numeru gracza. Serwera to nie dotyczy, ponieważ serwer dostaje automatycznie numer gracza 1. Gracz zaś, musi pobrać numer, a więc stwórzmy objekt, nazwijmy go "Player". Dodajemy event CREATE i tam wpisujemy : GML global.player_number=real(mplay_player_find()-1) //wyszukuje numer gracza , oraz parametry, jakie będą potrzebne twojej postaci, czyli np. parametr health, ale to już zależy tylko od ciebie. 3. A więc jesteśmy i mamy już numer gracza, lecz niestety nie widzimy tego gracza na planszy. Co się dzieje? Potrzebny jest obiekt, który nazwijmy "OtherPlayer", oraz obiekt o nazwie "Controller". Damy jeszcze do obiektu pierwszego czyli obiektu "Player" w CREATE coś takiego : GML mplay_message_send(0,0,string(global.player_number)+"|"+string(x)+"|"+string(y)); //wysyła sygnał, że dołączamy do gry. Wiadomość wygląda tak : "<numer gracza>|<x gracza>|<y gracza>" Oznacza to, że dołączyliśmy do gry, a przynajmniej tak będzie to czytał obiekt "Controller". Więc do obiektu "Controller" dajemy event STEP, a następnie do kodu : GML if mplay_message_receive(0) //jeżeli otrzymuje wiadomość to wybierz : switch mplay_message_id(){ case 0 : o=instance_create(0,0,OtherPlayer); //gracz dołączył do gry Value=mplay_message_value(); o.Number=real(string_copy(Value,0,string_pos("|",Value)-1)); //inicjuje numer gracza, funkcja real zmienia z tekstu na liczbę Value=string_copy(Value,string_pos("|",Value)+1,string_length(Value)); //skraca tekst o liczbę i znak "|" o.x=real(string_copy(Value,0,string_pos("|",Value)-1)); //pobiera pozycje gracza, funkcja real zmienia z tekstu na liczbę Value=string_copy(Value,string_pos("|",Value)+1,string_length(Value)); //skraca tekst o liczbę i znak "|" o.y=real(string_copy(Value,0,string_pos("|",Value)-1)); //pobiera pozycje, funkcja real zmienia z tekstu na liczbę break; case 1: with(OtherPlayer){ Value=mplay_message_value(); NNumber=real(string_copy(Value,0,string_pos("|",Value)-1)); //inicjuje numer gracza, funkcja real zmienia z tekstu na liczbę Value=string_copy(Value,string_pos("|",Value)+1,string_length(Value)); //skraca tekst o liczbę i znak "|" xx=real(string_copy(Value,0,string_pos("|",Value)-1)); //pobiera pozycje gracza, funkcja real zmienia z tekstu na liczbę Value=string_copy(Value,string_pos("|",Value)+1,string_length(Value)); //skraca tekst o liczbę i znak "|" yy=real(string_copy(Value,0,string_pos("|",Value)-1)); //pobiera pozycje, funkcja real zmienia z tekstu na liczbę if (Number=NNumber){ //jeżeli numer gracza pasuje numerowi przysłanemu przez drugiego gracza x=xx;//to zmień jego pozycje y=yy;}} break; case 2: with(OtherPlayer){ if (Number=real(mplay_message_value())) instance_destroy(); /*gracz odłącza się*/} break;} Teraz obiekt "Controller" otrzymał ważne zadanie - obsługiwanie gry multiplayer. Lecz na razie będzie odczytywał tylko dołączanie gracza do gry. Dlaczego? Ponieważ nie daliśmy jeszcze ważnych funkcji do obiektu "Player". Dajmy więc tam event STEP, a w nim: GML mplay_message_send(0,1,string(global.player_number)+"|"+string(x)+"|"+string(y)); //zmienia pozycje gracza w innych klientach Teraz będzie pokazywało pozycje gracza, lecz po wylogowaniu się nie będzie znikał. Dajmy więc event GAME END, a tam będzie: GML mplay_message_send(0,2,string(global.player_number)); //niszczy gracza A więc mamy już wyświetlanie się gracza, oraz 4. Do gier MMO, często dodawany jest czat, lecz nie będę tego tłumaczył, ponieważ Mark Overmans stworzył już taki przykład (patrz tu). Dałem także do przykładu. 5. Kilka przydatnych skryptów : 1) Tworzenie konta : Klient: GML mplay_message_send("Gracz",0,get_string("Nazwa twojego konta:","")+"|"+get_string("); Serwer: GML if mplay_message_receive(0){ if mplay_message_id()=0{ Value=mplay_message_value(); Account=real(string_copy(Value,0,string_pos("|",Value)-1)); Value=string_copy(Value,string_pos("|",Value)+1,string_length(Value)); Name=real(string_copy(Value,0,string_pos("|",Value)-1)); file_open_write(Account+".txt"); file_write_string(Name); file_close();}} 2) Wczytywanie gry Klient: GML mplay_message_send("Gracz",1,get_string("Nazwa konta:","")); if mplay_message_receive(0){ if mplay_message_id()=2{ Name=mplay_message_value();}} Serwer: GML if mplay_message_receive(0){ if mplay_message_id()=1{ file_open_read(mplay_message_value()+".txt"); mplay_message_send(0,2,file_read_string); file_close();}} Gratulacje! Zrobiłeś własną grę multiplayer. Jeżeli jednak nie do końca zrozumiałeś jak to działa, lub nie działa to u ciebie, to daję przykład : plik. Plik .exe znajduje się tu, a Game Maker w. 5.0 tu. Uwaga! Przykład napisany jest pod darmową wersję Game Makera 5.0. Za wszystkie błędy w kodzie : Przepraszam. O błędach proszę mnie informować. Jeśli będziecie mieli jakieś problemy to piszcie na forum, pomogę wam :) . Za wszystkie błędy w kodzie, bądź błędy ortograficzne, a także za coś, czego mogłem zapomnieć.Przepraszam. Nowe wersje, GM6 i GM7 :) Poprawiono literówki i tagi. Mimek
-
Sorry, że piszę ponownie, ale jak nikt nie wie, to proszę o usunięcie tematu. :(
-
A więc tak, mam celownik w 3D, pokazujący punkt, gdzie jest myszka (jak np. w Counter strike'u, nie tylko na boki mozna nim poruszać, ale i w górę itd.). Mam problem, ponieważ nie wiem jak zrobić, żeby punkt poruszał się do punktu Z, gdzie pokazuje celownik. Mam już zrobiony skrypt poruszania się w 3D, ale nie wiem jak wytyczyć ten punkt, czy ktoś może wie?
-
nie działa O.o http://gmc.yoyogames.com/index.php?showtop...amp;hl=Marzipan
-
Czy jest jakiś konwerter, który konweruje pliki z .an8 do .d3d? Ale nie mam na myśli Marzipana, bo już nie można go pobrać :crying: . Jak jest, to proszę o link.
-
mam dla ciebie mały przykładzik, jak to zrobić : LINK :] :]
-
w 39dll są chyba tylko do pobierania plików z internetu, ale głowy nie dam ;P ...
-
ok dzięki za pomoc :)
-
tzn.? np. coś takiego: mplay_message_send(0,1,file_open_read("file.txt")); ?? czy są do tego jakieś osobne funkcje?
-
A czy potrzeba do tego jakiegoś dlla, czy GM posiada funkcje do tego potrzebne? jeśli potrzeba dlla to jakiego, jeśli GM posiada takie funkcje to jakie (np.)
-
Czy da się jakoś zrobić przesyłanie plików z serwera do klienta (jak w grach MMORPG w stylu tibia)?np.: w folderze z serwerem jest folder z plikiem map.txt chciałbym, żeby serwer przesłał go do klienta, tak aby gracze nie mogli edytować pliku (czyli przy uruchomieniu programu) czy da się tak zrobić, czy GM może ściągać tylko pliki ze stron www?
-
a jak mam np. : data="Imie,32,100,800,800" name="Imie" health="32" maxhealth="100" mana="800" maxmana="800" ????
-
Jak rozbić tekst wymieniany po przecinku, np.: Mam jakąś wartość: all_value="32,50,34,80" i chciałbym uzyskać cośtakiego: value1=32 value2=50 value3=34 value4=80 cały kod: all_value="32,50,34,80" value1=32 value2=50 value3=34 value4=80 ????????? :boxed: :boxed:
-
Tytuł: Space Combat Gatunek: strzelanka Opis: Gra z wyglądu przypomina ciut grę Asteroids (przykład), lecz z niej wziąlem tylko niektóre grafiki. Polega na zniszczeniu bazy wroga, lub przejęcia jego bazy. Do dyspozycji masz drużynę oraz budynki. Taka nietypowa strzelanka (pomieszanie : trochę z Asteriods, trochę z Red Alerta ...). ;) Polecałbym na początku zagrać w trening, bo możecie nie dokońca wrzystkiego zrozumieć. Download: Link Rozmiar pliku: 1,49 MB Autorzy: Programowanie: Me Fabuła: Me Grafika: Większość me, trochę z Asteroids. Muzyka: Me Screeny: Screen 1 Screen 2 Dodałem link do zdjęć ze względu na ich rozmiar Borek
-
Dzięki, teraz na pewno sobie poradzę
-
Jak zaokrąglić liczby, np. przy funkcji random(x) lub przy dzieleniu? Bo robię minimapę do gry, i zrobiłem obrazek, wszystko ok niby, ale nie pokazuje mi dokładnie gdzie znajduje się gracz. Myślę, że chodzi o to, że nie dzieli dokładnie (zrobiłem mapkę 1 kratka - 1 px, użyłem funkcji draw_sprite_part itp. i wszystko niby działa, pokazuje mapkę) myślę, że to wina niedokładnego dzielenia X i Y gracza. Jak zaokrąglić liczbę z np. 22,4 do 22 lub 58,5 do 59 ?
-
No mnie ta gra się bardzo podoba 9/10, ale jak dla mnie jest za bardzo rozbudowana (może to dziwnie brzi). Jeśli chodzi o MMORPG to wolałbym coś prostrzego jak Tibia, lecz gra jest fajnia i przyjemnie się w nią gra. Gra jak dla mnie byłaby lepsza w Single Player, tak jak Hidden Swords. Gra w nią pewnie dużo ludzi, i w mojego MMORPGa jak skończe pewnie będzie grało tak z 5x mniej... Ale i tak robię to dla frajdy. Szkoda też, że są tylko 2 servery :crying: lepiej by było jakby było ich więcej. Sam nie zrobiłbym tej gry lepiej, ale po prostu wolę inne typy.
-
Zrobiłem grę pod tytulem biegacz. Moim zdaniem na temat, bo ciąglę biegnie, można co prawda zwalniać, ale nie całkiem hamować. No jeśli nie liczyć pauzy xD. Dobra macie tu link.
-
Ja także bym prosił o dopisanie mnie
-
Hmm ... wygląda na to, że to błąd w tilesecie. Jest po prostu za duży. Żeby usunąć błąd musicie po prostu zmniejszyć tileseta (w backgrounds)
-
Witam. Zrobiłem kolejny przykład RPG(nazwa : RPG Example). Grafiki są wzięte z http://www.freemmorpgmaker.com więc nie czepiajcie się mnie o grafiki ;P. Przykład zawiera: - questy - siłę - obronę - wrogów - objekty blokujące - możliwość robienia screenów ( z rozszerzeniem ".jpg") - znaki - małą mapkę ;P Screeny są już spakowane. 100% moja robota. Przykład dla średnio zaawansowanych lub począdkujących. Większość starałem się robić na klockach, lecz jestem tak przyzwyczajony do szybkiego pisania kodem, że niektóre rzeczy napisałem kodem xD. Niestety zapomniałem zrobić w nim itemów i systemu rozmów, ale może w następnej wersji ... ;P Ściągajcie i oceniajcie : link.
-
Tytuł: Street Racer 3D demo Gatunek: Wyścigi, samochody Opis: Chciałbym przedstawić mój nowy projekt (niektóży już go wcześniej widzieli) a mianowicie samochodówkę w 3D! Grafiki może nie są najlepsze, i jeździ się klockiem (w tej grze to jest nowoczesny pojazd), ale mnie i tak się podoba. W demie jest tylko tryb jazdy po mieście, (w końcu to demo nie ;P?) lecz to się zmieni. Link niżej... Download: http://www.gmclan.org/up1146_3_Street_Racer_3D_demo.html Autorzy: 100% moja robota. Screeny: I to na razie tyle
-
Pomoc przy MMORPG
staniki odpowiedział(a) na swiatcienia temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
To lepiej do tego używać soc.dll czy 39dll? -
Pomoc przy MMORPG
staniki odpowiedział(a) na swiatcienia temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Jak już jest temat o 39dll to ja też mam pytanie. Przeczytałem tutriala z folderu z 39dll i jednej rzeczy nie kumam. Czy możliwe jest zrobić w tym grę massive multiplayer(tzn. dla więcej niż 2 graczy)? Jak to zrobić? -
Witam ponownie w moim temacie! Informuje iż skończyłem wersję programu 2.0! Zrobiłem kilka serverów(światów) a także możliwość stworzenia własnego świata. Jak już wspomniałem jest to chat do komunikowania się. Ta wersja jest także ulepszona (i upodobniona do Tibii) graficznie. Zachęcam do ściągania. Oficjalna strona Tibia Chatu Screenów na razie nie będzie. ;)