Ein neues Thema erstellen  Auf das Thema antworten  [ 57 Beiträge ]  Gehe zu Seite 1 2 3 Nächste
Autor Nachricht
BeitragVerfasst: 30.05.2002, 20:22 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
ich habe es umgeschrieben aber der sound lostlead.wav wird nicht abgespielt. hat jemand ne idee ?

Code:
		if(Name == lastHSName)
			playsound(Name, "misc/takenlead.wav" );
		else
		{
			playsound(Name, "misc/takenlead.wav" );
			playsound(lastHSName, "misc/lostlead.wav" );
		}

_________________
Geht nich, gibs nich: Suchen, FAQ
www.cola-clan.de - Whiskey@cola-clan.de


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 31.05.2002, 00:51 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
ohne Fehlermeldung bei dem Versuch, den Sound an Spieler lastHSName abzuspielen?

_________________
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: 31.05.2002, 01:10 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
hui bin ich doch nochma schneller als SDal :D

wenn man genau hinsieht sieht man das ich da müll geschrieben hab, habs halt schnell geschrieben und compiliert und ohne fehlermeldung

aber es muss natürlich so heissen:
Code:
		if([b]Name && lastHSName == 1[/b])
			playsound(Name, "misc/takenlead.wav" );
		else
		{
			playsound(Name, "misc/takenlead.wav" );
			playsound(lastHSName, "misc/lostlead.wav" );
		}
naja aber das plugin hat trotzdem noch viele bugs z.b. bei restartround oder disconnect wird die Highscore nich auf 0 gestellt obwohl irgend etwas dadrüber im plugin drin steht

_________________
Geht nich, gibs nich: Suchen, FAQ
www.cola-clan.de - Whiskey@cola-clan.de


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 31.05.2002, 01:20 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
ich muss zu geben, dass ich im Moment mit dem CW-Creator und einem Multimapvote-Plugin voll auf ausgelastet bin und dieses interessante Plugin nicht weiter testen kann.

_________________
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: 31.05.2002, 02:02 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
ja morgen is LAN Inferno www.lan-inferno.de
und da wollt ich die COLA Kiste ma startklar machen :D

allerdings sind beim multikill plugin und beim killstreak plugin noch n paar bugs drin die ich noch fixen wollte
ausserdem läuft das sank_sounds plugin noch nich aber da muss ich mir wohl ma die neuste version ziehn

naja zum multikill/killstreak plugin ich wollte das so machen das bei einem Restartround die score auch zurück gesetzt wird allerdings frag ich mich wie man das hier auswerten soll?:
Code:
World triggered "Restart_Round_(1_second)"
denn es is ja nich immer 1 second

_________________
Geht nich, gibs nich: Suchen, FAQ
www.cola-clan.de - Whiskey@cola-clan.de


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 31.05.2002, 09:27 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Zitat:
wenn man genau hinsieht sieht man das ich da müll geschrieben hab, habs halt schnell geschrieben und compiliert und ohne fehlermeldung

aber es muss natürlich so heissen:
Code:
		if([b]Name && lastHSName == 1[/b])
			playsound(Name, "misc/takenlead.wav" );
		else
		{
			playsound(Name, "misc/takenlead.wav" );
			playsound(lastHSName, "misc/lostlead.wav" );
		}
Interessant. Ich haette vermutet, dass dieser Code voelliger Quatsch ist und Dir schon beim compilieren um die Ohren fliegt. Aber wenn Du sagst das tut.... Man lernt doch nie aus.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 31.05.2002, 10:12 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
ja es is so das wenn du leader bist dich dann aber einer einholt das gleichstand kommt und du wieder taken the lead hast dann würde bei dir you have lost the lead kommen da du ja der letzte warst der leader war :o

naja nu ma nochma zu meinem anderen problemchen
Es is aus dem Killstreak Plugin:
Code:
public ks_resetscore(HLCommand,HLData,HLUserName,UserIndex,Param)
{
	new loop;
	new Data[MAX_NAME_LENGTH];
	convert_string(HLData,Data,MAX_NAME_LENGTH);
	
	if(strcmp("Game_Commencing", Data) != 0 [b]|| strcmp("Restart", Data) != 0[/b])
	{
		return PLUGIN_HANDLED;
	}
	for( loop = 0; loop < MAX_PLAYERS; loop += 1 )
	{
		FragCount[loop] = CLEAN_SLATE;
	}
	return PLUGIN_HANDLED;
}
Ich habe anstatt "Restart" schon folgendes ausprobiert: Restart_Round, Restart_Round_, Restart_Round_(1_Second)

Das Problem is nur: Es klappt nicht :o
Weis einer wo da der Fehler drin is ? muss man Restart Round vielleicht über die Variable sv_restartround laufen lassen so das wenn die auf 0 is das dann die scores zurück gesetzt werden ?

_________________
Geht nich, gibs nich: Suchen, FAQ
www.cola-clan.de - Whiskey@cola-clan.de


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 31.05.2002, 11:25 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
zu dem was daRope gesagt hat:
Ich habe mich auch gewundert, da ich von einem String == "1" ausgegangen bin. Aber es wurde wohl vorher ein numtostr gmacht.
Den kannte ich auch noch nicht: Name && lastHSName == 1

Wie wäre es mit einem Split der Data?
Code:
strsplit(Data,"_",x,MAX_DATA_LENGTH,dummy,MAX_DATA_LENGTH);
Dann müsste im x nur noch "Game" oder "Restart" übrig bleiben.
Diese kann man dann schön vergleichen.
Darauf zu achten ist, das Du 2 mal ganz am Anfang ein Game_Commencing erhälst. (Ok. Ist jetzt nicht so tragisch. Wird eben 2 mal der Code ausgeführt.)

