Dynamic ATM

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 Abend,
    ich habe gerade ein Dynamic ATM System geschrieben, jetzt ist mir aufgefallen, das sich mein Object nicht entfernen kann,
    wie muss ich es Schreiben, das sich der ATM auch Entfernen lässt?
    Zeige euch mal wie ich meine ATM erstellen lassen.



    stock CreateATM(playerid, name[])
    {
    new query[512];
    for(new i; i < MAX_ATMS; i++)
    {
    if(ATMInfo[i][set] == false)
    {
    GetPlayerPos(playerid, ATMInfo[i][aX], ATMInfo[i][aY], ATMInfo[i][aZ]);
    GetPlayerFacingAngle(playerid, ATMInfo[i][aA]);
    format(ATMInfo[i][aName], 40, "%s", name);
    TeleInfo[i][set] = true;
    format(query, 512, "INSERT INTO `atms` (`aX`, `aY`, `aZ`, `aA`, `aName`) VALUES ('%f', '%f', '%f', '%f', '%s')", ATMInfo[i][aX], ATMInfo[i][aY], ATMInfo[i][aZ], ATMInfo[i][aA], name);
    mysql_tquery(Handle, query);
    SendClientMessage(playerid, FARBE_WEISS, "[{00FF00}INFO{FFFFFF}]: Du hast ein ATM erstellt.");
    CreateDynamicObject(19324, ATMInfo[i][aX], ATMInfo[i][aY], ATMInfo[i][aZ] - 0.5, 0, 0, ATMInfo[i][aA]);
    break;
    }
    }
    return 1;
    }


    @Jeffry Du vielleicht eine Idee wie?

    Mit freundlichen Grüßen, BlvckAir :thumbup:

    Einmal editiert, zuletzt von BlvckAir ()

  • Super, das ganze klappt nun!


    Jetzt habe ich noch ein Problem, und zwar, wenn ich ein Bankautomaten Entfernen will,
    sagt er mir es sind keine Vorhanden, nach einem Server Restart dann klappt es, weißt du wo der Fehler liegen könnte?

    Mit freundlichen Grüßen, BlvckAir :thumbup:

  • Klar,
    hier der Public zum Daten:



    public LoadATMs()
    {
    for(new i = 0; i < cache_num_rows(); i++)
    {
    ATMInfo[i][dbid] = cache_get_field_content_int(i, "ID");
    ATMInfo[i][aX] = cache_get_field_content_float(i, "aX");
    ATMInfo[i][aY] = cache_get_field_content_float(i, "aY");
    ATMInfo[i][aZ] = cache_get_field_content_float(i, "aZ");
    ATMInfo[i][aA] = cache_get_field_content_float(i, "aA");
    ATMInfo[i][set] = true;
    cache_get_field_content(i, "aName", ATMInfo[i][aName], 1, 40);
    ATMInfo[i][aObject] = CreateDynamicObject(19324, ATMInfo[i][aX], ATMInfo[i][aY], ATMInfo[i][aZ] - 0.5, 0, 0, ATMInfo[i][aA]);
    }
    printf("Aktuelle Bankautomaten: %i/%i in %dms geladen.", cache_num_rows(), MAX_ATMS, cache_get_query_exec_time());
    return 1;
    }



    Und zum Löschen mache es so:


    case DIALOG_ATMS_REMOVE:
    {
    if(response)
    {
    new query[50];
    if(ATMInfo[listitem][set] == false)return 1;
    format(query, 50, "DELETE FROM `ATMS` WHERE `ID` = '%i'", ATMInfo[listitem][dbid]);
    mysql_pquery(Handle, query);
    ResetATMData(listitem);
    SendClientMessage(playerid, FARBE_WEISS, "[{00FF00}INFO{FFFFFF}]: Du hast den Bankautomaten entfernt!");
    DestroyDynamicObject(ATMInfo[listitem][aObject]);
    return 1;
    }
    }

    Mit freundlichen Grüßen, BlvckAir :thumbup:

  • Bei dem Stock hast du:
    TeleInfo[i][set] = true;
    Ändere das "TeleInfo" zu "ATMInfo".


    Außerdem, musst du, um die dbid zu bekommen, beim Erstellen das mysql_tquery mit einem Callback (public) ausstatten und in diesem cache_insert_id() auslesen.