Freezen

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 = 5sek


    dann eine neu public ganz unten im Script!


    public blub()
    {
    TogglePlayerControllable(playerid, false);
    }


    //Edit: Code Funktioniert Nicht!



    Lua: 63% C++: 23% C#: 53% VB: 96%

    Einmal editiert, zuletzt von PUREboyyy ()

  • 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

  • Danke aber das von Fatjoe find ich einfacher^^
    Kriege diese Fehlermeldung:
    error 017: undefined symbol "playerid"

  • 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



    Lua: 63% C++: 23% C#: 53% VB: 96%

  • Danke schön :D
    Hat geklappt :)


    Edit: Weiß du vllt auch wie ich mache das man diesen Befehl nur im Auto nutzen kann?

    Einmal editiert, zuletzt von Sampi ()