@daRope: MAX_DATA_LENGTH ist doch hier eigentlich zu groß, oder? Man weiß ja, was in x oder dummy später steht. Wie groß wäre der Array in diesem Fall? x [8]?

_________________
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: 31.05.2002, 11:53 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
hmm war kurz davor das so zu machen weil ichs in irgend nem andern plugin auch so gesehn habe, allerdings war ich bisher noch zu faul dazu *g* aber ich probier das gleich ma aus

@ sir drink a lot ich wollt da ja nur nen vergleich aufstellen

wenn a = b is dann soll er das machen wenn a aber nich b is dann soll er das andere machen. ich hab ja kein plan vom scripten ich klau mir das ja immer nur aus andern plugins zusammen :D

_________________
Geht nich, gibs nich: Suchen, FAQ
www.cola-clan.de - Whiskey@cola-clan.de


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 31.05.2002, 12:10 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
mit dem Vergleich war schon klar.

Ich wusste aber nicht, dass man es so machen kann. Ich habe es bisher immer so gemacht.

Name ==1 && lastHSName == 1

_________________
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: 31.05.2002, 12:21 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
hmm aha naja egal ich hab n anderes problem unzwar in 4 Std fahr ich los zur lan 8)

und der server läuft noch nich so wie er soll

habe hier mal das killstreak plugin das mit dem reseten bei restart round funzt noch nich:
Code:
/*
* Bud-froggy Productions® -- July 26nd, 2001
* Killing Streak Announcer®
*
* Announces Kill streaks
* Place in logd_kill
* new features added by SDal
*/


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

new STRING_VERSION[MAX_DATA_LENGTH] = "1.6";

#define Level1 4 //Multikill
#define Level2 6 //Ultrakill
#define Level3 8 //Killingspree
#define Level4 10 //Monsterkill
#define Level5 15 //Monsterkill
#define Level6 20 //Godlike
#define Level7 30 //Godlike

#define ACCESS_CONSOLE 131072
#define CLEAN_SLATE 0

new FragCount[ MAX_PLAYERS ] = {CLEAN_SLATE,...};
new on = 1;


playFile( sFileName[ ] )
{
	new Name[ MAX_NAME_LENGTH ];
	new iUserID;
	new iWONID;
	new maxplayers = maxplayercount();

	for( new i = 1; i <= maxplayers; i++ )
	{
		if( playerinfo(i, Name, MAX_NAME_LENGTH, iUserID, iWONID ) ) {
			//if its not a bot
			if( iWONID != 0 ) {
				playsound(Name, sFileName );
			}
		}
	}
	return 1;
}

public admin_killstreak( HLCommand,HLData,HLUserName,UserIndex )
{
   	new User[MAX_NAME_LENGTH]; 
   	new Data[MAX_DATA_LENGTH];

   	convert_string(HLUserName, User, MAX_NAME_LENGTH);
   	convert_string(HLData,Data,MAX_DATA_LENGTH);

   	if (streq(Data, "1")==1)
   	{
   		on = 1;
   		selfmessage("Killstreak aktiviert");
   		return PLUGIN_HANDLED;
   	}
   	if (streq(Data, "0")==1)
   	{
   		on = 0;
   		selfmessage("Killstreak deaktiviert");
   		return PLUGIN_HANDLED;
   	}
   	selfmessage("Muss Zahl zwischen 0 und 1 sein!"); 
   	return PLUGIN_HANDLED; 
} 
	
public logd_killstreak( HLCommand,HLData,HLUserName,UserIndex )
{
	if (on == 1)
	{
	new iIDA;
	new iIDV;
	
	new sID1[3];
	new sID2[3];
		
	new Data[MAX_DATA_LENGTH];
	new Message[ MAX_TEXT_LENGTH ];
	new Name[MAX_NAME_LENGTH];
	new Victim[MAX_NAME_LENGTH];
	new iUserID;
        new iWONID;
        new iTeamA;
        new iTeamV;
	
	convert_string( HLData, Data, MAX_DATA_LENGTH );
	strsplit( Data, " ", sID1, 3, sID2, 3);

	iIDA = strtonum( sID1 );
	iIDV = strtonum( sID2 );
	
	if(playerinfo(iIDA, Name, MAX_NAME_LENGTH, iUserID, iWONID, iTeamA))
        {
                if(playerinfo(iIDV, Victim, MAX_NAME_LENGTH, iUserID, iWONID, iTeamV))
                {
                        if(iTeamV != iTeamA)
				FragCount[ iIDA ] += 1;
                        else 
                        {
                        	FragCount[iIDA] -=1;
                        }
                }
        }
	
	FragCount[ iIDV ] = CLEAN_SLATE;
	
	if (FragCount[ iIDA ] == Level1)
	{
	playFile( "misc/multikill.wav" );
	snprintf(Message, MAX_TEXT_LENGTH, "%s: Multi Kill !!! (%i Kills)", Name,FragCount[iIDA]);
	typesay(Message,3, 255, 255, 255);
	}
	else if( FragCount[ iIDA ] == Level2 )
	{
	playFile( "misc/ultrakill.wav" );
	snprintf( Message, MAX_TEXT_LENGTH, "%s: Ultra Kill !!! (%i Kills)", Name,FragCount[iIDA]);
	typesay(Message,3,150,200,0);
	}
	else if( FragCount[iIDA ] == Level3 )
	{
	playFile( "misc/killingspree.wav" );
	snprintf( Message, MAX_TEXT_LENGTH, "%s is on a Killing Spree !!! (%i Kills)", Name,FragCount[iIDA]);
	typesay(Message,4,200,100,0);
	}
	else if( FragCount[iIDA ] == Level4 || FragCount[iIDA ] == Level5 )
	{
	playFile( "misc/monsterkill.wav" );
	snprintf( Message, MAX_TEXT_LENGTH, "%s made a MONSTERKILLLLL !!! (%i Kills)", Name,FragCount[iIDA]);
	typesay(Message,4,0,100,200);
	}
	else if( FragCount[iIDA ] == Level6 || FragCount[iIDA ] == Level7 )
	{
	playFile( "misc/godlike.wav" );
	snprintf( Message, MAX_TEXT_LENGTH, "%s is playing G - O - D - L - I - K - E ! ! ! (%i Kills)", Name,FragCount[iIDA]);
	typesay(Message,4,225,0,0);
	}
	return PLUGIN_HANDLED;
	}
	return PLUGIN_HANDLED;
}

