Ein neues Thema erstellen  Auf das Thema antworten  [ 57 Beiträge ]  Gehe zu Seite Vorherige 1 2 3 Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 16:59 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Im Gegenteil, es entstehen Inkonsistenzen wenn Du das Array mit der Konstante durchläufst. Wenn der Server nur 14 Player akzeptiert, dann ist Dir sicher klar, warum ein Durchlauf für 32 Player unsinnig ist.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 17:11 

Registriert: 11.04.2002, 04:36
Beiträge: 188
Wohnort: hannover
kann mir jemand sagen wo ich die sounds lead.. herkriege :-?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 18:17 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Du hast mich wohl nicht oder falsch verstanden, Warhead, aber gut, ich akzeptiere deine Meinung und bleibe bei meiner.

Es gibt wichtigeres als das :wink:


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 20:12 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
@ Smudo: ich mein beim first blood: wenn ich n spiel aufmach und n TK mach dann sagt er First Blood. oder hab ich noch ne alte version deines plugins ?

@ sentinel: suchfunktion in diesem forum benutzen (bin leider zu faul da jetzt selbst nach zu suchen)

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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 20:38 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
@ sentinel: Hab dir die Sounds per Mail geschickt.

@ frostschutz: Ich werde es mal in der disconnect Schleife mit MAX_PLAYERS probieren. Wenn es tatsächlich sein kann, dass auf dem Server mehr Leute drauf sind als maxplayercount() liefert, kann das auf jeden Fall einer der Fehler sein.
Zitat:
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?
aehmmm ja, eigentlich bisher schon. Es würde mir ja reichen wenn nach dem disconnect der neue Highscore richtig ermittelt würde und ab da das Pugin normal weiterlaufen würde. Es würde dadurch ja nur eine einzige Meldung verloren gehen. Aber leider funktioniert das nicht. Ich werde erstmal versuchen maxplayercount() durch MAX_PLAYERS zu ersetzen. Vielleicht behebt das ja das Problem.

THX


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 20:42 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
Ist doch richtig [COLA]*Whiskey. Wenn du dein Teammate umballerst blutet der doch auch oder?
Aber deinem Counter wird ein Kill abgezogen!


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 21:05 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Ich glaube ich habe einen logischen Fehler in deinem Code gefunden:

1. Immer wenn sich ein Wert im HSCount-Array ändert, prüfst du, ob dieser Wert höher ist als HighScore und erhöhst HighScore in diesem Fall.
2. Daraus folgt, daß HighScore immer den höchsten Wert der sich im HighScore-Array befindlichen Einträge besitzt.
3. In plugin_disconnect durchläufst du eine Schleife und suchst nach einem höheren Wert von HighScore, der nach 1. und 2. gar nicht existieren kann.

Wenn Punkte 1-3 zutreffen, ist die Schleife in plugin_disconnect sinnlos; der Fall HSCount > Highscore kann niemals eintreten. Ich habe deinen Code allerdings nur überflogen und hoffe, da nichts übersehen zu haben. Sollte einer der Punkte 1-3 nicht zutreffen, ignoriere bitte diesen Post.

