/look [ID]

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
  • ICh suche einen befehel /look [ID].
    Der soll bewirken das man selber stirbt als admin, jedoch nicht respawnt wird, sondern die angegebene ID im gästemodus sieht. So einen befehl gibt es glaub ich bei GF. Ich verwende selfmade.
    Man soll sehen können was die person macht, aber selebr noch im Chat schreiben können.
    MfG Weed


    das muss doch wer wissen, der keks weiß immer alles.....

    Einma vorbei schaun lohnt sich
    www.prt-clan.com der GamerClan für GTA-SAMP.Wir haben einen leistungsstarken vServer und ein hoch entwickeltes RealLife Script der Marke eigenbau, zu 100% Selfmade.
    Bald geht der RL-Server on, seid alle dabei. Regestriert euch und fiebert mit!!!


    Einmal editiert, zuletzt von Weed ()

  • Wie wärs denn mal mit selber probieren?
    Weil ohne fleis kein Preis würd ich mal sagen.
    Und wenn du dann noch Probleme hast,
    poste deinen code und wir helfen dir weiter.


    // ich weiß es is der Wunsch thread aber trotzdem.
    Was bringt es dir wenn du einfach Copy & paste machst? nichts ?(

  • Also z.b.


    bei den defines

    #define 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

    und bei OnPlayerCommandtext

    dcmd(look,4, cmdtext);

    untend runter

    dcmd_look(playerid, params[])
    {
    new pID;
    if(sscanf(params, "d", pID))
    {
    SendClientMessage(playerid, rot, "[Fehler:] /look [ID]");
    TogglePlayerSpectating(playerid, 0);
    gSpectateID[playerid] = INVALID_PLAYER_ID;
    gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
    }
    else if(!IsPlayerConnected(pID))
    {
    SendClientMessage(playerid, rot, "Der gewünschte Spieler wurde nicht gefunden!");
    }
    else if(IsPlayerAdmin(playerid))
    {
    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, pID);
    SetPlayerInterior(playerid,GetPlayerInterior(pID));
    gSpectateID[playerid] = pID;
    gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;
    }
    else
    {
    SendClientMessage(playerid, rot, "[Fehler:] Du darfst diesen Befehl nicht benutzen!");
    fehler++;
    new warnung[128];
    format(warnung, sizeof(warnung), "Du hast jetzt %d Verwarnungen. Bei 5 wirst du gekickt!", fehler);
    SendClientMessage(playerid, rot, warnung);
    if(fehler >= 5)
    {
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));


    new string[128];
    format(string, sizeof(string), "%s (ID: %d) wurde gekickt, weil wiederholt nicht autorisiert Befehle ausgeführt wurden", pname, playerid);
    SendClientMessageToAll(rot, string);
    Kick(playerid);
    }
    }
    return 1;
    }

    und ganz unten noch sscanf definieren

    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;
    }
    stock GetPlayerID(playername[])
    {
    for(new playerid=0; playerid<GetMaxPlayers(); playerid++)
    {
    if(IsPlayerConnected(playerid))
    {
    new playernamestring[32];
    GetPlayerName(playerid, playernamestring, 32);
    if(strcmp(playernamestring, playername, true) == 0)
    {
    return playerid;
    }
    }
    }
    return -1;
    }

  • :S
    Das kann doch gar nicht gehen
    Wo sind die news für:
    gSpectateID[playerid] = INVALID_PLAYER_ID;
    gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;


    ?
    Es geht nicht einfach Copy & Paste.
    Genauso wie "fehler" dadrin.
    Das wurde auch nirgends definiert.

  • UUUPS. Da hab ich ein bisschen was vergessen. Ich habs nur schnell aus meinem AdminsFS rauskopiert. Tut mir Leid. Nächstes Mal denk ich mehr nach ! :D


    //Edit
    Dann machs so, dann ist diese Fehler-Kick sache auch raus
    und oben bei den Defines

    #define ADMIN_SPEC_TYPE_NONE 0
    #define ADMIN_SPEC_TYPE_PLAYER 1


    dcmd_look(playerid, params[])
    {
    new pID;
    if(sscanf(params, "d", pID))
    {
    SendClientMessage(playerid, rot, "[Fehler:] /look [ID]");
    TogglePlayerSpectating(playerid, 0);
    gSpectateID[playerid] = INVALID_PLAYER_ID;
    gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
    }
    else if(!IsPlayerConnected(pID))
    {
    SendClientMessage(playerid, rot, "Der gewünschte Spieler wurde nicht gefunden!");
    }
    else if(IsPlayerAdmin(playerid))
    {
    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, pID);
    SetPlayerInterior(playerid,GetPlayerInterior(pID));
    gSpectateID[playerid] = pID;
    gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;
    }
    }

    Einmal editiert, zuletzt von Lucas93 ()

  • Wie wärs denn mal mit selber probieren?
    Weil ohne fleis kein Preis würd ich mal sagen.
    Und wenn du dann noch Probleme hast,
    poste deinen code und wir helfen dir weiter.

    wie soll ich es selber ausprobieren wenn ich überhaupt keinen plan hab wie der gästemodus funktioniert,bzw wie ich das machen soll. Ich bin an nem Adminteil dran, da mach ich was selber und da versuche ich das auch selber^^


    lukas, danke ich werds mal ausprobieren, werd das auch mal mit dem rank ausprobieren