Objekt Edit Problem

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
  • Guten Tag,


    Mein Name lautet MrPawn.
    ich habe ein Dynamisches Mülltonnensystem angefangen. Zurzeit werden Mülltonen erstellt und geladen(?) - das hab ich aber noch nicht getestet.
    Mein Problem ist jetzt, wenn ich die Mülltonne erstelle bringe ich den Player dann in den Objekt Edit Mode.
    Wenn ich die Mülltonne nicht verschiebe, gibt es nur einen Eintrag in der MySQL Datenbank, verschiebe ich es aber, gibt es pro zug bzw. pro fertigen zug, einen Eintrag in die MySQL Datenbank.
    Es sieht bisher so aus:
    In der Datenbank


    Im Script
    ocmd:ctonne(playerid)
    {
    new Float:x, Float:y, Float:z;
    if(uInfo[playerid][sAdminlevel] < 6)return SendClientMessage(playerid, COLOR_LIGHTRED, "FEHLER: {FFFFFF}Du hast nicht das Recht dazu.");
    GetPlayerPos(playerid, x, y, z);
    Tonne[playerid] = CreatePlayerObject(playerid, 1337, x, y, z, 0.0, 0.0, 0.0);
    EditPlayerObject(playerid, Tonne[playerid]);
    return 1;
    }


    public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
    {
    new query[256];
    if(!response)
    {
    SendClientMessage(playerid, COLOR_LIGHTRED, "FEHLER: {FFFFFF}Du hast das verschieben der Mülltonne abgebrochen!");
    DestroyObject(Tonne[playerid]);
    }
    else if(response)
    {
    if(playerobject){
    format(query, sizeof(query), "INSERT INTO nlr_tonne (X,Y,Z,rX,rY,rZ) VALUES ('%f','%f','%f','%f','%f','%f')", fX, fY, fZ, fRotX, fRotY, fRotZ);
    mysql_query(handle, query);}
    }
    return 1;
    }


    Mit freundlichen Grüßen,


    MrPawn

  • if(playerobject){
    format(query, sizeof(query), "INSERT INTO nlr_tonne (X,Y,Z,rX,rY,rZ) VALUES ('%f','%f','%f','%f','%f','%f')", fX, fY, fZ, fRotX, fRotY, fRotZ);
    mysql_query(handle, query);}
    }
    return 1;
    }
    INSERT ist nicht UPDATE.
    INSERT fügt neue Zeilen an.
    UPDATE aktualisiert vorhandene Zeilen.
    Ein Update wird aber nicht so einfach funktionieren. Du musst nämlich die richtige Zeile "treffen". Ein eindeutiger Schlüssel (ID) für jede tonne wäre die einfachste Lösung.

  • Bei "response" gibt es drei Möglichkeiten:
    0 - EDIT_RESPONSE_CANCEL // player cancelled (ESC)
    1 - EDIT_RESPONSE_FINAL // player clicked on save
    2 - EDIT_RESPONSE_UPDATE // player moved the object (edition did not stop at all)
    Quelle: http://wiki.sa-mp.com/wiki/ObjectEditionResponesTypes


    "if(!response)" bedeutet -> "response" ist 0!
    "if(response)" bedeutet NICHT, dass "response" 1 ist, sondern "response" kann auch 2,3,4 oder 5 sein! (...)
    Also einfach eine Zeile minimal ändern:

  • Guten Tag,


    Mein Name lautet MrPawn.
    Das mit dem Objekt erstellen klappt jetzt super, danke Goldkiller:
    Doch leider funktionert jetzt das mit dem Laden nicht so ganz.
    Wenn ich die Laden Funktion drinnen habe kommt immer folgendes wenn ich auf den Server Connecte


    Im Script habe ich das so gemacht:
    //Mülltonnen System
    mysql_query(handle, "SELECT * FROM nlr_tonne");
    while(cache_get_field_count(handle)){
    new data = cache_get_row_int(0, 0);
    mInfo[data][M_ID] = data;
    mInfo[data][Fx] = cache_get_row_float(1, 1, handle),mInfo[data][Fy] = cache_get_row_float(2, 2, handle),mInfo[data][Fz] = cache_get_row_float(3, 3, handle);
    mInfo[data][FRotX] = cache_get_row_float(4, 4, handle),mInfo[data][FRotX] = cache_get_row_float(5, 5, handle),mInfo[data][FRotZ] = cache_get_row_float(6, 6, handle);
    CreateObject(1337, mInfo[data][Fx], mInfo[data][Fy], mInfo[data][Fz], mInfo[data][FRotX], mInfo[data][FRotY], mInfo[data][FRotZ]);
    }


    Mit freundlichen Grüßen,


    MrPawn

    Einmal editiert, zuletzt von Kasakow ()