Beiträge von robbi2304

    Ja. Du musst ein Textdraw an der Position erstellen und dein Wantedsystem anpassen.
    Du nutzt nicht mehr "SetPlayerWantedLevel" sondern machst dir eine eigene Funktion.


    new WantedLevel[MAX_PLAYERS]; // Bitte beim Verbinden (@OnPlayerConnect) auf 0 setzenforward SetPlayerCrimeLevel(playerid, level);public SetPlayerCrimeLevel(playerid, level){WantedLevel[playerid] += level;// Dann noch dein Textdraw hier mit dem Level updaten und perfekt! :)return 1;}

    Danke erstmal für deinen Tipp. Allerdings komme ich nicht wirklich weit.
    Ich habe es nun wie folgt aufgebaut,



    new WantedLevel[MAX_PLAYERS]; // Bitte beim Verbinden (@OnPlayerConnect) auf 0 setzen
    forward SetPlayerCrimeLevel(playerid, level);
    public SetPlayerCrimeLevel(playerid, level)
    {
    WantedLevel[playerid] += level;
    TextDrawCreate(1.000000,433.000000,PlayerInfo[playerid][pWanted]);
    return 1;
    }


    Ich gebe mit folgenden Befehl die Wanteds



    ocmd:su(playerid,params[])
    {
    new pID, Wanteds, Grund[128];
    if(sscanf(params,"uis",pID,Wanteds,Grund))return SendClientMessage(playerid,COLOR_RED,"Fehler bei der Eingabe. Verwende: /su [ID] [Anzahl] [Grund]");
    {
    new string[128];
    new Name2[MAX_PLAYER_NAME];
    new string2[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    GetPlayerName(pID,Name2,sizeof(Name2));
    format(string,128,"Du hast dem Spieler %s %i Wanteds gegeben! Grund: %s",Name2,Wanteds,Grund);
    format(string2,128,"Der Spieler %s hat dir %i Wanteds gegeben! Grund: %s",name,Wanteds,Grund);
    SetPlayerWantedLevel(pID,GetPlayerWantedLevel(pID) + Wanteds);
    SendClientMessage(playerid,COLOR_RED,string);
    PlayerInfo[playerid][pWanted]+=(GetPlayerWantedLevel(pID));
    SendClientMessage(pID,COLOR_RED,string2);
    }
    return 1;
    }

    Zunächst einmal mein Code



    ocmd:su(playerid,params[])
    {
    new pID, Wanteds, Grund[128];
    if(sscanf(params,"uis",pID,Wanteds,Grund))return SendClientMessage(playerid,COLOR_RED,"USING: /su [ID] [Anzahl] [Grund]");
    {
    new string[128];
    new Name2[MAX_PLAYER_NAME];
    new string2[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    GetPlayerName(pID,Name2,sizeof(Name2));
    format(string,128,"Du hast dem Spieler %s %i Wanteds gegeben! Grund: %s",Name2,Wanteds,Grund);
    format(string2,128,"Der Spieler %s hat dir %i Wanteds gegeben! Grund: %s",name,Wanteds,Grund);
    SetPlayerWantedLevel(pID,Wanteds);
    SendClientMessage(playerid,COLOR_RED,string);
    SendClientMessage(pID,COLOR_RED,string2);
    }
    return 1;
    }


    Meine Frage ist wie ich den SetPlayerwantedLevel so einstellen kann das er immer Plus Rechnet und nicht immer auf die letzte Eingabe aktualisiert.

    Wie oben in der Überschrift speichert mein Stock nicht bzw wirft Errors aus.


    Hier zunächst der Stock



    stock TBan(playerid,const string[],dauer,bannerid)
    {
    new timestamp,str[128];
    timestamp = gettime();
    new sekunden = dauer * 60;
    timestamp += sekunden;
    new name[MAX_PLAYER_NAME],bannername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerName(bannerid,bannername,sizeof(bannername));
    format(str,sizeof(str),"AdmMsg: %s wurde von %s für %d Minuten gebannt",name,bannername,dauer);
    SendClientMessageToAll(COLOR_RED,str);
    format(str,sizeof(str),"Grund: %s",string);
    SendClientMessageToAll(COLOR_RED,str);
    Kick(playerid);
    cache_get_field_content_int("users", "Timeban", timestamp, "Name", name);
    return 1;
    }


    und hier einmal der Fehler von PAWN


    Code
    C:\neu.pwn(1106) : error 035: argument type mismatch (argument 1)
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.

    Guten Tag liebe Leute,


    ich bin auf der Suche nach einem Mapper. Ich möchte gerne einen Parkplatz für den Busjob erstellen. Hierzu habe ich vorgesehen ein Objekt zu entfernen.
    Da ich nicht Mappen kann möchte ich dies gerne an einen Erfahrenen Mapper übergeben.


    Hierfür biete ich 5 € PaySafe Card an.


    Nur mit Mittelsmann

    Erstelle die Checkpoints mit einem Streamer (z.B.: http://forum.sa-mp.com/showthread.php?t=102865) und frage dann bei OnPlayerEnterDynamicCP ab, ob der Spieler in den richtigen Checkpoint gelaufen ist, wenn ja, dann setze ihm die Variable auf 1.

    Okay. Ich kriege komischerweise den Streamer nicht geladen.



    Weswegen auch immer es werden keine Fehler ausgegeben.


    Guten Tag,


    ich habe wieder mal ein Problem. Dieses mal mit einem Checkpoint.



    if(dialogid == DIALOG_BUSLINIEN)
    {
    if(response)
    {
    if(listitem == 0)
    {
    SendClientMessage(playerid,COLOR_RED,"Buslinie gestartet. Fahren sie die roten Marker entlang.");
    SetPlayerCheckpoint(playerid,1172.9111,-1824.7823,13.5306,180);
    L1Checkpoint[playerid]=1;
    }
    if(listitem == 1)
    {
    SendClientMessage(playerid,COLOR_RED,"Buslinie gestartet. Fahren sie die roten Marker entlang.");
    L2Checkpoint[playerid]=1;
    SetPlayerCheckpoint(playerid,1181.5731,-936.9670,42.8555,6.0);
    }
    }
    }


    Bevor ich in den Checkpoint bin, leitet er auf L1Checkpoint[playerid]=1; weiter. Ich möchte aber erst das er das tut wenn ich im Checkpoint war

    Der Spieler wird mit


    PlayerInfo[playerid][pLevel]++;


    hochgestuft. Er kriegt ja nichtmal die Abfrage auf die Reihe. Daher muss was im Zeitfenster nicht passen

    Guten Tag,


    ich habe scheinbar ein Problem beim speichern / abrufen.




    stock CheckLevel(playerid)
    {
    if(PlayerInfo[playerid][pLevel] == 1)
    {
    if(PlayerInfo[playerid][pRespektpunkte] >= 8)
    {
    SendClientMessage(playerid,-1,"Herzlichen Glückwunsch du hast das erste Level UP erreicht.");
    PlayerInfo[playerid][pRPg] += 4;
    PlayerInfo[playerid][pRespektpunkte] = 0;
    PlayerInfo[playerid][pJobMoney] = 0;
    PlayerInfo[playerid][pLevel]++;
    }
    }
    else
    {
    new xy = (PlayerInfo[playerid][pLevel] * 4) + 8;

    if(PlayerInfo[playerid][pRespektpunkte] >= xy)
    {
    new string[128];
    format(string,sizeof(string),"Du hast soeben Level %i erreicht.",PlayerInfo[playerid][pLevel]);
    SendClientMessage(playerid,-1,string);
    PlayerInfo[playerid][pRPg] += 4;
    PlayerInfo[playerid][pRespektpunkte] = 0;
    PlayerInfo[playerid][pJobMoney] = 0;
    PlayerInfo[playerid][pLevel]++;
    }
    }
    }


    Wenn der Spieler das Level 2 erreicht hat wofür man 12 RP benötigt soll er ein Level hochgestuft werden. Allerdings zieht er das Level nicht nach oben bzw erkennt nichtmal das ein Lvl Up erfolgt. Bei Lvl 1 mit 8 RP funktioniert es

    Du meinst nach


    Code
    WHERE id = '%d'",

    ?


    Das ist in jedenfall Richtig.


    Nur scheint er irgendein Problem mit der Datenbank zu haben so das er da nicht reinschreiben kann


    // Fehler eigenständig behoben


    mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', Konto = '%d', kills = '%d', [b]deaths = '%d'[/b] gesamtrp = '%d' WHERE id = '%d'",



    Fehlte nur ein komma dann kein wunder

    Guten Tag,


    meine MySQL gibt mir heute mal wieder falsche Daten aus und ich weiß nicht genau wo das Problem liegt.


    Dieser Fehler wird mit von der MySQL Log ausgegeben


    Code
    [10:45:03] [ERROR] CMySQLQuery::Execute[] - (error #1064) 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 'gesamtrp = '12' ,WHERE id = '2'' at line 1


    Codeleisten aus dem Script die dies beinhalten



    stock SaveUserStats(playerid)
    {
    //Wenn der Spieler nicht eingeloggt ist, dann speichere seine Statistiken nicht
    if(!PlayerInfo[playerid][pLoggedIn]) return 1;



    //Ansonsten speichere sie
    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE users SET level = '%d', money = '%d', Konto = '%d', kills = '%d', deaths = '%d' gesamtrp = '%d' ,WHERE id = '%d'",
    PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pKonto], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pRPg], PlayerInfo[playerid][p_id]);
    mysql_pquery(handle, query);
    return 1;
    }



    forward OnUserLogin(playerid);
    public OnUserLogin(playerid)
    {
    //Query wurde ausgeführt und das Ergebnis im Cache gespeichert
    if(cache_get_row_count() == 0)
    {
    //Der Spieler hat ein falsches Passwort eingegeben
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen");
    }
    else
    {
    //Es existiert ein Ergebnis, das heißt der Spieler hat das richtige Passwort eingegeben
    //Wir lesen nun die erste Zeile des Caches aus (ID 0)
    SpawnPlayer(playerid);
    PlayerInfo[playerid][p_id] = cache_get_field_content_int(0, "id", handle);
    PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0, "level", handle);
    PlayerInfo[playerid][pRespektpunkte] = cache_get_field_content_int(0, "pRP", handle);
    PlayerInfo[playerid][pRPg] = cache_get_field_content_int(0, "gesamtrp", handle);
    PlayerInfo[playerid][admin_level] = cache_get_field_content_int(0, "admin_level", handle);
    PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0, "money", handle);
    PlayerInfo[playerid][pKonto] = cache_get_field_content_int(0, "Konto", handle);
    PlayerInfo[playerid][pKills] = cache_get_field_content_int(0, "kills", handle);
    PlayerInfo[playerid][pDeaths] = cache_get_field_content_int(0, "deaths", handle);
    PlayerInfo[playerid][pPaytime] = cache_get_field_content_int(0, "paytime", handle);
    PlayerInfo[playerid][pJobMoney] = cache_get_field_content_int(0, "JobMoney", handle);
    PlayerInfo[playerid][pRPg] = cache_get_field_content_int(0, "gesamtrp", handle);



    PlayerInfo[playerid][pLoggedIn] = true;
    GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
    loadPlayerCars(playerid);





    }
    return 1;
    }

    Bei den Gratis Dingern kannst du natürlich nicht viel erwarten. Bugs haben Sie alle und wir sprechen nicht von wenigen sondern von etwas mehr. Am besten du beginnst mit einem Selfmade das klappt am besten. Ich bin auch gerade dabei als Anfänger meines zuschreiben und habe vorher auch nur Godfather ect genommen. Aber nun soll mal was eigenes her. Ist auch sinnvoller und man kann besser nachvollziehen welche Bugs vorhanden sind

    Klar geht das auch =).



    ocmd:stats(playerid,params[])
    { if(!PlayerInfo[playerid][pLoggedIn]) return 1;
    new string[700],string1[1300],name1[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name1,sizeof(name1));



    format(string,sizeof(string),"{FEFEFE}Dein Level %d\n{FEFEFE}Deine Respektpunkte %d\n{FEFEFE}Dein Bargeld: {FEFEFE}%d${FEFEFE}\n{FEFEFE}Konto: {FEFEFE}%d${FEFEFE}\n\n{F15433}Deine Skills\n\n{FEFEFE}Dein Level: {F15433}%d{FEFEFE}\nDeine Kills: {F15433}%i{FEFEFE}\nGestorben: {F15433}%i{FEFEFE}",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pRespektpunkte],GetPlayerMoney(playerid),PlayerInfo[playerid][pMoney],PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pKills],PlayerInfo[playerid][pDeaths]);
    strcat(string1,string);
    ShowPlayerDialog(playerid, DIALOG_STATISTIKEN, DIALOG_STYLE_MSGBOX,PlayerInfo[playerid][pName],string1,"Ok","");



    return 1;
    }