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

Neuer Bombtimer
https://www.adminmod.de/viewtopic.php?t=8871
Seite 1 von 1

Autor:  Skusie [ 06.10.2004, 16:54 ]
Betreff des Beitrags:  Bombtimer

Guten tag,

hey mein buyscript belegt nur eine Taste!!!Und kann meine Einkäufe trotzdem variieren, aber egal.


Ich wollte mal was zu dem impressive plugin sagen. Ist das möglich das man den Bombtimer per admin_csay(nur beispiel) richtig von mp_c4timer bis 1 "öffentlich" runterzählen kann? Eigenlich weiß ich, dass das geht, aber wie? Wollt mich schon mal ans selber Programmieren machen, mit Hilfe vom textpad und so, aber meine Kenntnisse reichen definitiv nicht aus.

Könnt ihr mir irgendwie helfen?


Skusie

Autor:  [WING] Black Knight [ 06.10.2004, 17:52 ]
Betreff des Beitrags: 

Wie wäre es denn damit:
?q=node/view/41&plugin=plugin_logd_bombtimer

Autor:  Skusie [ 06.10.2004, 20:10 ]
Betreff des Beitrags:  Bombtimer

Nee, den hat ich schon. Glaub ich. Egal, wenn man sich den quelltext anschaut sieht man, dass der immer Sprünge macht: thirty, twenty,ten,five, four,etc.

Ich hab auch schon versucht den quelltext umzuschreiben und hab einfach die, ich glaube das sind funktionen, kopiert und die Ausgabe geändert. Also so das er richtig runterzählt : 30,29,28,27,26,25,24,23sek, etc.

Das logd_bombtimer ist ja ähnlich dem impressive plugin.

Respekt @ Sir drink a lot, find das Plugin sehr cool, bis auf kleine Sachen macht es richtig spaß und die werner sounds rocken.


Thnx@ Black Knight aber hab mir die plugins auf der adminmod-site schon ausführlich angeschaut, aber wie gesagt ich bräuchte son richtigen Countdown, sound ist mir dabei unwichtig.


Wär cool wenn mir jemand mal sagen könnte ob das mit dem Countdown derartig möglich ist und n bissl beim Quellcode helfen.

Skusie

Autor:  [WING] Black Knight [ 06.10.2004, 21:49 ]
Betreff des Beitrags: 

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

#define ACCESS_CONSOLE 131072

new STRING_VERSION[MAX_DATA_LENGTH] = "v1.2";
new bombdefused = 1;

public bt_checkplant(HLCommand,HLData,HLUserName,UserIndex) {
	new Data[MAX_DATA_LENGTH];
	new sID[MAX_DATA_LENGTH];

	convert_string(HLData, Data, MAX_DATA_LENGTH);
	strbreak(Data, sID, Data, MAX_DATA_LENGTH);

	if(strcmp(Data, "Planted_The_Bomb") == 0) {
		new c4time = getvar("mp_c4timer");
		set_timer("boom", 1, c4time-1);
		bombdefused = 0;

	}
	return PLUGIN_CONTINUE;
}

public bt_checkdone(HLCommand,HLData,HLUserName,UserIndex) {
	new Params[MAX_DATA_LENGTH];
	convert_string(HLData,Params,MAX_DATA_LENGTH);
	switch( Params[ 6 ] ) {
		case 'S':
		{
			bombdefused = 1;
			return PLUGIN_CONTINUE;
		}
		case 'E':
		{
			bombdefused = 1;
			return PLUGIN_CONTINUE;
		}
	}

	return PLUGIN_CONTINUE;
}

public boom(Timer,Repeat,HLUserName,HLParam) {
	if(bombdefused == 0) {
		new messageout[MAX_DATA_LENGTH];
		if(Repeat==1){
			strcpy(messageout,"1 second until explosion!",MAX_DATA_LENGTH);
		}
		else {
			snprintf(messageout,MAX_DATA_LENGTH,"%d seconds until explosion!",Repeat);
		}
		centersay(messageout,5,255,0,0);
	}
}

public plugin_init() {
	plugin_registerinfo("Bomb Planting Timer","Just a countdown until the bomb explodes.",STRING_VERSION);
	plugin_registercmd("bt_checkplant", "bt_checkplant", ACCESS_CONSOLE);
	plugin_registercmd("bt_checkdone", "bt_checkdone", ACCESS_CONSOLE);

	exec( "logd_reg 60 admin_command bt_checkplant" );
	exec( "logd_reg 62 admin_command bt_checkdone" );

	return PLUGIN_CONTINUE;
Soviel dazu. Sir Drink a lot's Version kommt auch noch. :)

Autor:  Sir Drink a lot [ 07.10.2004, 02:13 ]
Betreff des Beitrags: 

naja...ich habe ein bisschen mehr Overhead :)
Alles bunt und mit Sprachausgabe :)

Ok. Der einzige Unterschied ist, dass ich den Timer töte und zusätzlich mit Flags arbeite. Warum soll er auch weiterlaufen, obwohl er nicht gebraucht wird bzw. nichts mehr ausgeführt wird :)
Code:
/*
[WHO]Them's bomb countdown timer.
Ripped and stripped from bud-froggy's bombsay code to expedite release.

Edited by Kndroc to be complient with LogD 1.0
Edit by Sir Drink a lot
*/
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>

#define ACCESS_CONSOLE 131072

new STRING_VERSION[MAX_DATA_LENGTH] = "v0.8";

new g_TimerIndex;

////////////////////////////////////////
// ROUND COUNTER (Big THX an SR71GOKU)//
////////////////////////////////////////
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 " 
};

