Also wie kann ich das machen dass ich immer wenn ich in DM bin keinteleport mehr geht nur wenn man wieder /dmoff oder sowas mache...
DM
- MaRcEl9
- Geschlossen
- Erledigt
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
-
-
Ein Arry (z.b. "AllowTele[MAXPLAYER]") für alle spieler anlegen und wenn man den teleportbefehl in die dm-Zone macht, wird die bool im array auf false gesetzt. Wenn er nun einen anderen Teleportbefehl macht, dann muss man immer schauen ob im array für den spieler true steht, wenn net, dann darf er net teleportieren. Wenn man nun /dmoff macht, wird sein bool im arry auf true gesetzt und er wird z.B. gekillt.
Das wäre meine Variante, das scripten überlasse ich dir.Stratege993
-
naja ein skrip find ich da net..
will ja nur wissen ob das so geht oder auch einfacher und dann den skript dazu.. -
Oder man machst einfach so das wenn man /dm1 (also eon teleport zur DM ) macht das man dann zb in eine Fraktion gestopft wird und solang man dadrin is kann man keine anderen Befehle nutzen
Und wenn man /dmoff macht wird man gekillt und aus der Fraktion gekickt xD
-
Natürlich geht sowas,ist recht einfach.
new bool:InDM[MAX_PLAYERS];public OnPlayerConnect(playerid) {
InDM[playerid]=false;
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (!strcmp("/dm", cmdtext, true, 3)) {
//dm kram
InDM[playerid]=true;
SendClientMessage(playerid,COLOR_YELLOW,"DM betreten");
return 1;
}
else if (!strcmp("/dmoff", cmdtext, true, 6)) {
InDM[playerid]=false;
SendClientMessage(playerid,COLOR_RED,"DM verlassen");
return 1;
}
else if (!strcmp("/teleport1", cmdtext, true, 10)) {
if(!InDM[playerid]) { // Falls der Spieler NICHT im DM ist passiert folgendes
}
else { // Falls er noch im DM ist,passiert jenes
SendClientMessage(playerid,COLOR_RED,"Du kannst diesen Befehl nicht benutzten da du noch DM spielst");
}
return 1;
}
return 0;
} -
WOW THX
-
UND wie kann ich das so machen dass ich nach dem /kill oder sterben wieder an dem DMswan komme?
-
if (!strcmp("/kill", cmdtext, true, 3))
{
if(InDM[playerid])
{
SetPlayerHealth(playerid, 0.0);
SetPlayerPos(...); // wo er hin soll wenn er in DM is
}
else
{
SetPlayerHealth(playerid, 0.0);
SetPlayerPos(...); // wo er hin soll wenn er nich in DM is
}
return 1;
}Hoffe ma es geht habs nich getestet xD
-
das geht ja aber nur nach kill nicht beim normalen tot.. und habgs bropiert aber man kommt dann tot am punkt an weil der stirbt ja erst und dan teleport und dann is der schon tot aber man kann doch bestimmt mit puplic onplayerdeath() oder ... und wie?
if (strcmp(cmdtext, "/dm", true)==0)
{
//dm kram
InDM[playerid]=true;
SendClientMessage(playerid,COLOR_YELLOW,"DM betreten");
SetPlayerPos(playerid,184.037,1862.120,20.058);
GivePlayerWeapon(playerid,28,10000);
return 1;
}
if (strcmp(cmdtext, "/dmoff", true)==0)
{
InDM[playerid]=false;
SendClientMessage(playerid,COLOR_RED,"DM verlassen");
SetPlayerHealth(playerid, 0);
return 1;
}gehts so auch?
-
Haben paar fragen..
1. Wie kann ich das machen, das wenn ich im Dm sterbe, das ich an einem punkt im Dm wieder spawne ??
2. Und wie kann ich es machen, das wenn ich /dmoff mache, ich dann aus dem DM rauskomme, ich in der zeit wo ich im DM drinne bin aber keine Befehle außer /dmoff machen kann?
Habe das hier nciht richtig verstanden, bitte um hilfe..
-
-
OnPlayerSpawn:
if(indm[playerid])
{
SetPlayerPos(playerid,x,y,z);
}
halt bei OnPlayerSpawn abfragenWenn du die anderen Cmd's schützen willst musst du abfragen ob der Spieler sich im Dm befindet in der Klasse OnPlayerCommandText
bei dmoff fragst du ebenfalls ab ob du im Dm bist oder nicht, je nach dem machste ne Aktion -
Verstehe ich nciht
-
Also sobald du ein dm betrittst wird eine Variable auf 1 oder true gestellt damit das Script nachher weiss
bzw. zurückgeben kann ob du im dm bistnew bool:InDm[MAX_PLAYERS];
InDm[playerid] = true;
if(InDm[playerid])return SendClientMessage(playerid,COLOR,"Du kannst ... nicht benutzen da du dich im Deathmatch befindest!");
solche abfragen machste überall und je nach Situation handelst du
-
z.B
if (strcmp("/stunt", cmdtext, true, 10) == 0)
{
InDm[playerid] = true;
if(InDm[playerid])return SendClientMessage(playerid,COLOR,"Du kannst den Befehl /stunt nicht benutzen da du dich im Deathmatch befindest!");
SetPlayerPos(playerid,398.1079,2540.1904,19.6311);
return 1;
}ist das so richtig??
-
unlogisch vorher das Dm auf 1 zu stellen sprich true und dann ne abfrage zu machen xD
also nur wenn du ein Dm berittst sollst du die var auf 1 stellen bzw. true dann in den anderen cmd's baust du die abfrage ein
auch in den dm command damit der spieler diesen nicht als nutzen kann -
OMG, ich verstehe nichts, naja, ich wede das orgentwan verstehen...
//EDIT//
Habe es verstanden
-
breadfish.de
Hat das Thema geschlossen.