Ich kann jetzt anhand des Codes nur vermuten, was deine Absicht hinter dieser Schleife ist. Du versuchst, den maximalen Wert in dem Array zu ermitteln (verdammt, kann man in small die min/max Funktionen nicht mit Arrays füttern? Wie umständlich :-(). Ich vermute, um den neuen Highscore-Halter zu ermitteln... bzw. um die HighScore zurückzusetzen auf den Wert, den der höchste Spieler im Moment hat.

Wenn ich das so richtig vermute, dann mußt du

1. So eine Schleife nur durchlaufen, wenn sich der Highscore-Halter disconnected hat. Leute mit niedrigerer Score die den Server verlassen sind dann uninteressant.
-> Kannst du mit Highscore == HSCount[ userindex] prüfen denk ich

2. Vor dem Durchlaufen der Schleife Highscore auf 0 setzen, damit das auf höhere Werte gesetzt werden kann.

[edit 14.06.02 22:27]
Wenn die obigen Vermutungen stimmen, hast du übrigens in der resetcount-Funktion sehr ähnliche Probleme. Btw, wenn du eh schon eine Funktion hast, die die Score eines Einzelusers zurücksetzt, warum rufst du die beim Disconnect dann nicht einfach für den User auf?
Sonst musst du ja Code kopieren, und Code kopieren heißt Fehler kopieren...


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 21:34 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Zitat:
@ frostschutz: Ich werde es mal in der disconnect Schleife mit MAX_PLAYERS probieren. Wenn es tatsächlich sein kann, dass auf dem Server mehr Leute drauf sind als maxplayercount() liefert, kann das auf jeden Fall einer der Fehler sein.
Das ist Blödsinn.
Zitat:
Ich werde erstmal versuchen maxplayercount() durch MAX_PLAYERS zu ersetzen. Vielleicht behebt das ja das Problem.
Unnötig.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 21:37 

Registriert: 17.12.2001, 01:00
Beiträge: 697
Zitat:
Du hast mich wohl nicht oder falsch verstanden, Warhead, aber gut, ich akzeptiere deine Meinung und bleibe bei meiner.
Erkläre mir mal, warum bei einem 14-Player-Server das Array 32 mal (MAX_PLAYERS) durchlaufen werden muss?

Aber Du bist ja, wie Du schon geschrieben hast, kein Programmierer sondern Theoretiker... :wink:


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 21:49 

Registriert: 12.06.2002, 16:13
Beiträge: 62
// --- editiert 23:10

MAX_PLAYERS ist übrigens 32 + 1. Danke für den Tipp, ich wußte bisher gar nicht daß so ein Wert bereits von Adminmod-Seite definiert ist...

Weil das Plugin sonst durchdreht wenn 20 Leute auf dem Server sind und ich nun das Playerlimit auf 8 runtersetze. Dann liefert maxplayercount 8 und es werden nur 8 stellen des arrays durchlaufen obwohl immernoch 20 leute drauf sind.

die leute werden nämlich nicht runtergeworfen, es kann einfach keiner mehr connecten, in der serverübersicht steht dann halt 20/8 players on server... d.h. da werden dann plötzlich Einträge ignoriert.

Zumindest hatte ich auf meiner letzten LAN-Party (vor 1,5 Jahren) in dem Zusammenhang Probleme. Es ist einfach unsauber, da nur das halbe Array zu durchlaufen.

Wenn du so Schleifendurchläufe sparen willst, würd ich dir raten, das anders zu machen:

Mach ne globale Variable iMaxID. Wenn einer connected und dem seine UserId > iMaxID ist, setze iMaxID auf die UserId.

Wenn einer disconnected und dem seine UserId == iMaxID ist, setz iMaxID auf den nächstniedrigeren Wert, also z.B. schau welcher Player jetzt die höchste ID hat und setz den Wert von iMaxID entsprechend.

Dann kannst du solche Arrays immer mit der passenden Größe durchlaufen, z.B. auf nem 32 Player Server brauchst wenn 4 Leute drauf sind auch nur 4 mal die Schleife zu durchlaufen.

Nur, warum ist auf die Idee vorher noch keiner gekommen? Vermutlich weils totaler Blödsinn ist. :lol: Es ist einfach sauberer das ganze Array zu durchlaufen, auch wenn mans nicht müßte, sonst können da ungeahnte Seiteneffekte auftreten.

Der Unterschied zwischen unseren Meinungen ist kurz erklärt:
Du gehst davon aus, daß der Wert von maxplayercount() konstant ist.
Ich gehe davon aus, daß der Wert dieser Funktion weder in Theorie noch in der Praxis konstant ist und ich mich daher nicht auf ihn verlassen kann.

Wobei wir uns die Diku über diese Schleife wohl sparen können, da erstmal geprüft werden muß, ob ich mit meiner Vermutung, daß die Schleife so wie sie da steht sowieso keinen Sinn hat, richtig liege. :roll:


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 22:01 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
Also frostschutz, du hast auf jeden Fall recht. Der highScore muss auf jeden Fall an der Stelle auf 0 gesetzt werden. Ich dachte auch eigentlich, dass ich das gemacht hätte. Hab ich wohl irgendwie verpennt.

habs mal geändert in:
Code:
public plugin_disconnect(HLUserName, UserIndex)
{
	if (UserIndex >= 1 && UserIndex <= MAX_PLAYERS && highScore == HSCount[UserIndex]) {
		FragCount[UserIndex] = CLEAN_SLATE;
		HSCount[UserIndex] = CLEAN_SLATE;
		highScore = 0;
		for( new i = 1; i <= MAX_PLAYERS; i++ )
		{
		if(HSCount[i] > highScore) {
		highScore = HSCount[i];
		}
	}
	}
	return PLUGIN_CONTINUE;
}
Ich hab auch gleich mal die Sache mit MAX_PLAYERS/maxplayercount() geändert. Mal sehen ob es was bringt. Wen es jetzt richtig läuft werde ich es anchliessend nochmal mit maxplayercount() ausprobieren, da Warhead sich da scheinbar sehr sicher ist, dass das auch hätte funzen muessen. Das Probieren wird etwas dauern, da die Situationen in denen es Probs gab nicht so oft vorkommen.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 22:07 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
Hmmm,
meint ihr wirklich das es einen grossen Unterschied macht ob die Schleife 16 mal oder 32+1 :) mal durchlaufen wird? Erst recht wo jetzt die Abfrage drin ist ob derjenige der den Server verlässt, den highScore hat?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 22:35 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Ooooh, endlich mal wieder einer, der von der Materie wirklich was versteht. Duerfen wir den behalten Qualle? Biiiiitte.
Zitat:
Weil das Plugin sonst durchdreht wenn 20 Leute auf dem Server sind und ich nun das Playerlimit auf 8 runtersetze. Dann liefert maxplayercount 8 und es werden nur 8 stellen des arrays durchlaufen obwohl immernoch 20 leute drauf sind.
Code:
Master server communication disabled.
maxplayers
"maxplayers" is "6"
maxplayers 4
maxplayers cannot be changed while a server is running.
Hmmmm, verrat mir mal, wie Du bei einem laufenden Server maxplayers aenderst? Bei mir scheint er das nicht zuzulassen.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 22:41 

