{Suche] Scripter /tv funktion

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
  • Also suche eine /tv funktion
    mit der man leute "spionieren" kann.
    ich stelle mir das so vor:
    Ein kleineskästchen unten rechts wo man sieht was der Spieler macht


    Das ganze soll man nur als admin können!

  • Ein kleineskästchen unten rechts wo man sieht was der Spieler macht


    Was ich weiß ist dass leider mit Pawn nicht möglich (ihr könnt mich gerne vom Gegenteil überzeugen)



    Aber hier einmal von mir dass man den Spieler komplet TVt:
    ! ACHTUNG ! Das ist mit DCMD geschrieben.



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(tv,2,cmdtext);
    return 1;
    }


    dcmd_tv(playerid,params[]) {
    new giveid;
    new pName[24];
    new str[128];
    GetPlayerName(giveid, pName, 24);
    if(sscanf(params,"u",giveid)) {

    return SendClientMessage(playerid,COLOR_RED,"[FEHLER]: /tv [Name / ID]");
    }
    if(!IsPlayerConnected(giveid)) {
    return SendClientMessage(playerid,COLOR_RED,"Spieler nicht gefunden!");
    }
    format(str, 128, "Du TVst nun %s. ", pName);
    SetCameraBehindPlayer(giveid);
    SendClientMessage(playerid,COLOR_YELLOW, str);
    }


    return 1;
    }

    "Solange es Menschen gibt, wird es Kriege geben"
    (Albert Einstein)

  • Danke aber ich bekomme 3 Errors
    kann mir das einer Als FS machen?
    C:\Dokumente und Einstellungen\alex\Desktop\Life is a party BETA 4.0\gamemodes\[Ger]Reallife.pwn(11941) : error 017: undefined symbol "dcmd"
    C:\Dokumente und Einstellungen\alex\Desktop\Life is a party BETA 4.0\gamemodes\[Ger]Reallife.pwn(11947) : error 021: symbol already defined: "OnPlayerCommandText"
    C:\Dokumente und Einstellungen\alex\Desktop\Life is a party BETA 4.0\gamemodes\[Ger]Reallife.pwn(36381) : error 010: invalid function or declaration
    C:\Dokumente und Einstellungen\alex\Desktop\Life is a party BETA 4.0\gamemodes\[Ger]Reallife.pwn(36390) : warning 203: symbol is never used: "dcmd_tv"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.

  • ne da kannse nix machen ist in arsch voll ver bugt kannse vergesenn sory :!:

  • wenn solche sachen einfügt sollte man schon was ahnung haben

  • das geht auch bedeutend optimierter



    dcmd_tv(playerid,params[])
    {
    new giveid,pName[24],str[128];
    GetPlayerName(giveid, pName, 24);
    if(sscanf(params,"d",giveid))return SendClientMessage(playerid,COLOR_RED,"[FEHLER]: /tv [Name / ID]");
    if(!IsPlayerConnected(giveid))return SendClientMessage(playerid,COLOR_RED,"Spieler nicht gefunden!");
    format(str, 128, "Du TVst nun %s. ", pName);
    SetCameraBehindPlayer(giveid);
    SendClientMessage(playerid,COLOR_YELLOW, str);
    return 1;
    }


    //edit aber mit SetCameraBehindPlayer wirds nicht funktionieren du setzt jetzt nur die Kamera von dem Spieler hintern ihn wieder


    //edit 2 dir fehlt dcmd und sscanf



    #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    und sscanf



    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':
    {


    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    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;
    }

    RFT

    Einmal editiert, zuletzt von RFT ()

  • das is aber keine bessere lösung das is ja dann Paste & Copy


    meine lösung wäre per Timer die Position des gewünschten Spieler raus finden und immer die Kamera von Playerid da hintersetzen also X-2 zum beispiel

    RFT

  • ie beleidigungen würde ich hier unterlassen


    ja ich kenne das aber ich weis nicht wie man die Bugs da raus bekommt und es war mal mein Script den habe ich vor 1 Jahr ihr hochgeladen da wusste ich noch nicht das der Bugs hat :wacko: ^^ und mal ne frage wiest du ein carsystem was gut geht ^^

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen