0815 Tutorial

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
  • Hallo,


    ich bin völlig neu und ein totaler Noob im Thema scripten. Ich kenne mich aber schon sehr gut ingame in anderen Gamemods aus ^^.


    Ich würde jetzt gerne mit dem Scripten anfangen, aber ich finde keine Tutorials, die wirklich für neueinsteiger sind.


    Toll wären Tutorials, die wie ein Buch aufgebaut sind und von der Schwierigkeitsstufe steigend sind.


    Ich freue mich schon auf eure Antworten.


    MfG. Tim

  • SA-MP.com Wiki | Scripting Basics


    Jetzt komm mir ja ned mit Sachen wie "ist ja alles auf englisch". Alles in Pawn ist auf englisch, außerdem gibts was explizit Pawn betrifft fast kein einziges deutsch-sprachiges Tutorial dass die wirklichen Basics erklärt.

  • naja hilfreich ist das jetzt auch nicht. Ich verstehe die schon etwas mit meinen Englisch kenntnisen, aber dennoch finde ich die doof erklärt, die stelle mit den includes versteh ich schon vom Sinn her nicht.

  • kleiner tipp:


    du hohlst dir pawno (haste bestimmt schon), machst "File -> New", siehst die einzelnen Publics und alle publics die du nicht verstehst bzw. wo du hilfe brauchst kopierst du was hinter public kommt und fügste bei http://wiki.sa-mp.com/wiki/Main_Page ein. dann solltest rechts noch einzelne funktionen sehen. die du auch bei dem englischen wiki einfügen kannst.


    auch eine gute möglichkeit zu lernen

  • OK danke aber schon beim ersten begriff, den ich nid verstanden habe probleme : OnFilterScriptInit Auf der Seite die du geschrieben hast, steht: "This callback is called when a filterscript is loaded" aber wann loaded das filterscript ... und was ist das filterscript ^^ ?


    Ich hoffe ich nerve euch nid mit meinen doofen fragen

  • also in pawno gibt es 2 verschiedene von on...init'2. Das wichtigste ist public "OnGamemodeInit" das ist dein script/gamemode auf dem du dann spielst. das 2. ist "public OnFilterscriptsInit". In dem kannst du nebenfunktionen rein setzen wenn z. b. was testen willst oder sowas in der richtung (nur n beispiel).


    public OnGameModeInit() // Hier kommt alles rein was passieren soll wenn der Server startet (bzw. Neustartet)
    {
    SetGameModeText("Blank Script"); // Hier wird dein Modename festgehalten (bei sa-mp ist des unter "Mode"
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); // Hier wird der erste Spawnpoint rein gesetzt
    return 1;
    }


    public OnFilterScriptInit() // Hier kommt alles rein was passieren soll wenn der FS startet (bzw. Neustartet)
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here"); // Das hier wird in deine Console geschrieben, sobald du den Filterscript startest.
    print("--------------------------------------\n");
    return 1;
    }


    Den Filterscript (FS) kannst du in die server.cfg rein schreiben (wird dann beim start vom server mit gestartet) oder als rcon-admin mit /rcon loadfs/unloadfs/reloadfs FS-Name ein-/ausschalten/neuladen.


    wenn du weiter durch das Script schaust siehst du dann bestimmt noch die publics "OnGameModeExit" und OnFilterScriptExit". Das ist im Grunde das selbe wie die Inits, blos umgetret (wenn GM/FS ausgeschaltet wird).


    Hoffe du hast es verstanden. Besser kann ICH es vorerst nicht erklären.


    Einfach Melden wenn du fragen hast. Kannst auch ruhig eine PN schreiben.


    MfG
    Psycho

  • Änder mal die schrift augenkrebs :pinch:

  • besser?
    das is ja nur ne gamemode und filterscript init und exit beschreibung. nix für fortgeschrittene

  • Jo ich weiß wollte mal nur so sagen^^

  • ich wollte mal nen befehl testen und dann kam nen error, könnt ihr mir sagen was hier falsch ist? :


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/help", cmdtext, true, 10) == 0)
    { print("Funktionen:/call /test / ");
    print("Job: Ticker");
    // Do something here
    return 1;
    }
    if (strcmp("/spawn")
    { SetPlayerPos(playerid, 120,-2192.3020,646.8816,49.4375,0.0000,0,0,0,0,0,0);
    return 1;
    }
    return 0;
    }

    Einmal editiert, zuletzt von Tockra ()

  • ich machs mal nicht im pwn fenster, so das ich deine fehler farbig makieren kann:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/help", cmdtext, true/*, 10*/) == 0) // das rote brauchst du nicht unbedingt
    {
    print("Funktionen:/call /test / "); // print schreibt dir nur was in die console. für einen text an einen spieler brauchst du "SendClientMessage(playerid, Farbcode, "Text");
    print("Job: Ficker");
    return 1;
    }
    if (strcmp("/spawn") // funktion unvollständig "if (strcmp("/spawn", cmdtext, true) == 0)"
    {
    SetPlayerPos(playerid, 120,-2192.3020,646.8816,49.4375/*,0.0000,0,0,0,0,0,0*/); // Das rote muss raus bei setplayerpos brauchst du nur 3 koordinaten
    return 1;
    }
    return 0;
    }


    aber sonst nicht schlecht ;)

  • leider bekomm ich dann immernoch nen Error in der Zeile ( bei mir oben ist es Zeile 10)


    Nur kurz ne frage SetPlayerPos bedeutet doch soviel wie zu den Koordinaten telporten oder?




    €: habe den Fehler gefunden, ich hatte das da stehen:


    if(.....)
    { SetPlayerPos(....);
    return1;
    }


    aber das muss so sein :



    if(.....)
    {
    SetPlayerPos(....);
    return1;
    }



    Und ich habe nen problem, da ich Windows Vista 64bit habe, kann ich anscheinend keinen server aufmachen, wenn ich auf die Server exe drücke, öffnet sich das cmd Fenster und schließt sich sofort wieder.


    Wie kann ich dann scripts testen?

    Einmal editiert, zuletzt von Tockra ()

  • Völliger quatsch ich habe auch Windows Vista 64Bit und ich habe keine Probleme die samp-server.exe zu starten, es kann sein das du die Server.cfg falsch konfiguriert hast oder im Script was falsch ist, wobei ich letzteres vermute.


    if(...)
    {
    SetPlayerPos(playerid,Float:x,Float:y,Float:z);
    return 1;
    }


    SetPlayerPos setzt den Spieler "playerid" nach x,y,z (position)


    Beachte das du "..." noch mit deiner Abfrage ersetzten musst.

  • Jetzt klappt der server, nachdem ich das rcon passwort gechanged habe.

    2 Mal editiert, zuletzt von Tockra ()