public ks_resetscore(HLCommand,HLData,HLUserName,UserIndex,Param)
{
	new loop;
	new Data[MAX_NAME_LENGTH];
	new x [MAX_DATA_LENGTH];

	convert_string(HLData,Data,MAX_NAME_LENGTH);
	strsplit(Data,"# ",x,MAX_DATA_LENGTH); 
	
	if(strcmp("Game_Commencing", Data) != 0)
	{
		return PLUGIN_HANDLED;
	}
	for( loop = 0; loop < MAX_PLAYERS; loop += 1)
	{
		FragCount[loop] = CLEAN_SLATE;
	}
	if(strcmp(x,"Restart_Round_") != 0)
	{
		return PLUGIN_HANDLED;
	}
	for( loop = 0; loop < MAX_PLAYERS; loop += 1)
	{
		FragCount[loop] = CLEAN_SLATE;
	}
	return PLUGIN_HANDLED;
}

public plugin_connect(HLUserName,HLIP, UserIndex)
{
	if (UserIndex >= 1 && UserIndex <= MAX_PLAYERS) {
		FragCount[UserIndex] = CLEAN_SLATE;
	}
	return PLUGIN_CONTINUE;
}

public plugin_disconnect(HLUserName,UserIndex)
{
	if (UserIndex >= 1 && UserIndex <= MAX_PLAYERS) {
		FragCount[UserIndex] = CLEAN_SLATE;
	}
	return PLUGIN_CONTINUE;
}

public plugin_init()
{
	plugin_registerinfo("Kill Streak Announcer","Announces kill streaks.",STRING_VERSION);
	plugin_registercmd("logd_killstreak", "logd_killstreak", ACCESS_CONSOLE, "");
	plugin_registercmd("ks_resetscore", "ks_resetscore", ACCESS_CONSOLE, "");
	plugin_registercmd("admin_killstreak","admin_killstreak",ACCESS_BAN, "admin_killstreak (0/1): 0 = Aus,1= AN");
	plugin_registerhelp("admin_killstreak",ACCESS_BAN,"admin_killstreak (0/1): 0 = Aus,1= AN");
	
	exec( "logd_reg 57 admin_command logd_killstreak" );
	exec( "logd_reg 62 admin_command ks_resetscore" );
	return PLUGIN_CONTINUE;
}


das gleiche problem bei dem multikill plugin:
Code:
/*
* Multikillcounter by [TV]Smudo.
* Announces Kills per seconds.
* Announces First Blood.
* Announces the leading Player.
* Based on Bud-froggys Killing Streak Announcer®.
*/

#pragma dynamic 16384

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

new STRING_VERSION[MAX_DATA_LENGTH] = "1.1";

new FBSwitch = 2; /*First Blood. 0=OFF, 1=First Blood pro Runde , 2=First Blood pro Map.*/
#define KITSwitch 1; /*Kills in Time Switch. 1=ON or 0=OFF.*/
#define HSSwitch 1; /*Highscore. 0=OFF, 1=ON.*/

#define KillInTime 2 /*Time in Seconds*/
#define KIT_Level1 2; /*Kills per Time*/
#define KIT_Level2 3; /*Kills per Time*/

#define ACCESS_CONSOLE 131072
#define CLEAN_SLATE 0

new FragCount[ MAX_PLAYERS ] = {CLEAN_SLATE,...};
new HSCount[ MAX_PLAYERS ] = {CLEAN_SLATE,...};
new KITTimer;
new KIT_Zeit = 0;
new KIT_Count;
new Name[MAX_NAME_LENGTH];
new lastName[MAX_TEXT_LENGTH];
new lastHSName[MAX_TEXT_LENGTH];
new iIDA;
new iIDAlast;
new fbStatus = 1;
new highScore = 0;
new lastHighScore = 0;

playFile( sFileName[ ] )
{
	
	new iUserID;
	new iWONID;
	new maxplayers = maxplayercount();
	
	for( new i = 1; i <= maxplayers; i++ )
	{
		if( playerinfo(i, Name, MAX_NAME_LENGTH, iUserID, iWONID ) ) {
		        {
				playsound(Name, sFileName );
			}
		}
	}
	return 1;
}


