Hallo Leute,
das ist mein erstes Tutorial das ich erstellt habe =D
Hier wird gezeigt wie man ein richtiges DM scriptet.
Benötigt:
- Grundwissen
Schritt 1:
Als erstes definieren wir alles:
Hier definieren wir die Abfrage ob man im DM ist
new dmling[MAX_PLAYERS];
Hier definieren wir unseren RandomSpawn für AntiSpawnKilling:
new DMRandom;
Schritt 2:
Nun erstellen wir unsern Kommando(Erklärung hinter //):
drüber noch new string[256];
if(!strcmp(cmdtext, "/dm", true))
{
	new name; // Kann auch im Header eingesetzt werden
	GetPlayerName(playerid,name,20);
	format(string, sizeof(string), "|||> %s ist jetzt im DM beigetreten.[/dm]",name); //Öffentliche Nachricht dass jmd DM beigetreten hat
	SendClientMessageToAll(0xFFD700FF,string); //Farbe von der Nachricht
	SetPlayerPos(playerid, 1383.4563,2185.5469,11.0234); //Teleport POsition
	SetPlayerWorldBounds(playerid, 1447.158, 1275.345, 2215.923, 2096.013); //Das sind unsichtbare Mauern damit man die Zone nicht verlässt
	SetPlayerVirtualWorld(playerid, 2); //Damit man nur mit Spielern spielt die nur im DM sind
	ResetPlayerWeapons(playerid); //Alle Waffen werden einmal entfernt
	DMRandom = random(3); //Hier erstellen wir unseren Random Spawn
	switch(DMRandom)
	{
	case 0:
	{
	SetPlayerPos(playerid, 1383.4563,2185.5469,11.0234); //damit es kein Spawnkilling gibt
 	}
 	case 1:
 	{
	SetPlayerPos(playerid, 1307.6925,2109.0125,11.0156); //2. Spawn
	}
	}
	SendClientMessage(playerid, 0xFFFFFFAA, "Tippe /exitdm um das DM zu verlassen!"); //Nachricht für Player wie man DM verlässt
	GivePlayerWeapon(playerid, 24, 500); // Nun geben wir unseren Spieler die Waffen
	GivePlayerWeapon(playerid, 27, 500); // 2. Waffe (beliebig)
	dmling[playerid] = 1; //Hier wird eingestellt das der Spieler in nun in einem DM ist
return 1;
}
Schritt 3:
Nach dem Sterben soll man ja auch wieder da Spawnen also:
if(dmling[playerid] == 1) //Abfrage ob man im DM ist
{
	SetPlayerVirtualWorld(playerid, 1);
	SetPlayerWorldBounds(playerid, 1447.158, 1275.345, 2215.923, 2096.013);
	ResetPlayerWeapons(playerid);
	DMRandom = random(3);
	switch(DMRandom)
	{
	case 0:
	{
	SetPlayerPos(playerid, 1383.4563,2185.5469,11.0234);
 	}
 	case 1:
 	{
	SetPlayerPos(playerid, 1307.6925,2109.0125,11.0156);
	}
	}
	GivePlayerWeapon(playerid, 24, 500);
	GivePlayerWeapon(playerid, 27, 500);
}
Schritt 4:
Jetzt deaktivieren wir Kommandos wie z.b "/kill" :
if(!strcmp(cmdtext, "/kill", true))
{
	if(dmling[playerid] == 1) //Abfrage ob man im DM ist
	{
		SendClientMessage(playerid, 0xFFFFFFAA, "Du bist in einem DM! Tippe /exitdm um das DM zu verlassen!"); //Nachricht
	}
	else //wenn man nicht im DM ist
	{
	    SetPlayerHealth(playerid, 0); //Ausführung wenn man nicht im DM ist
	}
}
return 1;
}
Schritt 5:
Jetzt erstellen wir das Kommando für das Verlassen des DMs:
if(!strcmp(cmdtext, "/exitdm", true))
{
	if(dmling[playerid] == 1) //Abfrage ob man im DM ist
	{
		SetPlayerPos(playerid, 0.0,0.0,0.0); //Beliebiges Eingeben wo er nach dem Verlassen hin soll
        SetPlayerWorldBounds(playerid, 9999.685, -9999.502, 9999.858, -9999.685); //Unsichtbare Mauer wegmachen bzw. Maximieren
        SetPlayerInterior(playerid,0); //Innenraum auf 0 wenn man einen DM macht mit Innenraum
		SetPlayerVirtualWorld(playerid,0); //Welt wieder auf die Standart Welt 0
		dmling[playerid] = 0; //Auf 0 setzten um nicht mehr am DM teilzunehmen
	}
	else
 	{
		SendClientMessage(playerid, 0xFFFFFFAA, "Du bist in keinem DM!"); //Nachricht
	}
}
return 1;
}
Schritt 6:
Noch am Ende:
Unter OnPlayerDisconnect:
dmling[playerid] = 0;
Damit ein neuer mit der ID nicht im DM ist.
Naja ist ja noch mein erstes Tut =P
Und die Erklärungen sind alle im PWN-Code
MfG
TaFiL
//E: Hab bei Schritt 6 . Schritt 5 hingeschrieben 
//E2: Error rausgemacht
 
		 
		
		
	 
			
									
		 8|, das ist dann doch eher HTML.
  8|, das ist dann doch eher HTML.  
 .
 .