Ein neues Thema erstellen  Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Eine Sache in einem Plugin ändern?
BeitragVerfasst: 08.07.2002, 14:45 

Registriert: 31.03.2002, 19:51
Beiträge: 276
Wohnort: Hamburg
Hi

Also ich würde gerne mal wissen, wo man im Logd-Plugin "tk" das kicken von der Console ausschalten kann? Ich möchte nur, dass die Spieler zur Strafe explodieren, doch sie sollen nicht gekickt werden! Ich habe mir mal die "SMA" angeschaut, dch für mich ist das ne andere Sprache. :(


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.07.2002, 14:58 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Durchsuch doch das SMA einfach mal nach dem Wörtchen "kick".

Wenn irgendwo sowas wie
Code:
snprintf(sCmd, MAX_COMMAND_LENGTH, "kick %s", sPlayer)
exec(sCmd)
oder so ähnlich steht... einfach mal probieren, das auszukommentieren, also diese Textzeilen mit einem /* text */ umschließen.

Ich kenne das Plugin selbst leider nicht und habe auch keine Zeit nach dem Source zu suchen.


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

Registriert: 31.03.2002, 19:51
Beiträge: 276
Wohnort: Hamburg
Code:
/*
* Bud-froggy Productions -- July 22nd, 2001
* Team Kill Detection®
*
* Detects team kills and attacks
*
* Place in logd_kill
*/


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

#define ACCESS_CONSOLE 131072
#define ACCESS_FORGIVE 256

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

#define CLEAN_SLATE 0
#define TK_LIMIT 3
new TkCount[MAX_PLAYERS] = {CLEAN_SLATE,...};

new LastTker = 0;
new LastTked = 0;
new BeLastTker = 0;
new BeLastTked = 0;

/******************************
	Helper Functions
*******************************/
Announce()
{
	say("[LOGD-TK] Team Killing is an offense on this server.");
	say("[LOGD-TK] Team Killers can however be forgiven if the killed says !forgivetk.")
}


tkPunish(iID)
{
	new Message[ MAX_TEXT_LENGTH ];
	new Name[ MAX_NAME_LENGTH ];


	if( !playerinfo( iID, Name, MAX_NAME_LENGTH ) )
		return 0;


	TkCount[ iID ] = TkCount[ iID ] + 1;


	if(TkCount[iID] < 0)
	{
		log("[LOGD] Error: tkpunish -> TkCount was inferior to 0.");
		return 0;
	}

	if( TkCount[iID] < TK_LIMIT )
	{
		new Params[ MAX_TEXT_LENGTH ];
		snprintf( Params, MAX_TEXT_LENGTH, "%s %i", Name, 19 );
		plugin_exec("admin_mslap",Params);
		snprintf( Message, MAX_TEXT_LENGTH, "%s^nTK Warning %i of %i", Name, TkCount[iID], TK_LIMIT );
		typesay( Message, 10, 255, 255, 255 );
	}
	else if( TkCount[iID] == TK_LIMIT )
	{
		plugin_exec( "admin_slay",Name );
		snprintf( Message, MAX_TEXT_LENGTH, "%s^nViolated %i TK Warning", Name, TK_LIMIT );
		typesay( Message, 10, 255, 255, 255 );
	}
	else
	{
		ban(Name,30); 	//30 minute ban
		snprintf( Message, MAX_TEXT_LENGTH, "%s^nExceded %i TK Warning", Name, TK_LIMIT );
		typesay( Message, 10, 255, 255, 255 );
	}

	Announce()  //public statement about forgiving
	return 1;
}


/*****************************
	Admin Functions
******************************/



public logd_teamkill(HLCommand,HLData,HLUserName,UserIndex)
{
	new iIDA;
	new iIDV
	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 );


	iIDA = strtonum( sIDA );
	iIDV = strtonum( sIDV );


	if(playerinfo(iIDA, Data, MAX_NAME_LENGTH, iUserID, iWONID, iTeamA))
	{
		if(playerinfo(iIDV, Data, MAX_NAME_LENGTH, iUserID, iWONID, iTeamV))
		{
			if(iTeamV != iTeamA)
				return PLUGIN_HANDLED;
			else {
				tkPunish(iIDA);
				BeLastTker = LastTker;
				BeLastTked = LastTked;
				LastTker = iIDA;
				LastTked = iIDV;
				//new Message[ MAX_DATA_LENGTH ];
				//snprintf(Message,MAX_DATA_LENGTH, "[Logd-tk]TK Assignment: LastTker<%i> LastTked<%i> BeLastTker<%i> BeLastTked<%i>", LastTker, LastTked,BeLastTker, BeLastTked );
				//log(Message);
			}
		}
	}

	return PLUGIN_HANDLED;
}


