Gość Napisano 2 Marca 2019 Witajcie, Mam void OnClientDisconnect w którym wykonuje się zapis SQL char query[1024], steamid[64], name[64]; GetClientAuthId(client, AuthId_Steam3, steamid, sizeof(steamid)); GetClientName(client, name, sizeof(name)); DatabaseHandle.Format(query, sizeof(query), "... SET `... WHERE `steamid` = '%s';", ..., steamid); DatabaseHandle.Query(SavePlayerStatistics, query, GetClientUserId(client)); Lecz mam błąd L 03/03/2019 - 00:46:46: [SM] Exception reported: Client index ******* is invalid (arg 5) Spotkał się ktoś już tym błędem? Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Vasto_Lorde Napisano 2 Marca 2019 Pokażesz cały kod erroru oraz wskażesz dokładną linię w kodzie? Error mówi że nieprawidłowy jest argument numer 5, gdzie do tych funkcji nie ma przekazywanych 5 argumentów, maksymalnie 4 Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Gość Napisano 3 Marca 2019 Przed chwilą, Vasto_Lorde napisał: Pokażesz cały kod erroru oraz wskażesz dokładną linię w kodzie? Error mówi że nieprawidłowy jest argument numer 5, gdzie do tych funkcji nie ma przekazywanych 5 argumentów, maksymalnie 4 Cytat DatabaseHandle.Format(query, sizeof(query), "... SET `... WHERE `steamid` = '%s';", ..., steamid); Błąd jest w formacie tylko nie rozumiem tego błędu Cytat L 03/03/2019 - 00:53:00: [SM] Exception reported: Client index 1769234765 is invalid (arg 5) L 03/03/2019 - 00:53:00: [SM] Blaming: ****.smx L 03/03/2019 - 00:53:00: [SM] Call stack trace: L 03/03/2019 - 00:53:00: [SM] [0] Database.Format Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Vasto_Lorde Napisano 3 Marca 2019 Jeśli byłby to error w SQL, błąd wywaliłoby dopiero po wykonaniu zapytania. Upewnij się że masz dokładnie tyle %s ile argumentów po zapytaniu. W samym formatowaniu możesz sobie wbijać do stringu jakiekolwiek chcesz rzeczy i nie powinno to sprawować żadnego problemu. Ewentualnie zamień wszystkie %s %i na %d ¯\_(ツ)_/¯ Bardziej kierowałbym się tym: DatabaseHandle.Query(SavePlayerStatistics, query, GetClientUserId(client)); Jesteś pewien że w Query wysyła się GetClientUserId(client) a nie samego client? Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Gość Napisano 3 Marca 2019 Rozwiązane! Zamiast GetClientName(client, name, sizeof(name)); I %N dałem %N i argument client Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Vasto_Lorde Napisano 3 Marca 2019 Wiadomość wygenerowana automatycznie Pomoc udzielona Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach