Tutorial zum scripten von Teleports

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
  • Guten Abend liebe Breadfish Community!


    Ich möchte ein kleines Tutorial zum Thema Teleports machen,wobei ich mir jetzt sicher bin.
    Etwas vorweg: es tut mir Leid,wenn es so ein Tutorial schon gibt,dennoch möchte ich meins vorstellen.
    Als erstes braucht man natürlich Pawno (Programm/Sprache zum scripten)
    und GTA San Andreas Multiplayer zum testen.
    Nun öffnen wir zuerst Pawno,je nachdem welches Betriebsystem ihr habt (ich hab Windows 7) startet ihr es so wie z.B. ich als Administrator.


    Zuerst findet ihr euch unter OnPlayerCommandText ein.
    Danach würd ich mir erstmal die Struktur davon angucken,bevor ich daran etwas verändere.
    Anschließend schreibt ihr hier if (strcmp("/dmw", cmdtext, true, 10) == 0)
    euren Command rein.
    Mein Teleport führt in die Wüste nach Las venturas zu meiner Deathmatch Map.
    Natürlich braucht ihr erstmal eine Position wo ihr euch hinteleportieren wollt.
    Dafür macht ihr folgendes:
    Ihr öffnet euren ordner wo GTA San Andreas und SAMP drin sind,und sucht samp_debug.
    Danach klickt ihr samp_debug mit einem Doppelklick an,und klickt anschließend auf Launch.
    Ihr werdet in den "Hollywood Hills " gespawnt.
    Nun sucht ihr euch einen Punkt wo ihr euch hinteleportieren wollt,z.B. zum Polizeirevier in Fort Carson (ist in Las Venturas).
    Um dorthin zu gelangen schreibt ihr /vsel,und ihr entdeckt eine große Fahrzeugauswahl (zwischen Autos wählen mit SHIFT und LEERTASTE).
    Wenn ihr ein passendes Auto (was eurem Geschmack entspricht)gefunden habt fahrt ihr halt zu dem Punkt wohin ihr euch später porten wollt.
    In unserem Falle zum PD nach Las venturas Fort Carson.(Mein teleport geht nach LV zu meiner Map nicht zum PD.)
    Danach stellt ihr euch meinetwegen vor das Department und gebt /save Teleport 1 (dieses "teleport 1"könnt ihr durch etwas anderes ersetzen).
    Auf dem Bildschirm erscheint dann im Chatfenster eine Nachricht ("OnFoot position saved"oder so etwas in der Art.).
    Diese Koordinaten werden in den Savedpositions.txt gespeichert,die ihr bei der SAMP 0.3b Version,unter Dokumente-->GTA San Andreas Userfiles--->SAMP--->Savedpositions.txt findet.Bei der Version 0.3a findet ihr diese in eurem GTA San Andreas Ordner.


    So nun soll ja nach den Command etwas passieren.
    Dafür macht ihr folgendes: {
    SetPlayerPos(playerid,-378.8948,2206.9885,42.1240);
    SetCameraBehindPlayer(playerid);
    return 1;
    }


    Dies wäre auch das Einfachste....
    So nun die Erklärungen dazu:
    SetPlayerPos: Dies legt die position fest,wo hin der Spieler "gestellt"wird.(aufbau: playerid,positionX,positionY,positionZ)
    SetCameraBehindPlayer : Dies setzt im Grunde nur die Kamera hinter den Spieler. (Aufbau: playerid)


    So nun könnt ihr so wie ich noch mehr Funktionen reinbringen,die nach dem der Command ausgeführt wurde passieren sollen.
    Ich hab hier noch einiges dazu gedichtet xD
    Seht selbst,die Erklärungen sind dabei.
    Meins sieht etwas anders aus,ist aber in keinster Weise kompliziert.


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/dmw", cmdtext, true, 10) == 0)
    {
    SetPlayerPos(playerid,-378.8948,2206.9885,42.1240);
    SetCameraBehindPlayer(playerid);
    SetPlayerArmour(playerid,100);//setzt dem Player den Armour auf 100%
    SetPlayerHealth(playerid,100); // setzt die Healthpoints des Players auf 100%
    GivePlayerWeapon(playerid,25,200);//Gibt dem player eine schrotflinte (playerid,WaffenID,Munitionsmenge)
    GivePlayerWeapon(playerid,24,136);//DesertEagle| hier ist es das selbe wie oben
    GivePlayerWeapon(playerid,34,20);//Sniper| hier auch

    GivePlayerWeapon(playerid,18,10);//hier auch....
    SendClientMessageToAll(COLOR_BEGE,"Ein Spieler hat die Wüsten-Deathmatch-Arena betreten.Um dorthin zu gelangen tippe /dmw.");//hier werden alle SDpieler benachrichtig,dass ein Gamer die Arena betreten hat
    GameTextForPlayer(playerid,"~b~Willkommen~b~in ~b~El~b~Castilo del Diablo",4000,3);// Dem Player,der diese Arena betreten hat wird folgender Text gezeigt..
    //Aufbau von GameTextForPlayer: (playerid,Text der erscheinen soll,wie lange der Text bleibt in milisek,Stil) Die Styles von den Huchstaben/Schriften bekommt ihr weiter unten
    return 1;
    }
    return 0;
    }


    So das war es erstmal mit dem Tutorial.
    Ich hoffe ich konnte den ganz neuen helfen.
    Feedback natürlich erwünscht,genau so wie auch Kritik.
    fragen können ebenfalls gestellt werden,im Forum per PN im Thread oder per ICQ oder Skype....


    PS: Die Seite mit den Styles des GameText: http://wiki.sa-mp.com/wiki/GameTextStyle (Dort finden sich auch alle möglichen farben für die Buchstaben)


    Viel Spaß beim testen ;)



    //Edit: Bei dem ShowGameTextForPlayer den falschen Zeilenumbruch gelöscht

  • Es heisst if(IsPlayerAdmin(playerid))

    dcmd_greenpeace(playerid,params[]) {
    #pragma unused params
    SendClientMessage(playerid, Grün, "Rettet die Wale,esst mehr Bieber!");
    return 1;
    }


    Mapplanung:
    Etwas einzigartiges was noch kein anderer veröffentlicht hat.
    70% fertig.

  • Ich bin mir nicht sicher ob das auch Funktioniert aber...


    GameTextForPlayer(playerid,"~b~Willkommen\n ~b~in\n ~b~El\n ~b~Castilo del Diablo",4000,3);// Dem Player,der diese Arena betreten hat wird folgender Text gezeigt..


    um einen Zeilenumbruch zu machen benutzt man in einem GameText doch eigentlich ~n~ oder nicht?

  • Ja stimmt,ich hab irgendwie gestern gepennt :D
    Ich weiß,dass dieser \n Zeilenumbruch bei GameText anders ist....
    Ich bin mir nicht sicher,ob ich edtieren darf.
    Wenn ich es dürfe,werde ich das verbessern,sorry für den Fehler...