Skocz do zawartości

XxMichałxX

Zbanowani
  • Postów

    866
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez XxMichałxX

  1. hm.. nie wiem czy ktos wyzej o tym napisal bo nie chce mi sie czytac ale tak: jest pare rzeczy które trzeba poprawić, np nie pokazuje gdy ktos odszedl z gry lub gdy okno nie jesst aktywne to strasznie sie tnie.. nie wiem czy to tylk tak u mnie.. no ale ogólnie wypasione 4.5/5
  2. żal. odemnie żenułke ściągnał i sie cieszy ;]

  3. ustaw sobie na roomie zawodników dwoch druzyn i na jakiegos jak klikniesz to get_integer podaj skilla i z jednej druzyny przelicza skilla, z drugiej - odejmuje mniejsze od drugiego i masz wynik meczu ;]
  4. https://forum.gmclan.org/index.php?showtopic=17529
  5. Wiem, że jest już dużo takich kursów, ale niektórzy nie potrafią znaleźć, więc dodam jeszcze jeden dla zwiększenia szans odnalezienia :P No to tak: 1. Ściągamy 39dll.dll. 2. Importujemy skrypty do gm. 3. Zapisujemy gdzieś projekt i do tego folderu wkładamy 39dll.dll. 4. Inicjujemy bibliotekę: GML //create: dllinit(0,1,0) /* Argument0: Jeżeli mamy w folderze z projektem 39dll.dll to dajemy 0, jak nie to ścieżkę do niego. Argument1: True, jeżeli chcemy załadować funkcje socketów. Argument2: True, jeżeli chcemy załadować "utilities". No i ogółem to nam ładuje bibliotekę - inicjuje ją. */ 5. Tworzenie serwera: GML //create: socket=tcplisten(12000,30,1) //tworzymy socketa /* Argument0: Port, na którym chcemy założyć serwer Argument1: Maksymalna ilość ludzi na serwerze Argument2: Tryb blokowania (zazwyczaj daje się true) */ //step: nowygracz=tcpaccept(socket,1) //sprawdzamy czy ktoś doszedł /* Argument0: Id socketa, na którym nasłuchujemy. Argument1: Tryb blokowania. */ if nowygracz //jezeli ktos doszedl { show_message('Ktos doszedl do gry!') } 6. Podłączanie się do serwera: GML //create: serwer=tcpconnect('127.0.0.1',12000,1) /* Argument0: Adres ip serwera. Argument1: Port serwera. Argument2: Tryb blokowania. */ if serwer { show_message('Polaczyles sie!') } else { show_message('Nie udalo sie!') game_end() } 7. Funkcje transferu i inne: writebyte() - wysyła bajt - uzywa sie przewaznie do naglowkow. - jest to liczba od 0 do 255 writeint() lub writeshort() - wysyla sie jakąś liczbe writestring() - wysyla stringa readbyte() - odbiera bajt itd itp. tak jak powyzej tylko write na read zamienic. w tej kolejnosci co sie wysyla to w tej sie odbiera np. writestring('ziomek') writestring('lolek') to jak odbieramy: readstring() readstring() najpierw odbierzemy ziomek potem lolek. Przed wysłaniem trzeba wyczyścić bufor czyli: clearbuffer() A po wysyłaniu: sendmessage(uchwyt) w naszym przypadku jak byśmy wysyłali w kliencie to uchwyt byłby zmienną serwer. Jak odbieramy to najlepiej sprawdzic czy w ogole ktos cos wyslal czyli: var size; size=receivemessage(uchwyt) <- w naszym przypadku w serwerze uchwyt to zmienna nowygracz if size { //odbieramy np: zmienna=readstring() } inaczej jak damy samo receivemessage i readstring() to bedzie zmienna pusta bo jak nikt nic nie wysle to pusto odbierze. Teraz np jak chcemy zamknąć serwer to piszemy: closesocket(uchwyt/idsocketa) No i jest jeszcze baardzo duzo funkcji ale przeciez wszystkich nie będe wymienial :) A teraz czas na przyklad: Serwer: Create: GML socket=tcplisten(12000,2,1) if socket<=0 { show_message('Nie udalo zalozyc sie serwera!') game_end() exit; } show_message('Udalo sie zalozyc serwer! Czekam na drugiego gracza..') other=0 juzdoszedl=0 Step: GML if juzdoszedl=0 { var new; new=tcpaccept(socket,1) if new { other=new show_message('Ktos doszedl do gry!') juzdoszedl=1 } } else { if keyboard_check_pressed(vk_enter) { clearbuffer() writestring(get_string('Podaj wiadomosc',0)) sendmessage(other) } var size; size=receivemessage(other) if size=0 { show_message('Klient wyszedl z gry!') game_end() } } Klient: Create: GML serwer=tcpconnect('127.0.0.1',12000,1) if serwer<=0 { show_message('Nie moge sie polaczyc!') game_end() exit; } show_message('Polaczylem sie i czekam na wiadomosc od serwera...') Step: GML var size; size=receivemessage(serwer) if size<0 exit; if size=0 { show_message('Serwer został wyłączony!') game_end() exit; } show_message(readstring()) No i to by było na tyle. Jak ktoś zauważy błędy bo pewnie są to piszcie zaraz poprawię :P I jak czegos brakuje dodam. Pozdro!
  6. czekaj zaraz ci napisze kurs i podam linka w edicie
  7. no to draw_rectangle i na nim niech obliczy ile razy jest to mniejsze i wgle i niech rysuje kropy na oblcizonych x i y
  8. nie czaję. jaką ty chcesz mapę? mapę polski czy co? e: czy taką co jest w strategicznych grach? kwadrat taki i tam kropki jako obiekty? jak tak to zrób drugiego viewa moze i mu inna rozdzielczosc daj..
  9. Czy da się jakoś wyczaić w GM-ie nazwę procesu który wykorzystuje dany port? +przy użyciu 39dll może się jakoś da?
  10. mi sie wydaje że można by np punkty robić że punkty=100*0.2734902389048230234890 i potem draw punkty/0.[...] czy jakos tak.
  11. być może też.

  12. jemu raczej chodzi o 39dll, btw MarioGteen: Team: gmclan . dobre ;) @autor: jeżeli o 39dll ci chodzi to nawet sie za to nie zabieraj. nie znasz najprostszych podstaw.. ja taki noob przy tobie to jestem master of gml ;P .. naucz sie podstaw. ledwo co rozumiesz oś x i y a chcesz zrobic gre online a jesli nie chodzi ci o 39dll to wszystkie słowa odwołuje
  13. lol ten temat sprzed wieków chyba jest ..
  14. Gnysek wsadził skrypt szyfrowania na stronę więc postanowiłem go do czegoś wykorzystać no i zrobiłem taki przykład czytania i zapisywania zaszyfrowanych danych w pliku oraz korzystania z nich. Link: https://gmclan.org/up5208_4_menuiszyfr.html Pozdro! P.S. - Jak ktoś będzie chciał to wykorzystać to niech zmieni klucz szyfrowania :P
  15. tak, ale array zamieniłem na tab e: GML dbmdb=file_text_open_read('db.mdb'); txt=file_text_read_string(dbmdb); tab=''; pos=0; numbers=string_count('?',txt); for(i=0;i<=numbers;i+=1) { pos=string_pos('?',txt); tab=string_copy(txt,1,pos-1); txt=string_delete(txt,1,pos); } e: lolz zapomniałem dac w pliku ze zamiast | to taki kwadrat .. pomimo to i tak nie działa bo mi nic nei drawneło e2: działa tylko tab[0] tab[1] juz puste e3: moze ten kwadrat zły jest.. na innym seperatorze sproboje e4: aha! trzeba zakończyć separatorem ostatni wyraz :P dobra jest git
  16. ja myśle ze mozna zrobic takie party po np 10000 bajtów i te bajty przewalic na stringa potem tego stringa wysłać i u odbiorcy ze stringa na bajty ale nie wiem czy by sie dało.. bajty na stringa
  17. to teraz drugi kłopot bo txt='dupa|lol' i jak daje zeby drawnęło string(tab[1]) to unknow
  18. w ogole nie dziala cos.. bo jest for([...] i-=1)
  19. zaraz zaraz.. numbers = string_count(explode,sounds); sounds? e: a dobra nie wazne e2: w moim przypadku bedzie: numbers=string_count('|',txt)
  20. GML if !file_exists('db.mdb') { show_message('Brak pliku z danymi!'); game_end(); exit; } dbmdb=file_text_open_read('db.mdb'); txt=file_text_read_string(dbmdb); tab=0; for(i=1; i<=string_length(txt); i+=1) { var char,curtab; char=string_char_at(txt,i); curtab=1; if char='|' curtab+=1; else { tab[curtab]=''; tab[curtab]+=string(char); } } taki kod zrobiłem bo chce sobie zrobic czytanie z pliku i seperator to '|' tylko ze njie działa.. chyba coś jest źle w tym: GML else { tab[curtab]=''; tab[curtab]+=string(char); } ale nie wiem obczajcie
  21. GML file_bin_seek() file_bin_write_byte() file_bin_read_byte() file_bin_open() // klikaj i sobie przeczytaj w dokumentacji</span></span></span> e: czekaj w e2 ci napisze kod przykładowy e2: Wysyłanie: GML plik=file_bin_open(sciezka,2) size=//wielkosc pliku nie wiem jak ustawic sobie wykombinuj for(i=-1; i<size; i+=1) { file_bin_seek(i) bajt=file_bin_read_byte(plik) /* wysyłanie zmiennej bajt */ } Odbieranie: GML plik=file_bin_open(sciezka,2) // tutaj sciezka i nazwa gdzie chcesz utworzyc bo jak nie będzie plik istniał to raczej go samo stworzy bajt=// odbieranie tego bajta co był wysłany (nie umiem mplay) file_bin_write_byte(plik,bajt) takie cos na przyklad. jeszcze sobie dodaj ze jak np skonczy sie pętla wysyłania to ma wyslac ze koniec i w tym co odbiera ze ma skonczyc odbierac jak koniec=true..
  22. ja zaraz sproboje poprawic e: nie wiem co tu jest źle ;P
  23. omg daj zmienna mapilke i sobie przerób. w ogole ty to ten przykład traktujesz jak finalną wersje jakiejs znanej od dawna gry, ten temat jako oficjalną strone tej gry, a ogólnie dyskusję itd. jako premierę gry. to jest przykład a nie gra żeby sobie pograć.
×
×
  • Dodaj nową pozycję...