Beiträge von JustMe.77

    Wie bereits gesagt.. Du willst doch immer dem Spieler mit der ID "i", welche bei jedem Schleifendurchlauf um 1 erhöht wird, ein Label setzen. Dann musst du auch "i" bei CreatePlayer3DTextLabel einsetzen anstatt "playerid".

    pLabel[playerid][i] = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,400.0, i, INVALID_VEHICLE_ID, 0);


    Das mache ich doch da bereits. Der TextLabel soll nicht für alle sichtbar sein, sondern nur für die Person die Numpad 4 drückt, deswegen bleibt es bei playerid und geht nicht zur Schleife.
    Außerdem hilft das auch nicht wenn ich es zu i umändere, habe es bereits versucht..

    Danke @malE


    Habe wieder ein ähnliches Problem beim erstellen der Label. Ich drücke Numpad 4, die Nachricht im Code wird aufgerufen aber die Labels erstellen sich nicht..



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if (PRESSED(KEY_ANALOG_LEFT))
    {
    if(!CheckAdminName(playerid)) return 0;
    for(new i=0; i < 25; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i))continue;
    new name[MAX_PLAYER_NAME];
    new str[32];
    GetPlayerName(i, name, sizeof(name));
    format(str, sizeof(str), "{%06x} %s",GetPlayerColor(i) >>> 8,name);
    SendClientMessage(playerid,-1,"Versuche Label zu erstellen..");
    DeletePlayer3DTextLabel(playerid, pLabel[playerid][i]);
    pLabel[playerid][i] = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,400.0, i, INVALID_VEHICLE_ID, 0);
    return 1;
    }
    }
    else if (PRESSED(KEY_ANALOG_RIGHT))
    {
    for(new i=0; i < 25; i++)
    {
    DeletePlayer3DTextLabel(playerid, pLabel[playerid][i]);
    }
    }
    return 1;
    }

    Hallo, ich habe mal eine Frage.


    Ich möchte mit Numpad 6 meine Playertextlabel löschen, nur der löscht die nur von einem Spieler und nicht von alle.



    else if (PRESSED(KEY_ANALOG_RIGHT))
    {
    for(new i=0; i < 25; i++)
    {
    DeletePlayer3DTextLabel(playerid, pLabel[playerid][i]);
    SendClientMessage(playerid,-1,"{FF0000}Löschen ausgeführt");
    return 1;
    }
    }
    return 1;
    }


    Mit dem Befehl jedoch und den selben Funktionen löscht der alle Playerlabel, was habe ich falsch gemacht?



    CMD:del1(playerid,params[])
    {
    for(new i=0; i < 25; i++)
    {
    DeletePlayer3DTextLabel(playerid, pLabel[playerid][i]);
    }
    return 1;
    }

    Die Fehlermeldungen sind doch gegeben, befinden sich die Plugins auch im Plugins Ordner?


    Und wobei handelt es sich hier, um ein Windows oder Linux Server?

    Code
    [23:02:08] [warning] client exceeded 'ackslimit' -:58102 (4378) Limit: 3000/sec
    [23:02:18] [AdmInfo] Annette hat den Server verlassen (Timeout/Crash) IP:-

    Hatte das vorher auf 3000 gehabt da ging es auch nicht..


    Es ist laut den Logs immer noch auf 3000, während der Client diese aber überschreitet.
    Ich denke 5000 würden reichen um das Problem voerst zu beheben.

    Wenn du nur beim Garagentor Probleme hast dann wird es höchstwahrscheinlich auch an diesem Objekt liegen.


    Es gibt's ja noch genug andere Garagenobjekte, vielleicht kannst du die benutzen und damit sollte das Problem dann eigentlich gelöst sein :)

    Sind das auch Windows Plugins? Die Plugins müssen eine .dll Endung haben wenn du einen Windows Server besitzt, ist es ein Linux Server müssen es Plugins mit der Endung .so sein und in der Server.cfg müssen die Plugins auch mit der Endung eingetragen werden (nur bei Linux).


    Stell nochmal sicher das sich die Plugins die in der server.cfg eingetragen sind auch im Plugins Ordner vorhanden sind. Falls das nicht hilft, update ggf. nochmal alle Plugins.


    Da du deinen streamer geupdated hast, musst du auch deinen Gamemode erneut compilen.

    @Jeffry


    Endlich funktioniert es :)!


    Nur habe ich noch eine kleine Frage, ich sagte ja bereits das ich wenn der Spieler bereits ein Label hat, diesen löschen und wieder erstellen möchte.
    Ist das so korrekt oder kann man das auch besser machen?



    CMD:paint(playerid,params[])
    {
    if(!CheckAdminName(playerid)) return 0;
    new str[32];
    new pID, tmp[20], idx;
    tmp = strtok(params, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,0x6FFFFFFF,"ERROR:: /paint [ID]");
    if(IsNumeric(tmp)) pID = strval(tmp);
    else pID = ReturnPlayerID(tmp);
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0x6FFFFFFF,"The Player is not online");
    if(pLabelSet[playerid][pID])
    {
    pLabelSet[playerid][pID] = false;
    pLabel[playerid][pID] = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,350.0, pID, INVALID_VEHICLE_ID, 1);
    pLabelSet[playerid][pID] = true;
    new name[MAX_PLAYER_NAME];
    GetPlayerName(pID, name, sizeof(name));
    format(str, sizeof(str), "{%06x} %s",GetPlayerColor(pID) >>> 8,name);
    }
    pLabel[playerid][pID] = CreatePlayer3DTextLabel(playerid,str,0xFF0000FF,0,0,0.2,350.0, pID, INVALID_VEHICLE_ID, 1);
    pLabelSet[playerid][pID] = true;
    new name[MAX_PLAYER_NAME];
    GetPlayerName(pID, name, sizeof(name));
    format(str, sizeof(str), "{%06x} %s",GetPlayerColor(pID) >>> 8,name);
    return 1;
    }

    @Jeffry


    Es sind nebenbei keine andere FilterScripts am laufen, und im Gamemode returnt OnPlayerConnect 1.
    Vielleicht kann man das ja auch anders abfragen.


    -1 steht für der Spieler hat kein Label, welche Zahl steht dafür das er bereits einen hat (xx)?
    Dann würde ich das so machen und abfragen ob die Zahl xx == xx ist.

    Komisch, OnPlayerConnect wird nicht aufgerufen. Ich habe alles im FilterScript erstellt und benutze das bare Script.
    Da ich aber das FS für alle Server kompatibel machen möchte und nicht jedes mal aufs Script zugreifen möchte, habe ich eine Idee wie man es anders lösen könnte, nur weiß
    ich nicht genau wie ich das zu machen habe.


    Ich möchte mit dem Befehl abfragen ob er bereits einen Label hat, wenn ja, dann soll der Label einmal gelöscht werden und wieder erstellt werden.
    Dafür bräuchte ich dann nicht die Abfrage in OnPlayerConnect, oder doch? So hätte ich es sowieso lieber, nur weiß ich nicht genau wie ich das anstellen soll @Jeffry