Beiträge von Hagi

    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");
    }
    }

    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.

    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.

    Ist ein super geiles Ding. Würd ich auch mal gerne fahren, mach ich vllt auch :D
    Die Strecke ist super gemapped und die einzelnen Segmente sind super auf einander abgestimmt.
    Auch das Vorstellungsvideo ist super gemacht.


    Insgesamt eine super Komposition.

    Erstmal danke für den Hinweis zur Cache Funktion. Ich werde mir das mal anschaun. Habe ja nie gesagt, dass das hier die final Version ist. Bei jedem "Projekt" gibts immer was zu verbessern und zu verändern.

    Guten Abend Breadfisher,


    Vorwort:


    Ich programmiere gerne kleine Scripte in Java. Dabei hatte ich bis jetzt immer das Problem, dass ich Variablen nicht speichern konnte, da ich mich mit Files nicht so gut auskannte.
    Daher habe ich mir gedacht, dass ich mal die Dini Methoden aus SAMP (Pawn) in Java umsetze.


    Verwendung:


    Die Klasse dini muss nicht als Objekt erzeugt werden, da es sich bei allen Methoden um statische Funktionen handelt.


    Methoden:


    Alle Methoden, die auch die Pawn Version von Dini verwendet. Dennoch habe ich alle Methoden dokumentiert. Die Dokumentation wird als Dateianhang an diesen Tread angehangen.


    Schlusswort:


    Ich weiß, dass die Java Klasse Dini nichts Großartiges ist und auch mit Sicherheit nicht super optimiert gecodet ist. Dennoch hilft sie mir sehr weiter, weshalb ich die Klasse hier releasen möchte. Jeder darf die Klasse für sich verwenden, editieren und wieder hochladen. Ich bitte nur um einen Credit Eintrag im Code.


    Pastebin:


    Version 0.1 : http://pastebin.com/N1hCC277

    Also hier der Code


    TogglePlayerControllable(id,0);
    GameTextForPlayer(id,"~r~DU WURDEST GEBANNT!",4000,3);
    SetTimerEx ("publicBan", 100, false,"d", id);
    TextDrawShowForPlayer(id,BANNED);
    TextDrawHideForPlayer(playerid, NEULING);
    new playername[24];
    GetPlayerName(id,playername,24);
    WBB_BanUser(playername,gMessage);


    Aber nur unter der Prämisse, dass der Spielername auf dem Server exakt gleich dem Namen des Forumaccounts ist. Sonst funktionierts natürlich nicht.

    Ich würde nicht den Bezeichner long für eine Variable wählen, da das eigentlich ein eigener Datentyp ist, aber Pawn war was das angeht schon immer komisch.


    new length= strlen(inputtext)+2; //( davon ausgehend, dass inputtext hier die permission identifizieren soll)
    new position = strfind(Fraktionen[FID[playerid]][permissions],inputtext,true);
    new pos2 = position+length;
    strdel(Fraktionen[FID[playerid]][permissions],position,pos2);
    return 1;

    Also so wie ich das sehe, identifiziert man den User nicht über die ID, sondern über den Namen bei WBB_Connect


    Ka welche Version du verwendest, aber hier ist die Syntax von WBB Connect 1.4.1


    Code
    WBB_BanUser ( Username[ ] , Reason[ ] , Index )

    du suchst use.cuff via strfind. Damit weißt du an welcher Position dein Substring anfängt. Dann musst du noch die länge des Substrings via strlen("use.cuff") rausfinden und da noch den Zeilenumbruch draufrechnen ("\n")


    Heißt wenn strfind dir z.B. Position 5 angibt, steht im 6. Zeichen "u" (von use.cuff) usw.


    Insgesamt musst du dann also die Zeichen
    6 bis 15 (einschließlich) löschen ( use.cuff\n ist 10 Zeichen Lang)

    Tatsächlich funktioniert das, wenn nur der Spielername in einer Zeile (listitem) steht.


    Mann muss zwar alle Spieler durchlaufen, bis man den entsprechenden Spieler gefunden hat, dafür benötigt man aber auch kein Array zum zwischenspeichern der Reihenfolge.


    Denn in inputtext steht bei einer Liste der Inhalt der ausgewählten Zeile, in dem Falle der Name

    Das heißt das gleich wie


    if(strcmp(Var1[index], name, true) == 0)


    if(!strcmp(Var1[index], name, true))


    Sprich wenn die Strings gleich sind wird Test geprintet.


    Machs also so


    if(strcmp(Var1[index], name, true))

    Ansonsten bleiben dir hinterher natürlich noch Nebenmissionen wie die Auftragsmorde per Festnetztelefon um Geld zu verdienen. Und du hast noch die Autoaufträge für Brucie und später für dessen Freund. Das sind auch nochmal locker 50 Autos für die du immer Geld bekommst.