forgiveMostRecent() {
	new NameV[MAX_NAME_LENGTH];
	new NameP[MAX_NAME_LENGTH];
	new Message[MAX_DATA_LENGTH];

	//these checks are to make sure we don't touch any numbers
	//if the player doesn't exist (aka this tk was already forgiven)
	if( LastTked == 0 || LastTker == 0 ) {
		//snprintf(Message,MAX_DATA_LENGTH, "[Logd-tk]MostRecentTK doesn't exist <%i> <%i>", LastTker, LastTked );
		//log(Message);
		return 0;
	}

	if( !playerinfo(LastTker,NameP,MAX_NAME_LENGTH) ) {
		return 0;
	}
	if( !playerinfo(LastTked,NameV,MAX_NAME_LENGTH) ) {
		return 0;
	}

	TkCount[ LastTker ] = TkCount[ LastTker ] - 1;

	snprintf(Message,MAX_DATA_LENGTH,"[LOGD-TK] %s has forgiven %s.", NameV, NameP);
	say(Message);

	LastTked = BeLastTked;
	LastTker = BeLastTker;
	BeLastTked = 0;
	BeLastTker = 0;

	return 1;
}
forgiveLeastRecent() {
	new NameV[MAX_NAME_LENGTH];
	new NameP[MAX_NAME_LENGTH];
	new Message[MAX_DATA_LENGTH];

	//these checks are to make sure we don't touch any numbers
	//if the player doesn't exist (aka this tk was already forgiven)
	if( BeLastTked == 0 || BeLastTker == 0 ) {
		//snprintf(Message,MAX_DATA_LENGTH, "[Logd-tk]LeastRecent doesn't exist <%i> <%i>", BeLastTker, BeLastTked );
		//log(Message);
		return 0;
	}
	if( !playerinfo(BeLastTker,NameP,MAX_NAME_LENGTH) ) {
		return 0;
	}
	if( !playerinfo(BeLastTked,NameV,MAX_NAME_LENGTH) ) {
		return 0;
	}

	TkCount[ BeLastTker ] = TkCount[ BeLastTker ] - 1;

	snprintf(Message,MAX_DATA_LENGTH,"[LOGD-TK] %s has forgiven %s.", NameV, NameP);
	say(Message);

	BeLastTked = 0;
	BeLastTker = 0;

	return 1;
}

public admin_forgivetk(HLCommand,HLData,HLUserName,UserIndex) {
	new Data[MAX_DATA_LENGTH];
	convert_string(HLData, Data, MAX_DATA_LENGTH);

	if( strcmp( Data, "new" ) == 0 ) {
		forgiveMostRecent();
	} else if( strcmp( Data, "old" ) == 0 ) {
		forgiveLeastRecent();
	}
	return PLUGIN_HANDLED
}

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

	convert_string(HLData, Data, MAX_DATA_LENGTH);
	strstripquotes(Data);

	if( Data[0] != '!' ) //quick check to save time since its not a full string compare
		return PLUGIN_CONTINUE;
	else if(strcmp(Data,"!forgivetk") == 0)
	{
		if(UserIndex == LastTked)
		{
			forgiveMostRecent();
		}
		else if(UserIndex == BeLastTked)
		{
			forgiveLeastRecent();
		}
	}
	return PLUGIN_CONTINUE;
}


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

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


public plugin_init()
{
	plugin_registerinfo("Team Killing Detection",".",STRING_VERSION);
	plugin_registercmd("logd_teamkill", "logd_teamkill", ACCESS_CONSOLE, "");
	plugin_registercmd("admin_forgivetk", "admin_forgivetk", ACCESS_FORGIVE, "admin_forgivetk <new|old> : forgives most recent or least recent TK (only usable by admins)");
	plugin_registercmd("say","HandleSay",ACCESS_ALL);
	plugin_registerhelp("say",ACCESS_ALL,"say !forgivetk: Forgives your Team Killer.");

	exec( "logd_reg 57 admin_command logd_teamkill" );
	return PLUGIN_CONTINUE;
}
/Edit: Hmm ich habe so was nicht gefunden, denn für ein Leien ist das echt ne Fremdsprache!


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.07.2002, 17:15 

