Moin,
wie freez ich einen für z.B 5 Sekunden?
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
-
-
Für Godfather:
mit nem timer?
Header
forward blub();/deinbefehle
TogglePlayerControllable(playerid, true);
SetTimer("blub",5000,0); // Timer mit 5sek 1000 = 1sek 5000 = 5sekdann eine neu public ganz unten im Script!
public blub()
{
TogglePlayerControllable(playerid, false);
}//Edit: Code Funktioniert Nicht!
-
ganz oben unter die includes
fine dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
i-wo ins script:
dcmd_freezeplayerfor5seconds(playerid,params[]) {
new ID;
if(sscanf(params, "d",ID)) {
return SendClientMessage(playerid,COLOR_RED,"USAGE: /freezeplayerfor5seconds [playerid]");
}
if(!IsPlayerConnected(pID)) {
return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
}
TogglePlayerControllable(ID, 0);
SetTimer("unfreeze", 5000, 0);
return 1;
}forward unfreeze(playerid)
public unfreeze(playerid)
{
TogglePlayerControllable(playerid, 1);
}stock sscanf(string[], format[], {Float,_}:...)
{
#if defined isnull
if (isnull(string))
#else
if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
#endif
{
return format[0];
}
#pragma tabsize 4
new
formatPos = 0,
stringPos = 0,
paramPos = 2,
paramCount = numargs(),
delim = ' ';
while (string[stringPos] && string[stringPos] <= ' ')
{
stringPos++;
}
while (paramPos < paramCount && string[stringPos])
{
switch (format[formatPos++])
{
case '\0':
{
return 0;
}
case 'i', 'd':
{
new
neg = 1,
num = 0,
ch = string[stringPos];
if (ch == '-')
{
neg = -1;
ch = string[++stringPos];
}
do
{
stringPos++;
if ('0' <= ch <= '9')
{
num = (num * 10) + (ch - '0');
}
else
{
return -1;
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num * neg);
}
case 'h', 'x':
{
new
num = 0,
ch = string[stringPos];
do
{
stringPos++;
switch (ch)
{
case 'x', 'X':
{
num = 0;
continue;
}
case '0' .. '9':
{
num = (num << 4) | (ch - '0');
}
case 'a' .. 'f':
{
num = (num << 4) | (ch - ('a' - 10));
}
case 'A' .. 'F':
{
num = (num << 4) | (ch - ('A' - 10));
}
default:
{
return -1;
}
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num);
}
case 'c':
{
setarg(paramPos, 0, string[stringPos++]);
}
case 'f':
{
setarg(paramPos, 0, _:floatstr(string[stringPos]));
}
case 'p':
{
delim = format[formatPos++];
continue;
}
case '\'':
{
new
end = formatPos - 1,
ch;
while ((ch = format[++end]) && ch != '\'') {}
if (!ch)
{
return -1;
}
format[end] = '\0';
if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
{
if (format[end + 1])
{
return -1;
}
return 0;
}
format[end] = '\'';
stringPos = ch + (end - formatPos);
formatPos = end + 1;
}
case 'u':
{
new
end = stringPos - 1,
id = 0,
bool:num = true,
ch;
while ((ch = string[++end]) && ch != delim)
{
if (num)
{
if ('0' <= ch <= '9')
{
id = (id * 10) + (ch - '0');
}
else
{
num = false;
}
}
}
if (num && IsPlayerConnected(id))
{
setarg(paramPos, 0, id);
}
else
{
#if !defined foreach
#define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
#define __SSCANF_FOREACH__
#endif
string[end] = '\0';
num = false;
new
name[MAX_PLAYER_NAME];
id = end - stringPos;
foreach (Player, playerid)
{
GetPlayerName(playerid, name, sizeof (name));
if (!strcmp(name, string[stringPos], true, id))
{
setarg(paramPos, 0, playerid);
num = true;
break;
}
}
if (!num)
{
setarg(paramPos, 0, INVALID_PLAYER_ID);
}
string[end] = ch;
#if defined __SSCANF_FOREACH__
#undef foreach
#undef __SSCANF_FOREACH__
#endif
}
stringPos = end;
}
case 's', 'z':
{
new
i = 0,
ch;
if (format[formatPos])
{
while ((ch = string[stringPos++]) && ch != delim)
{
setarg(paramPos, i++, ch);
}
if (!i)
{
return -1;
}
}
else
{
while ((ch = string[stringPos++]))
{
setarg(paramPos, i++, ch);
}
}
stringPos--;
setarg(paramPos, i, '\0');
}
default:
{
continue;
}
}
while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
{
stringPos++;
}
while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
{
stringPos++;
}
paramPos++;
}
do
{
if ((delim = format[formatPos++]) > ' ')
{
if (delim == '\'')
{
while ((delim = format[formatPos++]) && delim != '\'') {}
}
else if (delim != 'z')
{
return delim;
}
}
}
while (delim > ' ');
return 0;
}das unter OnPlayerCommandText:
dcmd(freezeplayerfor5seconds, 23, cmdtext);
ausm kopf geschrieben kann aber klappen xD
-
Also dann würde ich die obere Variante nehmen
-
Danke aber das von Fatjoe find ich einfacher^^
Kriege diese Fehlermeldung:
error 017: undefined symbol "playerid" -
Info: Meines oben ist nur ein Beispiel! dort müsst ihr noch Giveplayer einbauen!
sonst freezet ihr euch mit den befehl selber! becouse (playerid, false) und (playerid, true)...(; -
Wie? versteh ich nicht.^^
Ich möchte mich wenn ich z.B den Befehl /bla eingebe das ich mich selber freeze für 5 Sekunden und ein Text kommt: Du hast dich für 5 Sekunden gefreezt.Und nach 5 Sekunden wird man wieder unfreezt^^ -
-
Für Godfather:
/bla befehl^^Header
forward blub(playerid);OnPlayerCommandText:
if(strcmp(cmd, "/bla", true) ==0)
{
TogglePlayerControllable(playerid, true);
SetTimer("blub",5000,0); // Timer mit 5sek 1000 = 1sek 5000 = 5sek
SendClientMessage(playerid, COLOR_GRAD1, "Du Idiot hast dich selbst für 5sek gefreezet omfg^^");
return 1;
}dann eine neu public ganz unten im Script!
public blub(playerid)
{
TogglePlayerControllable(playerid, false);
}So Da haste
Sollte Funktionieren!
Viel Spaß!
Mit Freundlichen Grüßen
Joe//Edit Ups^^ Hatte eben bei den timer in der klammer das (playerid) vergessen deswegen undefined playerid..so gedit
der code hier drüber funzt jez! xD -
Danke schön
Hat geklapptEdit: Weiß du vllt auch wie ich mache das man diesen Befehl nur im Auto nutzen kann?
-
Yop...
mit der Variable:if(GetPlayerState(playerid) == 2)
Sollt gehen
Mit Freundlichen Grüßen
Joe xP -
Jo danke hat geh klappt^^