Skocz do zawartości

Co robi dany kod?


BATOREX

Rekomendowane odpowiedzi

Czyli np tworzę clienta gry, oraz serwer. Włączam serwer i podczas pracy serwera jest możliwe zmienianie punktów graczy?

Bo jeżeli tak to świetnie bo takiego czegoś potrzebuje ;)

 

 

A i takie pytanko, nie mogłem znaleźć tego, w jaki sposób dodać grafikę wcześniej już zrobioną aby chodziła wraz z graczem i żeby na niej pisała ilość pkt? Co do ilości pkt to wiem jak porobić takie zmienne, pytam tylko o dodanie grafiki podążającej za graczem :P

Odnośnik do komentarza
Udostępnij na innych stronach

GML
draw_sprite(spr_obrazek, 0, obj_gracz.x, obj_gracz.y - 10);

Nie wiem czy czasem argumentów nie pomyliłem, ale powinno być dobrze.

 

Tak jak napisał ediepl, w grze multiplayer to jest podstawa. Klient nie powinien móc zmieniać ilości punktów, tylko klient wysyła do serwera na ile punktów chciałby zmienić, a serwer sprawdza czy tak można, etc. Serwer wykonuje wszystkie obliczenia, a klient tylko przedstawia wyniki.

 

BTW. Nie bierz się na razie za multiplayer skoro nie potrafisz zrobić tego, o co pytałeś.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
draw_sprite(spr_obrazek, 0, obj_gracz.x, obj_gracz.y - 10);

Nie wiem czy czasem argumentów nie pomyliłem, ale powinno być dobrze.

 

Tak jak napisał ediepl, w grze multiplayer to jest podstawa. Klient nie powinien móc zmieniać ilości punktów, tylko klient wysyła do serwera na ile punktów chciałby zmienić, a serwer sprawdza czy tak można, etc. Serwer wykonuje wszystkie obliczenia, a klient tylko przedstawia wyniki.

 

BTW. Nie bierz się na razie za multiplayer skoro nie potrafisz zrobić tego, o co pytałeś.

 

Hehe dzięki to też się przyda, może nie o to mi do końca chodziło, bo chciałbym żeby to razem z oknem szło a nie koniecznie za mną :D

A co do serwera, to miałem na myśli to że ja jako administrator mógłbym cokolwiek zmienić w ustawieniach graczy a nie że oni sami :D

 

Jak zadajesz pytania pokroju tego poprzedniego to nie rzucaj się na multi, w kazdym razie nie po sieci. Jak chodzi o zapisywanie informacji graczy - https://gmclan.org/index.php?wiki=article&zm=29

 

Ahh fajnie by było, no cóż, ale to dopiero chyba mój 6 dzień zabawy w GM więc odstawię sobie to na później.

 

Pozostaje Ci tylko ćwiczyć. Później wszystko zacznie Ci się wydawać banalne, tylko trzeba zacząć myśleć "programistycznie". Moje początki z GM też nie były wcale lepsze, więc się nie załamuj :D

 

Mam nadzieję, bo na początku naprawdę łatwo nie jest ^^

Odnośnik do komentarza
Udostępnij na innych stronach

No to

GML
draw_sprite(spr_obrazek, 0, view_xview[0] + 10, view_yview[0] + 10);

 

W sprawie tego serwera, to wiem o co ci chodziło, ale napisałem w jaki sposób działają ogólnie gry online.

Tak naprawdę, to wystarczy, że się nauczysz if'a, switch'a, tablic i tych innych podstaw, a reszta to po porostu poznawanie funkcji, czytanie dokumentacji (do czego dana funkcja służy i jak jej użyć).

Odnośnik do komentarza
Udostępnij na innych stronach

Z tego sam nie mogłem się połapać jak byłem nowy, więc ci wytłumaczę.

 

Każda zmienna potrafi przechować jedną wartość, np. ilość punktów.

