AdminMod.de
https://www.adminmod.de/

plugin_slotsleft.sma
https://www.adminmod.de/viewtopic.php?t=4785
Seite 1 von 1

Autor:  raufaser [ 26.02.2003, 16:59 ]
Betreff des Beitrags:  plugin_slotsleft.sma

Hi Leute!

Ich habe mich heute zum ersten mal mit AdminMod Plugin Programmierung beschäftigt und folgendes ist dabei herausgekommen: ein Plugin, das in einem definierten Zeitabstand die Available Slots auf dem Server als CenterSay ausgibt. Einfach nur so weil ich mit irgendwas mal anfangen muss. Ich weiß nichtmal ob das nützlich ist.
Wäre aber cool, wenn ich mal eine paar Meinungen dazu bekomme. Ist vielleicht auch ganz gut für Leute, die wie ich auch anfangen wollen mit Plugin-Coding... so als Beispiel oder so ...

Naja... hier der Code.
Code:
/*
 * Slotsleft Announcer - by [bcg|cs`raufaser]
 * my first script
 * comments to: m_schieferdecker@hotmail.com
 */

#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>

/*
 * Configurate color and repeat frequency
 * with the following definitions
 */
#define SLOTSLEFT_REPEATFREQ 60
#define SLOTSLEFT_CENTERSAY_TIME 4
#define SLOTSLEFT_CENTERSAY_RED 255
#define SLOTSLEFT_CENTERSAY_GREEN 0
#define SLOTSLEFT_CENTERSAY_BLUE 0

/*
 * Init variables
 */
new STRING_VERSION[MAX_DATA_LENGTH] = "v1.0";
new sl_playercount = 0;
new sl_maxplayercount = 0;
new sl_slotsleft = 0;
new sl_Text[MAX_TEXT_LENGTH];

/*
 * The display function
 */
public sl_dsp_slotsleft()
{
        sl_playercount = playercount();
        sl_maxplayercount = maxplayercount();
        sl_slotsleft = sl_maxplayercount - sl_playercount;

        snprintf( sl_Text, MAX_TEXT_LENGTH, "%d SLOTS REMAINING ON THIS SERVER!!!", sl_slotsleft );
        centersay( sl_Text, SLOTSLEFT_CENTERSAY_TIME, SLOTSLEFT_CENTERSAY_RED, SLOTSLEFT_CENTERSAY_GREEN, SLOTSLEFT_CENTERSAY_BLUE );
}

/*
 * Init the plugin and set timer
 */
public plugin_init()
{
        plugin_registerinfo( "plugin_slotsleft", "a slots remaining announcer", STRING_VERSION );
        set_timer( "sl_dsp_slotsleft", SLOTSLEFT_REPEATFREQ, 99999 );

        return PLUGIN_CONTINUE;
}

Autor:  raufaser [ 27.02.2003, 01:37 ]
Betreff des Beitrags:  Jetzt Version 1.1 (lol)

So, ich habs nochmal ein wenig schöner gemacht.
Jetzt als Typesay und in wechselnden Farben. Nicht über den Ausgabestring lachen, unser Server heißt "Das Pornokino" :-)

Hier der Code - das Ergebnis kann man auf unserem Server sehen:
217.172.186.18:27015 Das Pornokino | thegeek.de + bcg-hq.de
(Auch wenn man sich das bestimmt ohne anschauen ganz gut vorstellen kann, ist ja eher ein pillepalle script, aber jeder fängt ja mal an.)
Code:
/*
 * Slotsleft Announcer - by [bcg|cs`raufaser]
 * visit my website www.thegeek.de
 * comments to: ich@thegeek.de
 *
 * Just change the displayed text an the definitions
 * to fit your needs
 */

#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>

/*
 * Configurate color and repeat frequency
 * with the following definitions
 *
 * SL_REPEATFREQ - Time between announcment in seconds
 * SL_SAY_TIME   - Time the announcment is shown in seconds
 *
 */
#define SL_REPEATFREQ 90
#define SL_SAY_TIME 5

/*
 * Init variables
 */
new STRING_VERSION[MAX_DATA_LENGTH] = "1.1";
new slPlayercount = 0;
new slMaxplayercount = 0;
new slSlotsleft = 0;
new slText[MAX_TEXT_LENGTH];

/*
 * The display function
 */
public sl_dsp_slotsleft()
{
        new slSayRed = random(256);
        new slSayGreen = random(256);
        new slSayBlue = random(256);

        slPlayercount = playercount();
        slMaxplayercount = maxplayercount();
        slSlotsleft = slMaxplayercount - slPlayercount;

        /*
         * Change text to edit what is displayed in the lower left corner
         */
        snprintf( slText, MAX_TEXT_LENGTH, "%d Sitzplaetze sind im Pornokino noch frei", slSlotsleft );
        typesay( slText, SL_SAY_TIME, slSayRed, slSayGreen, slSayBlue );
}

