Apox Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 Czy mógłby mi ktoś wyjaśnić łopatologicznie jak połączyć dziłanie MySql i GM? MySql mam dobrze opanowany (pisałem kiedyś grę w php), ale z GM walczę od niedawna. Moim celem jest gra RPG, która w przyszłości przekwalifikuje się na MMORPG (moje umiejętności odnośnie MMO są bliskie zeru więc na razie zostawiam to w spokoju). Potrzebuję bazy danych i nie wiem jak połączyć te dwie rzeczy (GM i MySql), jak łączyć się z serwerem, jak pytać o argumenty. Serwer MySql stanie na moim kompie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 Jeżeli masz GM w wersji PRO (zarejestrowanej) możesz używać bibliotek, np GMSql (do bazy MySQL) lub 39dll (wtedy piszesz w php skrypt do odnoszenia sie do bazy danych [lepsze wyjscie bo nie trzymasz hasla do bazy w aplikacji] i odwołujesz się przez zapytania http)... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 26 Lutego 2010 Administratorzy Udostępnij Opublikowano 26 Lutego 2010 Należy pamiętać, że większość serwerów MySql może odbierać połączenia tylko z maszyny na której stoi (localhost) zatem z bezpośrednio z GM MySql będzie działał jedynie na własnym komputerze (chyba, że admin publicznego serwera skonfiguruje MySql inaczej, w co wątpię, bo robi się tak dla bezpieczeństwa). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Apox Opublikowano 26 Lutego 2010 Autor Udostępnij Opublikowano 26 Lutego 2010 Pietrek: Z tego jak to rozumiem to biblioteka daje możliwość odwoływania się z poziomu GM do http? W ten sposób łączę się ze skryptem w php na serwerze i ten odnosi się do MySql? Rozumiem też, że w ten sposób problemu gnyska nie ma (połączenie z MySql nie jest bezpośrednie tylko przez php)? No i czy jest inne wyjście jeśli nie mam GM PRO? gnysek: O tym już gdzieś na forum czytałem. Adminem serwera publicznego jestem ja, więc no preoblemo :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 Pietrek: Z tego jak to rozumiem to biblioteka daje możliwość odwoływania się z poziomu GM do http? W ten sposób łączę się ze skryptem w php na serwerze i ten odnosi się do MySql? Rozumiem też, że w ten sposób problemu gnyska nie ma (połączenie z MySql nie jest bezpośrednie tylko przez php)? No i czy jest inne wyjście jeśli nie mam GM PRO? gnysek: O tym już gdzieś na forum czytałem. Adminem serwera publicznego jestem ja, więc no preoblemo :P 1. Pieter a nie Pietrek :P 2. Tak, z php problem znika, zostaje tylko obmyślić system by nikt go nie nadużywał. 3. bez PRO nie da rady... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Apox Opublikowano 26 Lutego 2010 Autor Udostępnij Opublikowano 26 Lutego 2010 OK, sorka Pieter :) Chyba każde hobby wymaga inwestycji... Czas docenić twórców GM :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 26 Lutego 2010 Udostępnij Opublikowano 26 Lutego 2010 Bez pro jest jedynie możliwe wysłanie zapytania GET otwierając jednocześnie przeglądarke co niezbyt ciekawie wyglądać będzie :] execute_shell('http:/www.serwer.pl/skrypt.php?zmienna=argument') problemem jednak będzie pobranie informacji z bazy. Podsumowując, UPGRADE TO PRO NOW. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Apox Opublikowano 27 Lutego 2010 Autor Udostępnij Opublikowano 27 Lutego 2010 Doradźcie. Zakładając, że: mam serwer w domu, zewnętrzne IP, stworzony client i server w GM, który wymienia dane przez 39dll, MySql na tym samym serwerze. Użyć gmsql i bezpośrednio łączyć z servera do MySql, czy tak jak wcześniej radziliście łączyć się z MySql przez php (wtedy użyć rm_http?)? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piczer Opublikowano 27 Lutego 2010 Udostępnij Opublikowano 27 Lutego 2010 Na pewno php jako pośrednik przedłuży czas reakcji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 28 Lutego 2010 Udostępnij Opublikowano 28 Lutego 2010 Na pewno php jako pośrednik przedłuży czas reakcji. a ja nie widzę sensu, by wstawiać hasło i dane do bazy w aplikacji... Przecież to kwestia sekund by do takiej bazy się wtedy włamać... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 28 Lutego 2010 Udostępnij Opublikowano 28 Lutego 2010 Kiedy dostęp do MySQL będzie miał tylko serwer, a ten będzie dostępny tylko dla administratora :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 28 Lutego 2010 Udostępnij Opublikowano 28 Lutego 2010 Kiedy dostęp do MySQL będzie miał tylko serwer, a ten będzie dostępny tylko dla administratora :P no chyba, że tak, ale jeżeli klient ma mieć dostęp (np do scoreboard) to bezpieczniej z php... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Apox Opublikowano 28 Lutego 2010 Autor Udostępnij Opublikowano 28 Lutego 2010 Dzięki za wszystkie odpowiedzi, ale mam kolejne pytanie. Wymyśliłem 2 sposoby na przesyłanie np. współrzędnych pomiędzy graczami. Pierwszy pomysł: współrzędne gracza A wysyłane są z clienta do servera, server pobiera dane pozostałych zalogowanych graczy przebywających w tym samym roomie z bazy danych i przesyła do nich współrzędne gracza A. Będzie to chyba skutkowało zbyt dużą ilością zapytań do bazy danych. Drugi sposób opiera się na potraktowaniu servera jak clienta, ale nie wiem czy to zadziała jeśli będzie kilka równorzędnych roomów: współrzędne gracza A wysyłane są z clienta do servera (tutaj serwer działa jak client), server tworzy (przesuwa) gracza A w swoich roomach na danych współrzędnych i zwraca do gracza A współrzędne wszystkich graczy stworzonych w danym roomie. Co sądzicie? Może poradzicie lepsze rozwiązanie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 1 Marca 2010 Udostępnij Opublikowano 1 Marca 2010 Wysyłaj współrzędne graczy tylko gdy się poruszają. Zmniejszy to ruch na servie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Apox Opublikowano 1 Marca 2010 Autor Udostępnij Opublikowano 1 Marca 2010 To wiadome, ale głównie chodzi mi o to, czy wysyłać do wszystkich graczy współrzędne gracza obciążając server, czy bazę danych. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 1 Marca 2010 Udostępnij Opublikowano 1 Marca 2010 server, po co bazę?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lechu4444 Opublikowano 1 Marca 2010 Udostępnij Opublikowano 1 Marca 2010 Zawsze mnie zastanawiało czemu nie można zrobić wysyłania danych p2p czyli wysyłamy swoje współrzędne na serwer. Serwer robi z tego plik i wysyła do kilku graczy a Ci gracze wysyłają reszcie to by znacznie odciążyło serwa przynajmniej tak mi się wydaje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 1 Marca 2010 Udostępnij Opublikowano 1 Marca 2010 Zawsze mnie zastanawiało czemu nie można zrobić wysyłania danych p2p czyli wysyłamy swoje współrzędne na serwer. Serwer robi z tego plik i wysyła do kilku graczy a Ci gracze wysyłają reszcie to by znacznie odciążyło serwa przynajmniej tak mi się wydaje. ale tak działają serwery... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Apox Opublikowano 3 Marca 2010 Autor Udostępnij Opublikowano 3 Marca 2010 Używam gmsql.dll, ale coś mi nie wychodzi i nie wiem dlaczego. Server działa na tym samym komputerze co baza MySql. Baza danych nazywa się "apox". W bazie istnieje tylko jedna tabela "gracze". W tabeli 3 pola: "id, int, auto_increment", "nick, char(20)" i "haslo, char(20)". Co robię źle? GML gmsql_init(); gmsql_connect('127.0.0.1:3306','root','******','apox'); gmsql_query("insert into `gracze` (id,nick,haslo) values ("","'+zmienna1+'","'+zmienna2+'")"); Edit: Nie wyskakuje żaden błąd, ale w tabeli brak jakiegokolwiek nowego rekordu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 3 Marca 2010 Udostępnij Opublikowano 3 Marca 2010 W funkcji gmsql_query wstaw apostrofy zamiast cudzysłowów na początku i końcu gmsql_query('insert into `gracze` (id,nick,haslo) values ("","'+zmienna1+'","'+zmienna2+'")'); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 3 Marca 2010 Udostępnij Opublikowano 3 Marca 2010 GML gmsql_query("INSERT INTO gracze (id,nick,haslo) VALUES ('','"+zmienna1+"','"+zmienna2+"')"); poprawiony... mój i Nobody'ego kod jest poprawny... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Apox Opublikowano 4 Marca 2010 Autor Udostępnij Opublikowano 4 Marca 2010 Nadal mi nie działa, ale zrobiłem taki test: GML nick_new = 'apox' show_message ('1'); haslo_new = 12345 show_message ('2'); gmsql_init(); show_message ('3'); gmsql_connect('127.0.0.1:3306','root','***','apox'); show_message ('4'); gmsql_query("INSERT INTO gracze (id,nick,haslo) VALUES ('','"+nick_new+"','"+haslo_new+"')"); show_message ('wysłano'); Wiadomość 1 i 2 się pokazują, później gra się zatrzymuje (czasami wiesza), więc wychodzi na to, że dll nie może się zainicjować. Możliwe, że mam jakiś felerny dll lub skrypty, bo wziąłem je z jakiegoś artykułu. Możecie powiedzieć skąd wziąć pewne dll i skrypty? Edit: Już znalazłem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę