Hallo, liebe Scripter
Kann mir vll jemand den /gmx Command ändern?
Ich habe mir das so Forgestellt..Wenn ich /gmx eingebe sollte unter der Geldanzeige ein Countdown gestartet werden der 60 sec. läuft und wenn die
60 sec. um sind soll der Gmx Kommen
Kann mir jemand so was scripten?
/gmx mit countdown
- SHORE
- 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
-
-
// UNTER DIE INCLUDES:
new count = 60;
forward GmxCount(playerid);// OnPlayerCommandText:
if(strcmp(cmdtext,"/gmx",true) == 0)
{
if(PlayerInfo[playerid][pAdmin] >= 1) // bei GF nur, weiss ja nicht was du hast.
{
new gmxtimer = SetTimer("GmxCount",100,1);
SendClientMessage(playerid,0xFFFFFFFF,"Gmx Countdown wurde gestartet.");
}
return 1;
}// Ausserhalb jeden Callbacks[am besten ganz unten]:
public GmxCount(playerid)
{
if(count > 0)
{
new str[128]; format(str,sizeof str,"Gamemode Restart in %d Sekunden",count);
GameTextForPlayer(playerid,str,1000,1);
count--;
}
else
{
new str[128]; format(str,sizeof str,"Gamemode Restart wird durchgeführt.");
GameTextForPlayer(playerid,str,1000,1);
SendRconCommand("gmx");
}
} -
danke. aber kannst du es so posten das ich weis wo das alles hin soll?
-
Count wir in deinem Code niemals kleiner als 0.
Zeile 16,
new count = 60;
ist falsch.//Edit:
Dazu kommt noch das pro Spieler der connectet ist "count--" gemacht wird.Das ist ja nicht der Sinn.Du brauchst bei der Funktion auch keinen for(new i;i<MAX_PLAYERS,i++) { } loop. -
Ich frage auch ab ob es
1.größer als 0 ist.
und
2. setze ich es jede Sekunde wo der Timer aufgerufen wird ein -P.S: Kommst du nie in ICQ online :?
EDIT: Mit der Schleife haste Recht, war irgendwie falsch xD
-
2. setze ich es jede Sekunde wo der Timer aufgerufen wird ein -
Schon,aber du erstellst auch bei jedem Aufruf der Funktion die Variable "count" neu und setzt diese auf 60. -
Und du hast wieder recht. xD
EDIT: Habe es editiert, dürfte nun gehen.
-
Blah so würd ich es machen.
forward GmxCount();new count;
new gmxtimer;if(strcmp(cmdtext,"/gmx",true) == 0) {
if(PlayerInfo[playerid][pAdmin] >= 1) // bei GF nur, weiss ja nicht was du hast.
{
gmxtimer=SetTimer("GmxCount",1000,1);
count=60;
SendClientMessage(playerid,0xFFFFFFFF,"Gmx Countdown wurde gestartet.");
}
return 1;
}
public GmxCount()
{
if(count > 0)
{
new
str[128];
format(str,sizeof(str),"Gamemode Restart in %d Sekunden",count);
GameTextForAll(str,1000,1);
count--;
}
else
{
KillTimer(gmxtimer); // Zur sicherheit ...
//format(str,sizeof(str),"Gamemode Restart wird durchgeführt.");
GameTextForAll("Gamemode Restart wird durchgeführt.",1000,1);
SendRconCommand("gmx");
}
} -
Besserwisser
Naja, ich empfehle dir das von Goldkiller.
Der Befehl kommt in OnPlayerCommandText.
Die New und Forward Dingern zu den anderen oder halt unter die Includes.
Die TimerFunktion am besten gaanz unten.Eine Verbesserung:
Zeile 22 und Zeile 29: Woher nimmt er playerid, das musste noch als Parameter der Funktion beigeben.//Goldkiller: I C :0
//Monti|Spearrow: Du wagst es in meinem Post rumzupfuschen, ich verstehe das nicht, was du da schreibst.
//Goldkiller: I see ... das musste noch als Parameter der Funktion beigeben. <- Zwar nicht ganz richtig aber kay...
//Monti|Spearrow: I see too, GameTextForAll Ganz vergessen -
also erst mal dicken respekt leute....aber ich ahbe mir das so vorgestellt das da die zeit in richtigen sekunden abläuft....
hier ist es ja so....30 sekunden und dann 22 sekunden -
Und was ist jez mit SetTimerEx
-
SetTimerEx wird hier nicht gebraucht^^
Und der zählt von 30 bis 22 runter, zeigt auch alles an, du siehst es nur nicht, weil der GameText umd die 5 sekunden da stehen bleibt, egal, wie viel Zeit man dort eingibt, das gleiche Problem hatte ich auch beim Tacho^^
Da müsste man entweder ein TextDraw erstellen oder Message senden
Zum Textdraw:
//ganz nach oben:
new Text:bla;
//public GmxCount()
statt GameTextForAll machst du
TextDrawHideForAll(bla);
bla=TextDrawCreate(x,y,str);//bei x und y die x und y Kooridnaten vom Bildschirm eintragen (findest du mit z.B. Paint heraus)
TextDrawShowForAll(bla); -
Zitat
Und der zählt von 30 bis 22 runter, zeigt auch alles an, du siehst es nur nicht, weil der GameText umd die 5 sekunden da stehen bleibt, egal, wie viel Zeit man dort eingibt, das gleiche Problem hatte ich auch beim Tacho^^
Dann nimmt man ebend einen anderen Gametext-Style,forward GmxCount();
new count;
new gmxtimer;if(strcmp(cmdtext,"/gmx",true) == 0) {
if(PlayerInfo[playerid][pAdmin] >= 1) // bei GF nur, weiss ja nicht was du hast.
{
gmxtimer=SetTimer("GmxCount",1000,1);
count=60;
SendClientMessage(playerid,0xFFFFFFFF,"Gmx Countdown wurde gestartet.");
}
return 1;
}
public GmxCount()
{
if(count > 0)
{
new
str[128];
format(str,sizeof(str),"Gamemode Restart in %d Sekunden",count);
GameTextForAll(str,1050,4);
count--;
}
else
{
KillTimer(gmxtimer); // Zur sicherheit ...
//format(str,sizeof(str),"Gamemode Restart wird durchgeführt.");
GameTextForAll("Gamemode Restart wird durchgeführt.",1050,4);
SendRconCommand("gmx");
}
} -
breadfish.de
Hat das Thema geschlossen.