public logd_multikill( HLCommand,HLData,HLUserName,UserIndex )
{
	new iIDV;
   	new Text[MAX_TEXT_LENGTH]; 
	new sID1[3];
	new sID2[3];

	new Data[MAX_DATA_LENGTH];
	new Message[ MAX_TEXT_LENGTH ];
	
	convert_string( HLData, Data, MAX_DATA_LENGTH );
	
	strsplit( Data, " ", sID1, 3, sID2, 3 );
	
	iIDA = strtonum( sID1 );
	iIDV = strtonum( sID2 );
	

	if(!playerinfo(iIDA, Name, MAX_NAME_LENGTH)){
		return PLUGIN_FAILURE;
	}

	FragCount[ iIDV ] = CLEAN_SLATE;
	
	/*tkr_checktk*/
	new iUserID;
	new iWONID;
	new iTeamA;
	new iTeamV;

	new sIDA[3];
	new sIDV[3];
	/*new Data[MAX_NAME_LENGTH];*/


	convert_string(HLData,Data,MAX_DATA_LENGTH);
	strsplit(Data, " ", sIDA, 3, sIDV, 3 );

	if(playerinfo(iIDA, Data, MAX_NAME_LENGTH, iUserID, iWONID, iTeamA))
	{
		if(playerinfo(iIDV, Data, MAX_NAME_LENGTH, iUserID, iWONID, iTeamV))
		{
			if(iTeamV != iTeamA) {
				FragCount[ iIDA ] += 1;
				KIT_Count += 1;
				HSCount[ iIDA ] += 1;
				}
			if(iTeamV == iTeamA) {
				FragCount[ iIDA ] -= 1;
				KIT_Count -= 1;
				HSCount[ iIDA ] -= 1;
			}
		}
	}


	if(KITSwitch==1 && iIDA == iIDAlast && KIT_Zeit > 0) {
		playerinfo(iIDA,lastName,MAX_DATA_LENGTH); 
		Kill_In_Time();
		}
	else if(KITSwitch==1 && iIDA == iIDAlast && KIT_Zeit <= 0) {	
		KIT_Count = 1;
		iIDAlast = iIDA;
		playerinfo(iIDA,lastName,MAX_DATA_LENGTH); 
		KIT_Zeit = (KillInTime + 1);	
		KITTimer = set_timer("Kill_In_Time",1,KIT_Zeit);
		Kill_In_Time();
		}
	else if(KITSwitch==1 && iIDA != iIDAlast && KIT_Count < 3) {	
		KIT_Count = 1;
		iIDAlast = iIDA;
		playerinfo(iIDA,lastName,MAX_DATA_LENGTH); 
		if (KIT_Zeit > 0) {
			kill_timer(KITTimer);
		}
		KIT_Zeit = (KillInTime + 1);	
		KITTimer = set_timer("Kill_In_Time",1,KIT_Zeit);
		Kill_In_Time();
		}
	else if(KITSwitch==1 && iIDA != iIDAlast && KIT_Count > 2) {	
		iIDAlast = iIDA;
		KIT_Count = 1;
		snprintf( Text, MAX_TEXT_LENGTH, "Double Kill von %s!!",lastName);
		typesay(Text, 6, 255, 255, 255 );
    		snprintf( Text, MAX_TEXT_LENGTH, "%s schaffte 2 Kills in %i Sekunden!!!",Name,KillInTime);
		say(Text);
		playFile( "misc/dk.wav" );
		if (KIT_Zeit > 0) {
			kill_timer(KITTimer);
		}
		KIT_Zeit = (KillInTime + 1);	
		KITTimer = set_timer("Kill_In_Time",1,KIT_Zeit);
		Kill_In_Time();
		}
	   
	if(fbStatus==1 && FBSwitch>=1) {
	 snprintf( Message, MAX_TEXT_LENGTH, "First Blood: %s!", Name);
	 typesay(Message, 6, 255, 15, 15 );
	 playFile( "misc/fblood.wav" );
	 fbStatus=0;
	 } 
	if(HSCount[ iIDA ]>highScore && (lastHighScore!=iIDA) && HSSwitch == 1 && HSCount[ iIDA ] > 2) {
		snprintf(Text,MAX_DATA_LENGTH,"%s hat die Fuehrung mit %i Kills uebernommen !",Name,HSCount[ iIDA ]); 
   		typesay(Text, 6, 255, 15, 15 );
		say(Text);
		if(Name && lastHSName == 1)
		{
			playsound(Name, "misc/takenlead.wav" );
		}
		else
		{
			playsound(Name, "misc/takenlead.wav" );
			playsound(lastHSName, "misc/lostlead.wav" );
		}
		highScore = HSCount[ iIDA ];
		lastHighScore=iIDA;
		playerinfo(iIDA,lastHSName,MAX_DATA_LENGTH);
		}
		else if (HSCount[ iIDA ]==highScore && HSSwitch == 1 && HSCount[ iIDA ] > 2) {
		playsound(Name, "misc/tiedlead.wav" );
		playsound(lastHSName, "misc/tiedlead.wav" );
		lastHighScore=0;
		}
		else if (HSCount[ iIDA ]>highScore && (lastHighScore==iIDA) && HSSwitch == 1 && HSCount[ iIDA ] > 2) {
		highScore = HSCount[ iIDA ];	
		}
	return PLUGIN_HANDLED;
}

