Basics [ FÜR ANFÄNGER ]

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
  • Hey, ich zeige euch und erkläre mal die Basics :>


    Als erstes hier mal ein paar "Befehle":


    SendClientMessage //SendClientMessage sendet eine Nachricht an den jeweiligen Spieler
    SetPlayerPos //Setzt die Position des Spieler auf die angegeben Koordinaten
    SetPlayerHealth //Setzt die HP (HealthPoints) des Spielers auf die angegebene Anzahl
    SetPlayerArmour //Setzt die Rüstung (Armour) des Spielers auf die angegebene Anzahl


    Ich mache nun zu jedem Befehl ein Beispiel, andem ihr euch orientieren könnt.


    Dieser Text-Command den ich als Beispiel für SendClientMessage mache muss unter OnPlayerCommandText


    if(strcmp("/test",cmdtext,true) == 0) //Wenn man dies eintippt passiert:
    { //Klammer wird geöffnet
    SendClientMessage(playerid, 0xFF0000AA ,"Du hast /test eingegeben!"); // 0xFF0000AA = die Farbe
    return 1; //Returnt den Befehl
    } //Klammer wird geschlossen


    if(strcmp("/port",cmdtext,true) == 0)
    {
    SetPlayerPos(playerid, X-Achse, Y-Achse, Z-Achse); //X Y und Z mit euren XYZ Koordinaten ersetzen :>
    return 1;
    }


    if(strcmp("/heal",cmdtext,true) == 0)
    {
    SetPlayerHealth(playerid, 100);
    return 1;
    }


    if(strcmp("/armour",cmdtext,true) == 0)
    {
    SetPlayerArmour(playerid, 100);
    return 1;
    }


    Man kann allerdings auch mehrere Befehle in einem Befehl haben zB:


    if(strcmp("/heal",cmdtext,true) == 0)
    {
    SetPlayerHealth(playerid, 100);
    SendClientMessage(playerid, 0xFF0000AA,"Du hast dich geheilt!");
    return 1;
    }


    Falls man einen Befehl nur an einem bestimmten Ort ausführen können soll muss man eine Koordinaten Abfrage machen:

    if(strcmp("/waffe",cmdtext,true) == 0)
    { //Öffnet 1. Klammer
    if(!IsPlayerInRangeOfPoint(playerid, RADIUS zB 2, X-Achse, Y-Achse, Z-Achse)) //Das ! falls er nicht dort ist:
    { //Öffnet 2. Klammer
    return SendClientMessage(playerid, 0xFF0000AA,"Du bist nicht an ort X!"); //das "return" damit der Befehl nicht weiter ausgeführt wird, da wir ja nicht an ort X sind! ;>
    } //Schließt 2. Klammer
    GivePlayerWeapon(playerid, WaffenID, Munition);
    return 1;
    } //Schließt 1. Klammer


    Ich werde es morgen weiterschreiben! :)
    Ich hoffe euch hilft sowas ein bisschen :)


    MfG Hijashy

    Die deutsche Rechtschreibung ist Freeware, sprich du darfst sie kostenlos nutzen...
    Sie ist aber nicht Open Source, somit darfst du sie nicht verändern oder in veränderter Form veröffentlichen!


  • hm sry, nicht gerade hilfreich für anfänger. wenig erklärt nur ein paar Funktionen "vorgestellt".


    was bedeutet denn zb. if(strcmp("/heal",cmdtext,true) == 0)
    das wäre zb. für anfänger interessant.


    MfG
    BlackHawk


    Bitte keine Script/Supportanfragen via PN!!!
    (Ausnahme: Scripten gegen Bezahlung!)

  • Um solche Befehle in Aktion zu erleben nicht schlecht, aber was mich (als blutiger Anfänger) interessieren würde, für was das ganze Zeug steht. :)


    Code
    if(strcmp("/test",cmdtext,true) == 0)


    Was heißt das strcmp, warum muss am Ende eine 0 hin etc.


    Wenn sich jmd bereit erklären würde das zu machen, wäre das Top! :D

  • Das nennt man geschweifte klammern.
    Und in pawn nennt man das einen Scriptblock.
    Mit der geöffneten geschweiften Klammer '{' eröffnest du einen Scriptblock und schließt ihn mit der geschlossenen geschweiften klammer '}'.

  • Um solche Befehle in Aktion zu erleben nicht schlecht, aber was mich (als blutiger Anfänger) interessieren würde, für was das ganze Zeug steht. :)


    Code
    if(strcmp("/test",cmdtext,true) == 0)


    Was heißt das strcmp, warum muss am Ende eine 0 hin etc.


    Wenn sich jmd bereit erklären würde das zu machen, wäre das Top! :D

    Also strcmp heißt sowas wie es achtet auf Groß und Klein Schreibung
    die == 0 weiß ich selber nciht X( sry

  • Nun ich beantworte euch mal die frage.
    Es ist ganz einfach wen man versteht was strcmp macht.


    SA:MP Wiki | Strcmp()


    Strcmp:
    Strcmp ist eine funktion die 2 Strings miteinander vergleicht, optional kann eingestellt werden ob Groß und kleinschreibung beachtet werden soll.
    Nach einem check gibt strcmp einen Integer wert zurück.


    0 - Für Ja die strings gleichen sich.
    1 oder -1 (kP) - Für Nein die strings gleichen sich nicht.


    Nun die frage warum das '== 0' ?


    '==' bedeutet ist nicht der Operator fürs festlegen eines Wertes, dieser Operator ist der "Vergleichsoperator".
    Wie oben beschrieben gibt Strcmp "0" zurück wen die Strings sich gleichen, das heißt mit '== 0' überprüfen wir ob 0 wiedergegeben wird.


    Also hier nochmal die abfrage:


    if(strcmp("/test",cmdtext,true) == 0) // Wen strcmp 0 wiedergibt.


    Ich foffe ich habe es verständlich erklärt und ihr habt es verstanden^^.
    Wen nicht fragen ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hehe, ist doch wohl ein Witz, oder?^^ Naja kaum etwas erklärt und unter Basics verstehe ich etwas anderes als ein paar schlappe Commands oO

  • Ich habe da mal eine Frage: Wie kann ich denn "Parameter" von solchen Befehlen erfragen? Wenn ich zum beispiel den Befehl "/call" definiere, soll der User, wenn er einen anderen ingame "anrufen" will, "/call [nummerdesanderenspielers]" eingeben. Wie kann ich das eingegebene "auseinanderpfücken"?


    mfG,
    CO2

    Programmierung: C/C++, Java, BASIC, SQL, HTML, CSS, JavaScript, PHP


    Einfach eine mega-große Schrift, die meine obige Nachricht nicht von meiner Signatur unterscheiden lässt, weil meine Signatur einfach nur gigantisch ist - Aber das ist mir egal...

  • Ich habe da mal eine Frage: Wie kann ich denn "Parameter" von solchen Befehlen erfragen? Wenn ich zum beispiel den Befehl "/call" definiere, soll der User, wenn er einen anderen ingame "anrufen" will, "/call [nummerdesanderenspielers]" eingeben. Wie kann ich das eingegebene "auseinanderpfücken"?


    mfG,
    CO2


    [ SCRIPTING ] Commands mit Parametern

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Sonntag, 22. August 2010, 05:12
    noch son post pusher :D


    gutes tutorial