programista Opublikowano 4 Kwietnia 2008 Udostępnij Opublikowano 4 Kwietnia 2008 No więc mam klienta, który zakłada konta i serwer który wczytuje dane i zapisuje(przynajmniej powinien). Tylko jest jeden mały problem serwer nie zapisuje tych danych. Zapewne jest to jakiś błąd większy bądź duży i nieźle lamerski, ale i tak napisze. Klient: Create account: create: port=14804 polaczenie=tcplisten(port,2,1) left click: global.nick=get_string("Podaj nick:","") global.pass=get_string("Podaj hasło:","") clearbuffer(); writebyte(1); writestring(global.pass); writestring(global.nick); sendmessage(polaczenie,port,0); A na serwerze: step: while ( 1 ) { wiadomosc = receivemessage( polaczenie ); //odbieramy wiadomośc if ( wiadomosc <= 0 ) break; //jezeli jest mniejsza bądź równa 0, wyłamujemy się z pętli _ID = readbyte(); //odbieramy nagłówek wiadomości switch ( _ID ) { case NAGLOWEK: //nagłówek naszej wiadomości { playerID = readbyte( ); //czytamy id gracza który przysłał wiadomość /* teraz należałoby znaleźc ID tego gracza w naszej, np. tablicy graczy */ for ( i=0; i<liczba_graczy; i+=1 ) { if ( i == playerID ) //jeżeli aktualny indeks tablicy równa sie odebranemu ID { with ( i ) { /* odbieramy zmienne */ name = readstring( ); w = readshort( ); a = readshort( ); life = readshort( ); ini_open('dane.ini') ini_write_string(name,'haslo',name) ini_close() } } } break; } } } Co jest źle?? P.S. Wiem, że kod śmierdzi noobem, ale sorki dopiero zaczynam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 4 Kwietnia 2008 Udostępnij Opublikowano 4 Kwietnia 2008 Kod śmierdzi Yodą kolego. Dlatego jest zły. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 4 Kwietnia 2008 Udostępnij Opublikowano 4 Kwietnia 2008 Nie jest zły tylko źle użyty madafaka. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
programista Opublikowano 4 Kwietnia 2008 Autor Udostępnij Opublikowano 4 Kwietnia 2008 Wiem, ale yodą śmierdzi tylko pętla. co poprawić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 4 Kwietnia 2008 Udostępnij Opublikowano 4 Kwietnia 2008 co poprawić? Napisać swoje :thumbsup: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 Sprawdź, czy serwer odbiera zmienne. Wydaje mi się, że po writestring(zmienna) powinno się znaleźć true, czyli: writestring(zmienna,true); Ale tak mi się tylko wydaje, nie jestem na 100% pewien :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 Ale tak mi się tylko wydaje, nie jestem na 100% pewien tongue2.gif Zacytuję: [Argument1]: The buffer id to write too. Leave out this argument or set it to 0 to use the default buffer. Tak więc nie trzeba ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 Hmmm... Mi bez tego ,true nie odczytywało zmiennych. Dziwne, nie? o.O Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 Hmmm... Mi bez tego ,true nie odczytywało zmiennych. Dziwne, nie? o.O Może jakaś inna wersja? :) Ja osobiście nigdy nie daję tego drugiego argumentu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 Lol, ale mnie rozpieprzacie "napisać swoje" Taka pętla odbierania danych musi zawsze być :/ to jest najwydajniejszy sposób, ja identyczną mialem w Mario Brawl Online, a gra pokazała się tu chyba nawet przed pierwszą grą Yody :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 Lol, ale mnie rozpieprzacie "napisać swoje" Taka pętla odbierania danych musi zawsze być :/ Mówiąc "napisac swoje" miałem na myśli ciało pętli. Bo on tylko przekopiował moją przykładową z artykułu :| Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
programista Opublikowano 5 Kwietnia 2008 Autor Udostępnij Opublikowano 5 Kwietnia 2008 A podpowiecie mi chociaż co tam mniej więcej napisać ?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 A podpowiecie mi chociaż co tam mniej więcej napisać ?? To co jest ci potrzebne. Przeanalizuj to co ja napisałem i na podstawie tego napoisz swoje. Omg. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
programista Opublikowano 5 Kwietnia 2008 Autor Udostępnij Opublikowano 5 Kwietnia 2008 No dobra spróbuje. (Wysilę swoje nieliczne szare komórki). P.S. A w kodzie wysyłania, który napisałem wszystko jest dobrze czy też coś spieprzyłem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 Wygląda że dobrze. aha i co to ma być: case NAGLOWEK: ? przecież NAGLOWEK to to co wysyłasz tu: writebyte(1); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
programista Opublikowano 5 Kwietnia 2008 Autor Udostępnij Opublikowano 5 Kwietnia 2008 O kurde ale mnie czeka zabawa. Aha dzięki za cierpliwość. EDIT1: Poprawiłem na coś takiego: wiadomosc = receivemessage( polaczenie ); if ( wiadomosc <= 0 ) break; _ID = readbyte(1); switch(_ID) { case 1: { playerID=readbyte(1); for ( i=0; i<liczba_graczy; i+=1 ) { if ( i == playerID ) { with ( i ) { name=readstring(); readbyte(1); ini_open('dane.ini') ini_write_string(name,'haslo',name); } } } break; } } } Ale ciągle nie działa. Nie mam pojęcia czemu. PLz pomocy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 readbyte(1); Co to ma być? Weź poczytaj opisy tych funkcji co? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
programista Opublikowano 5 Kwietnia 2008 Autor Udostępnij Opublikowano 5 Kwietnia 2008 Sorry.Tak czy siak nie działa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 ini_write_string(name,'haslo',name); pierwsze name powinno byc stringiem, dokladnie nazwa sekcji Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
programista Opublikowano 5 Kwietnia 2008 Autor Udostępnij Opublikowano 5 Kwietnia 2008 Dobra, ale jak ten string wyciągnąć? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 Poczytaj o plikach ini, bo nie tyle z multi tu masz problem co wlasnie z ini. po prostu zamiast pierwszego name podaj nazwe sekcji w ktorej zapisujesz haslo. Przykladowy plik ini z objasnieniem: [player] <- [sekcja] haslo=moje haslo <- klucz=wartość name=imie gracza Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
programista Opublikowano 5 Kwietnia 2008 Autor Udostępnij Opublikowano 5 Kwietnia 2008 To ma być: ini_write_string(player,'haslo',name2); ?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 ini_write_string('player','haslo',name2); To ma byc. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
programista Opublikowano 5 Kwietnia 2008 Autor Udostępnij Opublikowano 5 Kwietnia 2008 Dzięki, ale nie działa :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 Na pewno ze zmiennymi masz namieszane. Zuploaduj gdzies projekt a ja go poprawie. PS. Teraz jestem pewny ze to moze byc wina struktury twojego pliku ini. pokaz jego tresc Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
programista Opublikowano 5 Kwietnia 2008 Autor Udostępnij Opublikowano 5 Kwietnia 2008 No, tu się właśnie pojawia problem. Ten plik się nie tworzy. EDIT1: Może się mylę, ale wydaje mi się że problem tkwi w połączeniu. Klient nie łączy się z serwerem. Dałem chyba zły kod connection w kliencie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 5 Kwietnia 2008 Udostępnij Opublikowano 5 Kwietnia 2008 To sie nie dziw, bo gm nie tworzy pliku ini tylko wpisuje w juz istniejacy. musisz sam najpierw napisac szablon ini. stworz plik 'configure.ini' i daj mu tresc: [player] name= pass= potem tylko operuj na tym gotowym pliku EDIT:Zapodaj projekt to sie poprawi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
programista Opublikowano 6 Kwietnia 2008 Autor Udostępnij Opublikowano 6 Kwietnia 2008 Rozumiem cię psychix, ale gdybym potem coś chciał na tym pisać łatwiej by mi było wprowadzić login jako sekcję. Mógłbym mu od razu przypisać level, exp itd.: Dałoby się tak?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 6 Kwietnia 2008 Udostępnij Opublikowano 6 Kwietnia 2008 Co do Yody. Ty gdzieś napisałeś coś o nagłówku. To nie jest do cholerci nagłówek, tylko pierwszy byte wysyłany i dodany do niego switch. Tak samo mogę to identyfikować za pomocą stringu. switch( readstring() ) {} I to samo będzie ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 6 Kwietnia 2008 Udostępnij Opublikowano 6 Kwietnia 2008 Co do Yody. Ty gdzieś napisałeś coś o nagłówku. To nie jest do cholerci nagłówek, tylko pierwszy byte wysyłany i dodany do niego switch. Ale ja to nazywam nagłówkiem X_X I tak się chyba zresztą ten system nazywa. 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ę