public Kill_In_Time() {
		new Text[MAX_TEXT_LENGTH]; 
		KIT_Zeit--;		
		if (KIT_Zeit > 0){
			return PLUGIN_CONTINUE;
			}
					
		if(KIT_Count == KIT_Level1) {
			snprintf( Text, MAX_TEXT_LENGTH, "Double Kill von %s!!!",Name);
			typesay(Text, 6, 255, 255, 255 );
    			snprintf( Text, MAX_TEXT_LENGTH, "%s schaffte %i Kills in %i Sekunden!!!",Name,KIT_Level1,KillInTime);
			say(Text);
			playFile( "misc/dk.wav" );
		} else if(KIT_Count == KIT_Level2) {
			snprintf( Text, MAX_TEXT_LENGTH, "Monster Kill von %s!!!",Name);
			typesay(Text, 6, 255, 255, 255 );
    			snprintf( Text, MAX_TEXT_LENGTH, "%s schaffte %i Kills in %i Sekunden!!!",Name,KIT_Level2,KillInTime);
			say(Text);
			playFile( "misc/monsterkill.wav" );
		} else if(KIT_Count > KIT_Level2){
			snprintf( Text, MAX_TEXT_LENGTH, "Oh mein Gott! %i Kills!!^nEin Mega Mo-mo-mo-Monsterkill von %s",KIT_Count,Name);
			typesay(Text, 6, 255, 255, 255 );				
			snprintf( Text, MAX_TEXT_LENGTH, "%s schaffte %i Kills in %i Sekunden!!!",Name,KIT_Count,KillInTime);
			say(Text);
			playFile( "misc/monsterkill.wav" );
		}
				
		KIT_Count = 0; 		
		KIT_Zeit = 0;	
		return PLUGIN_CONTINUE;
	}
		


public resetfb(HLCommand,HLData,HLUserName,UserIndex)
{
	new Data[MAX_NAME_LENGTH];
	convert_string(HLData,Data,MAX_NAME_LENGTH);
	
	if((strcmp("Round_Start", Data) != 0 ) && FBSwitch == 1)
		return PLUGIN_HANDLED;
	else if (FBSwitch == 1) {
		fbStatus=1;
	}
	return PLUGIN_HANDLED;
}

public resetcount(HLCommand,HLData,HLUserName,UserIndex) 
{ 
   new Data [MAX_DATA_LENGTH]; 
   new x [MAX_DATA_LENGTH]; 

   convert_string( HLData, Data, MAX_DATA_LENGTH ); 
   strsplit(Data,"# ",x,MAX_DATA_LENGTH); 
    
   if(strcmp(Data,"Game_Commencing")==0) 
   { 
	FragCount[ iIDA ] = 0;
	HSCount[ iIDA ] = 0;
   } 
   else if(strcmp(x,"Restart_Round_")==0) 
   { 
	FragCount[ iIDA ] = 0;
	HSCount[ iIDA ] = 0;
   } 
   return PLUGIN_HANDLED; 
}

public plugin_connect(HLUserName, HLIP, UserIndex)
{
	if (UserIndex >= 1 && UserIndex <= MAX_PLAYERS) {
		FragCount[UserIndex] = CLEAN_SLATE;
		HSCount[UserIndex] = CLEAN_SLATE;
	

	}
	return PLUGIN_CONTINUE;
}

public plugin_disconnect(HLUserName, UserIndex)
{
	
	new maxplayers = maxplayercount();
	if (UserIndex >= 1 && UserIndex <= MAX_PLAYERS) {
		FragCount[UserIndex] = CLEAN_SLATE;
		HSCount[UserIndex] = CLEAN_SLATE;
		for( new i = 1; i <= maxplayers; i++ )
		{
		if(HSCount[i] > highScore) {
		highScore = HSCount[i];
		}
	}
	}
	return PLUGIN_CONTINUE;
}


public plugin_init()
{
	plugin_registerinfo("Multikill Announcer.","Announces kills in Time.",STRING_VERSION);
	plugin_registercmd("logd_multikill", "logd_multikill", ACCESS_CONSOLE, "");
	plugin_registercmd("resetfb", "resetfb", ACCESS_CONSOLE, "");
	plugin_registercmd("resetfb", "resetcount", ACCESS_CONSOLE, "");
	
	exec( "logd_reg 57 admin_command logd_multikill" );
	exec( "logd_reg 62 admin_command resetfb" );
	exec( "logd_reg 62 admin_command resetcount" );
	return PLUGIN_CONTINUE;
}

_________________
Geht nich, gibs nich: Suchen, FAQ
www.cola-clan.de - Whiskey@cola-clan.de


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 31.05.2002, 16:33 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Zitat:
Ich wusste aber nicht, dass man es so machen kann. Ich habe es bisher immer so gemacht.

Name ==1 && lastHSName == 1
Was? Das ist doch genauso Quatsch. Na, bin ich denn jetzt voellig bescheuert?
Name und lastHSName sind beides Arrays und werden mit einem Integer verglichen? Das sollte der Compiler aber sowas von anmeckern! Und das tut wirklich? Allen Ernstes?

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 31.05.2002, 20:11 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Also ich habe das noch mal ausprobiert mit diesem
Code:
if ( Name && lastHSName == 1 )
Der Compiler frisst das. Das ist aber ein Fehler. Wenn Du dasselbe mit zwei lokalen Arrays machst, dann meckert er.

Bleibt die Frage, was dass denn ueberhaupt sein soll. Vom programmiertechnischen Standpunkt macht dieser Ausdrueck genu gar keinen Sinn. Du solltest das also schleunigst nochmal ueberdenken und umschreiben. Denn das wird mit Sicherheit nicht das machen, was Du eigentlich wolltest.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 01.06.2002, 15:37 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
wie gesagt, bin ich davon ausgegangen, das es sich hier um Zahlen handelt und nicht um Arrays.

Wenn es sich hier in dem Fall wirklich um Arrays handelt, kann man so nicht das gewünschte Ergebnis erzielen, wie daRope schon sagte.
dann muss ein strcmp her. Oder eine ähnliche String Behandlung.

Ich habe mir das Plugin noch nicht angesehen.