Jako przykład, dam ekwipunek we własnej grze. Każdy slot to będzie oddzielna zmienna, do przechowana ID przedmiotu.

Można zrobić tak:

GML
global.eq0=0;

global.eq1=0;

global.eq2=0;

global.eq3=0;

//itd...</span></span></span></span></span></span>

Jest to nieco uciążliwe, i jeśli byśmy mieli tych slotów ok. 20, to bez sensu byłoby, np. sprawdzanie w jakimś skrypcie w którym slocie znajduje się dany przedmiot.

Z pomocą przychodzą tablice. Są to zmienne, ugrupowane koło siebie pod jedną nazwą, ale pod innym indeksem.

Np.

GML
global.eq[0]=0;

Przypisujemy do tablicy "global.eq" do jej ideksu o numerze "0" wartość 0. Podczas inicjacji tablicy nie musimy wypisywać po kolei:

GML
global.eq[0]=0;

global.eq[1]=0;

global.eq[2]=0;

global.eq[3]=0;

tylko można to zrobić za pomocą pętli "for".

GML
for(i=0; i<10; i+=1)

{

global.eq=0;

}

Pętla for jest tj. licznikiem. Pierwszy argument po nawiasie to inicjacja zmiennej, która będzie się zwiększać w każdym przebiegu pętli o, w tym przypadku, 1. Drugi argument to warunek, tzn. że pętla będzie "odliczać" dopóki zmienna licznikowa jest mniejsza od 10. Trzeci argument o jaką wartość ma się zwiększać licznik przy każdym przebiegu pętli. Każdy argument pętli for należy rozdzielać średnikiem (;).

Dzięki pętli "for" możemy błyskawicznie zainicjować tablicę.

 

GML
for(INICJACJA; WARUNEK; ZWIEKSZANIE)

{

CIAŁO

}

Pętla for działa tak:

1. INICJACJA

2. WARUNEK - jeśli jest PRAWDĄ to wykonaj punkt 3, 4 i 5 (po kolei). Jeśli jest FAŁSZEM to wyjdź z pętli.

3. CIAŁO

4. ZWIEKSZANIE

5. Przejdź do punktu 2.

 

Kilku zmiennych nie da się zainicjować w taki sposób, ponieważ zmienne mają inną nazwę, a tablica ma jedną nazwę i pod różnymi jej indeksami są różne liczby.

Jeśli nie rozumiesz tablic, to wyobraź sobie to jako taką tablicę do przypinania jakiś karteczek itp. Uznajmy, że karteczka to jest zmienna. Na jednej takiej tablicy (np. korkowej :P) zmieścisz kilka takich karteczek i są one uporządkowane w jednym zbiorze, tzn. na tej tablicy. Kiedy przypniesz karteczkę do ściany, to ta liczba będzie tak jakby "sama".

 

Myślę, że pomogłem :)

Odnośnik do komentarza
Udostępnij na innych stronach

Z tego sam nie mogłem się połapać jak byłem nowy, więc ci wytłumaczę.

 

Każda zmienna potrafi przechować jedną wartość, np. ilość punktów.

Jako przykład, dam ekwipunek we własnej grze. Każdy slot to będzie oddzielna zmienna, do przechowana ID przedmiotu.

Można zrobić tak:

GML
global.eq0=0;

global.eq1=0;

global.eq2=0;

global.eq3=0;

//itd...</span></span></span></span></span></span></span>

Jest to nieco uciążliwe, i jeśli byśmy mieli tych slotów ok. 20, to bez sensu byłoby, np. sprawdzanie w jakimś skrypcie w którym slocie znajduje się dany przedmiot.

Z pomocą przychodzą tablice. Są to zmienne, ugrupowane koło siebie pod jedną nazwą, ale pod innym indeksem.

Np.

GML
global.eq[0]=0;

Przypisujemy do tablicy "global.eq" do jej ideksu o numerze "0" wartość 0. Podczas inicjacji tablicy nie musimy wypisywać po kolei:

GML
global.eq[0]=0;

