Porten - Nachricht

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
  • Hallo liebe Brote,


    ehm hätte da einen Wunsch. Würde es gern haben, dass wenn ein Admin sich zu jmd portet, egal ob zu einem User oder nach Ls, etc., dann sollte es den anderen Admins angezeigt werden. Ungefähr so: Backfisch hat sich zu Brotfisch geportet. oder Backfisch hat Brotfisch zu sich geportet. oder Backfisch hat sich nach LS geportet.


    Mein Versuch:
    if(strcmp(cmd, "/goto", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /goto [playerid/PartOfName]");
    return 1;
    }
    new Float:plocx,Float:plocy,Float:plocz;
    new plo;
    plo = ReturnUser(tmp);
    if(IsPlayerConnected(plo))
    {
    if(plo != INVALID_PLAYER_ID)
    {
    if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pSupporter] >= 1)
    {
    if(Spectate[playerid] != 255)
    {
    Spectate[playerid] = 256;
    }
    GetPlayerPos(plo, plocx, plocy, plocz);
    if (GetPlayerState(playerid) == 2)
    {
    new tmpcar = GetPlayerVehicleID(playerid);
    SetVehiclePos(tmpcar, plocx, plocy+4, plocz);
    TelePos[playerid][0] = 0.0;TelePos[playerid][1] = 0.0;
    }
    else
    {
    SetPlayerPos(playerid,plocx,plocy+2, plocz);
    }
    PlayerInfo[playerid][pLocal] = PlayerInfo[plo][pLocal];
    PlayerInfo[playerid][pInt] = PlayerInfo[plo][pInt];
    SetPlayerInterior(playerid,PlayerInfo[plo][pInt]);
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(plo));
    SendClientMessage(playerid, COLOR_GRAD1, "Du hast dich Teleportiert.");
    else if(PlayerInfo[playerid][pAdmin] >= 1) { format(string, sizeof(string), " %s hat sich zu %s geportet. **", sendername, result); }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist kein Admin!");
    }
    }
    }
    else
    {
    format(string, sizeof(string), "%d ist kein Aktiver Spieler.", plo);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }


    Ich weiß jetzt ned ob das der richtige Ansatz is, habs auch ned ausprobiert ob Errors kommen, aber ich lass euch Profis da lieber ran :)


    MfG Zilla

  • Nimm Dcmd ist einfacher hier
    dcmd_goto(playerid,params[])
    {
    new pID, vw, inter, Float:gx, Float:gy, Float:gz;
    new carid = GetPlayerVehicleID(playerid);
    if(PlayerInfo[playerid] < 1) { return SendClientMessage(playerid,Grau,"Du bist kein Admin."); }
    if(sscanf(params, "u",pID)) { return SendClientMessage(playerid,Grau,"Nutzung: /goto [playerid]"); }
    if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,Grau,"Kein Spieler mit angegebener ID Online"); }
    GetPlayerPos(pID,gx,gy,gz);
    vw = GetPlayerVirtualWorld(pID);
    inter = GetPlayerInterior(pID);
    if (GetPlayerState(playerid) == 2)
    {
    SetVehiclePos(carid,gx,gy+1,gz);
    }
    else
    {
    SetPlayerPos(playerid,gx,gy+1,gz);
    }
    SetPlayerVirtualWorld(playerid,vw);
    SetPlayerInterior(playerid,inter);
    return 1;
    }


    Unter OnPlayerCommandText:
    dcmd(goto,4,cmdtext);


    Ganz Oben in das Script unter den Includes:
    #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


    Weiß nicht ob der Befehl funktioniert aber wenn Errors kommen ich Helfe dir ^^

  • Danke für die schnelle Hilfe. Das mit dcmd wird glaub ich nicht funsen, da in meim Script sowas gar net drin ist. Was drin wäre is ocmd.
    Wäre halt für alle goto bzw gethere befehle gedacht gewesen.

  • dann musst du nur das hier machen:
    ocmd:goto(playerid,params[])
    {
    new pID, vw, inter, Float:gx, Float:gy, Float:gz;
    new carid = GetPlayerVehicleID(playerid);
    if(PlayerInfo[playerid] < 1) { return SendClientMessage(playerid,Grau,"Du bist kein Admin."); }
    if(sscanf(params, "u",pID)) { return SendClientMessage(playerid,Grau,"Nutzung: /goto [playerid]"); }
    if(!IsPlayerConnected(pID)) { return SendClientMessage(playerid,Grau,"Kein Spieler mit angegebener ID Online"); }
    GetPlayerPos(pID,gx,gy,gz);
    vw = GetPlayerVirtualWorld(pID);
    inter = GetPlayerInterior(pID);
    if (GetPlayerState(playerid) == 2)
    {
    SetVehiclePos(carid,gx,gy+1,gz);
    }
    else
    {
    SetPlayerPos(playerid,gx,gy+1,gz);
    }
    SetPlayerVirtualWorld(playerid,vw);
    SetPlayerInterior(playerid,inter);
    return 1;
    }
    Sonst nix

  • AirPlus, damit dieser OCMD Befehl klappt, braucht man die OCMD Include, und SSCANF.


    Um eine Nachricht an alle Admins zu senden, die online sind kannst du einen neuen stock erstellen.
    Dieser Funktioniert dann genau wie SendClientMessageToAll nur mit SendAdminMessage. Natürlich kannst du es beliebig verändern.
    Hier der Code:



    stock SendAdminMessage(color, string[])
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(Spieler[i][Admin] >= 1)
    {
    SendClientMessage(i, color, string);
    }
    }
    }
    }


    So hab ichs bei mir. :)