_________________
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: 13.06.2002, 22:04 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
Hier ist nochmal mein Original. Hab noch 2 Bugs gefunden, sind aber immer noch welche drin :(
Man kanns aber schon mal so laufen lassen. Ab und zu verzählt es sich halt mal aber nicht so oft. Ist bestimmt schlecht programmiert aber ich kann ja auch nicht programmieren :) hab ich mir auch alles so bröckchenweise zusammengesucht.
Code:
/*
* Multikillcounter by [TV]Smudo.
* Announces Kills per seconds.
* Announces First Blood.
* Announces the leading Player.
* Based on Bud-froggys Killing Streak Announcer®.
*/

#pragma dynamic 16384

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

new STRING_VERSION[MAX_DATA_LENGTH] = "v1";

new FBSwitch = 1;	/*First Blood. 0=OFF, 1=First Blood pro Runde , 2=First Blood pro Map.*/
#define KITSwitch 1;	/*Kills in Time Switch. 1=ON or 0=OFF.*/
#define HSSwitch 1;	/*Highscore. 1=ON or 0=OFF.*/

#define KillInTime 2	/*Time in Seconds*/
#define KIT_Level1 2;	/*Kills per Time*/
#define KIT_Level2 3;	/*Kills per Time*/

#define ACCESS_CONSOLE 131072
#define CLEAN_SLATE 0

new FragCount[ MAX_PLAYERS ] = {CLEAN_SLATE,...};
new HSCount[ MAX_PLAYERS ] = {CLEAN_SLATE,...};
new KITTimer;
new KIT_Zeit = 0;
new KIT_Count;
new Name[MAX_NAME_LENGTH];
new lastName[MAX_TEXT_LENGTH];
new lastHSName[MAX_NAME_LENGTH];
new iIDA;
new iIDAlast;
new fbStatus = 1;
new highScore = 0;
new lastHighScore = 0;
new lastHSid = 0;

playFile( sFileName[ ] )
{
	
	new iUserID;
	new iWONID;
	new maxplayers = maxplayercount();
	
	for( new i = 1; i <= maxplayers; i++ )
	{
		if( playerinfo(i, Name, MAX_NAME_LENGTH, iUserID, iWONID ) ) {
		        {
				playsound(Name, sFileName );
			}
		}
	}
	return 1;
}


public logd_multikill( HLCommand,HLData,HLUserName,UserIndex )
{
	new iIDV;
   	new Text[MAX_TEXT_LENGTH]; 
	new sID1[3];
	new sID2[3];

	new Data[MAX_DATA_LENGTH];
	new Message[ MAX_TEXT_LENGTH ];
	
	convert_string( HLData, Data, MAX_DATA_LENGTH );
	
	strsplit( Data, " ", sID1, 3, sID2, 3 );
	
	iIDA = strtonum( sID1 );
	iIDV = strtonum( sID2 );
	
	playerinfo(iIDA,Name,MAX_DATA_LENGTH);
	if(!playerinfo(iIDA, Name, MAX_NAME_LENGTH)){
		return PLUGIN_FAILURE;
	}

	FragCount[ iIDV ] = CLEAN_SLATE;
	
	/*tkr_checktk*/
	new iUserID;
	new iWONID;
	new iTeamA;
	new iTeamV;

	new sIDA[3];
	new sIDV[3];
	/*new Data[MAX_NAME_LENGTH];*/


	convert_string(HLData,Data,MAX_DATA_LENGTH);
	strsplit(Data, " ", sIDA, 3, sIDV, 3 );

	if(playerinfo(iIDA, Data, MAX_NAME_LENGTH, iUserID, iWONID, iTeamA))
	{
		if(playerinfo(iIDV, Data, MAX_NAME_LENGTH, iUserID, iWONID, iTeamV))
		{
			if(iTeamV != iTeamA) {
				FragCount[ iIDA ] += 1;
				KIT_Count += 1;
				HSCount[ iIDA ] += 1;
				}
			if(iTeamV == iTeamA) {
				FragCount[ iIDA ] -= 1;
				KIT_Count -= 1;
				HSCount[ iIDA ] -= 1;
			}
		}
	}


	if(KITSwitch==1 && iIDA == iIDAlast && KIT_Zeit > 0) {
		playerinfo(iIDA,lastName,MAX_DATA_LENGTH); 
		Kill_In_Time();
		}
	else if(KITSwitch==1 && iIDA == iIDAlast && KIT_Zeit <= 0) {	
		KIT_Count = 1;
		iIDAlast = iIDA;
		playerinfo(iIDA,lastName,MAX_DATA_LENGTH); 
		KIT_Zeit = (KillInTime + 1);	
		KITTimer = set_timer("Kill_In_Time",1,KIT_Zeit);
		Kill_In_Time();
		}
	else if(KITSwitch==1 && iIDA != iIDAlast && KIT_Count < 3) {	
		KIT_Count = 1;
		iIDAlast = iIDA;
		playerinfo(iIDA,lastName,MAX_DATA_LENGTH); 
		if (KIT_Zeit > 0) {
			kill_timer(KITTimer);
		}
		KIT_Zeit = (KillInTime + 1);	
		KITTimer = set_timer("Kill_In_Time",1,KIT_Zeit);
		Kill_In_Time();
		}
	else if(KITSwitch==1 && iIDA != iIDAlast && KIT_Count > 2) {	
		iIDAlast = iIDA;
		KIT_Count = 1;
		snprintf( Text, MAX_TEXT_LENGTH, "Double Kill von %s!!",lastName);
		typesay(Text, 6, 255, 255, 255 );
    		snprintf( Text, MAX_TEXT_LENGTH, "%s machte 2 Kills in %i Sekunden!!!",Name,KillInTime);
		say(Text);
		playFile( "misc/dk.wav" );
		if (KIT_Zeit > 0) {
			kill_timer(KITTimer);
		}
		KIT_Zeit = (KillInTime + 1);	
		KITTimer = set_timer("Kill_In_Time",1,KIT_Zeit);
		Kill_In_Time();
		}
	   
	if(fbStatus==1 && FBSwitch>=1) {
	 snprintf( Message, MAX_TEXT_LENGTH, "First Blood: %s!", Name);
	 typesay(Message, 6, 255, 15, 15 );
	 playFile( "misc/fblood.wav" );
	 fbStatus=0;
	 } 
	if (HSCount[ iIDA ]>highScore && HSSwitch == 1 && HSCount[ iIDA ] <= 2) {
		playerinfo(iIDA,lastHSName,MAX_DATA_LENGTH);	
		highScore = HSCount[ iIDA ];
		lastHSid=iIDA;
		}
	else if(HSCount[ iIDA ]>highScore && (lastHighScore!=iIDA) && HSSwitch == 1 && HSCount[ iIDA ] > 2) {
		playerinfo(iIDA,Name,MAX_DATA_LENGTH);
		snprintf(Text,MAX_DATA_LENGTH,"%s hat die Fuehrung mit %i Kills uebernommen !",Name,HSCount[ iIDA ]); 
   		typesay(Text, 6, 255, 15, 15 );
		say(Text);
		if(lastHSid == iIDA){ 
			playsound(Name, "misc/takenlead.wav" );
			}
			else 
				{
				playsound(lastHSName, "misc/lostlead.wav" );
				playsound(Name, "misc/takenlead.wav" );
				}
		highScore = HSCount[ iIDA ];
		lastHighScore=iIDA;
		lastHSid=iIDA;
		playerinfo(iIDA,lastHSName,MAX_DATA_LENGTH);
		}
	else if (HSCount[ iIDA ]==highScore && HSSwitch == 1 && HSCount[ iIDA ] > 2) {
		playsound(Name, "misc/tiedlead.wav" );
		playsound(lastHSName, "misc/tiedlead.wav" );
		lastHighScore=0;
	}
	else if (HSCount[ iIDA ]>highScore && (lastHighScore==iIDA) && HSSwitch == 1 && HSCount[ iIDA ] > 2) {
		highScore = HSCount[ iIDA ];	
		}
	return PLUGIN_HANDLED;
}