Registriert: 12.06.2002, 16:13
Beiträge: 62
Ändere mal
Code:
  else if( TkCount[iID] == TK_LIMIT )
in
Code:
  else if( TkCount[iID] >= TK_LIMIT )
und umschließe das nachfolgende else mit /* */, etwa so:
Code:
/*
else
{
    ... weiterer code ...
}
*/
Zum Compilieren in den myscripts/ ordner und auf compile_all.bat klicken; danach (wenn kein error auftrat) liegt die AMX in dem mybinaries/ ordner.

Teste es und sag mir obs klappt. Garantieren kann ich für nix, ich hab den Code nur kurz überflogen.[/b]


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.07.2002, 19:03 

Registriert: 31.03.2002, 19:51
Beiträge: 276
Wohnort: Hamburg
Hey Klasse erstmal, werde es gleich mal testen...

/edit 1: Also bis jetzt hat er schon mal richtig Compiliert (geklappt)
Mal sehen ob es gleich auch im Spiel funzt...


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.07.2002, 19:19 

Registriert: 31.03.2002, 19:51
Beiträge: 276
Wohnort: Hamburg
Leider hat er mich nach drei mal tk rausgeschmissen. :(

So habe ich das in der SMA geändert:
Code:
/*
else if( TkCount[iID] >= TK_LIMIT )
{
plugin_exec( "admin_slay",Name );
snprintf( Message, MAX_TEXT_LENGTH, "%s^nViolated %i TK Warning", Name, TK_LIMIT );
typesay( Message, 10, 255, 255, 255 );
}
*/


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

Registriert: 12.06.2002, 16:13
Beiträge: 62
Äh nein.

Mach die /* */ da wieder weg.

Die sollten um das NACHFOLGENDE else herum.

also
Code:
else if( TkCount[iID] >= TK_LIMIT )
{
    ...mehr code...
}
/*
else
{
    ...noch mehr code...
}
*/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08.07.2002, 21:17 

Registriert: 31.03.2002, 19:51
Beiträge: 276
Wohnort: Hamburg
Danke es funktioniert :)

Frage nebenbei:

Gibt es eigentlich das TK-Plugin, welches in Statsme 2.5.6 drinne steckt, auch einzeln? Das hat mir nämlich am besten gefallen, doch Statsme funktioniert bei mir nicht. Der geteamkillte bekam dann eine Liste, wo er wählen konnte "kill", "slap" (nähste Runde) oder "forgive" und das alles ohne es in den Chat zu schreiben. :)


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.07.2002, 03:17 

Registriert: 04.04.2002, 18:49
Beiträge: 148
warum geht statsme bei dir nicht?

_________________
!!!!!Hardcore will never die!!!!!!

visit us at www.bslc-clan.eu


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 09.07.2002, 11:29 

Registriert: 14.05.2002, 16:01
Beiträge: 161
Wohnort: Osnabrück, Germany
Weil StatsMe nur selten geht und normalerweise nicht funktioniert :D

Zumindest auf listenservern


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 10.07.2002, 18:55 

Registriert: 31.03.2002, 19:51
Beiträge: 276
Wohnort: Hamburg
Ein anderes Plugin!

Wo kann ich beim "logd-Plugin hp 3.5" die Zeitdauer der HP-Anzeige ändern?
Ich finde die grüne HP Anzeige verschwindet zu schnell und ich würde gerne 2 Sekunden oder so verlängern. Man kann zwar dann noch "hp" in den Chat eingeben, doch eine längere Zeitdauer finde ich praktischer. :)


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 10.07.2002, 19:14 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
tja, geht leider nicht, da es sozusagen "private Nachrichten"(messageex) an die Spieler sind. Da kann man die Anzeige-Zeit nicht angeben.

Sorry.

(jaja...Ein timer nehmen und ihn 10mal wiederholen lassen...ist aber nervig und belastet wahrscheinlich böse den Server.)

_________________
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  [ 12 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 ]"