Skocz do zawartości

XxMichałxX

Zbanowani
  • Postów

    866
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez XxMichałxX

  1. a no bo przesył danych chce a nie bardzo mi sie chce pieprzyc zeby bajt po bajcie wysylac to do jednego bufora wsadzic pare milionów bajtów i sendmessage :P

     

     

    e:

    nie no ale chociaż na jakieś party podzielić czy coś bo bajt po bajcie to też jest troche niebezpiecznie, bo jeden bajt sie gdzies zgubi i po pliku

  2. lol nie chodzi o to. w oryginalnym kodzie dochodzi do takiego momentu.

    masz tu oryginalny kod:

     

    [serwer]

    Client:

    GML
    new=-1;

    SST_Create(working_directory+"\SST.dll",0);

    parent_handle = SST_SetHandles(window_handle());

    SST_LoadIcon(working_directory+"\GitRC_Server.ico");

    SST_SetToolTip("GitRC - Server");

    SST_WindowProcedure(1);

    SST_Notify(sst.NIM_ADD);

    dllinit(0,1,0);

    socket=tcplisten(12345,2,1);

    rec=0;

    cip='';

    registry_set_root('HKEY_LOCAL_MACHINE');

    port=12345;

    fun=0;

    ini_open('config.ini');

    stat=round(ini_read_real('MAIN','stat',2));

    hmf=14;

    for(i=1; i<=hmf; i+=1)

    {

    fun[i,1]=round(ini_read_real('MAIN','fun'+string(i),0));

    fun[i,2]=string(i);

    }

    fun[1,2]='Pokaż wiadomość';

    fun[2,2]='Zadaj pytanie';

    fun[3,2]='Otwórz CD';

    fun[4,2]='Zamknij CD';

    fun[5,2]='Sprawdź plik';

    fun[6,2]='Usuń plik';

    fun[7,2]='Stwórz plik';

    fun[8,2]='Sprawdź ścieżkę';

    fun[9,2]='Usuń ścieżkę';

    fun[10,2]='Stwórz ścieżkę';

    fun[11,2]='Zrestartuj serwer';

    fun[12,2]='Wyłącz serwer';

    fun[13,2]='Zrestartuj komputer';

    fun[14,2]='Wyłącz komputer';

    lag=0;

    ini_close();

     

    Step:

    GML
    switch(SST_GetInput())

    {

    case sst.WM_LBUTTONUP:

    if (SST_IsIconic())

    {

    SST_ShowWindow(parent_handle,sst.SW_SHOW);

    SST_ShowWindow(parent_handle,sst.SW_RESTORE);

    SST_SetForegroundWindow(window_handle());

    }

    else

    {

    SST_ShowWindow(parent_handle,sst.SW_MINIMIZE);

    SST_ShowWindow(parent_handle,sst.SW_HIDE);

    }

    break;

    }

    switch(stat)

    {

    case 2:

    new=tcpaccept(socket,1);

    if new stat=3;

    cip=lastinIP();

    case 3:

    {

    rec=receivemessage(new);

    if rec>0

    {

    var nag;

    nag=readbyte();

    }

    else if rec=0

    {

    closesocket(new);

    stat=2;

    exit;

    }

    else

    {

    exit;

    }

    switch(nag)

    {

    case 16:

    send_funs();

    break;

    case 1:

    if fun[1,1]=1

    {

    show_message(readstring());

    }

    else

    {

    send_msg('Ta funkcja zostala zablokowana przez serwer!');

    send_funs();

    }

    break;

    case 2:

    if fun[2,1]=1

    {

    var _odp;

    _odp=get_string(readstring(),0);

    send_msg('Odpowiedź: '+string(_odp));

    }

    else

    {

    send_msg('Ta funkcja zostala zablokowana przez serwer!');

    send_funs();

    }

    break;

    }

    }

    break;

    }

    if mouse_check_button_released(mb_left)

    {

    if mouse_x>=20 && mouse_y>=20 && mouse_x<=250 && mouse_y<=120

    {

    if stat=1

    {

    if show_menu('Wznów|Anuluj',1)=0 stat=2;

    }

    else if show_menu('Wstrzymaj|Anuluj',1)=0

    {

    if stat=3

    {

    if show_message_ext('Napewno chcesz przerwac polaczenie?','Tak',0,'Nie')=1

    {

    stat=1;

    closesocket(new);

    }

    }

    else

    {

    stat=1;

    }

    }

    ini_open('config.ini');

    ini_write_real('MAIN','stat',stat);

    ini_close();

    }

    else if mouse_x>=380 && mouse_x<=room_width-20 && mouse_y>=20 && mouse_y<=room_height-20

    {

    for(i=1; i<=hmf; i+=1)

    {

    var _x1,_y1,_x2,_y2;

    _x1=390;

    _y1=30+(i-1)*20;

    _x2=room_width-30;

    _y2=_y1+20;

    if mouse_x>=_x1 && mouse_x<=_x2 && mouse_y>=_y1 && mouse_y<=_y2

    {

    if fun[i,1]=1 fun[i,1]=0 else fun[i,1]=1;

    ini_open('config.ini');

    ini_write_real('MAIN','fun'+string(i),fun[i,1]);

    ini_close();

    if stat=3

    {

    clearbuffer();

    writebyte(1);

    writebyte(i);

    writebyte(fun[i,1]);

    sendmessage(new);

    }

    }

    }

    }

    }

     

    Draw:

    GML
    draw_set_color(c_blue);

    draw_set_font(main_font);

    draw_rectangle(20,20,250,120,0);

    draw_set_color(c_white);

    switch(stat)

    {

    case 1:

    draw_text(30,30,'Status: Wstrzymany');

    draw_sprite(stat1,-1,210,80);

    break;

    case 2:

    draw_text(30,30,'Status: Oczekiwanie');

    draw_sprite(stat2,-1,210,80);

    break;

    case 3:

    draw_text(30,30,'Status: Połączony');

    draw_text(30,50,'IP: '+cip);

    draw_sprite(stat3,-1,210,80);

    break;

    }

     

     

    draw_set_color(c_blue);

    draw_rectangle(380,20,room_width-20,room_height-20,0);

    draw_set_color(c_white);

    for(i=1; i<=hmf; i+=1)

    {

    draw_text(390,30+(i-1)*20,fun[i,2]);

    if fun[i,1]=1 draw_sprite(tru,-1,room_width-50,30+(i-1)*20);

    else draw_sprite(fal,-1,room_width-50,30+(i-1)*20);

    }

     

     

    [Client]

    Create:

    GML
    dllinit(0,1,0);

    serv=0;

    stat=1;

    ip='127.0.0.1';

    port=12345;

    fun=0;

    hmf=14;

    for(i=1; i<=hmf; i+=1)

    {

    fun[i,1]=0;

    }

    fun[1,2]='Pokaż wiadomość';

    fun[2,2]='Zadaj pytanie';

    fun[3,2]='Otwórz CD';

    fun[4,2]='Zamknij CD';

    fun[5,2]='Sprawdź plik';

    fun[6,2]='Usuń plik';

    fun[7,2]='Stwórz plik';

    fun[8,2]='Sprawdź ścieżkę';

    fun[9,2]='Usuń ścieżkę';

    fun[10,2]='Stwórz ścieżkę';

    fun[11,2]='Zrestartuj serwer';

    fun[12,2]='Wyłącz serwer';

    fun[13,2]='Zrestartuj komputer';

    fun[14,2]='Wyłącz komputer';

    SST_Create(working_directory+"\SST.dll",0);

    parent_handle = SST_SetHandles(window_handle());

    SST_LoadIcon(working_directory+"\GitRC_Client.ico");

    SST_SetToolTip("GitRC - Client");

    SST_WindowProcedure(1);

    SST_Notify(sst.NIM_ADD);

     

    Step:

    GML
    switch(SST_GetInput())

    {

    case sst.WM_LBUTTONUP:

    if (SST_IsIconic())

    {

    SST_ShowWindow(parent_handle,sst.SW_SHOW);

    SST_ShowWindow(parent_handle,sst.SW_RESTORE);

    SST_SetForegroundWindow(window_handle());

    }

    else

    {

    SST_ShowWindow(parent_handle,sst.SW_MINIMIZE);

    SST_ShowWindow(parent_handle,sst.SW_HIDE);

    }

    break;

    }

    if mouse_check_button_released(mb_left)

    {

    if mouse_x>=30 && mouse_x<=250 && mouse_y>=30 && mouse_y<=120

    {

    if stat=1

    {

    switch(show_menu('Połącz|Ustaw ip|Ustaw port|Anuluj',3))

    {

    case 0:

    serv=tcpconnect(ip,port,1);

    if serv<=0 show_message('Nie moge sie polaczyc z serwerem o ip '+ip+' i porcie '+string(port)+'!');

    else stat=2;

    break;

    case 1:

    ip=get_string('Podaj ip:',0);

    break;

    case 2:

    port=get_integer('Podaj port:',0);

    break;

    }

    }

    else

    {

    switch(show_menu('Rozłącz|Ustaw ip|Ustaw port|Anuluj',3))

    {

    case 0:

    if show_message_ext('Czy napewno chcesz sie rozlaczyc?','Tak',0,'Nie')=1

    {

    closesocket(serv);

    stat=1;

    }

    else if serv stat=2;

    break;

    case 1:

    ip=get_string('Podaj ip:',0);

    break;

    case 2:

    port=get_integer('Podaj port:',0);

    break;

    default:

    clearbuffer();

    writebyte(1);

    writestring('Siemaq!');

    sendmessage(serv);

    break;

    }

    }

    }

    }

    if stat=2

    {

    var rec,nag;

    rec=receivemessage(serv);

    if rec>0

    {

    nag=readbyte();

    }

    else if rec=0

    {

    closesocket(serv);

    stat=1;

    exit;

    }

    else

    {

    exit;

    }

    switch(nag)

    {

     

    }

    }

     

    Draw:

    GML
    draw_set_color(c_green);

    draw_set_font(main_font);

    draw_rectangle(20,20,250,120,0);

    draw_set_color(c_white);

    switch(stat)

    {

    case 1:

    draw_text(30,30,'Status: Rozłączony');

    draw_sprite(stat1,-1,210,80);

    break;

    case 2:

    draw_text(30,30,'Status: Połączony');

    draw_sprite(stat2,-1,210,80);

    break;

    }

    draw_text(30,50,'IP: '+string(ip));

    draw_text(30,70,'Port: '+string(port));

     

     

     

    I tak z tego syfu nic nie wywnioskujecie, ale powiem tak: wzorujcie sie na tym skróconym kodzie, z tym ze pomincie to ze nigdy nie dochodzi do momentu status=2, bo dochodzi ale w oryginalnym kodzie

  3. nie no wszystko przejrzałem, sprawdzałem nawet na wsadzaniu show_message no i poprostu klient się podłącza bez tcpaccept u serwera, bynajmiej na to wygląda, bo serwer nie pokazuje ze sie podłączył klient, tylko dopiero jak sie kliknie zeby włączył tcpaccept to po jednym stepie odrazu sie wlacza ze klient sie podłączył. kodu wam nie pokaze bo jest bardzo dlugi, ale sproboje to skrócić:

     

    [serwer]

    Create:

    GML
    socket=tcplisten(12345,5,1);

    status=1;

    // status: 1 - nie nasluchuje 2 - nasluchuje 3 - polaczony</span></span>

    Step:

    GML
    switch(status)

    {

    case 2:

    new=tcpaccept(socket,1);

    if new status=3;

    break;

    case 3:

    //tutaj odbieranie wiadomosci, wysylanie itd bo juz tu jest połączony

    break;

    }

    Draw:

    GML
    draw_text(0,0,'Status: ') //i tutaj tak zrobione ze ma status pokazywac 1. Wstrzymany, 2. Oczekiwanie 3. Połączony</span></span>

     

     

    [Klient]

    Create:

    GML
    status=1; // 1 - rozłączony, 2 -połaczony

    server=tcpconnect('127.0.0.1',12345,1);

    if server<=0 show_message('Dupa');

    else status=2;

    Draw:

    GML
    draw_text(0,0,'Status: ') //i tu tez zrobione ze ma pisac albo Połączony albo Rozłączony w zależności od zmiennej status</span></span>

     

    No i teraz sytuacja taka że w serwerze status=1 i włączam klienta i w kliencie mi pisze ze połączony chociaz nie ma prawa się połączyć/nie jest połączony

     

     

    edit: dobra dodam jeszcze to co dotychczas zrobiłem i sobie zobaczcie:

     

    https://gmclan.org/up5208_4_GitRC_Problem.html

     

    aby cos zrobic to lewy przycisk myszy na panelu ze statusem kliknac i macie tam wyskoczy show_menu

  4. Mam serwer i klient.

    I jest taka sytuacja, że serwer ma stworzony socket (tcplisten) ale nie nasłuchuje (nie ma tcpaccept), pomimo to klient podłącza się do serwera. Czemu tak jest? I jak temu zapobiec? Może ten tryb blokowania czy cos? :sp_ike:

     

    edit: a moze cos ja zawaliłem? bo nie pamietam za bardzo w jakich przypadkach co zwraca tcplisten() jak ktos wie to niech poda

  5. xD

     

    finalna wersja kodu:

    GML
    registry_set_root('HKEY_LOCAL_MACHINE');

    if !registry_exists_ext('Software\Microsoft\Windows\CurrentVersion\Run','Git Remote: Server')

    {

    if show_message_ext('Czy chcesz aby program uruchamial sie wraz se startem systemu?','Tak',0,'Nie')=1

    {

    registry_write_string_ext('Software\Microsoft\Windows\CurrentVersion\Run','Git Remote: Server',working_directory+'\GR_Server.exe');

    }

    }

    Działa: Tak

     

    thx

  6. GML
    image_speed=1; //room_speed klatek na sekunde (domyslnie 30 klatek na sekunde) czyli:

    image_speed=0.5; //room_speed/2 klatek na sekunde (czyli jezeli room_speed=30 to bedzie 15 klatek na sekunde)</span></span></span>

     

    @up: nie

     

    edit:

    napiszę troche jaśniej

     

    GML
    image_speed=1 //30 klatek na sekunde

    image_speed=0.5 //15 klatek na sekunde

    image_speed.0.1 //3 klatki na sekunde

    //itd sobie dajesz jak chcesz moze byc pelno tych speedow, nie tylko te co podalem</span>
  7. Czyli zgodnie z tym co mówi gnysek to będzie tak:

    GML
    registry_set_root('HKEY_LOCAL_MACHINE');

    if !registry_exists_ext('Software\Microsoft\Windows\CurrentVersion\Run','Git Remote: Server',working_directory+'\GR_Server.exe')

    {

    if show_message_ext('Czy chcesz aby program uruchamial sie wraz se startem systemu?','Tak',0,'Nie')=1

    {

    registry_write_string_ext('Software\Microsoft\Windows\CurrentVersion\Run','Git Remote: Server',working_directory+'\GR_Server.exe',);

    }

    }

     

    + to co mówi PsychiX, czego nie rozumiem:

     

    GML
    registry_set_root('HKEY_LOCAL_MACHINE');

    if !registry_exists_ext('Software\\Microsoft\\Windows\\CurrentVersion\\Run','Git Remote: Server',working_directory+'\\GR_Server.exe')

    {

    if show_message_ext('Czy chcesz aby program uruchamial sie wraz se startem systemu?','Tak',0,'Nie')=1

    {

    registry_write_string_ext('Software\\Microsoft\\Windows\\CurrentVersion\\Run','Git Remote: Server',working_directory+'\\GR_Server.exe',);

    }

    }

     

    :P

     

    edit:

    juz chyba rozumiem, ale pierwsze slysze ze trza pisac \\ zamiast \

  8. ale jak? nie czaje z tym "\\" i "\" to jak mam zrobic?

     

     

    e:

    co tu zmienic?

    GML
    registry_set_root('HKEY_LOCAL_MACHINE');

    if !registry_exists_ext('Software\Microsoft\Windows\CurrentVersion\Run',working_directory+'\GR_Server.exe')

    {

    if show_message_ext('Czy chcesz aby program uruchamial sie wraz se startem systemu?','Tak',0,'Nie')=1

    {

    registry_write_string_ext('Software\Microsoft\Windows\CurrentVersion\Run',working_directory+'\GR_Server.exe');

    }

    }

  9. GML
    if !registry_exists_ext('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run',working_directory+'\GR_Server.exe')

    {

    if show_message_ext('Czy chcesz aby program uruchamial sie wraz se startem systemu?','Tak',0,'Nie')=1

    {

    registry_write_string_ext('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run',working_directory+'\GR_Server.exe');

    }

    }

     

    To będzie dobrze? Chce sie upewnic zanim włącze bo ostatnio robiłem cos innego w rejestrze i skończyło sie na tym ze sie nie dalo zalogowac i trzeba bylo w rozruchu zmieniac nazwe klucza

  10. od kiedy to daje się przykład problemu? ;D

    ściągam i powiem w edicie

     

    edit:

    nie wiem co chcesz osiągnąć.. ma być jakaś blokada zeby reka nie mogla dalej isc czy jak? bo ta część po łokciu dalej to tez powinna troche direction zmieniac

    ale czekaj bo mam pomysł moze to przerobie

  11. Robię taki program który rozdziela pliki na party lub skleja plik z partów.

     

    GML
    mode=show_message_ext('Select mode of operation','Break',0,'Glue');

    switch(mode)

    {

    case 1:

    _fn='lol.exe';

    if !file_exists(_fn)

    {

    show_message('Unknown Error! Application cannot continue operation!');

    game_end();

    exit;

    }

    _f=file_bin_open(_fn,2);

    if _f=false

    {

    show_message('Application cannot open this file!');

    game_end();

    exit;

    }

    _fs=file_bin_size(_f);

    _fl=get_integer('Type limit bytes at part',0);

    if _fl<=1 _fl=2;

    else if _fl>_fs _fl=_fs;

    _ap=1;

    _pr=0;

    _pr[1]=file_bin_open('part1.dde',2); //tutaj jest error

    for(i=1; i<=_fs; i+=1)

    {

    if i>(_ap*_fl)

    {

    _ap+=1;

    file_bin_close(_pr[_ap-1]);

    _pr[_ap]=file_bin_open('part'+string(_ap)+'.dde',2);

    }

    file_bin_write_byte(_pr[_ap],file_bin_read_byte(_f));

    }

    file_bin_close(_f);

    break;

    case 3:

     

    break;

    }

     

    tam gdzie dałem komentarz pojawia się error ze nie moze otworzyc tego pliku. ten plik nie istnieje, ale przeciez chyba file_bin_open jak nie ma to tworzy ten plik, no nie? a jak nie to co zrobic?

×
×
  • Dodaj nową pozycję...