public Kill_In_Time() {
		new Text[MAX_TEXT_LENGTH]; 
		KIT_Zeit--;		
		if (KIT_Zeit > 0){
			return PLUGIN_CONTINUE;
			}
					
		if(KIT_Count == KIT_Level1) {
			snprintf( Text, MAX_TEXT_LENGTH, "Double Kill von %s!!!",Name);
			typesay(Text, 6, 255, 255, 255 );
    			snprintf( Text, MAX_TEXT_LENGTH, "%s machte %i Kills in %i Sekunden!!!",Name,KIT_Level1,KillInTime);
			say(Text);
			playFile( "misc/dk.wav" );
			kill_timer(KITTimer);
		} else if(KIT_Count == KIT_Level2) {
			snprintf( Text, MAX_TEXT_LENGTH, "Monster Kill von %s!!!",Name);
			typesay(Text, 6, 255, 255, 255 );
    			snprintf( Text, MAX_TEXT_LENGTH, "%s machte %i Kills in %i Sekunden!!!",Name,KIT_Level2,KillInTime);
			say(Text);
			playFile( "misc/monsterkill.wav" );
			kill_timer(KITTimer);
		} else if(KIT_Count > KIT_Level2){
			snprintf( Text, MAX_TEXT_LENGTH, "Oh mein Gott! %i Kills!!^nEin Mega Mo-mo-mo-Monsterkill von %s",KIT_Count,Name);
			typesay(Text, 6, 255, 255, 255 );				
			snprintf( Text, MAX_TEXT_LENGTH, "%s machte %i Kills in %i Sekunden!!!",Name,KIT_Count,KillInTime);
			say(Text);
			playFile( "misc/monsterkill.wav" );
			kill_timer(KITTimer);
		}
				
		KIT_Count = 0; 		
		KIT_Zeit = 0;	
		return PLUGIN_CONTINUE;
	}
		


public resetfb(HLCommand,HLData,HLUserName,UserIndex)
{
	new Data[MAX_NAME_LENGTH];
	convert_string(HLData,Data,MAX_NAME_LENGTH);
	
	if((strcmp("Round_Start", Data) != 0 ) && FBSwitch == 1)
		return PLUGIN_HANDLED;
	else if (FBSwitch == 1) {
		fbStatus=1;
	}
	return PLUGIN_HANDLED;
}

public resetcount(HLCommand,HLData,HLUserName,UserIndex) 
{ 
   new Data [MAX_DATA_LENGTH]; 
   new x [MAX_DATA_LENGTH]; 

   convert_string( HLData, Data, MAX_DATA_LENGTH ); 
   strsplit(Data,"# ",x,MAX_DATA_LENGTH); 
    
   if(strcmp(Data,"Game_Commencing")==0) 
   { 
	FragCount[ iIDA ] = 0;
	HSCount[ iIDA ] = 0;
   } 
   else if(strcmp(x,"Restart_Round_")==0) 
   { 
	FragCount[ iIDA ] = 0;
	HSCount[ iIDA ] = 0;
   } 
   return PLUGIN_HANDLED; 
}





