Ein neues Thema erstellen  Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: plugin_slotsleft.sma
BeitragVerfasst: 26.02.2003, 16:59 

Registriert: 26.02.2003, 16:54
Beiträge: 3
Wohnort: Balve
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;
}


Nach oben
   
 Betreff des Beitrags: Jetzt Version 1.1 (lol)
BeitragVerfasst: 27.02.2003, 01:37 

Registriert: 26.02.2003, 16:54
Beiträge: 3
Wohnort: Balve
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;
}


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 27.02.2003, 12:53 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
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. ;)

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 27.02.2003, 22:55 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
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.

_________________
Fehleranalyse: Poste den Inhalt Deiner liblist.gam, (listen)server.cfg, adminmod.cfg, users.ini, vault.ini, plugin.ini von adminmod und plugins.ini von metamod. Benutze auch die Such-Funktion


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 28.02.2003, 02:45 

Registriert: 26.02.2003, 16:54
Beiträge: 3
Wohnort: Balve
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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 28.02.2003, 09:53 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
Ja, das wäre schön, wenn sich darum mal jemand kümmern könnte. :)

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 28.02.2003, 12:14 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
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 :-)

_________________
Fehleranalyse: Poste den Inhalt Deiner liblist.gam, (listen)server.cfg, adminmod.cfg, users.ini, vault.ini, plugin.ini von adminmod und plugins.ini von metamod. Benutze auch die Such-Funktion


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 28.02.2003, 13:15 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
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.

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 28.02.2003, 22:19 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
Hihi. Danke Dir! :-)

Geht ja runter wie Öl :-)

_________________
Fehleranalyse: Poste den Inhalt Deiner liblist.gam, (listen)server.cfg, adminmod.cfg, users.ini, vault.ini, plugin.ini von adminmod und plugins.ini von metamod. Benutze auch die Such-Funktion


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 9 Beiträge ] 


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de
Original Design von "[ Half-Life Admin Mod © Alfred Reynolds 2000-2003 ] - [ site design by Jägermeister ]"