Problem mit der Speicherung der Accounts (Mysql R41-4)

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Habe den Code jetzt überarbeitet.




    Laut log macht er es so rein aber mir wird überall 0 Angezeigt. (In der Datenbank)




    Mysql Log:


    2 Mal editiert, zuletzt von Dr. Frauenarzt () aus folgendem Grund: Komplett Bearbeitung

  • [19:08:58] [WARNING] mysql_connect: no password specified

    Verbindung ohne Passwort.



    [19:08:58] [ERROR] cache_get_row_count: no active cache

    Hier versuchst du einen Cache auszulesen, ohne zuvor mysql_pquery/mysql_tquery verwendet zu haben.



    Unknown column 'DeaglespawnZeit' in 'field list'

    Das Feld gibt es in deiner Tabelle "users" nicht. Füge das hinzu.



    [19:09:25] [ERROR] mysql_format: no value for specifier '%s' passed

    Ein Platzhalter %s wird in mysql_format nicht gefüllt.



    [19:09:25] [ERROR] error #1065 while executing query "": Query was empty

    Ein leeres Query wird mit mysql_pquery/mysql_tquery gesendet.

  • Code
    [00:37:50] [ERROR] error #1064 while executing query "`Kills`='0', `sKills`='0', `Deaths`='0', `Arrested`='0', `PhoneBook`='0', `LottoNr`='0', `Fishes`='0', `BiggestFish`='0', `Job`='0' WHERE `Name`='' ": You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '`Kills`='0', `sKills`='0', `Deaths`='0', `Arrested`='0', `PhoneBook`='0', `Lotto' at line 1
    [00:37:50] [ERROR] error #1064 while executing query "`OrgManager`='-1', `OrgName`='Keine' WHERE `Name`='James.Gordon' ": You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '`OrgManager`='-1', `OrgName`='Keine' WHERE `Name`='James.Gordon'' at line 1
    [00:37:50] [ERROR] error #1064 while executing query "`PayDayHad`='0', `CDPlayer`='0', `AlcoholPerk`='0', `PainKillerPerk`='0', `PistolSkill`='2', `MaschinePistolSkill`='2', `SturmgewehrPistolSkill`='2', `ShotGunSkill`='1', `DrugPerk`='0', `MiserPerk`='0' WHERE `Name`='James.Gordon' ": You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '`PayDayHad`='0', `CDPlayer`='0', `AlcoholPerk`='0', `PainKillerPerk`='0', `Pisto' at line 1


    Code
    mysql_format(handle, secondQuery, sizeof(secondQuery), "`PayDayHad`='%d', `CDPlayer`='%d', `AlcoholPerk`='%d', `PainKillerPerk`='%d', `PistolSkill`='%d', `MaschinePistolSkill`='%d', `SturmgewehrPistolSkill`='%d', `ShotGunSkill`='%d', `DrugPerk`='%d', `MiserPerk`='%d' WHERE `Name`='%s' ",
    		PlayerInfo[playerid][pPayDayHad], PlayerInfo[playerid][pCDPlayer], PlayerInfo[playerid][pAlcoholPerk], PlayerInfo[playerid][pPainKillerPerk], PlayerInfo[playerid][pPistolSkill],
    		PlayerInfo[playerid][pMaschinePistolSkill], PlayerInfo[playerid][pSturmgewehrPistolSkill], PlayerInfo[playerid][pShotGunSkill], PlayerInfo[playerid][pDrugPerk], PlayerInfo[playerid][pMiserPerk], SpielerName(playerid));
    		strcat(mainQuery, secondQuery);


    Code
    mysql_format(handle, secondQuery, sizeof(secondQuery), "`Kills`='%d', `sKills`='%d', `Deaths`='%d', `Arrested`='%d', `PhoneBook`='%d', `LottoNr`='%d', `Fishes`='%d', `BiggestFish`='%d', `Job`='%d' WHERE `Name`='%s' ",
    		PlayerInfo[playerid][pKills], PlayerInfo[playerid][psKills], PlayerInfo[playerid][pDeaths], PlayerInfo[playerid][pArrested], PlayerInfo[playerid][pArrestTime],
    		PlayerInfo[playerid][pPhoneBook], PlayerInfo[playerid][pLottoNr], PlayerInfo[playerid][pFishes], PlayerInfo[playerid][pBiggestFish], PlayerInfo[playerid][pJob], SpielerName(playerid));
    		strcat(mainQuery, secondQuery);
    Code
    mysql_format(handle, secondQuery, sizeof(secondQuery), "`OrgManager`='%d', `OrgName`='%s' WHERE `Name`='%s' ",
    		PlayerInfo[playerid][pOrgaManager], PlayerInfo[playerid][pOrgaName], SpielerName(playerid));
    		strcat(mainQuery, secondQuery);


    Verstehe nicht warum jedes mal da fehler erscheinen liegt es an SpielerName(playerid);


    ?? das ist komisch...

  • Lasse mir das jedes mal printen egal wer sich registriert im moment.



    Code
    [01:17:31] UPDATE `users` SET `Level`='1', `AdminLevel`='0', `Checkpoint`='0', `CPrison`='0', `RunningCP`='0', `TeamRadar`='0', `BNDRadar`='0', `Rolex`='0', `Swissonic`='0', `Casio`='0', `Breitling`='0', `Nixon`='0', `IceWatch`='0', `StartCoints`='0', `Coints`='0', `SpawnhealZeit`='0', `DeaglespawnZeit`='0', `M4SpawnZeit`='0', `MP5SpawnZeit`='0', `MehrZinsenZeit`='0', `Medickit`='0', `Startbonus`='0', `Kreditkarte`='0', `KreditkarteBenutzung`='0', `Personalausweis`='0', `Namechange`='0', `DonateRank`='0', `UpgradePoints`='0', `ConnectedTime`='0', `Registered`='1', `Sex`='0', `Age`='0', `Origin`='0', `Muted`='0', `Respect`='0', `Gehalt`='0', `Money`='5000', `Bank`='0', `Jobgeld`='0', `Crimes`='0', `Kills`='0', `sKills`='0', `Deaths`='0', `Arrested`='0', `ArrestTime`='0', `PhoneBook`='0', `LottoNr`='0', `Fishes`='0', `BiggestFish`='0', `Job`='0' WHERE `Name`='James.Gordon' 
    [01:17:31] UPDATE `users` SET `HeadValue`='0', `Jailed`='0', `JailTime`='0', `Leader`='-1', `Member`='-1', `Rank`='0', `Skin`='26', `Vertragszeit`='5', `PayDayHad`='0', `CDPlayer`='0', `AlcoholPerk`='0', `PainKillerPerk`='0', `PistolSkill`='2', `MaschinePistolSkill`='2', `SturmgewehrPistolSkill`='2', `ShotGunSkill`='1', `DrugPerk`='0', `MiserPerk`='0' WHERE `Name`='James.Gordon' 
    [01:17:31] UPDATE `users` SET `TraderPerk`='0', `Tutorial`='0', `Cptut`='0', `kh`='0', `Warnings`='0', `Fuel`='0', `Married`='0', `MarriedTo`='Niemand', `WantedLevel`='0', `Spawn`='0', `SavedMaterials`='0', `SavedDrugs`='0', `BikeLic`='0', `LKWLic`='0', `DonatorTime`='0', `WerberName`='Niemand', `FightingStyle`='0', `Handy`='0', `OnDutySkin`='60', `CarLicPoints`='0', `SavedMaterials`='0', `SavedDrugs`='0', `BikeLic`='0', `LKWLic`='0', `DonatorTime`='0', `WerberName`='Niemand', `FightingStyle`='0', `Handy`='0', `OnDutySkin`='60', `CarLicPoints`='0', `BikeLicPoints`='0', `InviteSperre`='0', `warntime1`='0', `warntime2`='0', `Ticketsopen`='0', `DonatorTime`='0', `OldName`='Niemand', `ClientIP`='127.0.0.1', `OrgMember`='-1', `OrgLeader`='-1', `OrgManager`='-1', `OrgName`='Keine' WHERE `Name`='James.Gordon'


    Laut log stimmt das aber es ist in der Datenbank immer alles auf 0!

  • So habe das ganze nun ordentlich hinbekommen und speichert auch.



    Nur das Problem ist mit den Accounts Checken...



    Er liest den account nicht aus darum muss er sich jeders mal neu regestrieren

    Code
    stock mysql_CheckAccount(playerid)
    {
    	new Query[128],count;
    	mysql_format(handle, Query, sizeof(Query), "SELECT * FROM `users` WHERE `Name` = '%e'", SpielerName(playerid));
     	mysql_pquery(handle, Query, "", "");
    	cache_get_row_count(count);
    	return count;
    }
  • Er liest den account nicht aus darum muss er sich jeders mal neu regestrieren

    Wenn du mysql_pquery/mysql_tquery nutzt, dann muss der Cache in einem separaten Callback ausgelesen werden, somit kann der Wert nicht mehr zurück gegeben werden.
    Beispiel hier: http://wiki.sa-mp.com/wiki/MySQL/R40#mysql_pquery
    Sowie alle Codes in diesem Tutorial.


    Für deine Funktion könnte man es so machen:


    Eindeutig besser und empfohlen ist:
    stock mysql_CheckAccount(playerid)
    {
    new Query[128];
    mysql_format(handle, Query, sizeof(Query), "SELECT * FROM `users` WHERE `Name` = '%e'", SpielerName(playerid));
    mysql_pquery(handle, Query, "OnAccountChecked", "d", playerid);
    return 1;
    }


    forward OnAccountChecked(playerid);
    public OnAccountChecked(playerid)
    {
    new count;
    cache_get_row_count(count);
    if(count)
    {
    //Hier der Code, der ausgeführt werden soll, wenn der Spieler
    //schon ein Konto hat.
    }
    else
    {
    //Hier der Code, der ausgeführt werden soll, wenn der Spieler
    //kein Konto hat.
    }
    return 1;
    }


  • Habe ich zu





    Warum funktioniert das so nicht?
    Er liest die Acc´s nicht aber wen ich SetConnect nutze funktioniert das...


    //E:


    Eine Andere Frage wie kann ich die Regestrierung von 0 UHR bis 8 UHR Automatisch schließen.?


    @Jeffry_



    Wen ich else einbaue funktioniert das auch nicht warum auch immer.

    4 Mal editiert, zuletzt von Dr. Frauenarzt () aus folgendem Grund: Problem gefunden

  • Warum funktioniert das so nicht?
    Er liest die Acc´s nicht aber wen ich SetConnect nutze funktioniert das...

    Wie sieht das Query aus, welches OnAccountChecked aufruft?



    Eine Andere Frage wie kann ich die Regestrierung von 0 UHR bis 8 UHR Automatisch schließen.?

    new hour, minute, second;
    gettime(hour, minute, second);
    if(hour < 8) return SendClientMessage(playerid, 0xFF0000FF, "Die Registrierung ist zwischen 0 und 8 Uhr nicht möglich.");

  • Also so wars schon drinne warum auch immer dafür ein Timer gibt.^^


    SetTimerEx("OnAccountChecked",200,0,"i",playerid); unter OnPlayerRequestClass



    Und da wirds abgerufen eben um das zu checken.


    Code
    stock mysql_CheckAccount(playerid)
    {
    	new Query[128];
    	mysql_format(handle, Query, sizeof(Query), "SELECT * FROM `users` WHERE `Name` = '%e'", SpielerName(playerid));
     	mysql_pquery(handle, Query, "OnAccountChecked", "d", playerid);
    	return 1;
    }


    Mehr auch nicht.


  • mysql_format(handle, "SELECT * FROM `tankenbiz`", true, "LoadTankenBiz", "");
    mysql_format(handle, "SELECT * FROM `biz`", true, "LoadBiz", "");
    mysql_format(handle, "SELECT * FROM `sbiz`", true, "LoadSBiz", "");
    mysql_format(handle, "SELECT * FROM `teamkassen`", true, "LoadKassenInfo", "");




    Ist das so richtig das man die Sachen unter OnGamemodeinit auslesen kann?


    Oder nicht , Weil es komisch ist das es nicht geladen wird.

  • Kann mir einer sagen warum er mit (null) sagt?




    Das möchte er nicht updaten aber den rest vorher schon wen er das Updatet sagt er einfach mal (null)

  • mysql_format(handle, secondQuery, sizeof(secondQuery), "`TraderPerk`='%d', `Tutorial`='%d', `Cptut`='%d', `kh`='%d', `Warnings`='%d', `Fuel`='%d', `Married`='%d', `MarriedTo`='%s', `WantedLevel`='%d', `Spawn`='%d' WHERE `Name`='%s' ",
    PlayerInfo[playerid][pTraderPerk], PlayerInfo[playerid][pTut], PlayerInfo[playerid][pCPTUT], PlayerInfo[playerid][pKHTIME], PlayerInfo[playerid][pWarns],
    PlayerInfo[playerid][pFuel], PlayerInfo[playerid][pMarried], PlayerInfo[playerid][pMarriedTo], PlayerInfo[playerid][pWantedLevel], PlayerInfo[playerid][pSpawn], SpielerName(playerid));
    zu:
    mysql_format(handle, secondQuery, sizeof(secondQuery), "%s`TraderPerk`='%d', `Tutorial`='%d', `Cptut`='%d', `kh`='%d', `Warnings`='%d', `Fuel`='%d', `Married`='%d', `MarriedTo`='%s', `WantedLevel`='%d', `Spawn`='%d' WHERE `Name`='%s' ", secondQuery,
    PlayerInfo[playerid][pTraderPerk], PlayerInfo[playerid][pTut], PlayerInfo[playerid][pCPTUT], PlayerInfo[playerid][pKHTIME], PlayerInfo[playerid][pWarns],
    PlayerInfo[playerid][pFuel], PlayerInfo[playerid][pMarried], PlayerInfo[playerid][pMarriedTo], PlayerInfo[playerid][pWantedLevel], PlayerInfo[playerid][pSpawn], SpielerName(playerid));


    mysql_pquery(handle, mainQuery, "", "");
    print(mainQuery);
    zu:
    mysql_pquery(handle, secondQuery, "", "");
    print(secondQuery);


  • Warum werde ich sofort gekickt? :/


    Unter OnPlayerRequestClass




    new string[128];
    mysql_format(handle, string, sizeof(string), "SELECT COUNT(*) AS `count` FROM `users` WHERE `Name` = '%s'", SpielerName(playerid));
    mysql_pquery(handle, string, "LoadPlayerData", "d", playerid);


  • new string[128];
    mysql_format(handle, string, sizeof(string), "SELECT COUNT(*) AS `count` FROM `users` WHERE `Name` = '%s'", SpielerName(playerid));
    mysql_pquery(handle, string, "LoadPlayerData", "dd", playerid, 1); // Unter OnPlayerRequestClass



    Habe den Code nochmal Überarbeitet obwohl ein Acc exestiert sagt er mir es exestiert keiner?



  • do.de - Domain-Offensive - Domains für alle und zu super Preisen