Registriert: 31.12.2001, 01:00
Beiträge: 514
Wohnort: Lüneburg
ja verrat es mir auch, denn das geht normal nich :P

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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 22:42 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Das dürfte jetzt aber nen Laufzeitfehler verursachen.

Das Array ist doch mit HSCount[MAX_PLAYERS] vereinbart, d.h. gültige indices sind 0..MAX_PLAYERS-1. (Es sei denn Small ist da nicht C-konform).

Wenn deine Schleife jetzt bis i <= MAX_PLAYERS durchläuft, ist das ein Durchlauf zu viel, die Ausführung bricht ab! Vorsicht! Das muss also i < MAX_PLAYERS sein.

// edit
Wenn ichs richtig sehe, sind alle <= MAX_PLAYERS - Checks falsch, und müssen in < MAX_PLAYERS geändert werden. MAX_PLAYERS ist bereits so definiert, daß es um 1 größer als der maximal erlaubte Index ist.

Kann das ein erfahrener Plugin-Progger bestätigen?


Zuletzt geändert von frostschutz am 14.06.2002, 23:15, insgesamt 2-mal geändert.

Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.06.2002, 22:52 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Okay, wenn man maxplayers nicht ändern kann, d.h. man davon ausgehen kann, daß maxplayercount eine konstanten Wert liefert, kann ich meine Einwände in der Richtung wohl zurücknehmen. Da lag ich wohl falsch.

