Szerző Téma: Sscanf warning  (Megtekintve 1282 alkalommal)

Sscanf warning
« Dátum: 2012. április 25. - 15:45:15 »
0 Show voters
Helló!
Beleírtam a scriptembe, hogy lementse a kaját. Írtam hozzá egy parancsot is, de warningot ír ki...
Itt a hiba:
 
sscanf warning: Format specifier does not match parameter count.

 
Ha kilépek, akkor ilyet is ír:
 
[MySQL] Error (0): Failed to exeute query. Unknown column \'Usern\' in \'where clause\'.

 
Itt a sor, amire szerintem a hibát írja:
 
sscanf(string, \"p<|>s[24]s[145]s[16]ddddddd\", name, HashedPW, IP, PlayerData[playerid][AdminLevel], PlayerData[playerid][score], PlayerData[playerid][Money], PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerData[playerid][blind], PlayerData[playerid][Cigi], PlayerData[playerid][Kaja]);

 
És végül a parancs:
 
CMD:kaja(playerid, params[])
{
    if(GetPlayerAdminLevel(playerid) <= 2) return SendClientMessage(playerid, COLOR_ERROR, \"Nem használhatod ezt a parancsot!\");
    {
new player, kaja;
if(sscanf(params, \"ud\", player, kaja)) return SendClientMessage(playerid, COLOR_ERROR, \"Használat: /kaja [Név/ID] [Kaja]\");
else if(!IsPlayerConnected(player)) return SendClientMessage(playerid, COLOR_ERROR, \"A játékos nincs csatlakozva!\");
{
   new string[128];
   format(string, sizeof(string), \"Sikeresen adtál kaját %s-nak/nek!\", PlayerName(player));
   SendClientMessage(playerid, COLOR_INFO, string);
   PlayerData[player][Kaja] = kaja;
}
}
return true;
}

Sscanf warning
« Válasz #1 Dátum: 2012. április 25. - 16:04:47 »
0 Show voters
sscanf(string, \"p<|>s[24]s[145]s[16]ddddddd\", name, HashedPW, IP, PlayerData[playerid][AdminLevel], PlayerData[playerid][score], PlayerData[playerid][Money], PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerData[playerid][blind], PlayerData[playerid][Cigi], PlayerData[playerid][Kaja]);

Sscanf warning
« Válasz #2 Dátum: 2012. április 25. - 16:14:10 »
0 Show voters
Még mindig kiírja:
 
sscanf warning: Format specifier does not match parameter count.

 
De viszont ezt kiírja, ha kilépek:
 
[MySQL] Error (0): Failed to exeute query. Unknown column \'Usern\' in \'where clause\'.

 
Ide raktam de a Kaját:
[pawn]enum PlayerInfo
{
AdminLevel,
Score,
Money,
Kills,
Deaths,
Blind,
Cigi,
Kaja
}[/pawn]
Reg:
[pawn]format(string, sizeof(string), \"INSERT INTO `accounts` (Username, Password, IP, AdminLevel, Score, Money, Kills, Deaths, Blind, Cigi, Kaja) VALUES (\'%s\', \'%s\', \'%s\', \'0\', \'0\', \'%i\', \'0\', \'0\', \'0\', \'0\', \'0\')\", PlayerName(playerid), HashedPW, PlayerIP(playerid), START_MONEY);[/pawn]
Login:
[pawn]sscanf(string, \"p<|>s[24]s[145]s[16]ddddddd\", name, HashedPW, IP, PlayerData[playerid][AdminLevel], PlayerData[playerid][score], PlayerData[playerid][Money], PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerData[playerid][blind], PlayerData[playerid][Cigi], PlayerData[playerid][Kaja]);[/pawn]
Account mentés:
[pawn]format(string, sizeof(string), \"UPDATE `accounts` SET `AdminLevel` = \'%d\', `Score` = \'%d\', `Money` = \'%d\', `Kills` = \'%d\', `Deaths` = \'%d\', `Blind` = \'%d\', `Cigi` = \'%d\', `Kaja` = \'%d\' WHERE Username= \'%s\'\", PlayerData[playerid][AdminLevel], GetPlayerScore(playerid), GetPlayerMoney(playerid), PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerData[playerid][blind], PlayerData[playerid][Cigi], PlayerData[playerid][Kaja], PlayerName(playerid));[/pawn]
« Utoljára szerkesztve: 2012. április 25. - 16:24:40 írta TheMesziErik »

Nem elérhető Norby

  • 1575
    • Profil megtekintése
Sscanf warning
« Válasz #3 Dátum: 2012. április 25. - 16:33:56 »
0 Show voters
sscanf(string, \"p<|>s[24]s[145]s[16]ddddddd\", name, HashedPW, IP, PlayerData[playerid][AdminLevel], PlayerData[playerid][score], PlayerData[playerid][Money], PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerData[playerid][blind], PlayerData[playerid][Cigi], PlayerData[playerid][Kaja]);

 
Itt elõször le kell kérdezned az összes táblát így :
 
format(str,sizeof(str),\"SELECT * FROM `tablaneve`\");
mysql_query(str);
mysql_fetch_row(string);
sscanf(string, \"p<|>s[24]s[145]s[16]ddddddd\", name, HashedPW, IP, PlayerData[playerid][AdminLevel], PlayerData[playerid][score], PlayerData[playerid][Money], PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerData[playerid][blind], PlayerData[playerid][Cigi], PlayerData[playerid][Kaja]);

Sscanf warning
« Válasz #4 Dátum: 2012. április 25. - 16:40:50 »
0 Show voters
Itt a belépés:
 
if(!response) return Kick(playerid);
            else if(!IsValidText(inputtext)) return SendClientMessage(playerid, COLOR_ERROR, \"Hiba: A jelszó érvénytelen karaktereket tartalmaz! Írj be egy új jelszót.\"), LoginDialog(playerid);
            else if(strlen(inputtext) == 0) return SendClientMessage(playerid, COLOR_ERROR, \"Hiba: Meg kell adnod egy jelszót!\"), LoginDialog(playerid);
   {
      new string[220], HashedPW[145], IP[16];
      WP_Hash(HashedPW, sizeof (HashedPW), inputtext);
      format(string, sizeof(string), \"SELECT * FROM `accounts` WHERE `Username` = \'%s\' AND `Password` = \'%s\'\", PlayerName(playerid), HashedPW);
      mysql_query(string);
      mysql_store_result();
      if(mysql_num_rows() != 0)
      {
         new name[24];
         IsPlayerLoggedIn[playerid] = 1;
         mysql_fetch_row(string, \"|\");
         sscanf(string, \"p<|>s[24]s[145]s[16]ddddddd\", name, HashedPW, IP, PlayerData[playerid][AdminLevel], PlayerData[playerid][score], PlayerData[playerid][Money], PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerData[playerid][blind], PlayerData[playerid][Cigi], PlayerData[playerid][Kaja]);
         format(string, sizeof(string), \"UPDATE `accounts` SET `IP` = \'%s\' WHERE Username= \'%s\'\", PlayerIP(playerid), PlayerName(playerid));
         mysql_query(string);
         SetPlayerScore(playerid, PlayerData[playerid][score]);
         GivePlayerMoney(playerid, PlayerData[playerid][Money]);
         #if defined ANTI_BAN_EVADE
         format(string, sizeof(string), \"SELECT `Username` FROM `banned` WHERE `Username` = \'%s\'\", PlayerName(playerid));
         mysql_query(string);
         mysql_store_result();
         if(mysql_num_rows())
         {
            format(string, sizeof(string), \"[AUTO BAN] %s bannolva lett\", PlayerName(playerid));
            SendClientMessageToAll(COLOR_INFO, string);
            BanPlayer(playerid, \"Anti-Cheat\", \"Ban\");
         }
         mysql_free_result();
         #endif
      }
      else SendClientMessage(playerid, COLOR_ERROR, \"Hiba: Helytelen jelszó. Írd be újra!\"), LoginDialog(playerid);
      mysql_free_result();
   }
« Utoljára szerkesztve: 2012. április 25. - 16:41:43 írta TheMesziErik »

Nem elérhető Norby

  • 1575
    • Profil megtekintése
Sscanf warning
« Válasz #5 Dátum: 2012. április 25. - 18:31:12 »
0 Show voters
Akkor bocs!
Próbáltad már frissíteni az sscanfod ?

Nem elérhető Erik3333

  • 945
  • SMF | phpBB | TS3 | PHP | HTML | CSS | JS | PAWN | JAVA
    • Profil megtekintése
Sscanf warning
« Válasz #6 Dátum: 2012. április 25. - 18:45:09 »
0 Show voters
Szerintem az sscanf-al nincs semmi probléma, mert ez a hiba azóta van, amióta beleírtam az fs-be, hogy Blind, Cigi, Kaja.

Nem elérhető Casamiro

  • 1046
    • Profil megtekintése
Sscanf warning
« Válasz #7 Dátum: 2012. április 25. - 19:26:48 »
0 Show voters
format(string, sizeof(string), \"INSERT INTO `accounts` (`Username`, `Password`, `IP`, `AdminLevel`, `Score`, `Money`, `Kills`, `Deaths`, `Blind`, `Cigi`, `Kaja`) VALUES (\'%s\', \'%s\', \'%s\', \'0\', \'0\', \'%i\', \'0\', \'0\', \'0\', \'0\', \'0\')\", PlayerName(playerid), HashedPW, PlayerIP(playerid), START_MONEY);

Sscanf warning
« Válasz #8 Dátum: 2012. április 25. - 20:37:22 »
0 Show voters
Idézetet írta: Casamiro date=1335374808\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"20618\" data-ipsquote-contentclass=\"forums_Topic

format(string, sizeof(string), \"INSERT INTO `accounts` (`Username`, `Password`, `IP`, `AdminLevel`, `Score`, `Money`, `Kills`, `Deaths`, `Blind`, `Cigi`, `Kaja`) VALUES (\'%s\', \'%s\', \'%s\', \'0\', \'0\', \'%i\', \'0\', \'0\', \'0\', \'0\', \'0\')\", PlayerName(playerid), HashedPW, PlayerIP(playerid), START_MONEY);

 

Szerintem nincs értelme kicserélni, mert azóta ilyen, amióta beleítam a Blindet, Cigit és Kaját.

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Sscanf warning
« Válasz #9 Dátum: 2012. április 26. - 15:25:08 »
0 Show voters
Esetleg túl rövid a \"string\" karakterlánc és nem tudja beleformázni az egész lekérdezést?

Sscanf warning
« Válasz #10 Dátum: 2012. április 26. - 15:55:26 »
0 Show voters
Bemásolom az régit, amibe még nem raktam bele a Blind-et, Cigit, Kaját, és az újat.
Régi:
 
enum PlayerInfo
{
AdminLevel,
Score,
Money,
Kills,
Deaths
}

 
Új:
 
enum PlayerInfo
{
AdminLevel,
Score,
Money,
Kills,
Deaths,
Blind,
Cigi,
Kaja
}

 
Régi:
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
    case REGISTER_DIALOG:
    {
        if(!response) return Kick(playerid);
            if(!IsValidText(inputtext)) return SendClientMessage(playerid, COLOR_ERROR, \"Hiba: A jelszó érvénytelen karaktereket tartalmaz! Írj be egy új jelszót.\"), RegisterDialog(playerid);
   if(strlen(inputtext) == 0) return SendClientMessage(playerid, COLOR_ERROR, \"Hiba: Meg kell adnod egy jelszót!\"), RegisterDialog(playerid);
   {
      new string[310], HashedPW[129];
      WP_Hash(HashedPW, sizeof (HashedPW), inputtext);
      format(string, sizeof(string), \"INSERT INTO `accounts` (Username, Password, IP, AdminLevel, Score, Money, Kills, Deaths) VALUES (\'%s\', \'%s\', \'%s\', \'0\', \'0\', \'%i\', \'0\', \'0\')\", PlayerName(playerid), HashedPW, PlayerIP(playerid), START_MONEY);
      mysql_query(string), LoginDialog(playerid);
   }
   return true;
}
case LOGIN_DIALOG:
    {
        if(!response) return Kick(playerid);
            else if(!IsValidText(inputtext)) return SendClientMessage(playerid, COLOR_ERROR, \"Hiba: A jelszó érvénytelen karaktereket tartalmaz! Írj be egy új jelszót.\"), LoginDialog(playerid);
            else if(strlen(inputtext) == 0) return SendClientMessage(playerid, COLOR_ERROR, \"Hiba: Meg kell adnod egy jelszót!\"), LoginDialog(playerid);
   {
      new string[220], HashedPW[145], IP[16];
      WP_Hash(HashedPW, sizeof (HashedPW), inputtext);
      format(string, sizeof(string), \"SELECT * FROM `accounts` WHERE `Username` = \'%s\' AND `Password` = \'%s\'\", PlayerName(playerid), HashedPW);
      mysql_query(string);
      mysql_store_result();
      if(mysql_num_rows() != 0)
      {
         new name[24];
         IsPlayerLoggedIn[playerid] = 1;
         mysql_fetch_row(string, \"|\");
         sscanf(string, \"p<|>s[24]s[145]s[16]ddddd\", name, HashedPW, IP, PlayerData[playerid][AdminLevel], PlayerData[playerid][score], PlayerData[playerid][Money], PlayerData[playerid][Kills], PlayerData[playerid][Deaths]);
         format(string, sizeof(string), \"UPDATE `accounts` SET `IP` = \'%s\' WHERE Username= \'%s\'\", PlayerIP(playerid), PlayerName(playerid));
         mysql_query(string);
         SetPlayerScore(playerid, PlayerData[playerid][score]);
         GivePlayerMoney(playerid, PlayerData[playerid][Money]);
         #if defined ANTI_BAN_EVADE
         format(string, sizeof(string), \"SELECT `Username` FROM `banned` WHERE `Username` = \'%s\'\", PlayerName(playerid));
         mysql_query(string);
         mysql_store_result();
         if(mysql_num_rows())
         {
            format(string, sizeof(string), \"[AUTO BAN] %s has been banned for ban evading\", PlayerName(playerid));
            SendClientMessageToAll(COLOR_INFO, string);
            BanPlayer(playerid, \"Anti-Cheat\", \"Ban Evading\");
         }
         mysql_free_result();
         #endif
      }
      else SendClientMessage(playerid, COLOR_ERROR, \"Hiba: Helytelen jelszó. Írd be újra!\"), LoginDialog(playerid);
      mysql_free_result();
   }
   return true;
}
}
return false;
}

 
Új:
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
    case REGISTER_DIALOG:
    {
        if(!response) return Kick(playerid);
            if(!IsValidText(inputtext)) return SendClientMessage(playerid, COLOR_ERROR, \"Hiba: A jelszó érvénytelen karaktereket tartalmaz! Írj be egy új jelszót.\"), RegisterDialog(playerid);
   if(strlen(inputtext) == 0) return SendClientMessage(playerid, COLOR_ERROR, \"Hiba: Meg kell adnod egy jelszót!\"), RegisterDialog(playerid);
   {
      new string[310], HashedPW[129];
      WP_Hash(HashedPW, sizeof (HashedPW), inputtext);
      format(string, sizeof(string), \"INSERT INTO `accounts` (Username, Password, IP, AdminLevel, Score, Money, Kills, Deaths, Blind, Cigi, Kaja) VALUES (\'%s\', \'%s\', \'%s\', \'0\', \'0\', \'%i\', \'0\', \'0\', \'0\', \'0\', \'0\')\", PlayerName(playerid), HashedPW, PlayerIP(playerid), START_MONEY);
      mysql_query(string), LoginDialog(playerid);
   }
   return true;
}
case LOGIN_DIALOG:
    {
        if(!response) return Kick(playerid);
            else if(!IsValidText(inputtext)) return SendClientMessage(playerid, COLOR_ERROR, \"Hiba: A jelszó érvénytelen karaktereket tartalmaz! Írj be egy új jelszót.\"), LoginDialog(playerid);
            else if(strlen(inputtext) == 0) return SendClientMessage(playerid, COLOR_ERROR, \"Hiba: Meg kell adnod egy jelszót!\"), LoginDialog(playerid);
   {
      new string[220], HashedPW[145], IP[16];
      WP_Hash(HashedPW, sizeof (HashedPW), inputtext);
      format(string, sizeof(string), \"SELECT * FROM `accounts` WHERE `Username` = \'%s\' AND `Password` = \'%s\'\", PlayerName(playerid), HashedPW);
      mysql_query(string);
      mysql_store_result();
      if(mysql_num_rows() != 0)
      {
         new name[24];
         IsPlayerLoggedIn[playerid] = 1;
         mysql_fetch_row(string, \"|\");
         sscanf(string, \"p<|>s[24]s[145]s[16]ddddddd\", name, HashedPW, IP, PlayerData[playerid][AdminLevel], PlayerData[playerid][score], PlayerData[playerid][Money], PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerData[playerid][blind], PlayerData[playerid][Cigi], PlayerData[playerid][Kaja]);
         format(string, sizeof(string), \"UPDATE `accounts` SET `IP` = \'%s\' WHERE Username= \'%s\'\", PlayerIP(playerid), PlayerName(playerid));
         mysql_query(string);
         SetPlayerScore(playerid, PlayerData[playerid][score]);
         GivePlayerMoney(playerid, PlayerData[playerid][Money]);
         #if defined ANTI_BAN_EVADE
         format(string, sizeof(string), \"SELECT `Username` FROM `banned` WHERE `Username` = \'%s\'\", PlayerName(playerid));
         mysql_query(string);
         mysql_store_result();
         if(mysql_num_rows())
         {
            format(string, sizeof(string), \"[AUTO BAN] %s has been banned for ban evading\", PlayerName(playerid));
            SendClientMessageToAll(COLOR_INFO, string);
            BanPlayer(playerid, \"Anti-Cheat\", \"Ban Evading\");
         }
         mysql_free_result();
         #endif
      }
      else SendClientMessage(playerid, COLOR_ERROR, \"Hiba: Helytelen jelszó. Írd be újra!\"), LoginDialog(playerid);
      mysql_free_result();
   }
   return true;
}
}
return false;
}

 
Régi:
 
stock SavePlayerAccount(playerid)
{
new string[170];
format(string, sizeof(string), \"UPDATE `accounts` SET `AdminLevel` = \'%d\', `Score` = \'%d\', `Money` = \'%d\', `Kills` = \'%d\', `Deaths` = \'%d\' WHERE Username= \'%s\'\", PlayerData[playerid][AdminLevel], GetPlayerScore(playerid), GetPlayerMoney(playerid), PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerName(playerid));
mysql_query(string);
}

 
Új:
 
stock SavePlayerAccount(playerid)
{
new string[170];
format(string, sizeof(string), \"UPDATE `accounts` SET `AdminLevel` = \'%d\', `Score` = \'%d\', `Money` = \'%d\', `Kills` = \'%d\', `Deaths` = \'%d\', `Blind` = \'%d\', `Cigi` = \'%d\', `Kaja` = \'%d\' WHERE Username= \'%s\'\", PlayerData[playerid][AdminLevel], GetPlayerScore(playerid), GetPlayerMoney(playerid), PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerData[playerid][blind], PlayerData[playerid][Cigi], PlayerData[playerid][Kaja], PlayerName(playerid));
mysql_query(string);
}

 
Itt egy adatbázis hozzá:
 
-- phpMyAdmin SQL Dump
-- version 3.4.5
-- http://www.phpmyadmin.net
--
-- Hoszt: localhost
-- Létrehozás ideje: 2012. ápr. 26. 15:54
-- Szerver verzió: 5.5.16
-- PHP verzió: 5.3.8
SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";
SET time_zone = \"+00:00\";
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Adatbázis: `samp`
--
-- --------------------------------------------------------
--
-- Tábla szerkezet: `accounts`
--
CREATE TABLE IF NOT EXISTS `accounts` (
  `Username` varchar(24) NOT NULL,
  `Password` varchar(128) NOT NULL,
  `IP` varchar(16) NOT NULL,
  `AdminLevel` int(1) NOT NULL,
  `Score` int(6) NOT NULL,
  `Money` int(9) NOT NULL,
  `Kills` int(6) NOT NULL,
  `Deaths` int(6) NOT NULL,
  `Blind` int(1) NOT NULL,
  `Cigi` int(2) NOT NULL,
  `Kaja` int(2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- A tábla adatainak kiíratása `accounts`
--
INSERT INTO `accounts` (`Username`, `Password`, `IP`, `AdminLevel`, `Score`, `Money`, `Kills`, `Deaths`, `Blind`, `Cigi`, `Kaja`) VALUES
(\'TheMesziErik\', \'DE1E31E30846F64FEAA23E5D3EA5E05A19592AAA8D928729DAB49F0A72416F0461CA65AD7A57E947666E4C53EBCB1B118C72E914CF0B8A7E7E2D3765098DBA84\', \'127.0.0.1\', 7, 0, 30000, 0, 0, 0, 0, 0);
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
Sscanf warning
« Válasz #11 Dátum: 2012. április 26. - 16:57:50 »
+1 Show voters
A string buffer méretét emeld fel nagyobbra, ez azért lesz, mivel nem tudja az egészet beleformázni.
« Utoljára szerkesztve: 2012. április 26. - 17:00:35 írta kurta999 »

Sscanf warning
« Válasz #12 Dátum: 2012. április 26. - 17:15:03 »
0 Show voters
Idézetet írta: kurta999 date=1335452270\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"20618\" data-ipsquote-contentclass=\"forums_Topic
A string buffer méretét emeld fel nagyobbra, ez azért lesz, mivel nem tudja az egészet beleformázni.
 
Köszi!
Már csak az a baj, hogy amikor adok magamnak kaját, és utána lekérem, akkor mutatja, de amikor kilépek a szerverrõl, akkor nem menti le a kaját.

Dupla hozzászólás automatikusan összefûzve. ( 2012. április 27. - 14:04:02 )

Megtaláltam a hibát!
Ebbõl:
 
sscanf(string, \"p<|>s[24]s[145]s[16]ddddddd\", name, HashedPW, IP, PlayerData[playerid][AdminLevel], PlayerData[playerid][score], PlayerData[playerid][Money], PlayerData[playerid][Kills], PlayerData[playerid][Deaths], PlayerData[playerid][blind], PlayerData[playerid][Cigi], PlayerData[playerid][Kaja]);

 
Kihagytam egy Integer-t(d-t).
« Utoljára szerkesztve: 2012. április 27. - 14:04:02 írta TheMesziErik »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal