erst alle NPC connecten lassen?

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
  • Du kannst beim Connecten eines Bots dessen ID abfangen (Callback:OnNPCConnect). Dafür musst du natürlich wissen, wie viele Bots insgesamt auf deinen Server connecten. Sind es z.B. 5 Bots (playerid = 4)

    public OnNPCConnect(myplayerid)
    {
    if(myplayerid == 4)
    {
    //allow player to connect here
    }
    }


    Innerhalb der if-Abfrage kannst du dann das Connecten erlauben. Du kannst z.B. eine Variable auf false setzen, welche den Spieler beim Connecten kicken würde, wenn diese true wäre. Oder, wobei ich nicht weiß ob das geht, beim Starten ein Passwort setzen und dieses dann nach dem letzten Bot entfernen.

  • du könntest es z.B. so machen


    new bool:canlogin = false; // globale variable


    Bei OnPlayerConnect


    if(canlogin == false && IsPlayerNPC(playerid) == 0) Kick(playerid);


    Und dann natürlich:


    public OnNPCConnect(myplayerid)
    {
    if(myplayerid == 4)
    {
    canlogin = true;
    }
    }


    Eventuell funktioniert das, eventuell aber auch nicht :D
    Man müsste rausfinden ob eine ID (playerid) kurzeitig blockiert würde wenn ein Spieler Connected, da dann unter umständen der vorletzte Bot schon die Id des letzten Bots bekommen würde.


    Ansonsten fällt mir aber auch keine gute Lösung ein.


    Kann man eigentlich per Rcon Command beim laufenden Server das Passwort rausnehmen? Wenn ja dann kann man das ja rausnehmen wenn alle Bots connected sind. Dann hätte man das Problem mit den eventuell blockierten IDs nicht.

  • /rcon password 0


    Damit nimmt man das Passwort bei laufendem Server raus. Mit z. B. /rcon password bla setzt man das Serverpasswort auf bla.

  • Wenn das von Homer stimmt, dann sollte das so auf jeden Fall funktionieren:


    OnGameModeInit


    SendRconCommand("password changeme");


    public OnNPCConnect(myplayerid)
    {
    if(myplayerid == 4)
    {
    SendRconCommand("password 0");
    }
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich persönlich arbeite mit 300 Bots, setze bei Ongamemodeinit ein langes Passowort
    SendRconCommand("password changeme");
    und wenn ale Bots drauf sind lösche ich das Posswort: SendRconCommand("password 0");
    Damit die User auch sofort sehen, dass sie nicht connecten können habe ich als Gamemode loading... xxx%
    und wenn es fertig ist change ich auf den richtigen Namen.


    ergo funtzt dass mit dem passwort.

  • die sache bei mir ist jetzt aber ich habe pw gemacht..aber jetzt connecten nicht die beiden bots ._.



    habs so
    bei ongamemodeini



    loginvar3c = SetTimer("loginvar3", 1000, 1);
    SendRconCommand("password asdssd");



    dan der timer forward loginvar3();
    public loginvar3(){
    new playerid;
    ConnectNPC("Alexander","none");
    ConnectNPC("Dustin","none");
    // botsvar = 1;
    if(IsPlayerNPC(playerid))
    {
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, botname, sizeof(botname));
    if(!strcmp(botname, "Dustin", true))
    {
    gPlayerLogged[playerid] = 1;//Der Bot ist gleich eingeloggt (Anpassen!)
    }
    if(!strcmp(botname, "Alexander", true))
    {
    gPlayerLogged[playerid] = 1;//Der Bot ist gleich eingeloggt (Anpassen!)
    }
    }
    SetTimerEx("botcommand", 1000, 0, "i", playerid);
    SendRconCommand("password 0");
    KillTimer(loginvar3c);
    }