-
Postów
866 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Odpowiedzi opublikowane przez XxMichałxX
-
-
Ile można zmieścić max bajtów w jednym buforze, w 39dll?
-
omg. no to zapamiętaj że jak chcesz repeat uzyc to dajesz
GMLilosc=5; //np{
//kod ktory tu wstawisz wykona sie ilosc razy (w tym przypadku 5 razy)
//podczas jednego stepa
}
-
dałem rade.
po prostu tworze w serwerze socket sesji tylko wtedy, gdy status=2 i wtedy nasłuchuje, a jak zmienia sie status=1 to closesocket(socket_sesji) i gitez
narq
-
do tego tułowia takie ręce świetnie pasują :)
-
ja mam 14 przedmiotów na ocene - średnia jak narazie z szacowanych ocen przezemnie wyszła 4.50 = rodzice mnie zatłuką za taką słabą.
----
program git, tylko popraw pare błędów i daj zeby sie dało odznaczyć pole. 3.7/5
-
lol nie chodzi o to. w oryginalnym kodzie dochodzi do takiego momentu.
masz tu oryginalny kod:
[serwer]
Client:
GMLnew=-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:
GMLswitch(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:
GMLdraw_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:
GMLdllinit(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:
GMLswitch(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:
GMLdraw_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
-
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:
GMLsocket=tcplisten(12345,5,1);status=1;
// status: 1 - nie nasluchuje 2 - nasluchuje 3 - polaczony</span></span>
Step:
GMLswitch(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:
GMLdraw_text(0,0,'Status: ') //i tutaj tak zrobione ze ma status pokazywac 1. Wstrzymany, 2. Oczekiwanie 3. Połączony</span></span>[Klient]
Create:
GMLstatus=1; // 1 - rozłączony, 2 -połaczonyif server<=0 show_message('Dupa');
else status=2;
Draw:
GMLdraw_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
-
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
-
dokładnie. albo żeby jakieś lepsze radio zrobić, albo kilka "radj" to jakiegoś dll'a użyj żeby mieć pozycje piosenki itd.
-
lolz roztrzepany jestem. ale tak czy siak coś w tym jest nie tak skoro gdzies w rogu pokazuje
ale kit z tym temat moze do usuniecia isc
-
GMLshow_menu_pos(mouse_x,mouse_y,'OMG|LOL',3);
czemu mi to menu wyświetla gdzieś blisko lewego górnego rogu ekranu a nie w mouse_x i y?
-
xD
finalna wersja kodu:
GMLregistry_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
-
GMLimage_speed=1; //room_speed klatek na sekunde (domyslnie 30 klatek na sekunde) czyli:
@up: nie
edit:
napiszę troche jaśniej
GMLimage_speed=1 //30 klatek na sekunde -
czyli zostawić "\" ?
-
Czyli zgodnie z tym co mówi gnysek to będzie tak:
GMLregistry_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:
GMLregistry_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 \
-
wrzuc plik albo kod podaj to ci przerobie
-
ale jak? nie czaje z tym "\\" i "\" to jak mam zrobic?
e:
co tu zmienic?
GMLregistry_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');
}
}
-
GMLif !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
-
Piszę program, w którym użytkownik ustala czy ma się on włączać wraz ze startem systemu, tylko że nie wiem jaka ścieżka w rejestrze jest i ogólnie jak to zrobić żeby dać autostart w rejestrze. Wie ktoś jak?
-
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
-
a czemu "with(obj_client)" a nie poprostu sendmessage(tcp); ? bo to bys wtedy to wszystko musiał do buferu obj_clienta dodawac
-
program super, brakuje tylko paru funkcji kolorystycznych no i marny interfejs. gdyby wszystko bylo git to bym tego programu używał
-
a jak stowrzyć? file_text_open_write() ?
-
Robię taki program który rozdziela pliki na party lub skleja plik z partów.
GMLmode=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?
[39dll] Pojemność bufora
w Pytania zaawansowanych
Opublikowano
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