Also ich habe auf meinem Server eine DM zone. Das Problem ist, dass ich immer wieder z.B. /dm eingeben muss damit ich wieder mitmachen kann. Wie kann ich machen das ich automatisch wieder zurück geportet werde und dann das DM halt nur mit z.B. /dmexit verlassen kann. Ich wäre sehr dankbar wenn mir jemand helfen könnte.
Hier mal mein Simpler DM port:
if(!strcmp("/dm 1", cmdtext, true))
{
SetPlayerPos2(playerid, -1404.8365,1486.7024,7.1016,5.1030, cmdtext); SetPlayerWorldBounds(playerid, -1353.5946, -1481.6191, 1508.7335, 1478.5894);
GivePlayerWeapon(playerid, 26, 8000);
GivePlayerWeapon(playerid, 28, 8000);
GivePlayerWeapon(playerid, 31, 8000);
return 1;
}
Hab Problem mit einem DM Script
- [TF]Bangman
- 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
-
-
DU machst ne Globale Variable new gIsInDM[MAX_PLAYERS]. Wenn der Spieler /dm eingibt machst du gIsInDM[playerid] = 1;, und wenn er spawnt (OnPlayerSpawn) machst du
if (gIsInDM[playerid] == 1) {
SetPlayerPos2(playerid, -1404.8365,1486.7024,7.1016,5.1030, cmdtext); SetPlayerWorldBounds(playerid, -1353.5946, -1481.6191, 1508.7335, 1478.5894);
GivePlayerWeapon(playerid, 26, 8000);
GivePlayerWeapon(playerid, 28, 8000);
GivePlayerWeapon(playerid, 31, 8000);
}Bei /dmexit machst du gIsInDM[playerid] = 0; und stellst ihm mit SetPlayerPos auf eine andere Position, oder lässt ihn sterben (SetPlayerHealth).
-
Ah, Vielen Dank
-
Jetzt gibt es ein neues Problem, wenn ich /dm eingebe werde ich nicht gespawn, hab da noch ne ClientMessage eingebaut, die kommt auch, nur ich werde einfach nicht gespawnt, ich hab das jetzt so:
new gIsInDM[MAX_PLAYERS];
public OnPlayerSpawn(playerid)
{
if (gIsInDM[playerid] == 1) {
SetPlayerPos(playerid, -1404.8365,1486.7024,7.1016,5.1030);
SetPlayerWorldBounds(playerid, -1353.5946, -1481.6191, 1508.7335, 1478.5894);
GivePlayerWeapon(playerid, 26, 8000);
GivePlayerWeapon(playerid, 28, 8000);
GivePlayerWeapon(playerid, 31, 8000);
}
if (gIsInDM[playerid] == 2) {
SetPlayerPos(playerid, -1485.2217,307.2930,53.4609,61.0159);
SetPlayerWorldBounds(playerid, -1469.4668, -1573.2063, 360.0035, 281.4446);
GivePlayerWeapon(playerid, 26, 8000);
GivePlayerWeapon(playerid, 28, 8000);
GivePlayerWeapon(playerid, 31, 8000);
return 1;}
Das unter public OnPlayerCommandText(playerid, cmdtext[])
if(!strcmp("/dm 1", cmdtext, true))
{
SendClientMessageLang(playerid, 0xFF6C6C99, "Tippe /dmexit um das DM zu verlassen","Type /dmexit to left the DM");
gIsInDM[playerid] = 1;
return 1;
}
if(!strcmp("/dm 2", cmdtext, true))
{
SendClientMessageLang(playerid, 0xFF6C6C99, "Tippe /dmexit um das DM zu verlassen","Type /dmexit to left the DM");
gIsInDM[playerid] = 2;
return 1;
}
if(!strcmp("/dmexit", cmdtext, true))
{
gIsInDM[playerid] = 0;
SetPlayerHealth(playerid, 0);
return 1;
} -
eine besere idee mach doch mit new bool InDM[MAX_PLAYERS];
und dann bei onplayerswan if(InDM) dann setplayerpos (bla bla bla); giveweapon (playeudeuuef); bla bla muss hat suchen wie genau das geht must ma suchenund dann beim command sooll der dat auf true stten und bei /dmexit auf false und fertig
-
was ist bool?
//EDIT
Aso new bool, ok ich werds mal testen
//Edit2
I-wie hab ich kp wie du das meinst, kannst du ein Beispielscript posten?
//Edit3
breadfish kannst du dir mein problem pls nochmal angucken und etwas dazu screiben? -
eine besere idee mach doch mit new bool InDM[MAX_PLAYERS];
und dann bei onplayerswan if(InDM) dann setplayerpos (bla bla bla); giveweapon (playeudeuuef); bla bla muss hat suchen wie genau das geht must ma suchenund dann beim command sooll der dat auf true stten und bei /dmexit auf false und fertig
bool ist ja ein guter Denkansatz aber in diesem Fall sinnlos, da er in der gIsInDM Variable speichert, in welchem DM der Spieler gerade ist (1, 2,..)
Jetzt gibt es ein neues Problem, wenn ich /dm eingebe werde ich nicht gespawn, hab da noch ne ClientMessage eingebaut, die kommt auch, nur ich werde einfach nicht gespawnt,
Ist ja auch klar, den einzigen Code der bei /dm 1 ausgeführt wird ist der:
SendClientMessageLang(playerid, 0xFF6C6C99, "Tippe /dmexit um das DM zu verlassen","Type /dmexit to left the DM");
gIsInDM[playerid] = 1;
return 1;Füge das hier zwischen gIsInDM[playerid] =1; und return 1 ein:
OnPlayerSpawn(playerid); -
Ah, endlich geschafft, funzt perfekt. Vielen Vielen Dank