Gothic Online Forums
Logowanie na serwer nie działa - Printable Version

+- Gothic Online Forums (https://archive.gothic-online.com)
+-- Forum: Community (https://archive.gothic-online.com/forum-18.html)
+--- Forum: Polish (Polski) (https://archive.gothic-online.com/forum-19.html)
+---- Forum: Pomoc (https://archive.gothic-online.com/forum-23.html)
+---- Thread: Logowanie na serwer nie działa (/thread-2096.html)

Pages: 1 2


Logowanie na serwer nie działa - Kania69 - 10.06.2017

[Squirrel] Cannot finish call callback: onCommand, expected params count 3
[Squirrel] Error runtime: (sq_fileRead) wrong number of parameters, expecting 2 params
[Squirrel] Stack Dump:
[1]: In function 'onCommand()' ./server-scripts/server_rp.nut line [148]
[Squirrel] Locals:
- gracz (TABLE)
- file (USERPOINTER)
- buffer ("")
- haslo ("taktaktak")
- sdf (ARRAY)
- params ("taktaktak")
- command ("zaloguj")
- pid (0)
- this (TABLE)
[Squirrel] Cannot finish call callback: onCommand, expected params count 3
[connection] Ledley disconnected from server 25.56.254.96|58847
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
case "zaloguj":
{
if(gracz[pid].zalogowany!=0) return 1;
{
local sdf = sscanf("s", params); 
local haslo = sdf[0];
if(sdf)
{
if(fileExists("baza/konta/" + getPlayerName(pid)  + ".txt") == true)
{
local buffer = "";
local file = fileOpen("baza/konta/" + getPlayerName(pid)  + ".txt","r+");
if( file )
{

buffer = "";
buffer = fileRead(file);
buffer = format("%s",buffer);
gracz[pid].haslo = buffer;
if(buffer==haslo)  sendMessage(pid, 45, 136, 45, "Zostałeś poprawnie zalogowany. Miłej gry!");
else 
{
sendMessage(pid, 119, 127, 127, "Błędne hasło.");
fileClose(file);
return 1;
}
gracz[pid].zalogowany=1;
getPlayerName(pid);
wczytajKonto(pid);

callClientFunc(pid, RELIABLE, "spawnujGracza", gracz[pid].posX, gracz[pid].posY, gracz[pid].posZ);
fileClose(file);
}

}
else sendMessage(pid, 119, 127, 127, "Konto nie istnieje.");
}
else sendMessage(pid, 119, 127, 127, "Tip: /zaloguj (hasło)");
}
}
break;

 Pomoże ktoś?


RE: Logowanie na serwer nie działa - Quarchodron - 10.06.2017

Jasne ..prosze.
[Squirrel] Cannot finish call callback: onCommand, expected params count 3
[Squirrel] Error runtime: (sq_fileRead) wrong number of parameters, expecting 2 params


RE: Logowanie na serwer nie działa - Marcel - 10.06.2017

Pamiętam, że kiedyś był jakiś problem z modułem Nubziora i któraś tam wersja była niekompatybilna z win32, bo skompilowana w 64 bitach czy funkcje się pozmieniały albo inaczej. Zmień system zapisu na natywny squirrelowski.


RE: Logowanie na serwer nie działa - Patrix - 10.06.2017

Zacznijmy od początku...

local sdf = sscanf("s", params);
local haslo = sdf[0];
if(sdf)
{
...

Przenieś local haslo do warunku. Poza tym w case musi być break.


RE: Logowanie na serwer nie działa - Son Goku - 10.06.2017

if(gracz[pid].zalogowany!=0) return 1; ja bym stwiał że w 3 lijce jest brak jednego "=" Big Grin

@Patrix jest break;

edt co a pierdolę tu jest przczenie Big Grin nie zauważyłem "!"

/server-scripts/server_rp.nut line [148]

to wskarzl.

znaczy się pokaż linijkę 148


RE: Logowanie na serwer nie działa - Kania69 - 10.06.2017

buffer = fileRead(file);

Nie wczytuje gracza a nie chce za każdym razem tworzyć nowe konto


RE: Logowanie na serwer nie działa - Patrix - 10.06.2017

Son Goku Wrote:@Patrix jest break;

break jest poza case'em, jeśli teraz pod tym aktualnym case'em znajdzie się jakiś inny (a break będzie na samym dole switcha) to od znalezionego case'a do końca skrypt będzie się wykonywać. Innymi słowy break jest w złym miejscu.


RE: Logowanie na serwer nie działa - Kania69 - 10.06.2017

No dobrze więc go usunę


RE: Logowanie na serwer nie działa - Patrix - 10.06.2017

Nie usuwaj go, przenieś go do case'a Wink (na sam koniec).


RE: Logowanie na serwer nie działa - Patrix - 10.06.2017

Squirrel Script
  1. if(fileExists("baza/konta/" + getPlayerName(pid) + ".txt") == true)
  2. {
  3. local buffer = "";
  4. local file = fileOpen("baza/konta/" + getPlayerName(pid) + ".txt","r+");
  5.  
  6. if( file )
  7. {
  8.  
  9. buffer = "";
  10. buffer = fileRead(file);
  11. buffer = format("%s",buffer);
  12. gracz[pid].haslo = buffer;
  13.  
  14. ...



Wiesz jak działa słowo kluczowe local? Utworzyłeś lokalną zmienną buffer w if'ie

Squirrel Script
  1. if(fileExists("baza/konta/" + getPlayerName(pid) + ".txt") == true)



local oznacza teraz że ta zmienna będzie tylko dostępna w tym if'ie, nigdzie poza nim.
Squirrel Script
  1. if( file )
  2. {
  3.  
  4. buffer = "";
  5. buffer = fileRead(file);
  6. buffer = format("%s",buffer);
  7.  
  8. gracz[pid].haslo = buffer;



Można to zrobić znacznie prościej, wystarczy w drugim if'ie dodać to:
Squirrel Script
  1. if( file )
  2. {
  3. local buffer = fileRead(file); // dopiero w tym warunku jest ci potrzebna ta zmienna
  4.  
  5. gracz[pid].haslo = buffer; // a to można przenieść do warunku, w którym gracz został zalogowany.