Beiträge von Jeffry

    Also Geburtstag wird als "0" ausgegeben

    Ist das jetzt der Geburtstag oder das Alter? Deine Variable heißt Alter, deine Bezeichnung Geburtstag. Entscheide dich für eins und benenne beides gleich, ebenfalls in der Datenbank.
    Für das Alter musst du %d nutzen, für den Geburtstag %s. Beim Geburtstag muss im enum das pGeburtstag dann ein Array sein. pGeburtstag[11],



    Passwort wird garnicht angezeigt.

    Ich bezweifle, dass du mit der Funktion das gehashte Passwort in Klartext zurück bekommst. Der Sinn eines Hashes ist ja genau das, dass man das nicht mehr hinbekommt.

    Kann mir jemand helfen?

    Das Query funktioniert nicht, weil ALTER ein SQL Befehl ist.
    Entweder du packst es in die Anführungszeichen `Alter` oder nennst es zum Beispiel pAlter.


    Außerdem nutzt du %e beim pAlter. Das Alter ist aber eine Zahl und damit %d.


    Außer du hast dort das Geburtsdatum drin stehen, dann solltest du das aber ohnehin zu Geburtstag ändern.
    mysql_format(handle, query, sizeof(query), "INSERT INTO `accounts` (Spielername, Passwort, LastIP, Geschlecht, `Alter`) VALUES ('%e', '%e','%e','%e','%d')", sI[playerid][pName], sI[playerid][pPasswort], Spielerip(playerid), sI[playerid][pGeschlecht], sI[playerid][pAlter]);
    bzw
    mysql_format(handle, query, sizeof(query), "INSERT INTO `accounts` (Spielername, Passwort, LastIP, Geschlecht, Geburtstag) VALUES ('%e', '%e','%e','%e','%e')", sI[playerid][pName], sI[playerid][pPasswort], Spielerip(playerid), sI[playerid][pGeschlecht], sI[playerid][pAlter]);

    Das mit "Switch & Case" wäre meiner Meinung nach zu aufwendig und zu ressourcenfressend.

    Ressourcenfressend ist ein einfacher Switch nicht.
    stock WeaponName(id)
    {
    new wName[32];
    wName="INVALID_WEAPON";
    switch(id)
    {
    case 0: wName="Fist";
    case 1: wName="Brass Knuckles";
    case 2: wName="Golf Club";
    case 3: wName="Night Stick";
    case 4: wName="Knife";
    case 5: wName="Baseball Bat";
    case 6: wName="Shovel";
    case 7: wName="Pool Cue";
    case 8: wName="Katana";
    case 9: wName="Chainsaw";
    case 10: wName="Purple Dildo";
    case 11: wName="Small White Vibrator";
    case 12: wName="Large White Vibrator";
    case 13: wName="Silver Vibrator";
    case 14: wName="Flowers";
    case 15: wName="Cane";
    case 16: wName="Grenade";
    case 17: wName="Tear Gas";
    case 18: wName="Molotov Cocktail";
    case 22: wName="9mm";
    case 23: wName="Silenced 9mm";
    case 24: wName="Desert Eagle";
    case 25: wName="Shotgun";
    case 26: wName="Sawnoff Shotgun";
    case 27: wName="Combat Shotgun";
    case 28: wName="Micro SMG";
    case 29: wName="MP5";
    case 30: wName="AK 47";
    case 31: wName="M4";
    case 32: wName="Tec 9";
    case 33: wName="Country Rifle";
    case 34: wName="Sniper Rifle";
    case 35: wName="Rocket Launcher";
    case 36: wName="HS Rocket Launcher";
    case 37: wName="Flamethrower";
    case 38: wName="Minigun";
    case 39: wName="Satchel Charge";
    case 40: wName="Detonator";
    case 41: wName="Spraycan";
    case 42: wName="Fire Extinguiser";
    case 43: wName="Camera";
    case 44: wName="Night Vision Goggles";
    case 45: wName="Thermal Goggles";
    case 46: wName="Parachute";
    }
    return wName;
    }


    Nutzung:
    printf("WaffenID 14 heißt: %s", WeaponName(14));



    Alternativ kannst du es über ein vordefiniertes Array machen:
    http://forum.sa-mp.com/showpost.php?p=2348847&postcount=6


    Nutzung wäre dann:
    printf("WaffenID 14 heißt: %s", WName[14]);


    Das ist ressourcentechnisch was die CPU angeht etwas besser, dafür geht es mehr auf den Arbeitsspeicher.
    Allerdings sprechen wir hier über so minimale Auslastungen, da spielt es keine Rolle welches der beiden du nimmst.
    Den Stock habe ich so selbst auf meinem Server jahrelang verwendet.

    selfmadee.pwn:11551

    Der Fehler tritt in OnPlayerCommandText im Befehl /fcarsell auf.
    Und zwar in der Zeile 11551 (kann auch eine Funktion sein, die von /fcarsell aufgerufen wird).


    Poste bitte diese Zeile.


    Falls du inzwischen etwas am Code verändert hast (Zeilen hinzugefügt/entfernt) erzeuge den Log erneut, die Zeilenangabe ist dann vielleicht nicht mehr aktuell.

    PlayerTextDrawSetString(playerid, pTextSpeedo[playerid][4], string); //HIER IST DER FEHLER..

    Hier wird kein Cache ausgelesen?



    sscanf warning: String buffer overflow.

    Da ist ein String, der in sscanf verwendet wird, zu klein.
    Sprich es wird zum Beispiel versucht in ein string[5] sowas wie "Guten Tag" zu schreiben. Das sind ja mehr als 5 Zeichen.

    new ahInfo[300][AutohausDaten] = {

    new ahInfo[5][AutohausDaten]


    Du kannst es auch so schreiben:
    new ahInfo[][AutohausDaten] = {


    Erklärung:
    Wird keine Zahl im mit Werten vordefinierten (wichtig!) Array angegeben, dann wird automatisch die Anzahl der Werte als Größe genommen.


    new ahInfo[5][AutohausDaten] = {
    { 1, 411, 1.1, 1.1, 1.1, 1.1, 0, 125000 },
    { 1, 520, 1.1, 1.1, 1.1, 1.1, 0, 75000 },
    { 1, 522, 1.1, 1.1, 1.1, 1.1, 0, 50000},
    { 2, 417, 1.1, 1.1, 1.1, 1.1, 0, 75000},
    { 3, 444, 1.1, 1.1, 1.1, 1.1, 0, 30000}
    };
    ist also identisch zu
    new ahInfo[][AutohausDaten] = {
    { 1, 411, 1.1, 1.1, 1.1, 1.1, 0, 125000 },
    { 1, 520, 1.1, 1.1, 1.1, 1.1, 0, 75000 },
    { 1, 522, 1.1, 1.1, 1.1, 1.1, 0, 50000},
    { 2, 417, 1.1, 1.1, 1.1, 1.1, 0, 75000},
    { 3, 444, 1.1, 1.1, 1.1, 1.1, 0, 30000}
    };


    Nur musst du nicht jedes mal die Zahl anpassen, wenn du einen Wert hinzufügst.


    Um, für eine Schleife zum Beispiel, die Größe auszulesen, kannst du
    sizeof(ahInfo)
    nehmen, das gibt dir in dem Fall 5 zurück.

    Nicht direkt Scripting bezogen, aber ist es normal, dass an Spieler attached 3D Labels je nach Distanz von Spieler zu Spieler sich in der höhe verschieben, da sie nicht skaliert werden?

    Soweit ich weiß ist das normal. War bei mir auch so.





    Danke dir ! :)

    Warum auch immer man sich seinen Code absichtlich unleserlich macht bliebt hier das Rätsel.
    Schreib das bitte auf keinen Fall so. Du weißt zwar jetzt dass es geht und was es macht, nutze das aber bitte nicht.


    Erstens kennen 99,99% diese Schreibweise nicht und zweitens macht es den Code unleserlich, vor allem deshalb weil das Syntax Highlighting für Strings nicht funktioniert.
    Und drittens klappt es nicht, wenn eingebettete Farbcodes im String sind.

    Habe noch ein Problem wenn ich das so nutze kommt trotzdem ich in einer Fraktion bin nicht die Nachricht.
    Wenn ich das ! vorne wegnehme dann kommt immer die Nachricht ob ich in einer Fraktion bin oder nicht.

    Das liegt an der Funktion, die kommt mit der 0 nicht klar, da immer eines von beiden (Leader/Member) Null ist.


    Mache es so:
    if(pInfo[playerid][pLeader] == 0 && pInfo[playerid][pMember] == 0) return SendClientMessage(playerid,ROT,"Der Spieler ist in einer Fraktion.");

    if(!IsPlayerInFrak(playerid,1) || !IsPlayerInFrak(playerid,2) || !IsPlayerInFrak(playerid,3)) return SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion und darfst diesen Befehl nicht nutzen.");
    Hier kann es durchaus sein, dass bis zu 3x geprintet wird.


    Korrekt sollte das aber so aussehen:


    if(!IsPlayerInFrak(playerid,1) && !IsPlayerInFrak(playerid,2) && !IsPlayerInFrak(playerid,3)) return SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion und darfst diesen Befehl nicht nutzen.");
    Dennoch kann bis zu 3x geprintet werden, da du die Funktion ja 3x aufrufst.


    Oder so:
    if(IsPlayerInFrak(playerid,0)) return SendClientMessage(playerid,ROT,"Du bist in keiner Fraktion und darfst diesen Befehl nicht nutzen.");
    Dann wird es nur einmal aufgerufen.