Es ist aber schade, daß sich gleich verschiedene Leute darüber lustig machen müssen. :cry: Ich versuche hier wenigstens zu helfen. Wenn ihr euch so toll auskennt, dann sagt dem armen Smudo doch gleich was denn so alles falsch ist und laßt mich ahnungslosen Volldeppen nicht stundenlang herumspekulieren.

Um dann zu dem effizienteren Schleifendurchlauf zurückzukehren, kann man ja die noch effizientere Lösung verwenden, die ich ungefähr 3 Posts vorher vorgestellt habe.

Wer zuletzt lacht, lacht am besten. :lol:

// edit
Für den einzelnen Schleifendurchlauf in diesem Fall hier wäre das allerdings Overkill, also das besser nicht implementieren, Smudo.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.06.2002, 11:28 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
Also erst mal echt vielen Dank an frostschutz, dass du mal einen Blick auf den Code geworfen hast. Super, hast mir echt sehr geholfen!! Ich habs nicht begriffen warum das nicht funktionierte da ich immer fest davon ausgegangen war das ich die Variable auf 0 gesetzt hatte. Bin überhaupt nicht darauf gekommen, dass mal zu überprüfen. Mal wieder den Wald vor lauter Bäumen nicht gesehen :)
Auch wenn das mit dem MAX_PLAYERS ne Ente war, du hasst es jedenfalls gut gemeint und versucht mir damit zu helfen :)


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.06.2002, 13:47 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Lustigmachen? Wer macht sich hier lustig ueber Dich? Sofort vortreten!

Das mit dem <= MAX_PLAYERS stimmt, Indices laufen in Small so wie in C von 0 ab. Dass MAX_PLAYERS 32+1 ist, hat damit zu tun, dass Playerindices von 1 bis maxplayercount() laufen. Das koennte man zwar eines nach unten verschieben, so ist es aber bequemer. Der Entityindex 0 ist dabei nicht etwa ungueltig, sondern der Server selber. Davon sollte man also die Finger lassen.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 16.06.2002, 15:06 

Registriert: 08.01.2002, 19:41
Beiträge: 74
Wohnort: Minos Korva (11 Lichtjahre vom McAlister C5 Nebel)
So, das habt ihr jetzt davon. Version 2 meines Mulikill Plugins.
Einige Fehler wurden behoben und mann kann es jetz vom Spiel aus konfigurieren. Die Einstellungen werden in der vault.ini gespeichert.
Code:
/*
* Multikillcounter by [TV]Smudo.
* Based on Bud-froggys Killing Streak Announcer®.
*
* Funktionen des Plugins:
* - Zeigt an, dass ein Spieler X Kills in X Sekunden gemacht hat.
* - Zeigt den ersten Kill pro Runde oder pro Map an.
* - Zeigt an, dass ein Spieler die Fuehrung uebernommen hat.
*
* vault.ini:
* admin_mk_fb 1		//First Blood. 0=OFF, 1=First Blood pro Runde , 2=First Blood pro Map.
* admin_mk_hs 1		//Kills in Time Switch. 1=ON or 0=OFF.
* admin_mk_kit 1	//Highscore. 1=ON or 0=OFF.
* Einstellungen die im Spiel veraendert werden, werden in der vault.ini gespeichert.
*/

#pragma dynamic 16384

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

new STRING_VERSION[MAX_DATA_LENGTH] = "v2";

new FBSwitch;
new KITSwitch;
new HSSwitch;

#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;