/*
 * Register plugin and start timer
 */
public plugin_init()
{
        plugin_registerinfo( "plugin_slotsleft", "a slots remaining announcer", STRING_VERSION );
        set_timer( "sl_dsp_slotsleft", SL_REPEATFREQ, 99999 );

        return PLUGIN_CONTINUE;
}

Autor:  [WING] Black Knight [ 27.02.2003, 12:53 ]
Betreff des Beitrags: 

Na ja, wenn es funktioniert und es auch wirklich das tut, was es soll, ist es doch prima. Mach weiter so.
Gut, mit der Funktion kann ich nicht so viel anfangen, aber vielleicht hast Du ja bei der nächsten Idee, was für mich dabei. ;)

Autor:  Sir Drink a lot [ 27.02.2003, 22:55 ]
Betreff des Beitrags: 

Das ist doch eine nette Idee.

Was man jetzt noch bedenken müsste, wäre der Reserved Slot. Falls vorhanden.

Aber zur Programmierung: (egal, ob das Plugin jetzt sinnig oder unsinnig ist!)

1. Du brauchst keine globalen Variablen (Variablen, die nicht in der Funktion eingeschlossen sind), da Du sie ja sowieso in der Timer Funktion setzen kannst. Was Du ja auch machst. Du kannst die new .... in die Timerfunktion setzen.

2. Die Timer Funktion hat einen bestimmten Kopf, den man auch verwenden sollte.
Code:
public Timer(Timer,Repeat,HLName,HLParam) {
             ...
}
Es geht zwar auch ohne, aber besser ist das. Ich kann Dir jetzt keine genaue Begründung geben, warum es besser ist!

3. (sehr vage...) Da ein public vor der Timer-Funktion steht, solltest Du ein PLUGIN_CONTINUE in die Funktion machen. Ist aber auch nicht zwingend notwendig.

Autor:  raufaser [ 28.02.2003, 02:45 ]
Betreff des Beitrags: 

Hi!

Erstmal danke für die Tipps. Ich setze da morgen mal um.
(Ich hab das nebenbei bei der Arbeit in 10 Minuten gecodet, deswegen ists nicht optimiert - bezieht sich auf die globalen Vars).

Ich poste dann den Code nochmal, wäre nett, wenn du dann nochmal drüber schaust.

Aber ich versteh schon all die Punkte, die du ansprichst und weiß auch was globale Variablen sind, da ich beruflich als Programmierer tätig bin. Ist halt nur mein erstes AM-Script, daher die Flüchtigkeiten. Bin noch nicht so drin in SMALL, obwohl mir die Syntax zugegebenermaßen sehr entgegenkomm, da ich C und PHP progge. Erstmal die Libs kennenlernen. :-)

Finds aber irre, wie einfach es eigentlich ist - ich will versuchen auch in Zukunft mal was in meiner Freizeit in der Richtung zu machen.

Dieses Server KI Plugin z.B. - das finde ich ein interessantes Thema. Mal sehen ob ich Zeit dafür finde, aber die Idee ist geil!

"Server?"
"Ja Meista?"
"Kick mal die nubs!"
"Wenn's unbedings sein muss..."

Das wäre schon lustig!

Ciao,
raufaser

Autor:  [WING] Black Knight [ 28.02.2003, 09:53 ]
Betreff des Beitrags: 

Ja, das wäre schön, wenn sich darum mal jemand kümmern könnte. :)

Autor:  Sir Drink a lot [ 28.02.2003, 12:14 ]
Betreff des Beitrags: 

sehr schön!

Wieder ein Programmierer gefunden :-)

Ich bin dann für die Hilfe am Anfang zuständig.
Für die komplizierten Sachen hilft Blacky und Rinde dann weiter :-)

Autor:  [WING] Black Knight [ 28.02.2003, 13:15 ]
Betreff des Beitrags: 

Und für den wirklich anspruchsvollen und ausgefeilten Code ist Rinde verantwortlich.
Außerdem soll sich Sir Drink a lot nicht so klein machen. Wenn er nicht die eine oder andere Sache mal programmiert (ausprobiert) hätte, würden Rinde und ich keine Ahnung haben, wozu man im Scripting überhaupt in der Lage wäre. Sir Drink a lot ist sozusagen unser Pionier, probiert alles aus und präsentiert dann dem staunenden Publikum eine Lösung und Rinde und ich wundern uns dann.
Ehre, wem Ehre gebührt. :)

PS. @ Sir Drink a lot: Wer sagt Dir eigentlich, dass Du schlechten Code machst. Am CW Creator habe ich bisher kaum etwas optimieren können.

Autor:  Sir Drink a lot [ 28.02.2003, 22:19 ]
Betreff des Beitrags: 

Hihi. Danke Dir! :-)

Geht ja runter wie Öl :-)

Seite 1 von 1 Alle Zeiten sind UTC+01:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/