Hallo Leute,
In diesen Tutorial will ich euch Zeigen wie ihr eine NO-DM Zone Erstellen könnt
Was benötigen wir ?
- Grundwissen
- 5-10 Minuten
- PAWN (oder alternativen
______________________________________________________________________________
So nun fangen wir an zu Scripten:
Als erstes Benötigen wir Positionen!
Nur wie machen wir das?
Es ist Ganz einfach !
Hier ein Beispiel :
Als erstes suchen wir uns 1 Punkt aus :
Auf unserer GTA Karte wäre es zb Das Pinke :
______________________________________________________________________________
Nun gehen wir in unsere GTA Ordner und starten den DEBUG Mode.
Wenn wir in Spiel sind suchen wir uns unsere Stelle aus wo wir unsere no DM Haben Wollen.
Zuerst laufen wir zu unseren Punkt 1:
Wenn wir an diesen "Punkt 1" dann geben wir ein Befehl ein:
/save Punkt 1
Das gleiche machen wir nun mit Punkt 2:
Und wieder Geben wir ein wenn wir an "Punkt 2" sind:
/save Punkt 2
Jetz gehen wir auf Unseren PC unter:
Dokumente/Eigene Daten > GTA San Andreas User Files > SAMP > savedpositions
Und öffnen nun "savedpositions"
Wenn wir diese Datei öffnen denk kriegt man erstmal Kopfschmerzen
Aber so schwer ist das Garnicht.
Was machen wir nun ?
(Sollte das Bild zu klein sein oder Verpixelt dann Bitte einmal Draufklicken)
______________________________________________________________________________
So nun haben wir die Positionen raus aber was nun ?
Nun gehen wir in PAWN (oder Alternativen)
Zuerst tuhen wir Unter die INCLUDES ins Script:
new NO-DMZone1;
und nun gehen wir zu OnGameModeInit() :
public OnGameModeInit()
{
//Hier Müsste alles Stehen was ihr so Gemacht habt :)
new NO-DMZone1; = GangZoneCreate(1248.011, 2072.804, 1439.348, 2204.319);
return 1;
}
GangZoneCreate(x1,y1,x2,y2); Erstellt eine GangZone (das brauchen wir für eine NO-Dmzone)
Auf gut deutsch bei Euren Positionen :
AddPlayerClass(0,1492.7899,-855.9373,62.5106,195.3062,0,0,0,0,0,0); // Punkt 1
AddPlayerClass(0,1475.5869,-886.9310,57.2933,183.5662,0,0,0,0,0,0); // Punkt 2
ROT = x1
ORANGE = y1
HELLES PINK = x2
DUNKLES BLAU = y2
______________________________________________________________________________
So nun haben wir das unter OnGameModeInit() :
public OnGameModeInit()
{
//Hier Müsste alles Stehen was ihr so Gemacht habt :)
new NO-DMZone1 = GangZoneCreate(1492.7899,-855.9373,1475.5869,-886.9310);// Nun haben wir die Kordinaten Geändert
return 1;
}
______________________________________________________________________________
Nun Gehen wir unter OnPlayerConnect(playerid) :
public OnPlayerConnect(playerid)
{
//Hier Steht wieder Eures Zeug und so müsst ihr halt anpassen
GangZoneShowForPlayer(playerid,NO-DMZone1, 0xFFFF0096);//0xFFFF0096 ist die Farbe für eure GangZone/NoDMZone !
return 1;
}
______________________________________________________________________________
Nun haben wir Gangzone Erstellt Beispiel:
(Zur info dieses bild habe ich schnell in Google gefunden und sind nicht unsere Kordinaten !)
Nun wollen wir aber Abfragen ob der Spieler in eine GangZone bzw. In einer NO Dm Zone ist
Das machen wir mit einer Abfrage:
Wir tuhen diesen Stock lieber Ganz unten Hin :
IsPlayerInArea(playerid, Float:MinX, Float:MinY, Float:MaxX, Float:MaxY)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
if(X <= MinX && X >= MaxX && Y <= MinY && Y >= MaxY) {
return 1;
}
return 0;
}
______________________________________________________________________________
Nun haben wir die Abfrage ob der spieler in der "Area" ist
Das Heißt so viel er fragt ob der spieler in einer Location ist
Nun gehen wir wieder unter den Includes und Fügen das ein :
forward IstSpielerInArea();
Nun müssen wir ein Timer erstellen der IstSpielerInArea aller 500 Milisekunden aufruft !
So nun gehen wir wieder unter OnGameModeInit() :
public OnGameModeInit()
{
SetTimer("IstSpielerInArea",1000,1);//ruft IstSpielerInArea immer und immer wieder in Takt von 500 Milisekunden / Halbe sekunde auf !
return 1;
}
______________________________________________________________________________
Gleich ist es Geschafft es fehlt uns nurnoch IstSpielerInArea() :
Wir erstellen ein neues public :
public IstSpielerInArea()
{
for(new i; i<GetMaxPlayers(); i++)//Ruft alle Spieler auf die auf den Server sind
{
if(IsPlayerInArea(i,1492.7899,-855.9373,1475.5869,-886.9310))//Hier müssen wir wieder unsere x1,y1,x2,y2 Kordinaten einfügen !
{
//Was Passieren soll wenn er Drin ist
}
else
{
//Wenn er nicht drin ist
}
...//Und hier Könnt ihr immer weiter machen :)
}
return 1;
}
______________________________________________________________________________
So nun brauchen wir noch wenn der Spieler in unserer Zone DM macht das er nach 3 Verwarnungen Getötet wird :
Wieder unter includes :
new NoDMWarnung[MAX_PLAYERS];
und nun fügen wir OnPlayerTakeDamage ein :
public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
if(issuerid != INVALID_PLAYER_ID)
{
if(IsPlayerInArea(isseuerid,1492.7899,-855.9373,1475.5869,-886.9310))
NoDMWarnung[issuerid] += 1;
SendClientMessage(issuerid,0xFF1E00FF,"* Achtung: Sie sind in einer NO-DM Zone *");
if(NoDMWarnung[issuerid] == 4)//Wenn NoDNWarnung auf 4 Steht dann soll er
{
SetPlayerHealth(issuerid, 0);//Töten den Angreifen
NoDMWarnung[issuerid] = 0;//Setz die Variable wieder auf 0
}
}
return 1;
}
______________________________________________________________________________
Jetz sind wir Fertig...
Ich hoffe mein Tutorial hat euch Geholfen und Gefallen !
Achtung : Ihr dürft diesen Code nicht weiter Verbreiten er ist von mir Selber Geschrieben | Bei Fehlern bitte in den Tread reinschreiben !