-
Postów
1 970 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez Dawidds
-
Jakie wy macie wymogi na piątkę O.o ? 85,7% > 85% -> bdb, bynajmniej w mojej szkole...
-
Wyjaśnij dokładniej. Chcesz sprawdzić, czy gdzieś w którymś rzędzie wystąpiło słowo "gra"? GML rzadek = 0; repeat(h-1) { znak = 0; tekstrzadku = ""; repeat(w-1) { tekstwrzadku += char[znak, rzadek]; if(char[znak, rzadek] == "") //Jesli to pole jest puste, to traktuje to jako spacje { tekstwrzadku += ""; } znak += 1; } //teraz w zmiennej tekstwrzadku mamy caly tekst w jendym rzedzie. if(string_count("gra", tekstwrzadku)) //jesli gdzies w tym rzadku wystapilo slowo gra { ... } rzadek += 1; }
-
Nie przepraszaj, to zuy Tiger wykorzystał Twoje niedomówienie do zaspamienia :) https://gmclan.org/up3008_12_krzyzoweczka.html
-
A chociażby: GML //Create w = 10; h = 10; //deklarujesz se tablice char[0-9, 0-9] = "" cx = 0; cy = 0; //Step if(keyboard_check_pressed(vk_right)) { cx += 1; } //tutaj inne kierunki if(cx > w-1){ cx=w-1; } if(cy > h-1){ cy=h-1; } //zabezpieczneie przed wyjechaniem kursorem poza krzyzowke if(cx < 0){ cx=0; } if(cy < 0){ cy=0; } if(keyboard_string != "") //jesli mamy nowy znak { char[cx, cy] = string_char_at(keyboard_string, 0); //ustawiamy znak do zaznaczonego pola keyboard_string = ""; } //Draw //malujesz sobie jakas siatke, nawet sprite (tlo krzyzowki) xx = 0; yy = 0; repeat(w*h) { draw_text(xx*20, yy*20, char[xx, yy]); //malujemy znak //przesuwamy sie w petli if(xx >= w-1) { xx = 0; yy += 1; } } //malujemy kwadracik (zaznaczenie) draw_rectangle(cx*20, cy*20, cx*20+20, cy*20+20, 1); Ed: Weźcie dodajcie do regulaminu punkt, że odpowiadanie na posty w Pytaniach Początkujących jednym słowem jest karane. Każdy dobrze wie, że pisząc "czy się da" autor tematu ma na myśli "jak", a już nie pierwszy raz widzę sytuację, jak ktoś nabija sobie posty w taki sposób...
-
To jest według Ciebie kwestia upodobań :/ ? Jeśli gra ma się składać z pikseli, to niech rzeczywiście grafika się składa z pikseli, a nie, niby piksele 2x2, a jednak przedmioty obracają się "per-pixel". Weź wskaż konkretnie, co Ci się w tym poście nie podobało, bo serio zacznę się martwić, że coś ze mną jest nie tak... ;| Napisałem swoje zdanie co do pikselowych grafik, i stwierdziłem (w pewnym sensie ;p), że nie masz racji co do dwukrotnego spadku szybkości gry - jak nie wierzysz, to sprawdź.
-
A bo nie: 1. W pikselowej grze zrobionej skalowanymi spritami widać, jak piksele np. bohatera znajdują się na przecięciu pikseli tła. 2. Podobna sprawa z obracanymi grafikami. 3. Jakby nie patrzeć, trochę więcej waży... ;d Ło kurde, teraz poszalałeś :0 Musiałem =(
-
GML if(place_meeting(x+sprite_width, y, obj_wall) && keyboard_check_pressed(vk_up) && keyboard_check(vk_right)) { hspeed = -4; } Aby działało musisz mieć ruch platformowy "z przyspieszaniem".
-
Anime Studio (ew), Flash, Photoshop i "inteligentne obiekty" - może nie do tego stworzone ale dość wygodne narzędzie, a nawet Blender się wpasuje.
-
Wszystkie pikselowe gry na tym forum miały skalowane sprity (albo żeby nie było, większość) ;D
-
Pierwsze dwa lepsze, i to dużo :P
-
Ten niebieski smoczek na ścianie kompletnie nie pasuje do reszty grafik, reszta spoko - fajnie wyglądają bąbelki w lawie ;d
-
Ja osobiście preferuję tak: GML //obj_server //Create //zadelkarowanie tablicy player[15] //Step if(nowy gracz) { ok=0; i=0; repeat(maxplayers) { if(player == -1) { ok=1; break; } i+=1; } if(ok) { ins = instance_create(0, 0, obj_client); player = ins; ins.playerid = i; ins.socket = socketgraczaktorysiepodlaczyl; } else { //nie ma miejsca : ( } } //obj_client //Step //tutaj odbieranie ifnormacji od tego konkretnego gracza i odpowiednie reagowanie na nie</span></span> I tak, w tablicy player (warto ją globalną zrobić) mamy sobie id instancji gracza na danym slocie - a numer indeksu tablicy jest właśnie tym id gracza. I tak np. aby poznać hp gracza o id 7: GML player[7].hp W obj_server dajemy globalne akcje typu podłączanie konkretnego gracza czy obsługa czatu, a w obj_client te dotyczące konkretnego gracza - czyli używanie itemów, poruszanie, atak itd.
-
Pozwolę sobie odesłać Cię do przykładu/endżajnu: ;d http://gmc.yoyogames.com/?showtopic=263183 Nie wiem, jak przechowujesz dane graczy (tablica/instancje), ale z socketem danego gracza i innymi informacjami o nich musisz wiązać też przecież jego id. W przypadku wersji tablicowej np. GML player[0-15] = id playera na danym "slocie" (-1 jak wolne) socket[idplayera] = socket gracza o danym id hp[idplayera] = hp racza o danym id, itd. Lub na instancjach:GML player[0-15] - to co wyzej, ale przechowuje id instancji (np. obj_client) //I w obj_client przechowujesz sobie socket, i zamiast 1 wielkiej pętli w obj_server odbierac/wysylac informacje o wszystkich graczach, to w obj_client odbierasz/wysylasz dane //odpowiedzalnie za konkretnie tego gracza, ktorego dotyczy obj_client</span> Chociaż metodę przechowywania informacji o graczach możesz sobie zmienić zależnie od tego, jak Ci wygodniej. I to, co (wersja z obj_client) dana instancja obj_client odbierze, wykonuje dla siebie (no, sprawdzając, czy to ma sens (kiedy ostatnio gracz atakowal, czy jak daleko się przesunął (to uwzględniając czas, który minął od jego ostatniej odpowiedzi)). No i informacje typu siła ataku, typ itemu do zmiany (użycia/przesunięcia/itepe), hp czy level przechowujesz na serwerze - no ale to już gnysek napisał.
-
Z tego co on napisał, to on nie jest w stanie "od razu" rozpoznać, od kogo (id playera) dostał daną wiadomość - a jeśli tak jest to jest "dziadosko napisane". "dziadosko napisane" jest, jeśli właśnie nie jest w stanie sam określić id gracza.
-
LOL. 1. A próbowałeś może zrobić screena guzikiem Print Screen... :) ? 2. Nie wiem, jak z tym wciskaniem guzika dokładnie jest, ale nawalanie w przycisk 10 minut przed rozpoczęciem gry wygląda średnio zachęcająco :D
-
Po kij ci id playera :P ? Przecież chyba wiesz, od kogo które dane dostajesz, no chyba, że to jakoś dziadosko napisałeś =d Ogólnie to jest tak, jak powiedział gnysek, nie i przesuwa, tylko A on sprawdza, czy może, i jak może, to przesuwa. Podobnie z atakiem itepe.
-
PsichiX, a nie łatwiej zrozumieć to samo tylko z użyciem point_ditance() :P ? Zresztą, jemu chyba nie o to chodziło, on chce direction o 15 większy, a dystans ma pozostać ten sam. GML dir = point_direction(a.x, a.y, b.x, b.y); dist = point_distance(a.x, a.y, b.x, b.y); a.x = b.x+lengthdir_x(dist, dir+15); a.y = b.y+lengthdir_y(dist, dir+15);
-
Pokaż cały kod, ewentualnie zacenzuruj niepotrzebne, bo tak jak napisałeś to powinno działać. Spróbuj dać co linijkę od zadeklarowania hisspeed: GML show_message(string(variable_local_exists("hisspeed")));
-
Ta co Wojzax pokazał jest najładniejsza z ostatnich 3 stron. ...tylko w takim razie ja też jestem głupi :(
-
Tak właśnie działają gmowe solidy, cofają obiekt do poprzedniej pozycji :P Użyj zamiast solidów place_meeting(), czy coś w ten deseń.
-
Hehe, dzięki za wyjaśnienie. Dopiero co zastanawiałem się, po kiego grzyba nie mogę sterować ludkiem tylko jakąś rurą, i to na dodatek sterowanie jest odwrotne... ;| W ilu klatkach działa ta gra? Bo serio sprawia wrażenie, jakby działała w 15, a fraps nie działa na Allegro, więc nie sprawdzę.
-
Albo idź na łatwiznę - gmftp :)
-
Dla tego, czego on wymaga, wystarcza: GML //regenerateStart(hp, time) rg_hp = argument[0]/argument[1]; rg_timer = argument[1]; //regenerateStep() if(rg_timer) { hp += rg_hp; rg_timer -= 1; } //rgCheck() return !!rg_timer; Wcisnąć gdzieś to jedno wywołanie regenerateStep to chyba nie problem, a tak mamy krótszy (i minimalnie szybszy ;d) kod (przez ten czas można coś innego zacząć robić, a jak wrócisz do projektu po czasie, to szybciej się zorientujesz bez komentarzy, co kod robi). Twoje rozwiązanie za to jest bardziej uniwersalne, nie wymaga wstawiania niepotrzebnego kodu w create i stepa, i można go zastosować do paru obiektów/pare razy do tego samego naraz, no ale, Haello chyba tego nie potrzebuje. PsichiX, to teraz Ty pokaż, jak byś to zrobił ;D Ciekawi mnie, czy tylko dla Tymona taki kod jest wygodniejszy, czy wszyscy pro tak piszą. Wtedy sam zacznę tak pisać (tak, żarto-ironia :>).
-
Jak dla mnie wygodniej: GML //Step if(regtime) { hp += 0.05; regtime -= 1; } //Uruchomienie regeneracji regtime = 180;
-
Przykład smug za pociskami (czy czymś takim)
Dawidds odpowiedział(a) na Dawidds temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Nobody, te 500pkt miałeś zwalniając czy nie :P ? Bo zwalniając to spokojnie można tyle wyrobić, lol (dodam jakiś pasek many, czy coś w ten deseń). Smuga się aktualizuje co dwa stepy dla optymalizacji, no ale dobra, mogę poprawić.