Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Logowanie na serwer nie działa
#1
[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ś?
#2
Jasne ..prosze.
[Squirrel] Cannot finish call callback: onCommand, expected params count 3
[Squirrel] Error runtime: (sq_fileRead) wrong number of parameters, expecting 2 params
#3
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.
#4
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.
#5
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
#6
buffer = fileRead(file);

Nie wczytuje gracza a nie chce za każdym razem tworzyć nowe konto
#7
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.
#8
No dobrze więc go usunę
#9
Nie usuwaj go, przenieś go do case'a Wink (na sam koniec).
#10
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.




Possibly Related Threads…
Thread Author Replies Views Last Post
  Jak założyć swój serwer Kaiojek 5 5,018 10.05.2020, 04:12
Last Post: Patrix
  Pytanie o bazowy serwer KaeMeN 4 3,468 15.03.2020, 23:25
Last Post: Profesores
  Aplikacja nie została właściwie uruchomiona. Verenar 4 4,307 25.01.2020, 21:27
Last Post: Verenar
  Gothic nie działa Efren 15 12,739 18.02.2019, 14:58
Last Post: Efren
  G2O nie dziala Dark 4 4,216 18.01.2019, 16:31
Last Post: Dark
  Model głowy PONY "nie działa" Arkhan 2 3,392 16.01.2019, 10:57
Last Post: Arkhan
  Launcher się nie aktualizuje. Inrates 4 4,245 29.04.2018, 16:09
Last Post: Inrates
  Problem z wbiciem na serwer Dyamiti 8 8,929 18.02.2018, 22:35
Last Post: Dyamiti
  Błąd podczas wchodzenia na serwer. Baku 5 4,839 22.07.2017, 18:25
Last Post: Baku
  Nie znaleziono punktu wejścia procedury Angel 1 3,402 21.07.2017, 17:12
Last Post: Quarchodron

Forum Jump:


Users browsing this thread: 1 Guest(s)