Beiträge von FamouZz_


    CMD:delete(playerid, params[])
    {
    new str[32];
    if(sscanf(params, "s[32]", str))return SendClientMessage(playerid, COLOR_GREY, "Verwendung: /delete [ATM]");
    if(strcmp(str, "ATM", true) == 0)
    {
    new ID, query[128];
    ATMInfo[ID][aPos][0] = 0.0;
    ATMInfo[ID][aPos][1] = 0.0;
    ATMInfo[ID][aPos][2] = 0.0;
    ATMInfo[ID][aPos][3] = 0.0;
    ATMInfo[ID][aPos][4] = 0.0;
    ATMInfo[ID][aPos][5] = 0.0;
    DestroyDynamicObject(ATMInfo[ID][aObject]);
    DestroyDynamic3DTextLabel(ATMInfo[ID][aLabel]);
    ATMInfo[ID][aLabel] = Text3D: INVALID_3DTEXT_ID;



    mysql_format(MySQLConnection, query, sizeof(query), "DELETE FROM `server_atm` WHERE `ID` = '%d' LIMIT 1", ID);
    mysql_query(MySQLConnection, query);
    }
    return 1;
    }


    Wie ist es möglich, dass ich direkt abfrage, welcher ATM ID VOR mir ist. So dass ich keine ID angeben muss, sondern nur der ATM vor mir gelöscht wird.

    Liebe Community,



    hiermit möchte ich gerne einen Development Blog für mein kommendes Reallife Projekt erstellen, da ich die SA:MP Szene noch nicht aufgegeben habe.
    In unregelmäßigen Abständen folgen hier kleine Videos, Bilder oder Infos zu neuen Systemen oder anderweitigen Änderungen innerhalb des Gamemodes/Projektes.


    Natürlich darf gerne konstruktive Kritik oder Verbesserungsvorschläge hinterlassen werden.
    Bitte nicht beachten, dass in den Dialogen als Server Name "City of SA" steht (dient nur zu Testzwecken), ist lediglich ein Name eines anderen Projektes, welches keinerlei Bedeutung mit meinem hat.



    Angefangen möchte ich gerne mit unserem Bankautomaten System, welches vollstens über dynamik verfügt. Es besteht die Möglichkeit Bankautomaten In-Game zu erstellen, zu editieren oder zu löschen.
    Hierzu natürlich ein Video

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Ich entschuldige mich vorab, dass keine Musik oder Stimme meinerseits unterspielt wurde. Dies wird gegebenenfalls in den nächsten Videos geändert, um euch unsere Systeme besser zu erklären.






    * Der Titel des Themas ist bedacht so gewählt, da ich mich derzeit auf die Entwicklung der Systeme konzentriere. Somit hat dieses Projekt noch keine Webpräsenz, TeamSpeak oder Namen.


    /edit 1: Video ist jetzt öffentlich

    Arbeitest du nicht mit


    PlayerInfo und pLogin?

    Doch, jedoch ist das System, wenn der Spieler online ist, fertig. Ich möchte jedoch auch gerne die Möglichkeit haben, Leuten die offline sind, Geld zu überweisen.
    Das wäre also ab hier, aber bis dato geht er gar nicht erst.

    [list=1][*] else
    [*] {
    [*] printf("2");
    [*] new query[128];
    [*] mysql_format(MySQLConnection, query, sizeof(query), "SELECT ID FROM server_accounts WHERE Name = '%e'", inputtext);
    [*] mysql_pquery(MySQLConnection, query, "Server_ATMTranslate", "d", playerid);
    [*]
    [*] }
    [/list]

    Hey,
    Was ist denn der inputtext?
    Kann ich in dem Dialog nur die ID eingeben oder auch den Namen?
    Weil wenn ich den Namen eingebe ist inputtext der Name gebe ich die ID ein ist es eine Zahl.


    Vielleicht mal überprüfen

    Im Dialog kann nur der Name eingegeben werden.

    Problem! :DAlso ich arbeite gerade daran, Spielern Geld überweisen zu können, irrelevant ob online/offline.
    Der Code für Online funktioniert perfekt.

    if(IsPlayerConnected(strval(inputtext)))
    {
    new playerID = gPlayerID(inputtext);
    PlayerInfo[playerID][pBank] += ATMAmount[playerid];
    PlayerInfo[playerid][pBank] -= ATMAmount[playerid];

    strdel(DialogString, 0, sizeof(DialogString));
    format(DialogString, sizeof(DialogString),""HTML_SERVER2"Willkommen bei der "HTML_SERVER1"Bank of SA"HTML_SERVER2",\n"HTML_SERVER2"du hast dem Spieler "HTML_SERVER1"%s "HTML_SERVER2"erfolgreich ("HTML_SERVER1"$%d"HTML_SERVER2") auf sein Bankkonto überwiesen.\n\n"HTML_SERVER1"Info: "HTML_SERVER2"Diese Transaktion ist nun ebenfalls in deiner Transaktionsübersicht vorhanden.", inputtext , ATMAmount[playerid]);
    ShowPlayerDialog(playerid, DIALOG_ATMTRANSLATEFINISH, DIALOG_STYLE_MSGBOX, ""#HTML_SERVER1""#SERVER_NAME" "HTML_SERVER2"- Bankautomat (Geld überweisen)", DialogString, "Schließen", "");

    new query[512], timestring[256], Day, Month, Year, Hour, Minute, Second;
    getdate(Year, Month, Day);
    gettime(Hour, Minute, Second);
    format(timestring, sizeof(timestring),"%02d.%02d.%d - %02d:%02d:%02d", Day, Month, Year, Hour, Minute, Second);
    mysql_format(MySQLConnection, query, sizeof(query),"INSERT INTO `server_atmlog`(`Absender`, `Empfänger`, `Zeit`, `Betrag`) VALUES ('%e', '%e', '%s', '%d')", PlayerInfo[playerid][pName], inputtext, timestring, ATMAmount[playerid]);
    mysql_query(MySQLConnection, query);


    new string[128];
    format(string, sizeof(string),"Bank of SA: "HTML_SERVER2"Sie haben eine Überweisung von "HTML_SERVER1"%s in Höhe von "HTML_SERVER2"$%d "HTML_SERVER1"erhalten.", PlayerInfo[playerid][pName], ATMAmount[playerid]);
    SendClientMessage(playerID, COLOR_SERVER1, string);

    ATMAmount[playerid] = 0;
    }
    else
    {
    printf("2");
    new query[128];
    mysql_format(MySQLConnection, query, sizeof(query), "SELECT ID FROM server_accounts WHERE Name = '%e'", inputtext);
    mysql_pquery(MySQLConnection, query, "Server_ATMTranslate", "d", playerid);

    }


    Jedoch sollte der Spieler offline sein, geht er nicht zu print2, somit kann ich die Funktion nicht weiter machen, dass auch offline Geld überwiesen wird. Wollte halt erstmal abfragen, ob der Account existiert, wenn ja, ihm das Geld auf das Bankkonto geben.


    Alles unter if(IsPlayerConnected(strval(inputtext))) funktioniert, unter dem else jedoch nicht.

    Dank dir, jetzt ein etwas kompliziertes Problem. Ich arbeite an einer Transaktionübersicht für meine Bankautomaten.
    Möchte das ganze über mehrere Seiten machen. (Es werden immer 10 Transaktionen pro Seite angezeigt, was korrekt ist!)


    Hier mal der Code dazu, welcher funktioniert.

    case 1: //Funktion (Negative Transaktionen)
    {
    Page[playerid] = 0;

    new query[256], Cache: Result;
    mysql_format(MySQLConnection, query, sizeof(query), "SELECT `Absender`, `Empfänger`, `Zeit`, `Betrag` FROM `server_atmlog` WHERE `Absender` = '%e' ORDER BY `Absender` DESC LIMIT %d, 10", PlayerInfo[playerid][pName], Page[playerid] * 15);
    Result = mysql_query(MySQLConnection, query);

    new rows = cache_num_rows();
    if(rows)
    {
    new Header[1024], Sender[64], Receiver[64], Date[64], Deposit;
    format(Header, sizeof(Header), ""HTML_SERVER2"Absender\t"HTML_SERVER2"Empfänger\t"HTML_SERVER2"Zeit\t"HTML_SERVER2"Betrag\n");
    for(new i; i < rows; ++i)
    {
    cache_get_value_name(i, "Absender", Sender);
    cache_get_value_name(i, "Empfänger", Receiver);
    cache_get_value_name(i, "Zeit", Date);
    cache_get_value_name_int(i, "Betrag", Deposit);

    format(Header, sizeof(Header), "%s%s\t%s\t%s\t"HTML_RED"$%s\n", Header, Sender, Receiver, Date, convertNumber(Deposit));
    ShowPlayerDialog(playerid, DIALOG_ATMTRANSAKTIONNOD, DIALOG_STYLE_TABLIST_HEADERS, ""#HTML_SERVER1""#SERVER_NAME" "HTML_SERVER2"- Transaktionen (Übersicht)", Header, "Weiter", "Zurück");
    }
    }
    if(!rows)
    {
    Page[playerid] = 0;
    strdel(DialogString, 0, sizeof(DialogString));
    format(DialogString, sizeof(DialogString),""HTML_SERVER2"Willkommen bei der "HTML_SERVER1"Bank of SA"HTML_SERVER2",\n"HTML_SERVER2"derzeit sind keine Transaktionen auf Ihrem Bankkonto vorhanden.");
    ShowPlayerDialog(playerid, DIALOG_ATMTRANSAKTIONNO, DIALOG_STYLE_MSGBOX, ""#HTML_SERVER1""#SERVER_NAME" "HTML_SERVER2"- Bankautomat (Transaktionen Seite 1)", DialogString, "Schließen", "");
    }
    cache_delete(Result);
    }


    So, jetzt möchte ich gerne auf eine zweite Seite gehen, jedoch bekomme ich von dort keine weiteren Einträge, obwohl mehr als 10 Einträge in der Datenbank vorhanden sind.

    case DIALOG_ATMTRANSAKTIONNOD:
    {
    if(!response)
    {
    strdel(DialogString, 0, sizeof(DialogString));
    format(DialogString, sizeof(DialogString), ""HTML_SERVER1"1. "HTML_SERVER2"Positive Kontotransaktionen\n"HTML_SERVER1"2. "HTML_SERVER2"Negative Kontotransaktionen");
    ShowPlayerDialog(playerid, DIALOG_ATMTRANSAKTIONVIEW, DIALOG_STYLE_LIST, ""#HTML_SERVER1""#SERVER_NAME" "HTML_SERVER2"- Bankautomat (Transaktion Übersicht)", DialogString, "Bestätigen", "Zurück");
    }
    if(response)
    {
    Page[playerid] ++;

    new query[256], Overview[256], Cache: Result;
    mysql_format(MySQLConnection, query, sizeof(query), "SELECT `Absender`, `Empfänger`, `Zeit`, `Betrag` FROM `server_atmlog` WHERE `Absender` = '%e' ORDER BY `Absender` DESC LIMIT %d, 10", PlayerInfo[playerid][pName], Page[playerid] * 15);
    Result = mysql_query(MySQLConnection, query);

    format(Overview, sizeof(Overview), ""#HTML_SERVER1""#SERVER_NAME" "HTML_SERVER2"- Bankautomat (Transaktionen Seite %d)", Page[playerid] +1);
    print("1");
    new rows = cache_num_rows();
    if(rows)
    {
    print("2");
    new Header[1024], Sender[64], Receiver[64], Date[64], Deposit;
    format(Header, sizeof(Header), ""HTML_SERVER2"Absender\t"HTML_SERVER2"Empfänger\t"HTML_SERVER2"Zeit\t"HTML_SERVER2"Betrag\n");
    for(new i; i < rows; ++i)
    {
    cache_get_value_name(i, "Absender", Sender);
    cache_get_value_name(i, "Empfänger", Receiver);
    cache_get_value_name(i, "Zeit", Date);
    cache_get_value_name_int(i, "Betrag", Deposit);

    format(Header, sizeof(Header), "%s%s\t%s\t%s\t"HTML_RED"$%s\n", Header, Sender, Receiver, Date, convertNumber(Deposit));
    ShowPlayerDialog(playerid, DIALOG_ATMTRANSAKTIONNOD, DIALOG_STYLE_TABLIST_HEADERS, Overview, Header, "Weiter", "Zurück");
    }
    }
    if(!rows)
    {

    }
    cache_delete(Result);

    }
    }

    Wo war dort noch ein Fehler. Wäre nett, wenn du es mir hier direkt sagen könntest.
    Das mit dem Query Wert ist mir auch schon aufgefallen, dort liegt komischerweise der Fehler..


    @Kaliber - Kannst doch immer helfen?

    Verbindung zur Datenbank ist aufgebaut..



    //e: Wenn ich das Login/Register von OnPlayerRequestClass zu OnPlayerConnect packe, wird mir der Dialog zwar angezeigt, dass ich mich registrieren soll, obwohl ich registriert bin.
    In der Datenbank wird dann ein Account mit dem gleichen Namen erneut erstellt..