public vaultdata()
{
new Data[MAX_DATA_LENGTH];

get_vaultdata("admin_mk_fb",Data,MAX_DATA_LENGTH);
if(Data[0] == '0') {
	FBSwitch = 0;
	}
else if(Data[0] == '1'){
	FBSwitch = 1;	
	}
else if(Data[0] == '2'){
	FBSwitch = 2;	
	}
get_vaultdata("admin_mk_kit",Data,MAX_DATA_LENGTH);
if(Data[0] == '0') {
	KITSwitch = 0;
	}
else if(Data[0] == '1'){
	KITSwitch = 1;	
	}
get_vaultdata("admin_mk_hs",Data,MAX_DATA_LENGTH);
if(Data[0] == '0') {
	HSSwitch = 0;
	}
else if(Data[0] == '1'){
	HSSwitch = 1;	
	}
return PLUGIN_HANDLED;
}

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 maxplayers = maxplayercount();
   new Data [MAX_DATA_LENGTH]; 
   new Data2 [MAX_DATA_LENGTH];
      
   convert_string( HLData, Data, MAX_DATA_LENGTH ); 
   strsplit(Data,"# ",Data2,14);
   if((strcmp(Data,"Game_Commencing")==0) || (strcmp(Data2,"Restart_Round")==0))
   { 
	for( new i = 1; i <= maxplayers; i++ )
		{
		FragCount[i] = 0;
		HSCount[i] = 0;
	} 
	if (FBSwitch == 1) {
		fbStatus=1;
	}
   }
   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 && highScore == HSCount[UserIndex]) {
		FragCount[UserIndex] = CLEAN_SLATE;
		HSCount[UserIndex] = CLEAN_SLATE;
		highScore = 0;
		for( new i = 1; i <= maxplayers; i++ )
		{
		if(HSCount[i] > highScore) {
		highScore = HSCount[i];
		}
	}
	}
	return PLUGIN_CONTINUE;
}


