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

plugin (um die Rundenanzahl zu ermitteln)
https://www.adminmod.de/viewtopic.php?t=4821
Seite 1 von 1

Autor:  Silent [ 10.03.2003, 23:48 ]
Betreff des Beitrags:  plugin (um die Rundenanzahl zu ermitteln)

hi ich suche ein plugin fuer unseren server der die runden zahl spricht also round 1
round 2 usw wo gibbet so was

Autor:  Sir Drink a lot [ 11.03.2003, 01:19 ]
Betreff des Beitrags: 

aha..hi!

Hast es ja gefunden. Fein :-)

Ich werde mal sehen, ob ich sowas für Dich doch noch mache, wenn es dieses plugin noch nicht gibt, was mich aber schwer wundern würde.

Autor:  [WING] Black Knight [ 11.03.2003, 09:22 ]
Betreff des Beitrags: 

Lass mal jemanden mit weniger Programmiererfahrung ran. Z.B. Stillsetzhut könnte mal versuchen so ein Plugin zu schreiben. Ist ja nicht besonders schwer. Ist eigentlich ein perfektes Plugin für den Einstieg in die AM und LogD Programmierung.

Autor:  Sir Drink a lot [ 11.03.2003, 09:38 ]
Betreff des Beitrags: 

jo stimmt.

Ich habe die Überschrift mal etwas konkretisiert.
Sollte man immer tun, damit jeder bescheid weiss.

Autor:  [-=THH=-]Stillsetzhut [ 11.03.2003, 21:32 ]
Betreff des Beitrags: 

Hmm,

wenn ich es mache, wird es aber etwas dauern.

greez

[-=THH=-]Stillsetzhut

Autor:  [WING] Black Knight [ 11.03.2003, 22:15 ]
Betreff des Beitrags: 

Macht nichts, bei Fragen kannst Du Dich selbstredend an uns wenden. ;) Und silent bekommt über kurz oder lang sein Plugin. Wird sich auch freuen.
Find ich klasse, dass Du das machst.

Autor:  [-=THH=-]Stillsetzhut [ 22.03.2003, 13:37 ]
Betreff des Beitrags: 

Mal eine Frage an Silent: Wie weit soll das Plugin denn zaehlen?

Die 'gesprochenen' Runden muessen, wenn ich hier nicht falsch liege, jede einzeln definiert werden. Ich dachte so an eine Rundenzahl bis 100, oder sind das dann zu viele Vergleiche? Danach nur noch Textausgaben (csay). Naja, fuer die Dauerdustserver. :D

greez

[-=THH=-]Stillsetzhut

Autor:  Sir Drink a lot [ 22.03.2003, 15:57 ]
Betreff des Beitrags: 

nicht ganz richtig :-)

Ich habe gerade eine Version vom timemanager gebastelt, die eine Timeleft-Zeit Ansage drin hat. Das heißt, er muss meine Sekunden in Minute und Sekunde und dann auch in ein Wort umwandeln. Die Funktion kannst Du entsprechend für Deine Zwecke umwandeln. Das Prinzip bleibt ja das selbe.

Du nutzt einmal einen Array 1 - 19 und dann einen Zehner-Array.

Hier nun die Funktion: (oder ist es sogar die Funktion, die ich mal mit Warhead geabstelt habe...ganz ganz früher :-)
Code:
/*Alles zum Timeleft*/
SpeakTimeleft() {
        new i;
	new maxplayers = maxplayercount();
	new SessionID;
	new Target[MAX_NAME_LENGTH];
	new WONID;
	new outputstring[MAX_DATA_LENGTH];
	new seconds;
	new minutes;
	new first; 
        new second; 
        new third; 
        new fourth;
        new Minutes[MAX_TEXT_LENGTH];
        new Seconds[MAX_TEXT_LENGTH];
        new Authid[MAX_AUTHID_LENGTH];
		
	new low[20][]={"","one ", "two ","three ","four ","five ","six ","seven ","eight ","nine ","ten ","eleven ","twelve ","thirteen ","fourteen ","fifteen ","sixteen ","seventeen ","eighteen ","nineteen "}; 
        new high[10][]={"", "", "twenty ","thirty ","fourty ","fifty ","sixty ","seventy ","eighty ","ninety "}; 
        
        minutes=time/60; 
        seconds=time%60; 
        
        if(minutes<=0 && seconds <=0){
        	 return PLUGIN_FAILURE;
       	}

        first=minutes/10; 
        second=minutes%10; 
        
        if(first==1){ 
            second=minutes; 
            first=0; 
        } 
        
        third=seconds/10; 
        fourth=seconds%10; 
        
        if(third==1){ 
            fourth=seconds; 
            third=0; 
        } 
               
        if(minutes>0){ 
            snprintf(Minutes, MAX_DATA_LENGTH, "%s%s", high[first], low[second]); 
        } 
        
        if(seconds>0){ 
            snprintf(Seconds, MAX_DATA_LENGTH, "%s%s ", high[third], low[fourth]); 
        } 
        
        snprintf(outputstring,MAX_DATA_LENGTH,"fvox/%s minutes %s seconds remaining",Minutes,Seconds ); 
        
	for(i=1; i<=maxplayers; i++) {
		strinit(Target);
		if(playerinfo(i,Target,MAX_NAME_LENGTH,SessionID,WONID,_,_,Authid)==1) {
			if(strcmp(Authid,"BOT")!=0){
				speakto(Target,outputstring);
			}
		}
	}
	return PLUGIN_HANDLED;
}

