Roki Opublikowano 12 Maja 2009 Udostępnij Opublikowano 12 Maja 2009 Mam sobie constants: -up -left -down -right No i mam obj, kontrolujący, a on ma w stepie: switch(message_id) case up x=writeshort() itd. itd. A w serwerze mam: switch(message_id) case up x = readshort() itd. itd. I moje pytanie brzmi, czy wystarczy że dam sendmessage(tu nie wiem czy value, czy nazwa), a w serwie readmessage() i bedzie? Tylko jak to zrobić, żeby działało. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 12 Maja 2009 Udostępnij Opublikowano 12 Maja 2009 tak, powinno... ale lepszym sposobem jest robienie i sprawdzanie co nie działa mistrzu :] niż pytanie się na forum. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 12 Maja 2009 Autor Udostępnij Opublikowano 12 Maja 2009 Hehe, właściwie racja, ale cóż, no pytam się bo po to forum :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 12 Maja 2009 Udostępnij Opublikowano 12 Maja 2009 miszczu: x=writeshort() ? writeshort(x) A potem w servie msg_id = receivemessage( socket ); switch( msg_id ) { case up:{ x = readshort() }break; itd } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 12 Maja 2009 Administratorzy Udostępnij Opublikowano 12 Maja 2009 Miszczu powyżej: GML clearbuffer(); writebyte(up); writeshort(x); GML size = receivemessage( socket ); if size>0 { msgid = readbyte(); switch msgid { case up: x= readshort(); break; } } bo w Twoim przykładzie switch będzie zalezny od rozmiaru otrzymanej wiadomości. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 12 Maja 2009 Udostępnij Opublikowano 12 Maja 2009 Ja tylko poprawiłem... takie rzeczy jak clearbuffer sam se powinien dopisać, tak samo z msgid, tylko pokazałem mu że nie trzeba żadnego "readmessage" (nawet takiego czegoś niema o.) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 12 Maja 2009 Administratorzy Udostępnij Opublikowano 12 Maja 2009 msg_id = receivemessage( socket ); switch( msg_id ) jak byk wprowadzanie w błąd, nie wymigasz się, zostaniesz wysmagany przez Tymona rózgą po tyłku. uuuuuuuuuuaaaaaaa xD Borek Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 14 Maja 2009 Autor Udostępnij Opublikowano 14 Maja 2009 Nie chce zakładać nowego tematu, a mam wielki problem... Wszystko mam, w sensie chodzenie, chat, i takie podstawy, ale chce jeszcze zrobić coś jak własne domki... W sensie, że klikamy na przycisk i jesteśmy w domu, można się odwiedzać, a take kupować do niego rzeczy, nie potrzebuje na razie skryptów, ale chociaż mnie naprowadźcie... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 14 Maja 2009 Udostępnij Opublikowano 14 Maja 2009 Oczywiście grafiki domow na planszy dajesz w cliencie. Gdy gracz wklika na przycisk wysyła informacje do klienta aby ten np. w pliku ini przeszukał jego dane i czy posiada on tam zmienną odpowiedzialną za własnosc domu, jesli jest takowa wysylasz info do clineta zeby dajmy na to przeszedl do rooma z domkiem jesli nie nic sie nie dzieje. Co do skryptów moze wieczorkiem cos zapodam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 14 Maja 2009 Autor Udostępnij Opublikowano 14 Maja 2009 No ok, fajny pomysł, kupowanie to też tylko zapis by był do ini, ale co z odwiedzaniem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 14 Maja 2009 Udostępnij Opublikowano 14 Maja 2009 a na czym te odwiedzanie mialo by polegac? Bo jesli tylko na tym ze wchodzisz rozgladasz sie i tylko tyle? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 14 Maja 2009 Autor Udostępnij Opublikowano 14 Maja 2009 Tak, wchodzisz i już, można oglądać co kto ma :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Hunter Opublikowano 14 Maja 2009 Udostępnij Opublikowano 14 Maja 2009 To jesli masz grafike domu w kliencie to nic wysyłac nie musisz no chyba ze w domu lezą jakies przedmioty wtedy nalezy wyslac ich pozycje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 14 Maja 2009 Udostępnij Opublikowano 14 Maja 2009 Musi wysłać. Domek chyba będzie oddzielnym roomem nie? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 14 Maja 2009 Autor Udostępnij Opublikowano 14 Maja 2009 Próbowałem, ale mi nie idzie, chodzenie było o tyle łatwe, że słało do serva, ale teraz musi wybierać z serva... Dopisałem do pliku ini: ini_write_string('House','Message',Welcome!) ini_write_real('House','Item1',0) ini_write_real('House','Item2',0) ini_write_real('House','Item3',0) ini_write_real('House','Item4',0) No i chce że jeśli ktoś ma kupione to ustawia, dany item na 1, a tworzy na wybranych(przez hosta(ja)) miejscach. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 14 Maja 2009 Administratorzy Udostępnij Opublikowano 14 Maja 2009 No to host wysyła GML clearbuffer(); writebyte(dom); writebyte(10); //ile bedzie teraz przedmiotow writebyte(1); //numer przedmiotu, potem jakis skrypt to odbierze writeshort(pozycjax); writeshort(pozycjay); writebyte(17); //numer przedmiotu, potem jakis skrypt to odbierze writeshort(pozycjax); writeshort(pozycjay); ... writebyte(4); //numer przedmiotu, potem jakis skrypt to odbierze writeshort(pozycjax); writeshort(pozycjay); sendmessage(); Jeżeli room jest mały, to można by nawet pomyśleć o przesunięciu bitowym o 8, żeby w jednego shorta upchać x i y. (ale wtedy na maxa jest tylko 255,255 bo to są dwa bajty). GML msg = readbyte(); switch msg { ... case dom: var i,j; j = readbyte(); //ile bedzie teraz przedmiotow for (i=0; i<j; i+=1) { var co,obj; co = readbyte(); switch co { case 0: obj = obj_lodowka; break; case 1: obj = obj_telewizor; break; default: obj = obj_dywan; break } instance_create( readshort(), readshort(), obj); } break; case ... } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 14 Maja 2009 Udostępnij Opublikowano 14 Maja 2009 Jeżeli room jest mały, to można by nawet pomyśleć o przesunięciu bitowym o 8, żeby w jednego shorta upchać x i y tak gwoli ścisłości: wtedy dajesz dwie wartości byte, jedna po drugiej i nie trzeba się bawić w przesunięcia bitowe Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 14 Maja 2009 Administratorzy Udostępnij Opublikowano 14 Maja 2009 Masz rację, głupio wymyśliłem, w tym przypadku akurat to jest to samo, ale na pewno czasem udało by się te kilka bitów uszczknąć i np. zamiast trzech shortów wysłać dwa inty :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 14 Maja 2009 Autor Udostępnij Opublikowano 14 Maja 2009 Gnysek, ale nie o to do końca chodzi... Coś jak w Nostale, albo ... No niech będzie, Tibia... Czyli gracz wchodzi kupuje item, jego tworzy i zapisuje mu na konto, a potem gdy wchodzi to mu odbiera... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 17 Maja 2009 Administratorzy Udostępnij Opublikowano 17 Maja 2009 No to podałem Ci jak odebrać listę przedmiotów z danego domu, zakupy sobie zaprogramuj już sam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 21 Maja 2009 Autor Udostępnij Opublikowano 21 Maja 2009 Popróbowałem, ale mi nie idzie :/ Zrobiłem constants MSG_HOUSE Value 9 W serwerze i kliencie. no i obiekt odpowiadający za dom: Information about object: objHouseController Sprite: Solid: false Visible: true Depth: 0 Persistent: false Parent: Mask: Create Event: execute code: global.house = get_string('What house you want visit?','Type Here') clearbuffer() writebyte(MSG_HOUSE) send_server() msg = readstring() item1 = readshort() item2 = readshort() item3 = readshort() item4 = readshort() show_message(string(msg)) if item1 = 1 { instance_create(0,0,obj_warp) } else { } Skrypt sendserver: GML bufferencrypt(global._buffpass) //Encrypt the buffer sendmessage(global.tcpsocket) A na serwie mam: User Definied 0 switch(message_id)... case MSG_HOUSE case_msg_house() - skrypt a w tym skrypcie: GML global.house = readstring() clearbuffer() if file_exists('[Player]'+string_lower(global.house)+'.ini') { ini_open('[Player]'+string_lower(global.house)+'.ini') msg=ini_read_string('House','message','Welcome!') item1=ini_read_real('House','item1','0') item2=ini_read_real('House','item2','0') item3=ini_read_real('House','item3','0') item4=ini_read_real('House','item4','0') writestring(msg) writeshort(item1) writeshort(item2) writeshort(item3) writeshort(item4) send_client(2) } SendClient: GML bufferencrypt(global._buffpass) /* 0 = send to all players, 1 = send to all in same room, 2 = just to own socket, 3 = to the player with the playerid that is defined with argument1 4 = to the players that are in the room with the number argument1 5 = to the player with the instance id defined in argument1 */ switch(argument0) { case 0: with(obj_player) if id != other.id { sent_size = sendmessage(socket) scr_count_send() } break; case 1: with(obj_player) if (cur_room = other.cur_room && id != other.id) { sent_size = sendmessage(socket) scr_count_send() } break; case 2: sent_size = sendmessage(socket) scr_count_send() break; case 3: with(obj_player) if (playerid = argument1) { sent_size = sendmessage(socket) scr_count_send() } break; case 4: with(obj_player) if (cur_room = other.argument1 && id != other.id) { sent_size = sendmessage(socket) scr_count_send() } break; case 5: with(argument1) { sent_size = sendmessage(socket) scr_count_send() } break; } I dlaczego po wejsciu nic nie pokazuje, tylko mi laguje? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 21 Maja 2009 Udostępnij Opublikowano 21 Maja 2009 bo szyfrujesz dane, i na serwie, i w kliencie, ale nigdzie nie deszyfrujesz ich Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 21 Maja 2009 Autor Udostępnij Opublikowano 21 Maja 2009 Czyli co mam dodać do tego? Dodałem po każdym clearbuffer: bufferencrypt(haselko) I też nic :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 21 Maja 2009 Udostępnij Opublikowano 21 Maja 2009 powiedziałbym coś ale się opanuję. A wywal wszystkie bufferencrypt() z serwa i klienta i sprawdz czy zadziala. Jak zadziala to reszte sie domyslisz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 21 Maja 2009 Autor Udostępnij Opublikowano 21 Maja 2009 Wywaliłem bufferencrypt i bufferdecrypt, ale nic, to samo co zawsze, więc na razie dam sobie spokój z domkami :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę