[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
  • Aber mit OnPlayerCommandText muss es doch auch gehen. Bei mir funktioniert es schließlich auch.
    Eventuell hat er einen Fehler im Script. Er testet es ja morgen und verkündet das Ergebnis. ^^


    Hi, habs so gemacht wie du es gesagt hast und jetzt hab ich folgenden Fehler Code : error 030: compound statement not closed at the end of file (started at line 845)

  • public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/sh", cmdtext, true, 10) == 0)
    {
    SendClientMessage(playerid, 0xFF8000FF, "Hier steht dann dein Text");
    SetPlayerPos(playerid, 384.808624, 173.804992, 1008.382812);
    SetPlayerInterior(playerid, 3);
    return 1;
    }
    return 0;


    Zeile 845: if(strcmp("/sh", cmdtext, true, 10) == 0)


  • public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/sh", cmdtext, true, 10) == 0)
    {
    SendClientMessage(playerid, 0xFF8000FF, "Hier steht dann dein Text");
    SetPlayerPos(playerid, 384.808624, 173.804992, 1008.382812);
    SetPlayerInterior(playerid, 3);
    return 1;
    }
    return 0;
    }



    Du hast die Klammer nach dem return 0; vergessen.


  • Ich möchte ja nicht deine Illusion zerstören, jedoch ist pawn nicht threadsafe.
    Das heißt, die variante geht nicht gut.

  • Ich möchte ja nicht deine Illusion zerstören, jedoch ist pawn nicht threadsafe.
    Das heißt, die variante geht nicht gut.


    Och nee, bitte tu mir ein gefallen und lösche diesen Post.


    Multiple Returns oder Aktionen haben nix mit mehrern Threads zu tun in Pawn generel alles was von Pawn ausgeführt wird hat nix mit mehrern Threads zu tun da Pawn Singelthreaded ist.


    Der einzige Unterschied bei der genutzten variante von ihm , ist das der Opcode break; nicht ausgeführt wird.


    Siehe hier nochmal für mehr Einzelheiten.


    Ressourcenschonend Scripten



    //edit


    Zusätzliche Info:


    http://gta-sa-mp.de/forum/3-sa…n-erkl%C3%A4rungsversuch/


  • Geht leider immer noch nicht.


    Hey, dann versuche es mal wie ich es dir geschrieben habe mit ocmd. Eigentlich sollte das alles gehn , wir wohl ein fehler in deinem script vorliegen


    MFG

    Mit freundlichen Grüßen
    [color=#696969][i][b]Maxi
    [tabmenu]
    [tab='Signatur!']

    [tab='Mein Computer System']

    • Gehäuse Delux SH891 Midi-Tower (ATX) schwarz
    • Netzteil 650 Watt Corsair VS650
    • Festplatte 1000GB SATA III 7200upm
    • Mainboard AM3 Gigabyte GA-970A-UD3P (Chipsatz:AMD 970/SB950/ATX)
    • NVIDIA Geforce GTX 770 Gainward Phantom
    • 8192MB DDR3 Single Channel 1600MHz
    • Prozessor AM3+ (FX-Serie) AMD FX-8350 8x 4.0 GHz


    [tab='Meine Handys']

    • HTC ONE M8
    • Samsung S3 mini
    • Vll bald HTC ONE M7


    [tab='Mein Steam Account = 1']

  • Hey,
    wie kann man eig ne for-Schleife richtig beenden?
    Code:
    if(GF[zone][flaggeerobert] >= FlaggeZeit)
    {
    format(str,sizeof(str),"|Gangfight| %s hat die Flagge erobert! |Gangfight|",Name(playerid));
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if((Spieler[i][Fraktion] != GZ[zone][owner]) && (Spieler[i][Fraktion] != GF[zone][angreifer]))continue;
    SendClientMessage(i,Gelb,str);
    break;
    }
    }
    Habe auch anstatt break -> continue verwendet, jedoch klappt eig nichts, habe alles iwi wieder vergessen ;)

  • break ist schon richtig es geht aber auch return jedoch wird dann der nachfolgende code nicht ausgeführt


    also


    continue = überspringen
    break = stoppen
    return = beenden


    Ahh shit, dann hatte ichs doch richtig ;)
    Es hat nicht geklappt, weil ich vergessen habe, die Variable für die Zeit zurückzusetzen ( die die Funktion aufruft ), deswegen kam es zu nem Mega-Spam ;)
    Danke dir trdm ;)

  • ich möchte das 2 fraktionen den gleichen befehl nutzen können aber ingame kommt dann du bist kein mechaniker was ist falsch ?


    if(strcmp(cmd, "/refill", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(GetPlayerFaction(playerid) == 24 || GetPlayerFaction(playerid) == 25)// if(PlayerInfo[playerid][pJob] != 7 &&
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist kein KFZ-Mechaniker!");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /refill [playerid] [Preis p.L.]");
    return 1;
    }
    new playa;
    new money;
    playa = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    money = strval(tmp);
    if(money < 1 || money > 100) { SendClientMessage(playerid, COLOR_GREY, "Der Preis darf nicht unter 1$ oder über 100$ liegen!"); return 1; }
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    if(ProxDetectorS(8.0, playerid, playa)&& IsPlayerInAnyVehicle(playa))
    {
    if(playa == playerid) { SendClientMessage(playerid, COLOR_GREY, " Du kannst dein eigenes Auto nicht auftanken!"); return 1; }
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du hast %s das Betanken seines Auto für $%d pro Liter angeboten .",giveplayer,money);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* KFZ-Mechaniker %s bietet dir die Betankung deines Autos für $%d pro Liter an, (gib /accept refill) ein um anzunehmen.",sendername,money);
    SendClientMessage(playa, COLOR_LIGHTBLUE, string);
    SendClientMessage(playa, COLOR_GRAD2, "Es erscheint dann ein Dialog mit der Möglichkeit, die zutankende Literanzahl einzugeben.");
    RefillOffer[playa] = playerid;
    RefillPrice[playa] = money;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Dieser Spieler ist nicht in deiner Nähe / nicht in seinem Auto.");
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Der Spieler ist Offline.");
    }
    }
    return 1;
    }
    if(strcmp(cmd, "/repair", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(GetPlayerFaction(playerid) != 24 || GetPlayerFaction(playerid) != 25)
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist kein Mechatroniker.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /repair [playerid] [Preis]");
    return 1;
    }
    new playa;
    new money;
    playa = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    money = strval(tmp);
    if(money < 1 || money > 450) { SendClientMessage(playerid, COLOR_GREY, " Der Preis darf nicht unter 1$ oder über 450$ liegen!"); return 1; }
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    if(ProxDetectorS(8.0, playerid, playa)&& IsPlayerInAnyVehicle(playa))
    {
    new engine,lights, alarm, doors, bonnet, boot, objective;
    GetVehicleParamsEx(GetPlayerVehicleID(playa),engine,lights,alarm,doors,bonnet,boot,objective);
    if(playa == playerid) return SendClientMessage(playerid, COLOR_GREY, "Du kannst dein eigenes Auto nicht Reparieren!");
    if(bonnet == VEHICLE_PARAMS_OFF) return SendClientMessage(playerid, COLOR_GREY, "* Die Motorhaube muss zum Reparieren geöffnet sein.");

    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du hast %s die Reparatur seines Wagens für $%d angeboten.",giveplayer,money);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* KFZ-Mechaniker %s bietet dir eine Reparatur deines Wagens für $%d an, (gib /accept repair) ein um anzunehmen.",sendername,money);
    SendClientMessage(playa, COLOR_LIGHTBLUE, string);
    RepairOffer[playa] = playerid;
    RepairPrice[playa] = money;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Dieser Spieler ist nicht in deiner Nähe / nicht in seinem Wagen.");
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, " Der Spieler ist Offline.");
    }
    }
    }
    return 1;
    }

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