public plugin_init() {
	plugin_registerinfo("Bomb Planting Timer","Just a countdown until the bomb explodes.",STRING_VERSION);
	plugin_registercmd("bt_playeraction", "bt_playeraction", ACCESS_CONSOLE);
	exec( "logd_reg 60 admin_command bt_playeraction" );
	plugin_registercmd("bt_world", "bt_world", ACCESS_CONSOLE, "");
	exec( "logd_reg 62 admin_command bt_world" );
	return PLUGIN_CONTINUE;
}

public bt_playeraction(HLCommand,HLData,HLUserName,UserIndex){
	new Data[MAX_DATA_LENGTH];
	new sID[MAX_DATA_LENGTH];
	new C4Timer;

	convert_string(HLData, Data, MAX_DATA_LENGTH);
	strbreak(Data, sID, Data, MAX_DATA_LENGTH);
	if(strcmp(Data, "Planted_The_Bomb") == 0){
		C4Timer=getvar("mp_c4timer");
		g_TimerIndex=set_timer("announce_bomb",1,C4Timer);
		playsound_all("barney/badfeeling");
	}else if (strcmp(Data, "Defused_The_Bomb") == 0){
		if(g_TimerIndex>0){
			kill_timer(g_TimerIndex);
			g_TimerIndex=0;
			playsound_all("barney/survive");
		}
	}
	return PLUGIN_CONTINUE;
}

public bt_world(HLCommand,HLData,HLUserName,UserIndex){
	new Data[MAX_DATA_LENGTH];
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	if(g_TimerIndex>0){
		if(Data[6]=='E' || Data[6]=='S'){
			kill_timer(g_TimerIndex);
			g_TimerIndex=0;
		}
	}
	return PLUGIN_CONTINUE;
}

public announce_bomb(Timer,Repeat,HLName,HLParam) {
	if(g_TimerIndex>0){
		new Number[MAX_TEXT_LENGTH];
		new Text[MAX_TEXT_LENGTH];
		new iTime;
		
		iTime = Repeat - 1;
		
		switch(iTime){
			case 40: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 35: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 30: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 25: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 20: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 15: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 10: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 5: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 4: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 3: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 2: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 1: numtoword(iTime,Number,MAX_TEXT_LENGTH);
			case 0: {
				numtoword(iTime,Number,MAX_TEXT_LENGTH); 
				g_TimerIndex=0;
			}
		}
		
		snprintf(Text,MAX_TEXT_LENGTH,"*** BOMB PLANTED ***^n%i seconds remaining^n**************************",iTime);
		
		if(iTime>5){
			typesay(Text,12,random(200),random(100),random(100));
		}else{
			typesay(Text,12,255,0,0);
		}
		
		if(strlen(Number)!=0){
			if(iTime>5){
				snprintf(Number,MAX_TEXT_LENGTH,"%s seconds remaining",Number);
				playsound_all(Number);
			}else{
				playsound_all(Number);
			}
		}
	}
}

playsound_all(Data[]){
	new i;
	new Target[MAX_NAME_LENGTH];
	new maxplayers = maxplayercount();
	for(i=1; i<=maxplayers; i++) {
		strinit(Target);
		if(playerinfo(i,Target,MAX_NAME_LENGTH)) {
			speakto(Target,Data);
		}
	}
}

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

Autor:  Rinde [ 07.10.2004, 16:50 ]
Betreff des Beitrags: 

hmm...
Code:
      switch(iTime){
         case 40: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 35: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 30: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 25: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 20: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 15: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 10: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 5: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 4: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 3: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 2: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 1: numtoword(iTime,Number,MAX_TEXT_LENGTH);
         case 0: {
            numtoword(iTime,Number,MAX_TEXT_LENGTH);
            g_TimerIndex=0;
         } 
->
Code:
      switch(iTime){
         case 40,35,30,25,20,15,10,5,4,3,2,1,0: numtoword(iTime,Number,MAX_TEXT_LENGTH);
      }
oder noch besser
Code:
      if(iTime <=5 || iTime % 5 == 0) {
            numtoword(iTime,Number,MAX_TEXT_LENGTH);
      }
sorry, aber ich kann nicht anders :o)

Autor:  [WING] Black Knight [ 07.10.2004, 16:55 ]
Betreff des Beitrags: 

Oder man lässt es weg, weil es nervt.

sorry, aber ich kann nicht anders :)

Autor:  Rinde [ 07.10.2004, 17:03 ]
Betreff des Beitrags: 

achja, wo du in dem plugin flags benutzt musst du mir nochmal erklären

Autor:  Sir Drink a lot [ 07.10.2004, 19:11 ]
Betreff des Beitrags: 

ah..so geht der case...das war meine Frage an Dich gestern, Blacky...ok..sie war nicht deutlich gestellt.
Ich wusste nicht mehr wie man das genau bastelt.

Was sind Flags?

Nach meinem Verständnis ist es einfach eine Variable, die man auf 1 oder 0 setzt, um damit eine Durchführung zuzulassen. z.B. wenn = 1, dann soll er was machen, wenn 0 dann eben keine Ausführung.

Autor:  [WING] Black Knight [ 07.10.2004, 19:19 ]
Betreff des Beitrags: 

Ach sooo. Steht das so nicht auch im Small-Handbuch?

Genau das sind Flags, und Rinde sollte nochmal ein wenig nach selbigen fahnden.

Autor:  Sir Drink a lot [ 07.10.2004, 23:34 ]
Betreff des Beitrags: 

habe mal den Thread geteilt...

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