public plugin_connect(HLUserName, HLIP, UserIndex)
{
	
	if (UserIndex >= 1 && UserIndex <= MAX_PLAYERS) {
		FragCount[UserIndex] = CLEAN_SLATE;
		HSCount[UserIndex] = CLEAN_SLATE;
		

	}
	return PLUGIN_CONTINUE;
}

public plugin_disconnect(HLUserName, UserIndex)
{
	new maxplayers = maxplayercount();
	if (UserIndex >= 1 && UserIndex <= MAX_PLAYERS) {
		FragCount[UserIndex] = CLEAN_SLATE;
		HSCount[UserIndex] = CLEAN_SLATE;
		for( new i = 1; i <= maxplayers; i++ )
		{
		if(HSCount[i] > highScore) {
		highScore = HSCount[i];
		}
	}
	}
	return PLUGIN_CONTINUE;
}


public plugin_init()
{
	plugin_registerinfo("Multikill Announcer.","Announces kills in Time.",STRING_VERSION);
	plugin_registercmd("logd_multikill", "logd_multikill", ACCESS_CONSOLE, "");
	plugin_registercmd("resetfb", "resetfb", ACCESS_CONSOLE, "");
	plugin_registercmd("resetfb", "resetcount", ACCESS_CONSOLE, "");
	
	exec( "logd_reg 57 admin_command logd_multikill" );
	exec( "logd_reg 62 admin_command resetfb" );
	exec( "logd_reg 62 admin_command resetcount" );
	return PLUGIN_CONTINUE;
}


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 13:08 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
bei mir is es so das z.b. teamkills mitgezählt werden und wenn jemand erster is und rausgeht aus dem spiel wird die leaderscore auch nich zurück gesetzt ausserdem wärs ja auch cool wenn man das in 2 teams aufteilen würde also das es einen ter leader und einen ct leader gibt ich krieg das allerdings auch nich hin sowas zu programmieren :roll:

_________________
Geht nich, gibs nich: Suchen, FAQ
www.cola-clan.de - Whiskey@cola-clan.de


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 15:46 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
Also Teamkills zählt es richtig. Jedenfalls hat es das getan als ichs ausprobiert hab und da es auf unserem Server läuft, wär mir bestimmt schon aufgefallen wenns nicht funzen würde (oder ich mach zu wenig TKs :) ). Aber das mit dem ermitteln des neuen Highscores hab ich zwar probiert, scheint aber nicht richtg zu funktionieren. Ich glaube auch mit connect gibts noch ein Prob da ich machmal nach dem Connecten bei 3 Frags (oder so, muss nicht 3 sein) die Meldung bekomme, dass ich die Führung übernommen habe. Ein anderer Spieler hat allerdings schon z. B. 30 Fags. Ich kann mir wirklich nicht erklären wie das zustande kommt aber vielleicht kommt ja noch jemand anderer drauf, was da falsch ist. Wäre schon schön wenn da nochmal jemand n blick drauf werfen würde der etwas davon versteht :) da ich das Plugin als solches richtig gut finde. Es spammt nicht zu sehr den Bilschirm voll und man ist immer im Bilde ob einen schon jemand eingeholt hat. OK, man kann auch auf das Scoreboard gucken aber so machts halt mehr spass :)

Das mit dem einteilen in 2 teams könnte man ja mal angehen wenn es so 100%ig funzt aber solange noch Fehler drin sind macht das glaube ich nicht so viel sinn.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 16:15 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Was mir so auffällt:

Du hast eine globale Variable
Code:
new HSCount[ MAX_PLAYERS ] = {CLEAN_SLATE,...};
In Schleifen (z.B. in disconnect) durchläufst du die aber nicht mit MAX_PLAYERS, sondern fragst den Playercount auf dem Server ab:
Code:
 
new maxplayers = maxplayercount();
...
for( new i = 1; i <= maxplayers; i++ )
...
Das ist verwirrend, da du ja mit dem tastächlichen playercount ganz andere Array-Grenzen haben könntest als das Array tatsächlich hat. Sowas könnte auch zu seltsamen Fehlern führen, was passiert, wenn auf dem Server mehr Leute drauf sind als maxplayercount() liefert? Denn möglich ist das... ich würde da also durchweg mit MAX_PLAYERS arbeiten.

Was für mich noch komisch aussieht, ist die Neuberechnung der Highscore in plugin_disconnect. An allen anderen Stellen, an denen was mit der HighScore-Variable gemacht wird, wird auch lastHighScore etc. mitgeändert. Dort jedoch nicht. Ist das gewollt?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 16:31 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Der Einsatz der maxplayercount() Funktion ist schon korrekt, da diese den Playercount vom Server zurückgibt. MAX_PLAYERS ist jedoch eine Konstante mit dem Wert 32 (glaub ich).


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 16:51 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Der Unterschied von maxplayercount() und MAX_PLAYERS ist mir schon klar.

Das Array ist eben mit [MAX_PLAYERS] deklariert, und so wie ich den Code verstehe soll an dieser Stelle das gesamte Array durchlaufen werden um nach einem höheren Wert für Highscore zu suchen.

Durch die Abfrage mit maxplayercount() wird jedoch nur ein Teil des Arrays durchlaufen. Das kann zu Inkonsistenzen führen, vor allem dann wenn es wie in früheren HL-Versionen immer noch möglich ist, daß mehr Spieler als maxplayercount() auf dem Server sind.

Meiner Meinung nach besteht die Gefahr, daß dort gültige Einträge aus dem Array übersehen werden. Die Behandlung des Arrays mit einer willkürlich gewählten niedrigeren Array-Größe ist inkonsistent.


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 57 Beiträge ]  Gehe zu Seite 1 2 3 Nächste


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 ]"