public HandleSay(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);

	strstripquotes(Data);
	if (streq(Data, "timeleft")==1) {
		checktime = systemtime()-(systemtime()- checktime);
		map_time();
		if (systemtime() < iLastSpeak) {
			return PLUGIN_CONTINUE;
  		} else {
			SpeakTimeleft();
			iLastSpeak = systemtime();
			iLastSpeak += 60;
		}
	}
	return PLUGIN_CONTINUE;
}

Und hier auch mal, wie es SR71GOKU generell gemacht hat. Die Lösung ist wahrscheinlich schon passender für Dich.
Code:
/* The library of words for numtoword */
static OnesLib[10][] = { "", "one ", "two ", "three ", "four ", "five ", "six ", "seven ", "eight ", "nine " };
static TensLib[10][] = {"", "ten ", "twenty ", "thirty ", "fourty ", "fifty ", "sixty ", "seventy ", "eighty ", "ninety " } ;
static TeensLib[10][] = {"", "eleven ", "twelve ", "thirteen ", "fourteen ", "fifteen ", "sixteen ", "seventeen ", "eighteen ", "nineteen " };
static HundredsLib[10][] = { "", "one hundred ", "two hundred ", "three hundred ", "four hundred ", "five hundred ", "six hundred ", "seven hundred ", "eight hundred ", "nine hundred " };
static GroupNamesLib[5][] = {"", "thousand ", "million ", "billion ", "trillion " };

stock do_numtoword(iNum,str[],iLevel,iLength) {
	
	/* If there is more than one group of 3, then take care of the others first. */
	if(iNum >= 1000) do_numtoword(iNum / 1000,str,iLevel + 1,iLength);
	
	/* Grab the the first 3 digits only */
	iNum %= 1000;	
	
	/* Isolate each digit */
	new _hundreds = iNum / 100;
	new _tens = (iNum / 10) % 10;
	new _ones = iNum % 10;
	
	/* Take care of the teen numbers */
	if(_tens == 1 && _ones != 0) {
		snprintf(str,iLength,"%s%s%s%s",str,HundredsLib[_hundreds],TeensLib[_ones],GroupNamesLib[iLevel]);
	} else {
		snprintf(str,iLength,"%s%s%s%s%s",str,HundredsLib[_hundreds], TensLib[_tens], OnesLib[_ones],GroupNamesLib[iLevel]);
	}
	
	if(iLevel==0) str[strlen(str)-1] = 0; /* Gets rid of the trailing space*/
	return 1;
}

stock numtoword(iNum,str[],iLength) {
	/* Empties the first char of the string */
	str[0] = 0;
	str[iLength-1] = 0;
	if(iNum == 0) {
		snprintf(str,iLength,"zero");
		return 1;
	}
	if(iNum < 0) {
		iNum *= -1;
		snprintf(str,iLength,"negative ");
	}
	
	return do_numtoword(iNum,str,0,iLength); 
}
Diesen Code habe ich aus seiner .inc Datei.

Autor:  [-=THH=-]Stillsetzhut [ 22.03.2003, 17:01 ]
Betreff des Beitrags: 

Genial! THX das hilft weiter. :D

Autor:  Sir Drink a lot [ 22.03.2003, 17:46 ]
Betreff des Beitrags: 

ich habe hier mal einen Beispielcode :-)

Ich konnte mich nicht zurückhalten und musste selber die Funktionen testen.

Autor:  [-=THH=-]Stillsetzhut [ 22.03.2003, 19:32 ]
Betreff des Beitrags: 

Naja, Beispiel ist gut, das ist ein fertiges Plugin! :lol:
Da ist nicht mehr viel hinzuzufuegen :D
Ich lass es mal auf unserem I-Net Server laufen.

greez

[-=THH=-]Stillsetzhut

Autor:  [-=THH=-]Stillsetzhut [ 22.03.2003, 21:30 ]
Betreff des Beitrags: 

So, hab mir gerade mal die Funktion auf unserem I-Netserver angesehen. Funktioniert einwandfrei! :D
Saubere Arbeit.

Autor:  Sir Drink a lot [ 23.03.2003, 13:53 ]
Betreff des Beitrags: 

ich werde das Ganze wahrscheinlich noch in die neue Version vom Impressive basteln.

Mal sehen.

Autor:  [-=THH=-]Stillsetzhut [ 28.03.2003, 14:38 ]
Betreff des Beitrags: 

Hab's mal ein wenig daheim laufen lassen

mp_timelimit 0
mp_roundtime 1

Eben mal reingehorcht: Es kam einwandfrei die Meldung 1368 (akustisch natuerlich) :lol:

Autor:  Sir Drink a lot [ 29.03.2003, 17:54 ]
Betreff des Beitrags: 

:lol:

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