Skocz do zawartości

XxMichałxX

Zbanowani
  • Postów

    866
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez XxMichałxX

  1. Ostatnio sobie grzebałem i mi sie zachciało zrobic cos co generuje jakis kod z dozwolonych znakow, z tym że kod nie moze sie powtórzyc a jak sie wykorzysta wszystkie mozliwe kombinacje to ma przestac.. wszystko bym zrobił, tylko nie wiem jak zrobic z tym ze ma sprawdzac czy wszystkie kombinacje zostały wykorzystane.. napisałby ktoś przykładowy algorytm? :}

  2. Czytałem sobie w dokumentacji i znalazłem takie cos jak Extensions (czy jakos tak) - Dodatki i było napisane ze mozna dodac plik dll itd do tego. To tak sobie myślałem, że możnaby wsadzić odrazu do tego 39dll.dll i sie nie męczyć?

    Dałoby sie takie cos zrobic? Jak tak to powiedzcie jak + poda ktos linka do ExtensionsMaker ? :)

    e: a dobra juz znalazlem (e. makera)

  3. a więc tak:

    tworzę sobie tabele:

    wpis[0-500] w create i kazdy wpis=0

    i gdy chcę dodać wpis to mam taki kod:

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

    {

    if wpis=0 //jezeli wpis jest rowny zero czyli pusty

    {

    wpis=get_string('Podaj wartosc wpisu numer '+string(i),0)

    break;

    }

    }

    gdy chce dodac wpis 0 to wszystko git, ale gdy następny to:

    ___________________________________________
    ERROR in
    action number 1
    of Key Press Event for 2-key Key
    for object o_find:
    
    Error in code at line 3:
        if wpis[i]=0
    
    at position 14: Cannot compare arguments.

    dabljutief?

     

    Zła nazwa tematu. Warn +1

    gnysek

  4. robisz skrypt sprawdz a w nim:

    GML
    argument2=string(argument2);

    if string_char_at(argument0,argument1)=argument2 return(string_char_at(argument0,argument1));

    else return(false);

    i teraz piszesz:

    litera=sprawdz(wjakimstringu,najakiejpozycji,jakalitera)

    jezeli bedzie taka litera w tej pozycji w danym stringu to litera bedzie rownac sie tej literze, natomiast jezeli nie, to litera bedzie rownac sie false

  5. if !varible_exists = global.lvl

    wut?

    variable_exists zwraca bodajże true albo false no nie?

    wytłumacz konkretniej o co ci chodzi bo nie czaje.

    narazie zrozumiałem takei cos:

    GML
    //uruchamiasz gre

    if registry_exists('punktyzgry') //sprawdzasz czy w rejestrze jest ta zmienna

    {

    global.pkt=registry_read_real('punktyzgry') //jak jest to ją czytasz

    }

    else

    {

    registry_write_real('punktyzgry',0) //jezeli nie to ją tworzysz

    global.pkt=0 //oraz dajesz 0 dla global.pkt

    }

    //a gdy konczysz gre

    registry_write_real('punktyzgry',global.pkt) //nadpisujesz</span></span>

    o to ci chodzi?

  6. 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

  7. 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!

×
×
  • Dodaj nową pozycję...