Beiträge von Jeffry

    Kannst du das nächstes Mal bitte nicht alles in eine Zeile schreiben, so erkennt man gar nichts.
    Aber gut, es wird also so übergeben, dann liegt es nicht an der Datenbank.


    Wie hast du denn
    [sEmail]
    in deinem enum definiert? Poste mal das enum.

    Gut.


    Ja du musst den Spieler auch mindestens einmal speichern, sodass das Query an die Datenbank geschickt wird, sonst wird die natürlich nichts angezeigt.
    Möglicherweise steht es auch in einer extra Log Datei, mysql_log oder so, so ist es bei mir. Kommt auf das Plugin an.

    #define SPAM (6)


    Musst wohl das ändern. Ich benutze JunkBuster nicht, daher kann ich es dir nicht genau sagen, aber was ich dir sagen kann, und was auch Double-O-Seven empfiehlt: Lies die Readme! Dort steht alles drin.

    Auf Anfrage in PN:


    Schalte doch mal den MySQL Debug an (mysql_log oder mysql_debug, je nach Plugin) und setze es auch LOG_ALL bzw. 1, je nach Plugin. Dann poste bitte was im Server Log geprintet wird wenn du das Query ausführst.

    Suche nach
    #error
    Und kommentiere die Zeilen aus oder entferne sie.


    Das sind benutzerdefinierte Error Meldungen die in Junkbuster eingebaut wurden, damit man das Readme auch wirklich liest. Also du hast es sicher nicht genau genug gelesen.

    Es kann sein (das kommt vor), dass das zurückgegebene Paket schneller war als das, was gesendet wurde, daher bekommst du noch die alte Zahl bei GetPlayerSkin.
    Mach es so:
    format(query, sizeof(query), "UPDATE `accounts` SET `Skin`='101' WHERE `Name`='%s'", SpielerInfo[playerid][pName]);


    Dann sollte es gehen.

    Sieht gut aus.
    Achte darauf, dass dein query groß genug ist, 228 sieht knapp aus.


    Falls es nicht klappt, poste bitte was im server_log steht wenn du den MySQL Debug Modus (oder Log Modus) an machst.

    Hier eine Funktion um einem Spieler eine Waffe komplett oder nur teilweise abzunehmen:


    stock RemovePlayerWeapon(playerid, weaponid, ammo = 0) //©Jeffry
    {
    new w = GetPlayerWeapon(playerid), plyWeapons[13], plyAmmo[13];
    for(new slot = 0; slot <= 12; slot++)
    {
    GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
    if(plyWeapons[slot] == weaponid)
    {
    if(ammo == 0 || plyAmmo[slot] <= ammo)
    {
    if(w == plyWeapons[slot]) w = 0;
    plyAmmo[slot] = 0;
    plyWeapons[slot] = 0;
    }
    else
    {
    plyAmmo[slot]-=ammo;
    }
    }
    }
    ResetPlayerWeapons(playerid);
    for(new slot = 0; slot <= 12; slot++)
    {
    GivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]);
    }
    SetPlayerArmedWeapon(playerid, w);
    return 1;
    }



    Benutzung:

    Spoiler anzeigen
    RemovePlayerWeapon(playerid, 24, 10); //Entfernt 10 Schuss Deagle von playerid.
    RemovePlayerWeapon(playerid, 24); //Entfernt den Deagle komplett von playerid.


    Keywords: EntferneWaffe, EntferneAmmo, SpielerWaffeWeg, EntferneSpielerWaffe, EntferneSpielerAmmo, RemovePlayerAmmo, RemoveWeaponFromPlayer, WaffeAbnehmen, RemoveWeapon.

    format(query, sizeof(query), "UPDATE accounts SET Adresse = %i, Email = '%s', Adminlevel = %d WHERE Spielername = '%s'",


    Strings brauchen diese ' ' Gänsefüßchen.
    Außerdem solltest du aus Sicherheitsgründen Strings immer escapen (mysql_real_escape_string).

    Du hast doch bei der erfolgreichen Registration das hier:
    SpawnPlayer(playerid);


    Wirst du nicht gespawnt, wanderst du direkt in die Class-Selektion?


    Falls ja, dann musst du abfragen, ob der Spieler sich eben registriert hat, und wenn ja, dann wird er direkt nochmal gespawnt wenn er in die Class-Selektion kommt.
    (Spieler-Variable auf 1 bei Registration => Abfragen ob 1 bei OnPlayerRequestClass => Zu 0 setzen => SetSpawnInfo & SpawnPlayer).

    Wieso? Man kann doch scrollen :rolleyes:


    In einem Server in dem zwei Spieler sind die sich untereinander nicht unterhalten (Chat) und auch sonst keine Nachrichten gesendet werden mag das egal sein. Wenn der Server aber mal 100 Spieler online hat, dann hast du die Zeit dazu gar nicht, weil die 10 Zeilen (oder 20 wenn auf max.) in ein zwei Sekunden schon wieder nach oben geschossen sind, da hauste nur noch auf die Bild (hoch) Taste oder drehst am Rad (im wahrsten Sinne des Wortes!).
    Ich spreche aus Erfahrung, genau deshalb habe ich vor langer langer Zeit meinen /admins Befehl (damals auch im Chat, da es noch keine Dialoge gab) sofort auf Dialog umgeschrieben, da hat man das Problem nicht, dass es abhaut.


    Also warum dann den Chat spammen wenn es auch wesentlich komfortabler geht.


    Außerdem hat man in Dialogen die wesentlich besseren Darstellungsmöglichkeiten.

    SendClientMessage ein ausgaben limit von 168 oder mehr zeichen hat.


    Das Limit liegt bei 144 Zeichen.


    Im Chat das auszugeben ist nicht so sinnvoll, vor allem wenn es zum Beispiel 10 Admins sind.


    COMMAND:admins(playerid)
    {
    new string[1024]; //Admins ändern sich doch dynamisch, da muss man ja jedes mal den Code neu kompilieren...einfach 1024 oder so nehmen, dann passt das.
    for(new i,l=GetMaxPlayers();i<l;i++) {
    if(!IsPlayerConnected(i) || !User[i][Admin]) continue;
    format(string,sizeof(string),"%s%s: %s\n",string,Adminrang[User[i][Admin]],PlayerName(i));
    }
    if(!strlen(string)) return SendClientMessage(playerid,GRAU,"Es sind keine Admins Online!");
    format(string, sizeof(string), "Admins online:\n\n%s", string);
    ShowPlayerDialog(playerid, 1337, DIALOG_STYLE_MSGBOX, "Admins", string, "Close", "");
    return 1;
    }

    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == neulingsinfo)
    {
    //mach was hier...
    }
    return 1;
    }


    Sonst bringt das Pickup ja nichts.



    Oder du machst das
    new neulingsinfo;
    &
    neulingsinfo =
    einfach weg.