[SAMMELTHREAD] Kleine Scripting Fragen

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
  • Sehr geehrte Leser/in,
    ich komme bei einem Befehl nicht weiter und bräuchte die Hilfe von euch.
    }
    if(strcmp(x_job,"heilen",true) == 0)
    {
    [color=#ff0000] if(CarOffer[playerid] < 999)
    {
    if(IsPlayerConnected(CarOffer[playerid]))
    {
    if(GetPlayerMoney(playerid) > CarPrice[playerid])
    {
    if(IsPlayerInVehicle(CarOffer[playerid], CarID[playerid]))[/color]
    {
    [color=#ff0000]GetPlayerName(CarOffer[playerid], giveplayer, sizeof(giveplayer));[/color]
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du hast Medizin für $%d von Auto Dealer %s gekauft.",HeilPrice[playerid],giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Du hast %s Medizin für $%d verkauft.",sendername,HeilPrice[playerid]);
    SendClientMessage(CarOffer[playerid], COLOR_LIGHTBLUE, string);
    GivePlayerMoney(playerid, -HeilPrice[playerid]);
    [color=#ff0000]PlayerInfo[CarOffer[playerid]][pPayCheck] += HeilPrice[playerid];[/color]
    GivePlayerMoney(playerid, -HeilPrice[playerid]);
    [color=#ff0000]SetPlayerHealth(??,100);[/color]
    return 1;
    }
    else
    {
    [color=#ff0000]SendClientMessage(playerid, COLOR_GREY, " Der Dealer ist nicht in dem Auto!");[/color]
    return 1;
    }
    }
    else
    {
    [color=#ff0000]SendClientMessage(playerid, COLOR_GREY, " Du kannst das Auto nicht kaufen!");[/color]
    return 1;
    }
    }
    return 1;
    }
    else
    {
    [color=#ff0000] SendClientMessage(playerid, COLOR_GREY, " Keiner will ein Auto verkaufen !");[/color]
    return 1;
    }
    }


    So lautet der Befehl derzeit ich schreibe ihn vom car Befehl zum Heilen Befehl um.
    Im Scripte habe ich HeilPrice definiert, und habe den auf 500 € gesetzt.
    Bei den rotmakierten Stellen komme ich nicht weiter.
    Wie heißt nochmal die Person der man was anbieten playerid oder wie? Und wie heißt die die etwas angeboten hat bzw. wie ist die definiert?
    Mit freundlichen Grüßen
    duengonalex

  • Erst einmal:
    Der Spieler der von SA:MP aus definiert ist, heißt playerid.
    Dann kannst du den zweiten Spieler irgendwie definieren. pID, oder giveplayerid, oder auch was anderes.


    GetPlayerName(CarOffer[playerid], giveplayer, sizeof(giveplayer));
    Das ist auch falsch.
    Ganz oben im Befehl das:
    new giveplayer;
    Darunter das:
    new gplayer[MAX_PLAYER_NAME];
    Danach machst du das, um den Spieler den Namen auszulesen.
    GetPlayerName(gplayer, giveplayer, sizeof(giveplayer));


    giveplayer ist jetzt der zweite definierte Name.


    Wenn du Hilfe brauchst, melde dich.

  • Zitat

    Der Spieler der von SA:MP aus definiert ist, heißt playerid.


    Das ist Quatsch! Ein Spieler ist nicht von SA:MP irgendwie definiert. Das sind einfach nur Parameternamen, die du selbst nach Belieben ändern kannst!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hab mal ne Frage.
    Hab meinen /ahelp befehl so geschrieben das ich /ahelp befehl machen kann
    Mein Problem. Wenn ich /ahelp /ban mache funktzioniert das wunderbar.
    Wenn ich jedoch /ahelp /banip mache bekomme ich die banhelp. Eigentlich ja logisch da ich mit strfind arbeite. CODE:
    if(strfind(string, "/ban", true)!= -1)
    {
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /ban [Spielerid/Name] [Grund]");
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    return 1;
    }
    if(strfind(string, "/banip", true)!= -1)
    {
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /banip [IP] [Grund]");
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    return 1;
    }

    Wie kann ich das jetzt ändern das wenn ich /ahelp /banip mache das dan auch die banip help kommt und nicht das andere?
    MFG, TheBlueFireKing


    //EDIT arbeite mit ocmd!

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • strcmp statt strfind.

  • Habs jetzt so jetzt zeigt er mir jedoch nur die kickhelp an bei allen befehlen und ohne returns immer alles.
    CODE:

    if(strcmp(string,"/kick",true,5))
    {
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /kick [Spielerid/Name] [Grund]");
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    return 1;
    }
    if(strcmp(string,"/ban",true,4))
    {
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /ban [Spielerid/Name] [Grund]");
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    return 1;
    }
    if(strcmp(string,"/banip",true,6))
    {
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /banip [IP] [Grund]");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: Beispiel: /banip 128.000.000.00 Cheater-Family");
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    return 1;
    }
    if(strcmp(string,"/unbanip",true,8))
    {
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /unbanip [Spielerid/Name] [Grund]");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: Beispiel: /unbanip 128.000.000.00 Falsche IP");
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    return 1;
    }
    if(strcmp(string,"/tv",true,3))
    {
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /tv [Spielerid/Name]");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: Man sieht alles aus des Sicht des angegebenen Spielers.");
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    return 1;
    }
    if(strcmp(string,"/gmx",true,4))
    {
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: /gmx");
    SendClientMessage(playerid,COLOR_WHITE,"Benutzung: Speichert alle Daten und starten den Server in "restartsek" Sekunden neu.");
    SCM(playerid, COLOR_GREEN, "|_______________________________________________________|");
    return 1;
    }

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • Hallo Leute,
    ich möchte einen eigentlichen Carbefehl umschreiben in ein heil Befehl doch leider scheitert es an der Umsetzung.
    Der Befehl sieht so aus:
    }
    if(strcmp(x_job,"heilen",true) == 0)
    {
    if(CarOffer[playerid] < 999)
    {
    if(IsPlayerConnected(CarOffer[playerid]))
    {
    if(GetPlayerMoney(playerid) > CarPrice[playerid])
    {
    if(IsPlayerInVehicle(CarOffer[playerid], CarID[playerid]))[/color]
    {
    GetPlayerName(CarOffer[playerid], giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du hast Medizin für $%d von Auto Dealer %s gekauft.",HeilPrice[playerid],giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Du hast %s Medizin für $%d verkauft.",sendername,HeilPrice[playerid]);
    SendClientMessage(CarOffer[playerid], COLOR_LIGHTBLUE, string);
    GivePlayerMoney(playerid, -HeilPrice[playerid]);
    PlayerInfo[CarOffer[playerid]][pPayCheck] += HeilPrice[playerid];
    GivePlayerMoney(playerid, -HeilPrice[playerid]);
    SetPlayerHealth(??,100);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Der Dealer ist nicht in dem Auto!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Du kannst das Auto nicht kaufen!");
    return 1;
    }
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Keiner will ein Auto verkaufen !");
    return 1;
    }
    }
    Der Spieler der /accept heilung gemacht hat sollte 100% hp bekommen und ihm sollten 500 Dollar abgezogen werden.
    Und der der die Heilung angeboten hat dem sollten 500 Dollar zugewiesen werden.

  • Unter OnPlayerCommand Text packen ;)
    und arbeite mal wenns nicht geht mit if und else.


    Achja dein aufbau sieht etwas komisch aus, hier mal das beispiel vom main script an

    if (strcmp("/mycommand", cmdtext, true, 10) == 0)



    Was? Arbeite mit OCMD und sscanf kann dir sonst mal den ganzen Command schicken wenn du willst.

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen