[SAMMELTHREAD] Kleine Scripting Fragen

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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,


    Ich möchte mein /Roller System ohne das Dialog:


    Der Command:
    if(strcmp(cmd, "/roller", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,1241.1827,-1728.8977,13.5768))
    {
    if(UnrentRoller[playerid] == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_RROLLER,DIALOG_STYLE_MSGBOX, "{FFFFFF}Roller Mieten","{FFFFFF}Möchtest du einen Roller für {00FF00}40${FFFFFF} mieten ?","Mieten","Nein");
    }
    }
    return 1;
    }


    Der Dialog (Der nicht erscheinen soll):
    if(dialogid == DIALOG_RROLLER)
    {
    if(response==0)
    {
    SendClientMessage(playerid, 0xFEFEFEFF, "Rent Roller abgebrochen");
    }
    if(response==1)
    {
    if(RentRoller[playerid] == 0)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    new vehiclefid = CreateVehicle(462,1235.7366,-1728.6998,13.1698,359.5901,3,3,-1);
    PutPlayerInVehicle(playerid, vehiclefid, 0);
    SetVehicleNumberPlate(vehiclefid, name);
    GivePlayerMoney(playerid,-100);
    SendClientMessage(playerid, 0x4BFF00FF, "Du hast dir einen Roller für 100$ gemietet.");
    SendClientMessage(playerid, 0x4BFF00FF, "Dein Roller wurde auf der Straße Gespawnt");
    SendClientMessage(playerid, 0x4BFF00FF, "Viel Spaß mit dem Roller um ihn abzugeben");
    SendClientMessage(playerid, 0x4BFF00FF, "Gebe /Rollerabgeben ein");
    RentRoller[playerid] = vehiclefid;
    }
    else { SendClientMessage(playerid, RED, "Du hast schon einen Roller gemietet."); }


    }
    }


    Ich hoffe das mir jemand weiterhelfen kann :)


    MfG

  • Ich kann dir ja die ganze Funktion zeigen:

    public OnPlayerRequestFriendNames(playerid, Friend_DBID, thread)
    {
    switch(thread)
    {
    case 0:
    {
    new rows, fields;
    cache_get_data(rows, fields, MySqlConnection);
    if(rows) {
    #pragma unused szResult
    new
    szPlayerName[MAX_PLAYER_NAME],
    szTitle[64],
    szResult[64];
    SetPVarInt(playerid, "Friend_DBID", Friend_DBID);
    for(new row; row < rows; row++)
    {
    cache_get_field_content(row, "Name", szPlayerName, MySqlConnection, sizeof(szResult));
    foreach(Player, i) {
    if(Spieler[i][pDBID] == Friend_DBID){
    format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {8BA870}(online)", szFriendList, szPlayerName);
    }
    else {
    format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {FF0000}(offline)", szFriendList, szPlayerName);
    }
    }
    }
    format(szTitle, sizeof szTitle, "%s's Freundesliste", SpielerName(playerid));
    ShowPlayerDialog(playerid, DIALOG_FRIENDLIST, DIALOG_STYLE_LIST, szTitle, szFriendList, "Select", "Cancel");
    }
    }
    case 1:
    {


    }
    }
    }


  • Dr.House:
    if(strcmp(cmd, "/roller", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,1241.1827,-1728.8977,13.5768))
    {
    if(UnrentRoller[playerid] == 0)
    {
    if(RentRoller[playerid] == 0)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    new vehiclefid = CreateVehicle(462,1235.7366,-1728.6998,13.1698,359.5901,3,3,-1);
    PutPlayerInVehicle(playerid, vehiclefid, 0);
    SetVehicleNumberPlate(vehiclefid, name);
    GivePlayerMoney(playerid,-100);
    SendClientMessage(playerid, 0x4BFF00FF, "Du hast dir einen Roller für 100$ gemietet.");
    SendClientMessage(playerid, 0x4BFF00FF, "Dein Roller wurde auf der Straße Gespawnt");
    SendClientMessage(playerid, 0x4BFF00FF, "Viel Spaß mit dem Roller um ihn abzugeben");
    SendClientMessage(playerid, 0x4BFF00FF, "Gebe /Rollerabgeben ein");
    RentRoller[playerid] = vehiclefid;
    }
    else
    {
    SendClientMessage(playerid, RED, "Du hast schon einen Roller gemietet.");
    }
    }
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Neues Problem:


    Wenn ich zum ersten mal den Befehl '/friends' eingebe, sehe ich ganz normal die User, die ich als Freunde eingetragen habe. Und nur einmal, wie das so sollte.
    Gebe ich den Befehl aber zum zweiten mal ein, sehe ich die doppelt aufgelistet.


    erste Eingabe:
    Name: User1 (online)
    Name: User2 (offline)


    zweite Eingabe:
    Name: User1 (online)
    Name: User2 (offline)
    Name: User1 (online)
    Name: User2 (offline)


    Und immer so weiter. Das ist echt ein merkwürdiges Problem..


    Aber hier der Code:


    Befehl /friends

    COMMAND:friends(playerid, params[])
    {
    new query[128], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_friends` WHERE `UserDBID` = %i", Spieler[playerid][pDBID]);
    mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriends", "ii", REQUEST_FRIEND_THREAD, playerid);
    return 1;
    }


    Die Funktion 'OnPlayerRequestFriends

    Spoiler anzeigen

    public OnPlayerRequestFriends(thread, playerid, Friend_ID)
    {
    switch(thread)
    {
    case THREAD_NO_RESULT:
    {
    return 1;
    }
    case ADD_FRIEND_THREAD:
    {
    new rows, fields;
    cache_get_data(rows, fields, MySqlConnection);
    if(rows)
    {
    new
    query[128],
    szResult[64],
    szFriendName[64],
    FriendDBID;

    for(new row; row < rows; row++) {
    cache_get_field_content(row, "Name", szResult, MySqlConnection, sizeof(szResult)); szFriendName = szResult;
    cache_get_field_content(row, "id", szResult, MySqlConnection, sizeof(szResult)); FriendDBID = strval(szResult);
    SetPVarInt(playerid, "New_Friend_DBID", FriendDBID);
    SetPVarString(playerid, "New_Friend_Name", szFriendName);
    mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_friends` WHERE `UserDBID` = %i AND `FriendDBID` = %i", Spieler[playerid][pDBID], FriendDBID);
    mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriends", "ii", FINAL_FRIEND_THREAD, playerid);
    return 1;
    }
    }
    else {
    SendClientMessage(playerid, WEISS, "Der Name existiert nicht.");
    }
    return 1;
    }
    case FINAL_FRIEND_THREAD:
    {
    new rows,
    fields;

    Spoiler anzeigen
    cache_get_data(rows, fields, MySqlConnection);

    Spoiler anzeigen
    if(!rows) {
    new query[128],
    FriendName[MAX_PLAYER_NAME+1];
    mysql_format(MySqlConnection, query, sizeof(query), "INSERT INTO `"#SQL_TAG"_account_friends` (`UserDBID`, `FriendDBID`) VALUES (%i, %i)", Spieler[playerid][pDBID], GetPVarInt(playerid, "New_Friend_DBID"));
    mysql_function_query(MySqlConnection, query, false, "OnPlayerRequestFriends", "i", THREAD_NO_RESULT);
    GetPVarString(playerid, "New_Friend_Name", FriendName, sizeof FriendName);
    format(query, sizeof query, "Du hast %s zum Freund ernannt.", FriendName);
    SendClientMessage(playerid, WEISS, query);
    DeletePVar(playerid, "New_Friend_Name");
    DeletePVar(playerid, "New_Friend_DBID");
    return 1;
    }
    else {
    SendClientMessage(playerid, WEISS, "Du hast bereits einen Freund mit diesem Namen.");
    }
    return 1;
    }
    case REQUEST_FRIEND_THREAD:
    {
    new rows,
    fields;

    Spoiler anzeigen
    cache_get_data(rows, fields, MySqlConnection);

    Spoiler anzeigen
    if(rows) {
    new szResult[64];

    Spoiler anzeigen
    for(new row; row < rows; row++) {
    cache_get_field_content(row, "FriendDBID", szResult, MySqlConnection, sizeof(szResult));
    new query[128];
    mysql_format(MySqlConnection, query, sizeof(query), "SELECT * FROM `"#SQL_TAG"_account_main` WHERE `id` = %i", strval(szResult));
    mysql_function_query(MySqlConnection, query, true, "OnPlayerRequestFriendNames", "ii", playerid, strval(szResult));
    }
    }
    return 1;
    }
    }
    return 1;
    }


    Die Funktion 'OnPlayerRequestFriendNames'

    Spoiler anzeigen

    public OnPlayerRequestFriendNames(playerid, Friend_DBID, thread)
    {
    switch(thread)
    {
    case 0:
    {
    new rows, fields;
    cache_get_data(rows, fields, MySqlConnection);
    if(rows) {
    new
    szPlayerName[MAX_PLAYER_NAME],
    szTitle[64];
    SetPVarInt(playerid, "Friend_DBID", Friend_DBID);
    for(new row; row < rows; row++)
    {
    cache_get_field_content(row, "Name", szPlayerName, MySqlConnection, sizeof(szPlayerName));
    foreach(Player, i) {
    if(Spieler[i][pDBID] == Friend_DBID){
    format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {8BA870}(online)", szFriendList, szPlayerName);
    }
    else {
    format(szFriendList, sizeof(szFriendList), "%s\n* {6CBBE3}Name: {FFFFFF}%s | {FF0000}(offline)", szFriendList, szPlayerName);
    }
    }
    }
    format(szTitle, sizeof szTitle, "%s's Freundesliste", SpielerName(playerid));
    ShowPlayerDialog(playerid, DIALOG_FRIENDLIST, DIALOG_STYLE_LIST, szTitle, szFriendList, "Select", "Cancel");
    }
    }
    case 1:
    {

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen