Hallo liebe Community,
Vorwort:
heute möchte ich euch mein erstes Tutorial vorstellen. Es ist für die neuen User gedacht, da das betreten von Räumen eigentlich für jede Art von Gamemode wichtig ist. Es ist nicht besonders schwer aber könnte für den ein oder anderen Hilfreich sein und da ich bis jetzt noch nicht so viele Tutorials darüber gesehen habe, werde ich nun eins machen.
Was wird benötigt?
Wir benötigen das Programm Pawn, dass kann man auf der sa-mp.com Homepage runterladen, oder auch ganz schnell hier. Dann eventuell einen Colorpicker um ein paar Farben zu ermitteln. Den gibt es zum Beispiel hier. Zudem sollte ein bisschen Grunderfahrung vorhanden sein.
Einleitung:
Es ist eigentlich ganz simpel. Jemand der es noch nicht so gut kann, wird wahrscheinlich denken, dass er sowas niemals lernen könnte. Aber wenn man sich den Code mal genauer anguckt und ins deutsche übersetzt, ist die hälfte der Arbeit so gut wie erledigt. Ich werde jetzt mal einen Beispielbefehl schreiben und Ihn dann Stück für Stück zerlegen und erklären.
Tutorial:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp,"/enter", cmdtext, true, 5) == 0)
{
if(IsPlayerInRangeOfPoint(playerid, 1.2,1199.2666,-918.3735,43.1214))
{
SetPlayerPos(playerid,365.8046,-73.9349,1001.5078);
SetPlayerFacingAngle(playerid,269.9556);
SetPlayerInterior(playerid,10);
GameTextForPlayer(playerid,"Willkommen im Burger Shot North.", 5000, 5);
}
else
{
SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem {}Eingang{}!");
}
return 1;
}
return 0;
}
Das ist zum Beispiel ein /enter-Befehl für das BSN. Sieht vieleicht schwierig aus, ist es aber nicht.
if(IsPlayerInRangeOfPoint(playerid, 1.2,1199.2666,-918.3735,43.1214))
So sieht es leer aus:
if(IsPlayerInRangeOfPoint(playerid, Float:range, Float:x, Float:y, Float:z)
Wörtlich übersetz heißt es "IstSpielerInReichtweiterVomPunkt", d.h. hier wird bestimmt, wie nah der Spieler an diesem Punkt seinen muss, damit er in dem Fall /enter eingeben kann. Natürlich kann man diesen Punkt nicht sehen, aber dafür gibt es Pickups (mehr dazu später). Float:range bedeutet, dass hier der Radius bestimmt wird, indem unser Befehl eingegeben werden kann. Float:x, Float:y, Float:z , da kommen unsere Koorinaten rein. Ausführliche Informationen gibt's hier.
Natürlich kann kein Mensch sich jede Koordinate von ganz San Andreas merken, aber dafür gibt es den SA-MP DeBug. Den findet Ihr in eurem GTA San Andreas Ordner. Einfach doppelklick draufmachen und "Launch Debug" auswählen. Dann geht Ihr zu einer bestimmen stelle und gibt "/save [Name]" ein. Bei dem Namen einfach ein Stichwort, damit Ihr später auch noch wisst, was es für eine Koordinate war. Die Koordinaten findet Ihr in den GTA San Andreas User Files, dann auf SAMP und danach auf savedpositions.txt . Das sieht dann so aus:
AddPlayerClass(0,2522.0071,-1678.7562,15.4970,88.2046,0,0,0,0,0,0); // Spawn
Wir benötigen aber nur die ersten 3 Koordinaten. Die 4. ist der Blickwinkel, auch FacingAngle genannt (ebensfalls mehr dazu später).
SetPlayerPos(playerid,Float:x,Float:y,Float:z);
Das ist die Position, wo der Spieler hinkommt wenn er /enter eingegeben hat. Die könnte ihr genauso wie oben beschrieben einfach mit dem SA-MP DeBug bestimmen.
SetPlayerFacingAngle(playerid,Float:ang);
So, das ist der Blickwinkel, übersetz bedeutet es sowas wie "bestimme den Blickwinkel des Spielers". Er bestimmt (wie der Name schon sagt) die Blickrichtung der Figur. Mehr dazu hier.
SetPlayerInterior(playerid,interiorid);
hier wird der Innenraum bestimmt, in den der Spieler kommen soll. Die Liste aller Innenräume gibt es hier.
GameTextForPlayer(playerid,"Willkommen im Burger Shot North.", 5000, 5);
Das ist ein einfacher Text der dem Spieler angezeigt wird, wenn er teleportiert wurden ist.
else
{
SendClientMessage(playerid, 0x00D7FFFF,"** Du befindest dich an keinem Eingang!");
}
Das bedeutet, wenn der Spieler nicht in der nähe des bestimmten Punktes ist, bekommt er eine Meldung, dass er sich an keinem Eingang befindet.
Wie ihr sehen könnt, eigentlich total simpel. Theoretisch könnte man es auch in einem Text beschreiben. Wenn der Spieler /enter eingibt, dann wird geprüft ob er sich im Radius befindet, wenn ja dann wird er zum geschünschten Punkt Teleportier, guckt in die Gewählte Richtung und ist ihm gewählten Innenraum. Wenn er sich nicht im Radius befindet, dann bekommt er eine Meldung, dass er sich an keinem Eingang befindet.
Ich hoffe euch hat mein Tutorial gefallen und auch ein Stück weitergebracht. Über Kritik würde ich mich sehr freuen.
Mit freundlichen Grüßen
Dominik
Teil 2 wird gleich folgen....