Beiträge von Alexus

    if (IsPlayerInRangeOfPoint(playerid, 3, x1, y1, z1)) MoveObject(Objekt1 ...);
    else if(IsPlayerInRangeOfPoint(playerid, 3, x2, y2, z2)) MoveObject(objekt2 ...);

    Ich mag Signaturen gerne realistisch. Und dieses dämliche Lichtzeug an dem BMW ist rein gar nichts für mich.


    Der Hintergrund mit den Sonnenstrahlen gefällt mir jedoch sehr.
    Wenn es ein ganz normaler BMW wäre, bekämst du 10/10.


    Aber so nur 4/10

    Hallo Leute, ich habe eine Frage bezüglich TS³.


    Nehmen wir einmal an, ich habe einen Channel "LSDP". Dieser hat die Subchannel "Einsatz 1" und "Einsatz 2":
    Wenn ich einen Spieler in den Channel LSPD move und ihm die Channelgruppe "Leader" gebe, bekommt er diese durch die Vererbung auch in "Einsatz 1" und "Einsatz 2".
    Das ist soweit richtig.


    Doch ich möchte, dass Leader in ihrem Bereich selber Subchannel erstellen können.


    Wenn ich dies jedoch nun mit dem Spieler (welcher Leader ist) tue, dann habe ich in dem erstellten Subchannel (bspw. "Kontakt") keine Leaderrechte, da der Channel vom Leader erstellt wurde.
    Ich möchte jedoch, dass dort dann durch Vererbung auch die Rechte Vergeben werden.


    Ich weiß, dass es möglich ist, doch bräuchte Hilfe beim einstellen.
    Kann mir jemand helfen und das Ganze erklären?



    Liebe Grüße :thumbup:


    /edit: Hat sich erledigt.

    1. Ich Mache es im net
    2. Wie soll es Klappen wenn es "FALSCH" ist


    Du hast folgenden Code gepostet:
    new SpielerInfo[MAX_PLAYER];


    In diesem Fall würde dir das verher erstellte enum rein gar nichts nützen, da es nicht in die Array integriert wurde und du so die Daten nicht abfragen kannst.


    Zitat

    2. Wie soll es Klappen wenn es "FALSCH" ist

    Ja das ist die Frage, die du dir stellen solltest. Siehe mein post.

    Vergiss nicht, noch eine Abfrage einzubauen, ob der Spieler Admin ist. Sonst kann sich nämlich jeder Admin machen, und das wollen wir ja nicht ^^

    Falsch.


    So:
    enum spielerdatei
    {
    Level,
    Wanteds,
    Skin,
    VirtualWorld
    }
    new SpielerInfo[MAX_PLAYERS][spielerdatei];


    Dann speichern und abfragen:
    SpielerInfo[playerid][Level] = dein auslesen;
    SpielerInfo[playerid][Wanteds] = dein auslesen;
    SpielerInfo[playerid][Skin] = dein auslesen;
    SpielerInfo[playerid][VirtualWorld] = dein auslesen;


    SetPlayerScore(playerid, SpielerInfo[playerid][Level]);
    SetPlayerWantedLevel(playerid, SpielerInfo[playerid][Wanteds]);
    SetPlayerSkin(playerid, SpielerInfo[playerid][Skin]);
    SetPlayerVirtualWorld(playerid, SpielerInfo[playerid][VirtualWorld]);

    Du erstellst ein Array mit den Koords von den Automaten:
    #define MAX_ATMS atm.anzahl
    new atm[MAX_ATMS][3] =
    {
    {x, y, z},
    {x, y, z}
    };


    Erstellst die Objekte:
    for(new i=0; i<MAX_ATMS; i++) CreateObject(id, atm[i][0] ... usw);


    Und fragst so mit Hilfe einer Schleife die Position ab:
    stock IsPlayerAtATM(playerid)
    {
    for(new i=0; i<MAX_ATMS; i++)
    {
    If(IsPlayerInRangeOfPoint(playerid, 2, atm[i][0], atm[i][1], atm[i][2])) return 1;
    }
    return 0;
    }

    D.Fence:


    Ganz oben:
    #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


    Unter OnPlayerCommandText:
    dcmd(makeadmin, 9, cmdtext);


    Irgendwo in keinem Public:
    dcmd_makeadmin(playerid,params[])//Ocmd ist der erzeuger des Befehls, playerid ist die ID und params sind die parameter
    {
    new pID, rang, string[128];
    if(sscanf(params,"ui",pID,rang))return SendClientMessage(playerid,COLOR_RED,"Fehler: /makeadmin [playerid] [rang]");
    format(string,sizeof(string),"%s wurde von %s zum Administrator Level %i ernannt. Herzlichen Glückwunsch!",GetSpielerName(pID),GetSpielerName(playerid),rang);
    if(IsPlayerConnected(pID))
    {
    PlayerInfo[pID][Admin] = rang;
    SendClientMessageToAll(string);

    }
    return 1;
    }


    Bitte, danke ...



    Hier noch die Namensfunktion
    forward GetSpielerName(playerid);
    public GetSpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    return name;
    }

    Du kennst ja nun das Prinzip.


    Die Kamera kannst du mit SetCameraBehindPlayer(playerid); zurücksetzen.
    Damit er in der Luft bleibt und nicht stirbt musst du ihn freezen: TogglePlayerControllable(playerid, 0);
    Am Ende dann wieder entfreezen: TogglePlayerControllable(playerid, 1);