public admin_mk_fb(HLCommand,HLData,HLUserName,UserIndex) 
{
	new Data[MAX_DATA_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	convert_string(HLData,Data,MAX_DATA_LENGTH); 
	if(strcmp(Data,"0")==0)
	{
		FBSwitch = 0;
		set_vaultdata("admin_mk_fb",Data);
		selfmessage("First Blood ist ausgeschaltet.");
	}
        else if(strcmp(Data,"1")==0)
        {
   		FBSwitch = 1;
		set_vaultdata("admin_mk_fb",Data);
		selfmessage("First Blood ist eingeschaltet und wird jede Runde angezeigt.");
        }
        else if(strcmp(Data,"2")==0)
        {
   		FBSwitch = 2;
		set_vaultdata("admin_mk_fb",Data);
		selfmessage("First Blood ist eingeschaltet und wird einmal pro Map angezeigt.");
        }
	
	else 
        {
        	get_vaultdata("admin_mk_fb",Data,MAX_DATA_LENGTH);
		snprintf(Text,MAX_TEXT_LENGTH,"First Blood Status: %s",Data);
        	selfmessage("Ungueltiger Wert fuer admin_mk_fb.");
        	selfmessage("0: First Blood Aus, 1: First Blood pro Runde, 2: First Blood pro Map.");
		selfmessage(Text);
        }
	return PLUGIN_HANDLED;
}

public admin_mk_kit(HLCommand,HLData,HLUserName,UserIndex) 
{
	new Data[MAX_DATA_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	convert_string(HLData,Data,MAX_DATA_LENGTH); 
	if(strcmp(Data,"0")==0)
	{
		KITSwitch = 0;
		set_vaultdata("admin_mk_kit",Data);
		selfmessage("Kill in Time ist ausgeschaltet.");
	}
        else if(strcmp(Data,"1")==0)
        {
   		KITSwitch = 1;
		set_vaultdata("admin_mk_kit",Data);
		selfmessage("Kill in Time ist eingeschaltet.");
        }
        else 
        {
        	get_vaultdata("admin_mk_kit",Data,MAX_DATA_LENGTH);
		snprintf(Text,MAX_TEXT_LENGTH,"Kill in Time Status: %s",Data);
        	selfmessage("Ungueltiger Wert fuer admin_mk_kit.");
        	selfmessage("0: Kill in Time Aus, 1: Kill in Time An.");
		selfmessage(Text);
        }
	return PLUGIN_HANDLED;
}

public admin_mk_hs(HLCommand,HLData,HLUserName,UserIndex) 
{
	new Data[MAX_DATA_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	convert_string(HLData,Data,MAX_DATA_LENGTH); 
	if(strcmp(Data,"0")==0)
	{
		HSSwitch = 0;
		set_vaultdata("admin_mk_hs",Data);
		selfmessage("Highscore ist ausgeschaltet.");
	}
        else if(strcmp(Data,"1")==0)
        {
   		HSSwitch = 1;
		set_vaultdata("admin_mk_hs",Data);
		selfmessage("Highscore ist eingeschaltet.");
        }
        else 
        {
        	get_vaultdata("admin_mk_hs",Data,MAX_DATA_LENGTH);
		snprintf(Text,MAX_TEXT_LENGTH,"Highscore Status: %s",Data);
        	selfmessage("Ungueltiger Wert fuer admin_mk_hs.");
        	selfmessage("0: Highscore Aus, 1: Highscore An.");
		selfmessage(Text);
        }
	return PLUGIN_HANDLED;
}


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("resetcount", "resetcount", ACCESS_CONSOLE, "");
		
	plugin_registercmd("admin_mk_fb", "admin_mk_fb", ACCESS_BAN, "admin_mk_fb (2/1/0):  0=FirstBlood AUS, 1=FirstBlood pro Runde, 2=FirstBlood pro Map");
	plugin_registercmd("admin_mk_kit", "admin_mk_kit", ACCESS_BAN, "admin_mk_kit (1/0):  0=Kills in Time: AUS, 1=Kills in Time: AN ");
	plugin_registercmd("admin_mk_hs", "admin_mk_hs", ACCESS_BAN, "admin_mk_hs (1/0):  0=HighScore: AUS, 1=HighScore: AN ");
	
	
	
	
	exec( "logd_reg 57 admin_command logd_multikill" );
	exec( "logd_reg 62 admin_command resetfb" );
	exec( "logd_reg 62 admin_command resetcount" );
	vaultdata();
	return PLUGIN_CONTINUE;
}
Viel spass damit :)


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 21.06.2002, 18:13 

Registriert: 04.04.2002, 18:49
Beiträge: 148
mal sone kleine frage totaler noob auf dem gebiet
plugin_multikill.sma(106) Warning [217]: loose indentation
plugin_multikill.sma(107) Warning [217]: loose indentation
plugin_multikill.sma(212) Warning [217]: loose indentation
plugin_multikill.sma(213) Warning [217]: loose indentation
plugin_multikill.sma(355) Warning [217]: loose indentation
plugin_multikill.sma(361) Warning [217]: loose indentation
plugin_multikill.sma(365) Warning [217]: loose indentation
plugin_multikill.sma(368) Warning [217]: loose indentation
plugin_multikill.sma(369) Warning [217]: loose indentation
plugin_multikill.sma(371) Warning [217]: loose indentation
plugin_multikill.sma(390) Warning [217]: loose indentation
plugin_multikill.sma(396) Warning [217]: loose indentation
plugin_multikill.sma(397) Warning [217]: loose indentation
plugin_multikill.sma(399) Warning [217]: loose indentation
plugin_multikill.sma(418) Warning [217]: loose indentation
plugin_multikill.sma(424) Warning [217]: loose indentation
plugin_multikill.sma(425) Warning [217]: loose indentation
plugin_multikill.sma(427) Warning [217]: loose indentation

das spuckt er mir beim compilieren aus
ist das schlimm?


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 57 Beiträge ]  Gehe zu Seite Vorherige 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 ]"