Ich bin zu dumm für einen aussagekräftigen Titel

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
  • Beitrag von Viget Drakedog ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • warning 217: loose indentation = falsch eingereiht


    Habs mal für dich neu eingerückt.
    Abgesehen davon hattest du ein oder zwei Klammerfehler gehabt.
    Und zur Ausgabe "SendClientMessage(playerid, 0xFF00FF00, "es gibt folgendes:\n /hilfe");" würde ich dir raten, es zu formatieren.
    Denn im SendClientMessage kannst du keine Zeilenumbrüche (/n) darstellen, es seiden du machst darunter einen weiteren SendClientMessage mit "/help" usw.

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/hilfe", cmdtext, true, 10) == 0)
    {
    SendClientMessage(playerid, 0xFF00FF00, "es gibt folgendes:\n /hilfe");
    return 1;
    }
    if(strcmp("/heilen", cmdtext , true, 10) == 0)
    {
    SetPlayerHealth(playerid,100);
    SendClientMessage(playerid,0xB90000FF,"Sie haben erfolgreich Erstehilfe geleistet!");
    return 1;
    }
    return 0;
    }


    //e:
    Möchtest du einen Befehl erstellen, um andere zu Heilen oder nur dich?

  • Dann müsstest du am besten mit Includes wie "ocmd" oder "dcmd" arbeiten, um das Bewerkstelligen zu können.


    Der Befehl würde dann in etwa so ausschauen. :)

    ocmd:heilen(playerid,params[])
    {
    new pID, Health;
    //Variablen für den Spieler & das Health


    if(sscanf(params, "si",pID,Health)) return SendClientMessage(playerid, -1, "Benutzung: /heilen [ID/Name] [Anzahl]");
    //Abfrage, ob alles eingegeben wurde. Sprich "/heilen Ray_Johnson 100"


    SetPlayerHealth(pID, Health);
    //Setzt den Wert "Health" des Spielers "pID" auf den eingetragenen Wert mit der angegebenen Anzahl an Health
    return 1;
    }


  • Eigentlich müsste es eher so sein:
    ocmd:heilen(playerid,params[])
    {
    new pID, Health;
    //Variablen für den Spieler & das Health


    if(sscanf(params, "ui",pID,Health)) return SendClientMessage(playerid, -1, "Benutzung: /heilen [ID/Name] [Anzahl]");
    //Abfrage, ob alles eingegeben wurde. Sprich "/heilen Ray_Johnson 100"


    SetPlayerHealth(pID, Health);
    //Setzt den Wert "Health" des Spielers "pID" auf den eingetragenen Wert mit der angegebenen Anzahl an Health
    return 1;
    }
    Die Parameter bei der sscanf abfrage müssen ui sein, nicht si, s steht für String, u steht für Spieler/PlayerID.

    05eb03de-9fda-461c-9dfc-834ae5b64e65.png << Server | Home >> 13462590508.png

  • Man kann auch strcmp dafür nutzen ohne sscanf & strtok :D


    Sieht dann so aus:


    if(strcmp("/heilen", cmdtext , true) == 0)
    {
    if(strlen(cmdtext) < 9) return SendClientMessage(playerid,-1,"Verwendung: /heilen [spielerid]");
    new pID = strval(cmdtext[8]);
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Ein Spieler mit dieser ID ist nicht online!");
    SetPlayerHealth(pID,100.0);
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • bekomme mein Teleport befehl nicht hin.


    Code
    if(strcmp("/Teleport",cmdtext,true,10)==0)
    	{
    	SetSpawnInfo(playerid,0,271,691.3540,-1186.2450,15.3186,57.3406,24,658,31,444,38,89985);
    	SendClientMessage(playerid,0x141414FF,"Sie haben sich erfolgreich Teleportiert");
    	return 1;

    Einmal editiert, zuletzt von Viget ()

  • SetSpawnInfo(playerid,0,271,691.3540,-1186.2450,15.3186,57.3406,24,658,31,444,38,89985);


    Das muss so lauten:


    SetPlayerPos(playerid,691.3540,-1186.2450,15.3186);


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Mein /gmxbfehel:



    Code
    if(strcmp("/gmx",cmdtext,true,10)==0)
     {
     Serverinfo(





    Ich weiss das man die Pickups so löschen kann:




    Einmal editiert, zuletzt von Viget ()

  • CreatePickup(2,4,1199.1300,-920.5710,43.0292,0);


    Du musst ja auch folgendes schreiben:


    pickup = CreatePickup(2,4,1199.1300,-920.5710,43.0292,0);


    Aber 2 Sachen dazu:


    1. modelid 2 existiert in diesem Sinne nicht.


    2. Ein Pickup zu erstellen und danach zu zerstören macht wenig Sinn...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S