global.eq[1]=0;

global.eq[2]=0;

global.eq[3]=0;

tylko można to zrobić za pomocą pętli "for".

GML
for(i=0; i<10; i+=1)

{

global.eq=0;

}

Pętla for jest tj. licznikiem. Pierwszy argument po nawiasie to inicjacja zmiennej, która będzie się zwiększać w każdym przebiegu pętli o, w tym przypadku, 1. Drugi argument to warunek, tzn. że pętla będzie "odliczać" dopóki zmienna licznikowa jest mniejsza od 10. Trzeci argument o jaką wartość ma się zwiększać licznik przy każdym przebiegu pętli. Każdy argument pętli for należy rozdzielać średnikiem (;).

Dzięki pętli "for" możemy błyskawicznie zainicjować tablicę.

 

GML
for(INICJACJA; WARUNEK; ZWIEKSZANIE)

{

CIAŁO

}

Pętla for działa tak:

1. INICJACJA

2. WARUNEK - jeśli jest PRAWDĄ to wykonaj punkt 3, 4 i 5 (po kolei). Jeśli jest FAŁSZEM to wyjdź z pętli.

3. CIAŁO

4. ZWIEKSZANIE

5. Przejdź do punktu 2.

 

Kilku zmiennych nie da się zainicjować w taki sposób, ponieważ zmienne mają inną nazwę, a tablica ma jedną nazwę i pod różnymi jej indeksami są różne liczby.

Jeśli nie rozumiesz tablic, to wyobraź sobie to jako taką tablicę do przypinania jakiś karteczek itp. Uznajmy, że karteczka to jest zmienna. Na jednej takiej tablicy (np. korkowej :P) zmieścisz kilka takich karteczek i są one uporządkowane w jednym zbiorze, tzn. na tej tablicy. Kiedy przypniesz karteczkę do ściany, to ta liczba będzie tak jakby "sama".

 

Myślę, że pomogłem :)

 

 

14 lat i potrafisz tłumaczyć tak by wszystko było zrozumiałe :D

Po prostu szacun :D

Jak będę miał czas to spróbuję coś z tą tablicą wykombinować :)

Dzięki wielkie naprawdę :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Nikt nie mowi, ze petla sie musi zwiekszać. Może się zmniejszać, dzielić, mnożyć...

 

for (<wyrazenie1>; <warunek>; <wyrazenie2>) {<wyrazenie3>}

 

Kroki: Pierwsze wyrażenie jest wykonywane. Sprawdzany jest warunek - jeśli jest prawidłowy, wykonywane jest wyrazenie3, potem wyrazenie 2 i wracamy do kolejności warunek-wyrazenie3-wyrazenie2 tak długo, jak warunek zwraca prawdę

 

Dobrym przykładem jest moja implementacja foreach:

 

https://forum.gmclan.org/index.php?showtopic=27852

 

GML
for( each('tablica',10); as; key_value())

 

Wciąż prawidłowa pętla ;)

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Cześć!

 

Znowu ja, da się może rysować obiekty na oknie gry które wraz z nim się poruszają?

Chciałbym zrobić coś w formie przycisku, np że naciskam prawym i kupuje mi przedmiot. Z tym kupowaniem sobie poradzę tylko o te rysowanie pytam bo nie wykombinowałem nic :(

Odnośnik do komentarza
Udostępnij na innych stronach

Lol serio po tobie Utermiko bym się tego nie spodziewał :jezor: .

Poprawka:

GML
//STEP TEGO OBIEKTU

x=odleglosc_od_ekranu_w_pionie+view_xview[0];

y=odleglosc_od_ekranu_w_poziomie+view_yview[0];

No ale jak stworzy obiekt na x=10, y=20 to x tego obiektu będzie miało 10 i y tego obiektu będzie miało 20

GML
x=10+view_xview[0];

y=20+view_yview[0]

Więc na to samo wychodzi. Nawet z ciekawości sprawdziłem i działało.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...