SimianVirus7 Opublikowano 23 Marca 2019 Udostępnij Opublikowano 23 Marca 2019 a ja myślałem, że dodanie () po nazwie skryptu definiuje go jako void. Dlatego jeśli chciałem aby mi zwrócił int'a to napisałem go bez nawiasów. Dzięki za odpowiedź, tego potrzebowałem kilka razy ale zawsze jakoś sobie radziłem na około Cytuj if(scr_arrow_can_hit() == 1) (...) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 23 Marca 2019 Udostępnij Opublikowano 23 Marca 2019 1 godzinę temu, SimianVirus7 napisał: a ja myślałem, że dodanie () po nazwie skryptu definiuje go jako void. Dlatego jeśli chciałem aby mi zwrócił int'a to napisałem go bez nawiasów. Dzięki za odpowiedź, tego potrzebowałem kilka razy ale zawsze jakoś sobie radziłem na około Bo bez nawiasów zwraca Ci inta, ale jest to identyfikator skryptu. Czasami użyteczne jak masz skrypt i jego ID przypisujesz do zmiennej. Wtedy możesz wywoływać ten skrypt funkcją script_execute. Np. var skrypt = scr_arrow_can_hit; // nie ma tutaj nawiasów script_execute(skrypt, parametr1, parametr2); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
godegode Opublikowano 25 Marca 2019 Udostępnij Opublikowano 25 Marca 2019 Robię turową strategię na kilku graczy, w każdej bazie można rekrutować jednostki (na obrazku zrekrutowana jednostka). Chcę, żeby pod tą symboliczną reprezentacją jednostki wyświetlana była liczba żołnierzy trzymana w lokalnej zmiennej number: draw_text(Jednostka.x+20,Jednostka.y+20,Jednostka.number); Moje pytanie: jak zrobić, żeby obiekt rysujący te liczby loopował wszystkie instancje Jednostki i rysował liczbę pod każdą z nich? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 25 Marca 2019 Administratorzy Udostępnij Opublikowano 25 Marca 2019 with (obj_jednostka) { draw_text(x+20,y+20,number); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 10 Kwietnia 2019 Udostępnij Opublikowano 10 Kwietnia 2019 Hej, sprawa dotyczy GMS1.4999. Jak sprawić , aby przy otwarciu kodu, okno było scrollowane do tego momentu, w którym ostatnio było zamknięte? Mam dość długi kod, zmieniam coś w środku, a następnie zamykam aby zatwierdzić zmiany i odpalam projekt. Potem otwieram kod ponownie, żeby coś zmienić i okno jest 'scrollnięte' znowu na samą górę, i muszę przekopywać się przez setki linijek kodu, żeby znaleźć interesujący mnie fragment, nad którym ostatnio siedziałem. Doprawdza mnie do szewskiej pasji, napewno jest jakiś prosty sposób aby temu zapobiec, proszę o porady. Z góry dziękuję nowy_user! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Kwietnia 2019 Administratorzy Udostępnij Opublikowano 10 Kwietnia 2019 Nie musisz zamykać okna - jak odpalasz projekt to i tak się on zapisuje. Ba, nawet jak masz otwarte okno i klikniesz zapisz (skrót czy ikona), to też sie zapisze to co masz otwarte. Generalnie, to chyba nawet nie da się poza ctrl+z anulować zmian to się w gms 1.2 albo 1.3 pojawiło. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 10 Kwietnia 2019 Udostępnij Opublikowano 10 Kwietnia 2019 Dzięki, jest to zawsze jakaś opcja Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Kwietnia 2019 Administratorzy Udostępnij Opublikowano 10 Kwietnia 2019 Masz chyba też zakładki ( bookmarks ), poczytaj w manualu. nowy_user 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 11 Kwietnia 2019 Udostępnij Opublikowano 11 Kwietnia 2019 Ooo i oto mi właśnie chodziło , teraz praca z GMem stanie się o wiele przyjemniejsza! Dzięki za pomoc gnysek 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 6 Maja 2019 Udostępnij Opublikowano 6 Maja 2019 Hej, mam pytanko, czy wie ktoś jaki jest GMLowy odpowiednik kliknięcia w przycisk 'Maksymalizuj' w oknie? Chodzi mi o ten przycisk: Ten przycisk sprawia, że okno się rozszerza , przy uwzględnieniu paska zadań. Okno jest więc prawie na całym ekranie, ale jest dopasowane do naszego paska zadań, niezależnie od tego, czy pasek jest na dole, czy z boku. Niestety, GMLowska funkcja window_set_fullscreen sprawia, że okno maksymalizuje się totalnie, wchodzi w stan full screen, i pasek zadań nie jest widoczny. Próbowałem funkcji window_set_size i display_get_width/height , ale niestety efekt nie jest taki sam jak przy kliknięciu przycisku 'Maksymalizuj' Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 6 Maja 2019 Administratorzy Udostępnij Opublikowano 6 Maja 2019 Nie ma takiej opcji. Trzeba by chyba dopisać DLL. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 22 Maja 2019 Administratorzy Udostępnij Opublikowano 22 Maja 2019 @nowy_user wydzieliłem Twoje pytanie o HTML5 do nowego tematu, bo to nie taka drobnostka wyszła: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 4 Czerwca 2019 Udostępnij Opublikowano 4 Czerwca 2019 Hej, mam pytanie, chciałbym zapisać sobie pewne statsy do pliku txt, z możliwością wyboru folderu, gdzie plik zostanie zapisany. Używam następującego kodu: var _file; _file = get_save_filename("project|*.txt", ""); if _file != "" { file_text_open_write(_file) file_text_write_string(_file, _savedane); file_text_close(_file); } } Program jednak crashuje z informacją: Cytuj File not opened for writing. at gml_Script_scr_save (line 171) - file_text_write_string(_file, _savedane); Nie rozumiem, zrobiłem wszystko tak jak jest przedstawione w manualu... czy o czymś zapomniałem? Pozdrawiam, nowy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 4 Czerwca 2019 Administratorzy Udostępnij Opublikowano 4 Czerwca 2019 @nowy_user Chyba nie wszystko jak w manualu, bo ja tam widzę jak do zapisywania w pliku używają zmiennej którą zwraca file_text_open_write, a Ty używasz tej od get_save_filename... var _path, _file; _path = get_save_filename("project|*.txt", ""); if (_path != "") { _file = file_text_open_write(_path); file_text_write_string(_file, _savedane); file_text_close(_file); } } Jedna funkcja zwraca ścieżkę, druga id pliku. nowy_user 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 4 Czerwca 2019 Udostępnij Opublikowano 4 Czerwca 2019 Rzeczywiście , umknęło mi to , dzięki za pomoc ! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 25 Czerwca 2019 Udostępnij Opublikowano 25 Czerwca 2019 Hej, mam pytanie, czy ktoś wie jak wyliczyć dokładną różnicę dni pomiędzy dwoma dniami ( tak żeby nie wskazywało jakichś głupot, gdy porównamy daty z dwóch różnych miesięcy lub dwóch różnych lat) w GM studio? Tworzę system, który ma za zadanie automatycznie zablokować dostęp do mojego programu po 14 dniach ( system trial ) i nie wiem do końca jak to zaimplementować . GM studio ma funkcję date_compare_daytime , ale to zwraca nam tylko informację, czy dana data jest wcześniejsza, czy późniejsza, bez dokładnego określenia różnicy dni pomiędzy nimi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 26 Czerwca 2019 Udostępnij Opublikowano 26 Czerwca 2019 gm:s posiada jeszcze current_day i current_month. Myślę, że sczytanie daty do zmiennych przy pierwszym uruchomieniu i później sprawdzanie czy minęło 14 dni, jest jakimś rozwiązaniem Tylko, że jeśli chcesz ominąć spryt użytkowników, musiałbyś sczytywać datę z internetu, bo tak lokalnie mogą sobie zmienić Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 26 Czerwca 2019 Udostępnij Opublikowano 26 Czerwca 2019 To akurat nie jest problem, mam w bazie datę rejestracji , i datę ostatniego logowania, więc mam te dwie daty. Problem w tym, że chcę porównać czy różnica w dniach pomiędzy dwoma datami to 14 dni. Ja wymyśliłem taki skrypt: var day1, month1, year1, day2, month2, year2; day1=25; month1=11; year1=2019; day2=3; month2=12; year2=2019; var difference; difference = ( day2+ceil((month2*30.5))+(year2*365) ) - (day1+ceil((month1*30.5)) + (year1*365) ) Teoretycznie działa, nie jest to super dokładny sposób i czasami, gdy daty są z różnych miesięcy albo lat to skrypt myli się o jeden dzień, ale na razie chyba mi to wystarczy. Gdyby ktoś miał lepszy pomysł to może napisać, w innym wypadku będę korzystał z tego, co sam wykombinowałem. EDIT O rany, pogrzebałem w dokumentacji i znalazłem funkcję: date_day_span(date1, date2); Problem uznaję zatem za rozwiązany Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 4 Lipca 2019 Udostępnij Opublikowano 4 Lipca 2019 Hej, czy serwer może narzucić mi limit długości stringa Json, który mogę wczytać z bazy MySQL? Mam problem, że gdy string Json jest dość długi, ale nie jakoś bardzo, (zawiera 13 500 znaków) to mogę go bez problemu zapisać do bazy MySQL, ale wczytać już nie bardzo. Przy krótszych string’ach działa bez zarzutu. Zastanawiam się, czy problem leży w moim kodzie w GM, czy jednak to serwer i jego ustawienia za to odpowiadają. Czy ktoś ma jakieś wskazówki? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 4 Lipca 2019 Udostępnij Opublikowano 4 Lipca 2019 Cześć, a dostajesz jakiś błąd, czy string jest niepełny? Jakiego typu jest to pole do którego zapisujesz jsona? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 4 Lipca 2019 Administratorzy Udostępnij Opublikowano 4 Lipca 2019 Rozumiem, że ten JSON jest czytany z mysql przez PHP ? Czy zatem jak wejdziesz z przeglądarki jest ok? Jeśli tak, no to GM ma limit. Jeśli nie, to winy bym szukał w PHP i pewnie będzie trzeba podzielić go jakoś. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 4 Lipca 2019 Udostępnij Opublikowano 4 Lipca 2019 20 minut temu, gnysek napisał: Rozumiem, że ten JSON jest czytany z mysql przez PHP ? Czy zatem jak wejdziesz z przeglądarki jest ok? Jeśli tak, no to GM ma limit. Jeśli nie, to winy bym szukał w PHP i pewnie będzie trzeba podzielić go jakoś. Dokładnie tak, JSON jest czytany z mysql przez PHP i mogę sobię go przejrzeć z poziomu przeglądarki w MyPhpAdmin. Co ciekawe, jeśli ustawię sobie w alarmie, aby ponowić próbę pobrania JSONA ( w przypadku gdy się nie uda za pierwszym razem) , i alarm ustawię np. na 60 stepów, no to co sekundę będzie próbować pobrać Jsona , ale nawet i po 20 powtórzeniach mu się nie uda, jeśli JSON jest długi. Natomiast... co jest mega dziwne.... jesli ustawię alarm na 1 step to dzieje się coś totalnie nieprzewidywalnego, ponieważ pierwsza próba pobrania JSONA jest nieudana ( to jest jeszcze zgodne z przewidywaniami ), ale.... następna jest już ok i pobiera JSONa nawet jeśli jest bardzo długi ! Czasami potrzebuje kilku prób, ale max 5-10 nawet przy bardzo długiej zmiennej... Dziwne jest to, że jak alarm ustawiam na np 60 stepów, to nawet i po kilkudziesięciu próbach nie wczytuje tego JSONa... a przy alarmie ustawionym na 1 step, max kilka prób... nie potrafię tego wytłumaczyć logicznie, ale muszę to zrozumieć, bo to rozwiązanie, które udało mi się wykombinować na chybił trafił zdaje się zbyt niestabilne, i nie chcę żadnych fakapów w przyszłości - zwłaszcza, że będę moją apkę sprzedawać. Czy ktoś ma jakikolwiek pomysł, dlaczego takie dziwne rzeczy się dzieją? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 4 Lipca 2019 Administratorzy Udostępnij Opublikowano 4 Lipca 2019 To co widzisz w phpmyadminie mnie średnio interesuje, pytałem o skrypt PHP, który robi jakieś echo czy coś. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 4 Lipca 2019 Udostępnij Opublikowano 4 Lipca 2019 Ten skrypt wygląda następująco: <?php header("Access-Control-Allow-Origin: *"); // Get config variables require_once 'include/Config.php'; // Get Database functions require_once 'include/DB_Functions.php'; $db = new DB_Functions(); // json response array $response = array("error" => FALSE); if (isset($_POST['unique_id']) && isset($_POST['save_code']) && isset($_POST['slot'])) { // receiving the post params $unique_id = $_POST['unique_id']; $save_code = $_POST['save_code']; $slot = $_POST['slot']; // Get user $info=$db->getUserByUserIdAndSaveCode($unique_id,$save_code); $user=$info[0]; switch ($slot) { case 1: // Check if all went ok if ($info[1]==""){ // All ok $error_info=""; $response["load_data"] = $user["save001"]; }else{ // Error $error_info=$info[1]; } break; case 2: // Check if all went ok if ($info[1]==""){ // All ok $error_info=""; $response["load_data"] = $user["save002"]; }else{ // Error $error_info=$info[1]; } break; case 3: // Check if all went ok if ($info[1]==""){ // All ok $error_info=""; $response["load_data"] = $user["save003"]; }else{ // Error $error_info=$info[1]; } break; case 4: // Check if all went ok if ($info[1]==""){ // All ok $error_info=""; $response["load_data"] = $user["save004"]; }else{ // Error $error_info=$info[1]; } break; case 5: // Check if all went ok if ($info[1]==""){ // All ok $error_info=""; $response["load_data"] = $user["save005"]; }else{ // Error $error_info=$info[1]; } break; default: $error_info = $slot . " saves slot don't exists!"; } if ($error_info=="") { $response["error"] = FALSE; } else { $response["error"] = TRUE; $response["error_msg"] = $error_info; } echo json_encode($response); } else { if (isset($_POST['share_code']) && isset($_POST['slot'])) { // receiving the post params $share_code = $_POST['share_code']; $slot = $_POST['slot']; // Get user $info=$db->getUserByShareCode($share_code); $user=$info[0]; switch ($slot) { case 1: // Check if all went ok if ($info[1]==""){ // All ok $error_info=""; $response["load_data"] = $user["share001"]; }else{ // Error $error_info=$info[1]; } break; case 2: // Check if all went ok if ($info[1]==""){ // All ok $error_info=""; $response["load_data"] = $user["share002"]; }else{ // Error $error_info=$info[1]; } break; default: $error_info = $slot . " save slot don't exists!"; } if ($error_info=="") { $response["error"] = FALSE; } else { $response["error"] = TRUE; $response["error_msg"] = $error_info; } echo json_encode($response); } else { if (isset($_POST['unique_id']) && isset($_POST['save_code']) && isset($_POST['row'])) { // receiving the post params $unique_id = $_POST['unique_id']; $save_code = $_POST['save_code']; $row = $_POST['row']; // Check if allow public if (GLOBAL_PUBLIC_1==FALSE) { // Get user $info=$db->getUserByUserIdAndSaveCode($unique_id,$save_code); $user=$info[0]; // Check if all went ok if ($info[1]=="") { $all_ok=TRUE; } else { $all_ok=FALSE; } } else { // Don't need user $all_ok=TRUE; } // Check if all went ok if ($all_ok){ // All ok $error_info=$db->loadVar($row); $new_value=$error_info["value"]; $error_info=$error_info["error"]; $response["value"] = $new_value; }else{ // Error $error_info=$info[1]; } if ($error_info=="") { $response["error"] = FALSE; } else { $response["error"] = TRUE; $response["error_msg"] = $error_info; } echo json_encode($response); } else { if (isset($_POST['row'])) { // receiving the post params $row = $_POST['row']; $error_info=$db->loadPublic($row); $new_value=$error_info["value"]; $error_info=$error_info["error"]; $response["value"] = $new_value; if ($error_info=="") { $response["error"] = FALSE; } else { $response["error"] = TRUE; $response["error_msg"] = $error_info; } echo json_encode($response); } else { // required post params is missing $response["error"] = TRUE; $response["error_msg"] = "Required parameters are missing!"; echo json_encode($response); } } } } ?> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 4 Lipca 2019 Udostępnij Opublikowano 4 Lipca 2019 A zrób requesta Postmanem i upewnij się, czy Ci ten skrypt zwraca całość tekstu i go nie ucina, to wtedy będzie ewidentnie gdzieś problem po stronie GMa. Raczej ten kod echo json_encode($response); Nie powinien powodować ucinania znaków, ale możesz na wszelki wypadek sprawdzić to funkcją json_last_error_msg. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 4 Lipca 2019 Administratorzy Udostępnij Opublikowano 4 Lipca 2019 Wciaż nie wiem, czy w przeglądarce widzisz to co chciałbyś otrzymać, czyli pełen JSON Od tego trzeba zacząć, jak nawet przeglądarka pokaże obcięty tekst, to winą będzie skrypt. Jak nie obcina, no to winny jest GM. Może jest jakiś timeout ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 4 Lipca 2019 Udostępnij Opublikowano 4 Lipca 2019 1 minutę temu, Konrad-GM napisał: A zrób requesta Postmanem i upewnij się, czy Ci ten skrypt zwraca całość tekstu i go nie ucina, to wtedy będzie ewidentnie gdzieś problem po stronie GMa. Raczej ten kod echo json_encode($response); Nie powinien powodować ucinania znaków, ale możesz na wszelki wypadek sprawdzić to funkcją json_last_error_msg. Ale mi nie ucina znaków, po prostu gdy JSON jest za długi to nie wczytuje go wcale a w debug message mam:http:// *adres strony www */load.php?: Load Failed! RESULT: undefined JSON zapisuje się poprawnie, problem jest z wczytaniem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 4 Lipca 2019 Udostępnij Opublikowano 4 Lipca 2019 To może znajdź, na którym etapie występuje u Ciebie ten problem, potem staraj się go naprawić. BTW. Zapisujesz tekst w bazie, musisz się upewnić, że format JSONa też jest poprawny. Edit. Albo timeout dostajesz od serwera, albo za mało pamięci masz przypisane do Nginxa/Apache i też przerywa połączenie. Sprawdź to Postmanem albo w przeglądarce (musisz formularz POST stworzyć, albo przerób skrypt na GETy), czy to samo dostajesz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
nowy_user Opublikowano 4 Lipca 2019 Udostępnij Opublikowano 4 Lipca 2019 Ok postaram się to ogarnąć, najdziwniejsze jest to, że jak próbuję forsować wczytanie danych ( gdy się nie uda to ustawiam alarm[0] na 1 step który ponawia próbę i tak w kółko ) to zaledwnie po kilku próbach wczytuje tego Jsona, nawet jeśli jest on kilkukrotnie dłuższy. Jeśli alarm[0] ustawię na 30 lub 60 stepów, to wtedy nawet po 20 próbach ma problem z wczytaniem tego Jsona , to jest bardzi dziwne ... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 4 Lipca 2019 Administratorzy Udostępnij Opublikowano 4 Lipca 2019 Dlatego musisz wiedzieć czy serwer w przelądarce też zwraca tego jsona, czy może to strona .php się wywala randomowo z braku pamięci. Skoro nie masz pojęcia, czy adres który odpytujesz prawidłowo zwraca dane to jak chcesz szukać błędu? Może GM wcale nie ma błędu? Napisz osobny skrypt pod innym adresem który tylko daje to echo i na nim sprawdź na razie. 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ę