Beiträge von robbi2304

    Problem erledigt


    Nächstes Problem folgt leider *heul*



    loadPlayerCars(playerid)
    {
    new query[128];
    format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",PlayerInfo[playerid][p_id]);
    mysql_pquery(handle,query,"OnPlayerCarsLoad","i",playerid);
    return 1;
    }
    forward OnPlayerCarsLoad(playerid);
    public OnPlayerCarsLoad(playerid)
    {
    new num_rows;
    for(new i=0; i<num_rows; i++)
    {
    new id = getFreeCarID();
    cache_get_value_name_int(i, "model", cInfo[id][model]);
    cache_get_value_name_int(i, "besitzer", cInfo[id][besitzer]);
    cache_get_value_name_float(i, "x", cInfo[id][c_x]);
    cache_get_value_name_float(i, "y", cInfo[id][c_y]);
    cache_get_value_name_float(i, "z", cInfo[id][c_z]);
    cache_get_value_name_float(i, "r", cInfo[id][c_r]);
    cache_get_value_name_int(i, "gespeert", cInfo[id][c_gespeert] );
    cache_get_value_name_int(i, "id", cInfo[id][db_id] );
    if(cInfo[id][c_gespeert] == 0)
    {
    cInfo[id][id_x] = CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],001,001,-1);
    }
    }
    }
    getFreeCarID()
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]==0)return i;
    }
    return 0;


    }


    Das Fahrzeug wird nach einem Server neustart nicht mehr gespawnt.



    Hinzu weiß ich nicht wie ich den PayTimer speichern soll.



    forward Update();
    public Update()
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerNPC(i))continue;
    if(!PlayerInfo[i][pLoggedIn])continue;


    //Payday
    PayDayTimer[i]++;
    if(PayDayTimer[i] >= 60)
    {
    PlayerInfo[i][pPaytime]++;
    PayDayTimer[i] = 0;


    }



    if(PlayerInfo[i][pPaytime] >= 60)
    {
    PayDay(i);
    PlayerInfo[i][pPaytime] = 0;


    }


    }
    return 1;
    }

    Ich scheine nicht wirklich für die neuen Funktion gemacht zusein.


    public OnPlayerCarsLoad(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,handle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id = getFreeCarID();
    cInfo[id][model] = cache_get_field_content_int(i,"model",handle);
    cInfo[id][besitzer] = cache_get_field_content_int(i,"besitzer",handle);
    cInfo[id][c_x] = cache_get_field_content_float(i,"x",handle);
    cInfo[id][c_y] = cache_get_field_content_float(i,"y",handle);
    cInfo[id][c_z] = cache_get_field_content_float(i,"z",handle);
    cInfo[id][c_r] = cache_get_field_content_float(i,"r",handle);
    cInfo[id][c_gespeert] = cache_get_field_content_int(i,"gespeert",handle);
    cInfo[id][db_id] = cache_get_field_content_int(i,"id",handle);
    if(cInfo[id][c_gespeert] == 0)
    {
    cInfo[id][id_x] = CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],-1,-1,-1);
    }
    }
    return 1;
    }


    Die ganzen caches können nicht verwendet werden.

    Nutze mysql_pquery.
    saveCarToDB(playerid,carid){ new query[128]; format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",PlayerInfo[playerid][p_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]); mysql_pquery(handle,query,"carSavedToDB","i",carid); return 1;}

    Das klappte soweit.


    Nun zum nächsten Befehl xD.


    forward carSavedToDB(carid);
    public carSavedToDB(carid)
    {
    cInfo[carid][db_id]=cache_insert_id(handle);
    return 1;
    }



    Code
    warning 202: number of arguments does not match definition

    ist dort cache_insert_id durch das Update wieder ungültig ?

    Hallo,


    ich habe nun mal geschaut das ich von R39 - 3 auf R41 update. Das ganze hat soweit geklappt bis auf bei einem Befehl wo ich nicht weiter weiß.


    saveCarToDB(playerid,carid)
    {
    new query[128];
    format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r) VALUES ('%i','%i','%f','%f','%f','%f')",PlayerInfo[playerid][p_id],cInfo[carid][model],cInfo[carid][c_x],cInfo[carid][c_y],cInfo[carid][c_z],cInfo[carid][c_r]);
    mysql_function_query(handle,query,true,"carSavedToDB","i",carid);
    return 1;
    }


    mysql_function_query sei nicht definiert.


    mysql_format


    habe ich ausprobiert da wirft mir die MySQL Log aber folgendes aus


    Code
    [19:05:20] [ERROR] mysql_format: destination size '1' is too small

    Zeig uns doch einfach zuerst den Code wie du in den Dienst gehst

    So dann haben wir glaube ich den größten Teil des Problems erledigt.


    Ich habe nun nach dem Wanteds geben nochmal extra angegeben das er erneut speichern soll und das funktioniert auch aber ich glaube das würde irgendwie auch ohne die Abfrage funktionieren oder nicht ?


    // Edit



    Ich merke gerade das bei mir überhaupt garnichts mehr gespeichert wird. O.o keine Ahnung warum

    Bekommst du irgendwelche Informationen in der mysql.log?
    Falls ja, sende uns die mal hier zu.

    Leider wird mir dort nichts angezeigt. Ich logge lediglich wer welche Aktion ausführt.


    In der WantedLog erhalte ich also folgendes


    [16.10.2016 15:22:45]rominadesto hat rominadesto Wanteds gegeben. Grund: heso


    Vor Wanteds soll die Anzahl stehen

     "UPDATE users SET Wanted = '%s',tban = '%d',Jobk = '%d',Leader = '%d',spawnchange = '%d', level = '%d', money = '%d',JobMoney = '%d',Job = '%d', Konto = '%d', kills = '%d', deaths = '%d', gesamtrp = '%d', pRP = '%d', paytime = '%d' WHERE id = '%d'"


    Du versuchst die wanteds als String zu speichern, aber ich denke mal das sollte eher ein integer sein^^

    Ja es sollte ein Integer sein. Das war aber mit %s nur ein Test gewesen da es mit %i auch nicht funktioniert.


    // Edit Problem behoben


    // Edit oder auch nicht behoben

    Hallo liebe Leute meine Wanteds werden derzeit nicht in der Datenbank gespeichert. Bis vor kurzer Zeit gings noch xD. Nun habe ich aber kein Plan mehr.




    Hier der Wanted geber Befehl


    ocmd:su(playerid, params[])
    {
    if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
    {
    new pID, Wanteds, reason[128], string[128];
    if(sscanf(params, "uds",pID,Wanteds,reason)) return SendClientMessage(playerid,COLOR_RED,"Benutzung: /su [ID] [Anzahl] [Grund] ");
    {
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_RED, "Dieser Spieler ist offline");
    new name[MAX_PLAYER_NAME], name2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    GetPlayerName(pID, name2, sizeof(name2));
    format(string, sizeof(string), "Info: Officer %s hat dir %d Wanted Punkte gegeben( Grund: %s )", name, Wanteds, reason);
    SendClientMessage(pID, COLOR_RED, string);
    format(string, sizeof(string), "Info: Du hast %s %d Wanted Punkte gegeben.", name2, Wanteds);
    SendClientMessage(playerid, COLOR_RED, string);
    PlayerWantedBarUpdate(pID);
    PlayerInfo[pID][pWanted] += Wanteds;
    new string2[128];
    format(string2, sizeof(string2), "%s hat %s %s Wanteds gegeben. Grund: %s ", name,name2,Wanteds,reason);
    SaveToLog("WantedLog", string2);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist.");
    return 1;
    }
    }


    Spieler speichern


    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 Wanted = '%s',tban = '%d',Jobk = '%d',Leader = '%d',spawnchange = '%d', level = '%d', money = '%d',JobMoney = '%d',Job = '%d', Konto = '%d', kills = '%d', deaths = '%d', gesamtrp = '%d', pRP = '%d', paytime = '%d' WHERE id = '%d'",
    PlayerInfo[playerid][pWanted],PlayerInfo[playerid][TBanned],PlayerInfo[playerid][pJobk],PlayerInfo[playerid][pLeader],PlayerInfo[playerid][spawnchange],PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pJobMoney],PlayerInfo[playerid][pJob],PlayerInfo[playerid][pKonto], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pRPg],PlayerInfo[playerid][pRespektpunkte],PlayerInfo[playerid][pPaytime], PlayerInfo[playerid][p_id]);
    SaveUserStats2(playerid);
    mysql_pquery(handle, query);
    return 1;
    }


    Spieler laden


    PlayerInfo[playerid][pWanted] = cache_get_field_content_int(0,"Wanted",handle);

    Speichern. Wird alles Richtig in der Datenbank eingetragen


    stock SaveUserStats2(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 banreason = '%s', ban = '%i', banner = '%s' WHERE id = '%d'",
    PlayerInfo[playerid][pBanreason],PlayerInfo[playerid][pBanned],PlayerInfo[playerid][pBanner],PlayerInfo[playerid][p_id]);
    mysql_pquery(handle, query);
    SaveStaat(playerid);
    return 1;
    }


    Laden der Spieler Daten



    PlayerInfo[playerid][pBanner] = cache_get_field_content(0, "banner",PlayerInfo[playerid][pBanner],handle,30);
    PlayerInfo[playerid][pBanreason] = cache_get_field_content(0, "banreason",PlayerInfo[playerid][pBanreason],handle,30);

    Wozu hast du den string1? Lösche mal alles damit raus und ersetzte diesen im ShowPlayerDialog mit string

    Ich habe das ganze nun angepasst also wie folgt



    if(PlayerInfo[playerid][pBanned] == 1)
    {
    new string[1300],name1[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name1,sizeof(name1));
    format(string,sizeof(string),"Du wurdest von %s gebannt. Grund: %s \nSolltest du der Meinung sein das es sich hierbei\num eine Verwechslung handelt, wende dich an %s.",PlayerInfo[playerid][pBanner],PlayerInfo[playerid][pBanreason],PlayerInfo[playerid][pBanner]);
    ShowPlayerDialog(playerid, DIALOG_BAN, DIALOG_STYLE_MSGBOX,"Gebannt",string,"Ok",""); SetTimerEx("KickTimer",100,false,"i",playerid);
    }


    Das Problem besteht allerdings weiterhin

    Hallo liebe Leute,


    derzeit macht mein Ban System Dialog ein paar Fehler. Mir wird der Text aus der Datenbank nicht Richtig angezeigt.


    Hier einmal der Code:


    if(PlayerInfo[playerid][pBanned] == 1)
    {
    new string[1300],string1[1300],name1[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name1,sizeof(name1));
    format(string,sizeof(string),"Du wurdest von %s gebannt. Grund: %s \nSolltest du der Meinung sein das es sich hierbei\num eine Verwechslung handelt, wende dich an %s.",PlayerInfo[playerid][pBanner],PlayerInfo[playerid][pBanreason],PlayerInfo[playerid][pBanner]);
    strcat(string1,string);
    ShowPlayerDialog(playerid, DIALOG_BAN, DIALOG_STYLE_MSGBOX,"Gebannt",string1,"Ok",""); SetTimerEx("KickTimer",100,false,"i",playerid);
    }



    der DIALOG_BAN ist leer da dort keine Funktion mehr abgerufen werden soll.


    Eventuell kann mir ja einer sagen woran das Problem liegt.


    Liebe grüße


    // Edit


    ominadesto soll eig Rominadesto sein
    und
    arum soll darum sein

    SaveUserStats(pID);


    zu:
    SaveUserStats2(pID);


    //Edit Übersehen

    Das Problem besteht dennoch. Vorallem wird in SaveUserStats Public die SaveUserStats2 auch aufgerufen


    Edit:


    C
    mysql_format(handle, query, sizeof(query), "UPDATE users SET ban = '%i' banner = '%s' WHERE id = '%d'",

    zu


    C
    mysql_format(handle, query, sizeof(query), "UPDATE users SET ban = '%i',banner = '%e' WHERE id = '%d'",

    Du hast da ein Komma vergessen (+ ich habe noch %s zu %e geändert => wird dann automatisch escaped).

    was ein komma alles so bewirkt xD. Genauigkeit ist nicht meine stärke.


    Danke klappt nun



    // Edit


    Kleines Problem habe ich noch.



    Ich kriege nun einen Dialog angezeigt wenn ich joine und gebannt bin. Er zeigt mir allerdings nicht den ersten Buchstaben des Grunds an. Hier einmal der Code



    format(string,sizeof(string),"Du wurdest von %s gebannt. Grund: %s \nSolltest du der Meinung sein das es sich hierbei\num eine Verwechslung handelt, wende dich an %s.",PlayerInfo[playerid][pBanner],PlayerInfo[playerid][pBanreason],PlayerInfo[playerid][pBanner]);
    strcat(string1,string);
    ShowPlayerDialog(playerid, DIALOG_STATISTIKEN, DIALOG_STYLE_MSGBOX,"Gebannt",string1,"Ok","");


    Es handelt sich nur um den Grund alles andere wird Richtig angezeigt.

    Zeige mal dein SaveUserStats

    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 Wanted = '%d',tban = '%d',Jobk = '%d',Leader = '%d',spawnchange = '%d', level = '%d', money = '%d',JobMoney = '%d',Job = '%d', Konto = '%d', kills = '%d', deaths = '%d', gesamtrp = '%d', pRP = '%d', paytime = '%d' WHERE id = '%d'",
    PlayerInfo[playerid][pWanted],PlayerInfo[playerid][TBanned],PlayerInfo[playerid][pJobk],PlayerInfo[playerid][pLeader],PlayerInfo[playerid][spawnchange],PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pMoney], PlayerInfo[playerid][pJobMoney],PlayerInfo[playerid][pJob],PlayerInfo[playerid][pKonto], PlayerInfo[playerid][pKills], PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pRPg],PlayerInfo[playerid][pRespektpunkte],PlayerInfo[playerid][pPaytime], PlayerInfo[playerid][p_id]);
    SaveUserStats2(playerid);
    mysql_pquery(handle, query);
    return 1;
    }


    stock SaveUserStats2(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 ban = '%i' banner = '%s' WHERE id = '%d'",
    PlayerInfo[playerid][pBanned],PlayerInfo[playerid][pBanner],PlayerInfo[playerid][p_id]);
    mysql_pquery(handle, query);
    return 1;
    }


    Edit


    Es ist in SaveUserStats2