ConfigChanger

  • ConfigChanger
    server.cfg auslesen und bearbeiten


    Beschreibung:
    Mit diesem vom mir geschriebenem Plugin Names ConfigChanger ist es Möglich auf server.cfg Datei mit dem Server zuzugreifen und diese dann auszulesen und bearbeiten.
    Somit hat man die Möglichkeit den Server gut an z.B. zeitliche Anforderungen anzupassen. Das ist nützlich bei dynamischen Systemen, oder einfach um kein Panel bedienen zu müssen.
    Auch lassen sich somit maßgeschneiderte Spieler-Schleifen erstellen. Genau angepasst an die Limits des Servers.
    Ein weiterer kleiner Nebeneffekt dieses Plugins ist, dass man sich so aus den Fesseln der Limits von den meisten Gameserververmietungen lösen kann. Ein Gameserver, der z.B. über ein Panel konfiguriert wird, und maximal 50 Slots mit 3 NPC´s zulässt, lässt sich mit diesem Plugin in wenigen Minuten auf 500 Slots mit 10 NPC´s hochschrauben. Wer dies macht, haftet selbst dafür, da dies nicht der eigentliche Sinn des Plugins ist.


    Funktionen:
    Das Plugin bietet derzeit nur 3 Funktionen. Diese sind:

    • native InitializeConfigChange();
    • native GetServerConfigData(data);
    • native SetServerConfigData(data,const value[]);


    Diese Defines lassen sich als nutzen:

    • LANMODE
    • INCARRATE
    • PASSWORD
    • STREAMRATE
    • PORT
    • ANNOUNCE
    • WEAPONRATE
    • ONFOOTRATE
    • RCONPASSWORD
    • QUERY
    • WEBURL
    • MAXPLAYERS
    • MAXNPC


    Benutzung:
    Bevor die Funktionen genutzt werden können, muss das Plugin Initialisiert werden!

    // CC Plugin by Hauke
    native InitializeConfigChange();
    /*
    returns 0 if Plugin could not be initialized
    returns 1 if Plugin had been initialized
    returns -1 if Plugin is already initialized
    */
    native GetServerConfigData(data);
    /*
    returns Value of Server Config file
    returns -1 if internal File Error
    returns -2 if Parameters are incorrect
    returns -3 if Plugin is not initialized
    */
    native SetServerConfigData(data,const value[]);
    /*
    returns 1 if Change was successfull
    returns -1 if internal File Error
    returns -2 if Parameters are incorrect
    returns -3 if Plugins is not initialized
    */


    #include <a_samp>
    #include <h_cc>


    main()
    {
    print("\n----------------------------------");
    print(" CC Examplescript by Hauke");
    print("----------------------------------\n");
    }


    public OnGameModeInit()
    {
    SetGameModeText("CC Examplescript");
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (!strcmp("/sendwarningtoallplayers", cmdtext))
    {
    for(new i=0;i<GetServerConfigData(MAXPLAYERS);i++) SendClientMessage(i,0xC2A2DAAA,"WARNING: This is an uncreative example text!");
    return 1;
    }
    if (!strcmp("/changemaxplayers", cmdtext))
    {
    if(SetServerConfigData(MAXPLAYERS,"500")==1) return SendClientMessage(playerid,0xC2A2DAAA,"Maxplayers was successfully set to 500!");
    return 1;
    }
    if (!strcmp("/changemaxnpc", cmdtext))
    {
    if(SetServerConfigData(MAXNPC,"10")==1) return SendClientMessage(playerid,0xC2A2DAAA,"Maxnpc was successfully set to 10!");
    return 1;
    }
    return 0;
    }

    Hier habe ich noch ein schnell gemachtes Video, was euch zeigen soll, wie einfach und schnell es funktioniert.
    [video='ConfigChanger Tutorial',center]

    [/video]
    Für diejenigen, bei denen das Video nicht geht:
    Geht auf solgenden Link: Klick mich Dort gebt ihr die URL des Videos ein: http://www.youtube.com/watch?v=RfYG2pu0nI4
    Oder benutzt den direkten Link: Klick mich



    Download: Klick mich
    Sourcecode liegt der Datei bei.


    Viel Spaß mit diesem Plugin. Feedback, Bugreports und Ideen für andere Plugins sind erwünscht. :)


    Gruß Hauke



    Edit 1+2: Layout..
    Edit3: Ich habe vergesssen zu erwähnen, dass das Plugin im moment noch nur als DLL vorhanden ist.
    Edit4: Videolink.

    PAWNit gratis nutzen?
    Geschenkcode: 2017VQXPKB8V3KA

    Hier könnte Ihre Werbung stehen.

    4 Mal editiert, zuletzt von |-|auke ()

  • Wow Geil. Werde ich Aufjedenfall Nutzen.
    Das Video geht nicht.
    Mit freundlichen Grüßen
    derTscheche

  • Zitat

    Ein Gameserver, der z.B. über ein Panel konfiguriert wird, und maximal 50 Slots mit 3 NPC´s zulässt, lässt sich mit diesem Plugin in wenigen Minuten auf 500 Slots mit 10 NPC´s hochschrauben. Wer dies macht, haftet selbst dafür, da dies nicht der eigentliche Sinn des Plugins ist.

    Genau aus diesem Grund sperren manche/viele Hoster das Benützen von eigenen Plugins. ^^



    Nebenbei wirkt sich das nicht negativ auf den Server aus, wenn man mittendrin die Slotanzahl erhöht/niedriger setzt? Also was würde Beispielsweise geschehen, wenn 50 Spieler oben sind und man danach die Slot auf 40 stellt.



    Abgesehen von der regulären MAX_PLAYERS Definition im Script, da wenn die Slotanzahl niedriger als MAX_PLAYERS ist, zu diesen Array-Fehlern kommen, die den restlichen Code nichtmehr ausführen :P .

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Genau aus diesem Grund sperren manche/viele Hoster das Benützen von eigenen Plugins. ^^


    Nebenbei wirkt sich das nicht negativ auf den Server aus, wenn man mittendrin die Slotanzahl erhöht/niedriger setzt? Also was würde Beispielsweise geschehen, wenn 50 Spieler oben sind und man danach die Slot auf 40 stellt..

    Wenn der Anbieter ein vernünftiges System einsetzt, kann man diesem Plugin ganz einfach entgegenwirken.
    Bei GTA-Servers ist sowas zum Beispiel nicht möglich, obwohl man dort eigene Plugins hochladen kann.


    Die Änderungen werden erst nach einem Neustart aktiv und nicht direkt live, da sowas für SA-MP zu viel wäre ^^

  • Zitat

    Die Änderungen werden erst nach einem Neustart aktiv und nicht direkt live, da sowas für SA-MP zu viel wäre ^^

    Genau aus diesem Grunde finde ich es selber unbrauchbar. Ansonsten hätte man damit Beispielsweise auch gute SAMP Behebungen machen können, wie dass man Bots auf Slots setzen könnte, worauf der Spieler kein Zugriff hat.



    Maximale Slotanzahl: 30
    Bot bekommen ID´s nach 30 ^^



    //EDIT: was ich geschrieben hab, ist schmafu... Das unterstützt ja schon SAMP Intern mit den Bots ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

    Einmal editiert, zuletzt von Templer ()

  • die Idee finde ich nicht so schlecht , weil nicht jeder ein CP haben will wo er einfach die ServerCFG bearbeiten kann , aber warum ein Plugin ? Ist ja total unnütz , das kann ich auch alles mit dem normalen "filesystem" machen , da brauch ich kein Plugin machen .... die Idee ist "gut" , aber dafür ein Plugin zu machen ist totaler Blödsinn

  • Wenn man dieses Plugin mit einem GUI in Verbindung bringt, kann dies für "faule" Admins schon nützlich sein.
    Andernfalls kann man damit lediglich die vorgegebenen Limits des Serveranbieters überschreiten, sofern sich dieser nicht dagegen "schützt".

  • Sehr schönes und nützliches Plugin, werde ich mal ausprobieren!
    8/10

  • dafür braucht man auch kein Plugin kann man dann schön per ftp usw. lösen ..... und das in jeder Sprache sehr einfach


    Mit einem anderem FTP Programm kannst du allerdings mit dem Server die Informationen auslesen. Wie auch Julian schon sagte, könnte man mit dem Plugin ein Menü bauen, über das sich die server.cfg bearbeiten ließe.


    Zum Video: Geht auf solgenden Link: Klick mich Dort gebt ihr die URL des Videos ein: http://www.youtube.com/watch?v=RfYG2pu0nI4


    Danke euch für das Feedback.

    PAWNit gratis nutzen?
    Geschenkcode: 2017VQXPKB8V3KA

    Hier könnte Ihre Werbung stehen.

  • Finde ich toll, ist das nicht bei deinem Sponsoring zu sehen irgendwie oder täusche ich mich da blos?
    Jedenfalls nützlich, aber nicht dringend ein Muss finde ich..


    Dass man damit das Limit bei Sponsoren übergehen kann ist bisschen naja, frech..
    Man kann den Sponsor ja auch fragen wie es ausschaut ob man mehr Slots bekommt, aber das ist ein anderes Thema.


    Weiter so ;)

  • Ok,dann will ich auch mal.



    Auch lassen sich somit maßgeschneiderte Spieler-Schleifen erstellen. Genau angepasst an die Limits des Servers.


    Wo ist da der Unterschied zu:
    GetMaxPlayers();
    oder
    GetServerVarAsInt("maxplayers");
    Gibt nämlich keinen :). Die Funktionen gibt es schon sehr lange, sollte man also auch nutzen.


    http://wiki.sa-mp.com/wiki/GetServerVarAsString
    http://wiki.sa-mp.com/wiki/GetServerVarAsInt
    http://wiki.sa-mp.com/wiki/GetServerVarAsBool


    Mit deinen GET Funktionen kann man nur Int auslesen, daher funktioniert folgendes auch nicht:
    #define WEBURL 4096


    Dann noch eine Frage zu den Defines:
    #define ANNOUNCE 64
    #define WEAPONRATE 128
    // Wieso hast denn hier 256 weg gelassen :-0 ?
    #define ONFOOTRATE 512
    #define RCONPASSWORD 1024
    #define QUERY 2048

    Hat das einen besonderen Grund ? Hab im Source nur GetNameOfData , weiss aber nicht wie diese funktioniert.
    enum ( <<= 1 ) {
    LANMODE = 2,
    INCARRATE, // 4
    PASSWORD, // 8
    STREAMRATE, //16
    PORT, //32
    ANNOUNCE, //64
    WEAPONRATE, //128
    ONFOOTRATE, //256
    RCONPASSWORD, //512
    QUERY, //1024
    WEBURL, //2048
    MAXPLAYERS, //4096
    MAXNPC //8192
    }


    Wie auch immer.Die GET-Methode halte Ich für relativ unnötig ( Kannst mir ja Grund nennen, wieso sie es nicht sein sollte :) ).
    Bin mir auch nicht sicher,was die SET-Methode wirklich macht. Die CONFIG-Daten kann man auch über die Console bearbeiten, wird dann aber nicht in der CONFIG-Datei geändert.Sonst kann man auch einfach in die Console schreiben:
    <varname> wert
    Klappt nicht bei allen ( gibt teilweise read-only Daten ) , bei Einigen aber schon möglich.
    stream_distance
    // Ausgabe aktueller stream_distance - Wert
    stream_distance 300.0
    stream_distance
    // Ausgabe aktueller stream_distance - Wert

  • Ok,dann will ich auch mal.


    Oha.. :D


    Na hätte ich vorher gewusst, dass es diese Funktionen gibt, hätte ich es mir ja sparen können. :rolleyes:


    Mit deinen GET Funktionen kann man nur Int auslesen, daher funktioniert folgendes auch nicht:
    #define WEBURL 4096


    Das stimmt wohl, das kommt noch von meinen Tests, wo ich einige wirklich sehr nutzlose Sachen rausgenommen habe.


    Wie auch immer.Die GET-Methode halte Ich für relativ unnötig ( Kannst mir ja Grund nennen, wieso sie es nicht sein sollte :) ).


    Ints sind weniger Daten zum übergeben. Und die Ints habe ich, damit es schöner und besser aussieht immer verdoppelt. Die, die fehlen habe ich bei Tests rausgenommen.


    Bin mir auch nicht sicher,was die SET-Methode wirklich macht. Die CONFIG-Daten kann man auch über die Console bearbeiten, wird dann aber nicht in der CONFIG-Datei geändert.Sonst kann man auch einfach in die Console schreiben:


    Die SetServerConfigData macht genau das, was ich beschrieben und im Video zeige. Sie ändert die server.cfg auch während der Server läuft.

    PAWNit gratis nutzen?
    Geschenkcode: 2017VQXPKB8V3KA

    Hier könnte Ihre Werbung stehen.

  • Die SetServerConfigData macht genau das, was ich beschrieben und im Video zeige. Sie ändert die server.cfg auch während der Server läuft.

    Jedoch werden die neuen Daten nicht "live" auf den Server übernommen,
    weshalb man den Server erst neustarten, bzw. einen GMX durchführen muss :rolleyes:

  • Hab mir das Video nicht angesehen, weil Ich über HIDEMYASS nicht vorspulen kann :/.


    Jedoch werden die neuen Daten nicht "live" auf den Server übernommen,
    weshalb man den Server erst neustarten, bzw. einen GMX durchführen muss :rolleyes:


    Ändert also nur den CFG - Wert. Über die Console kann man teilweise live Änderungen vornehmen, zwar nicht alle aber bei ein paar Wenigen.
    Vielleicht könnte man das irgendwie kombinieren und einen Hinweis ausgeben, ob es live-Änderungen gab oder erst nach einem restart die Änderung eingespielt werden. Müsstest dann aber durchtesten, wo eine live-Änderung möglich ist.

  • Das ist eigentlich eine gute Idee. Ich werde mal schauen, inwiefern das von den SAMP Entwicklern erlaubt ist.

    PAWNit gratis nutzen?
    Geschenkcode: 2017VQXPKB8V3KA

    Hier könnte Ihre Werbung stehen.