Skocz do zawartości

Odczyt i wysyłanie


Rekomendowane odpowiedzi

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

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

ini_write_string(name,'haslo',name);

pierwsze name powinno byc stringiem, dokladnie nazwa sekcji

Odnośnik do komentarza
Udostępnij na innych stronach

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

ini_write_string('player','haslo',name2);

To ma byc.

Odnośnik do komentarza
Udostępnij na innych stronach

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...