Ein neues Thema erstellen  Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 01.01.2003, 23:36 

Registriert: 14.05.2002, 22:37
Beiträge: 33
Hallo erstmal ;)

also ich hab keinerlei plan wie man plugins schreibt aber ich denke für jemanden, der es kann wird dies kein problem sein. Folgendes:

Ich wollte ein plugin wo ich ein schlüsselwort angeben kann sagen wir mal z.B. "soundliste"
Wenn nun jemand in CS im Chat eingibt soundliste soll wie die MOTD sich ein fenster öffnen und darin soll der inhalt von z.B. soundliste.txt erscheinen und mit OK bringt man das fenster wieder weg.

Ich hoffe es haben alle kapiert was ich mein :D und vorallem hoffe ich das mir da jemand weiterhelfen kann !

CyA


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 01.01.2003, 23:39 
AM.de Team

Registriert: 08.07.2002, 21:11
Beiträge: 2192
Auch wenn ich es nicht nutze, ich denk mal 'plugin_sank_sound' geht in diese Richtung

allerdings ohne Fenster

_________________
it's better to burn out, than to fade away


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 02.01.2003, 00:08 

Registriert: 14.05.2002, 22:37
Beiträge: 33
eben ohne fenster und ich wollte es eben mit fensterchen haben, weil es nunmal einfacher ist für jeden !
hab das auch schon auf einen Server gesehen, nur weiss ich dessen IP nichtmehr :(


hab übrigends im milkmancamper plugin gesehen das ich einstellen kann, das er nach 3 verwarnungen kickt (im sourcecode) wollte das umschreiben das er nicht kickt sondern slayed geht das auch ? wie funktioniert das ?!


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 02.01.2003, 09:51 
AM.de Team
Benutzeravatar

Registriert: 23.11.2001, 00:00
Beiträge: 3842
Wohnort: Vor König Arthus
kick durch slay ersetzen. So einfach geht das. ;)

_________________
Der schwarze Ritter triumphiert immer...
WING-Clan


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 02.01.2003, 09:53 

Registriert: 14.05.2002, 22:37
Beiträge: 33
jo nur weiter unten sind angaben mit ACCESS_KICK wenn ich das durch ACCESS_SLAY ersetze, bringt er mir nen ERROR beim Compilieren mit genau diesen ACCES_SLAY befehl warum ?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 02.01.2003, 10:22 
AM.de Team

Registriert: 08.07.2002, 21:11
Beiträge: 2192
Ich nehme mal an, dass ACCES_KICK fast ganz oben im Plugin definiert wurde.
Du muesstest auch dort umbenennen.

_________________
it's better to burn out, than to fade away


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 02.01.2003, 10:56 

Registriert: 14.05.2002, 22:37
Beiträge: 33
also das hier ist das plugin, alles was nun "slay" heisst hiess vorher "kick" kann sich das mal bitte jemand anschaun, denn ACCESS_KICK ist nirgends mehr definiert.

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


/************* THESE VARIABLES ARE GOOD TO EDIT **********************************/
//tells whether to check for campers, enable with admin_campercheck 1 or on and disable
//with admin_campercheck 0
new EnableCamperCheck = 1;
//Check every x seconds for the coordinates.
new CAMPER_TIME=15;
//how many units in any direction they have to have moved in order to not be considered a camper
new CAMPER_TOLERANCE=150;
//number of warnings they have before they get slayed. -1 to disable this feature.
new CAMPER_WARNINGS = 3;
//set to 1 if you want to slap a camper for every time they camp. 0 to disable.
new CAMPER_SLAP=1
//set this to which team is automatically checked. 0 for all, other for team #
new CAMPER_TEAM=0;
//variable to auto start a camper checking vote
#define AUTO_CP_VOTE 0;
//ratio of people who have to vote for camper-checking to turn on/off
#define CP_VOTE_RATIO 30;
/**************** THESE VARIABLES ARE NOT GOOD TO EDIT. REPEAT NOT ****************/

new STRING_VERSION[MAX_DATA_LENGTH] = "2.1 beta";
//PlayerPosition[PLAYERINDEX] [0]=x coordinates, [1]=y coordinates, [2]=z coordinates
new PlayerPosition[MAX_PLAYERS][3];
//Array that holds the number of warnings for each player.
new CamperWarnings[MAX_PLAYERS];

//value that keeps track of the timer
new CamperTimer=0;
new First=1;

public CPVote() {
	new strDummy[10];
	if(vote_allowed()!=1){
		selfmessage("Voting not allowed at this time.");
		return PLUGIN_HANDLED;
	}
	vote("Camper-checking?", "Yes", "No", "HandleCPVote",strDummy);
	return PLUGIN_HANDLED;
}

public HandleCPVote(WinningOption,HLData,VoteCount,UserCount) {
	new Text[MAX_TEXT_LENGTH];
	new strNumber[MAX_NUMBER_LENGTH];
	new Ratio = CP_VOTE_RATIO;
	new strData[MAX_DATA_LENGTH];
	convert_string(HLData, strData,MAX_DATA_LENGTH);
	
	if (VoteCount >= Ratio*UserCount/100) {	
		if (WinningOption==1) {
			if(EnableCamperCheck==1) {
				centersay("Vote over. Camper-checking will stay.",18,249,244,0);
			} else {
				centersay("Vote successful. Camper-checking is on.",18,249,244,0);
				EnableCamperCheck=1;
			}
		} else {
			if(EnableCamperCheck==0) {
				centersay("Vote over. Camper-checking will remain disabled.",18,63,187,239);
			} else {
				centersay("Vote over. Camper-checking has been disabled.",18,63,187,239);
				EnableCamperCheck=0;
			}
		}
	} else {
		numtostr(Ratio*UserCount/100,strNumber);
		if(EnableCamperCheck==1) {
			snprintf(Text, MAX_TEXT_LENGTH, "Camper vote succeeded, but not enough votes for change (needed %s)^nCamper-checking will stay.", strNumber);
		} else {
			snprintf(Text, MAX_TEXT_LENGTH, "Camper vote succeeded, but not enough votes for change (needed %s)^nCamper-checking will remain disabled.", strNumber);
		}
		centersay(Text,18,63,187,239);
	}
}

//Use this function for slying campers.
public CamperSlay(Name[]){
	new Text[MAX_TEXT_LENGTH];
	messageex(Name,"Du wurdest geslayed weil du zu oft gecampt hast.", print_console);
	snprintf(Text,MAX_TEXT_LENGTH,"%s konnte das Campen nicht lassen und wurde getoetet.",Name);
	say(Text);
	slay(Name);
	return PLUGIN_CONTINUE;
}

public HandlePositions(iUser,Name[],x,y,z){
	new ox,oy,oz;
	ox=PlayerPosition[iUser][0];
	oy=PlayerPosition[iUser][1];
	oz=PlayerPosition[iUser][2];
	new Text[MAX_TEXT_LENGTH];
	if( ! (ox-x > CAMPER_TOLERANCE || ox-x < - CAMPER_TOLERANCE || 
	   oy-y > CAMPER_TOLERANCE || oy-y < - CAMPER_TOLERANCE ||
	   oz-z > CAMPER_TOLERANCE || oz-z < - CAMPER_TOLERANCE) ){
	   // He's a f*cking camper!
		if(CAMPER_SLAP==1)
			slap(Name);
		if(CAMPER_WARNINGS==-1){
			messageex(Name,"Du campst zulange, bitte beweg dich !", print_center);
			snprintf(Text,MAX_TEXT_LENGTH,"%s ist am Campen.",Name);
			say(Text);
		}
		else{
			if(CamperWarnings[iUser]==0){

				CamperSlay(Name);
				CamperWarnings[iUser]=CAMPER_WARNINGS;
				return PLUGIN_CONTINUE;
			}
			snprintf(Text,MAX_TEXT_LENGTH,"Du campst zulange, bitte beweg dich !",CamperWarnings[iUser]);
			messageex(Name,Text, print_center);
			snprintf(Text,MAX_TEXT_LENGTH,"%s ist gerade am campen und hat %i Warnungen", Name, CamperWarnings[iUser]);
			CamperWarnings[iUser]=CamperWarnings[iUser]-1;
			say(Text);
		}

	}

//write their position to our records
	PlayerPosition[iUser][0]=x;
	PlayerPosition[iUser][1]=y;
	PlayerPosition[iUser][2]=z;
	return PLUGIN_CONTINUE;
}

public RecordPositions(){
	new Dead;
	new i;
	new maxplayers = maxplayercount();
	new Name[MAX_NAME_LENGTH];
	new SessionID;
	new Team;
	new WONID;
	new x,y,z;
	if(EnableCamperCheck==0){
		return PLUGIN_CONTINUE;
	}
	if(First==1){
		First=0;
		for(i=0;i<maxplayers;i++){
			CamperWarnings[i]=CAMPER_WARNINGS;
		}
	}
	for (i=1; i<=maxplayers; i++) {
		if( playerinfo(i,Name,MAX_NAME_LENGTH,SessionID,WONID,Team,Dead)!=0){
			if(Dead==0) {
				if(CAMPER_TEAM==0 || Team==CAMPER_TEAM){
					if(check_immunity(Name)==0) {
						get_userorigin(Name,x,y,z);
						HandlePositions(i,Name,x,y,z);	
					}	
				}
			}
		}
	}
	return PLUGIN_CONTINUE;
}

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);
	new Match = FALSE;
	if (strcasestr(Data, "camper-check")!=-1) {
		Match = TRUE;
	} else if (strcasestr(Data, "camper check")!=-1) {
		Match = TRUE;
	}
	if (Match==TRUE) {
		if (EnableCamperCheck == 1){ 
			centersay ("Camper checking is on! ^nDon't camp.",7,0,255,0); 
		} else {
			centersay ("Camper checking is off. ^nJust don't make it stupid ",7,0,255,0);
		}
	}
	if(strcasestr(Data, "vote_camper")!=-1){
		CPVote();
	}
	return PLUGIN_CONTINUE;
}

public admin_vote_camper(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	
	if (vote_allowed()!=1) {
		selfmessage( "Vote not allowed at this time.");
		return PLUGIN_HANDLED;
	}

	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	say_command(User,Command,Data);		
	CPVote();
	return PLUGIN_HANDLED;
}
public admin_camperteam(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	new temp_team;
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	if (strlen(Data)==0) {
		snprintf(Text,MAX_TEXT_LENGTH,"Camper team: %i",CAMPER_TEAM);
		selfmessage(Text);
	}else{
		temp_team=strtonum(Data);
		CAMPER_TEAM=temp_team;
		snprintf(Text,MAX_TEXT_LENGTH,"Camper team: %i",CAMPER_TEAM);
		selfmessage(Text);
	}
	say_command(User,Command,Data);
	return PLUGIN_HANDLED;
}

public admin_campercheck(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	if (strlen(Data)==0) {
		snprintf(Text,MAX_TEXT_LENGTH,"Camper checking: %i",EnableCamperCheck);
		selfmessage(Text);
	}
	else if(check_param(Data)==1) {
		selfmessage("Camper checking: 1");
		EnableCamperCheck=1;
	} else {
		selfmessage("Camper checking: 0");
		EnableCamperCheck=0;
	}
	say_command(User,Command,Data);
	return PLUGIN_HANDLED;
}
public admin_campert(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	new temp_tol=0;
	if (strlen(Data)==0) {
		snprintf(Text,MAX_TEXT_LENGTH,"Camper tolerance: %i",CAMPER_TOLERANCE);
		selfmessage(Text);
	} else{
		temp_tol=strtonum(Data);
		CAMPER_TOLERANCE=temp_tol;
		snprintf(Text,MAX_TEXT_LENGTH,"Camper tolerance: %i",CAMPER_TOLERANCE);
		selfmessage(Text);
	}
	say_command(User,Command,Data);
	return PLUGIN_HANDLED;
}
public admin_campertime(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	new temp_time=0;
	if (strlen(Data)==0) {
		snprintf(Text,MAX_TEXT_LENGTH,"Camper time: %i",CAMPER_TIME);
		selfmessage(Text);
	} else{
		temp_time=strtonum(Data);
		CAMPER_TIME=temp_time;
		kill_timer(CamperTimer);
		CamperTimer=set_timer("RecordPositions",CAMPER_TIME,9999);
		snprintf(Text,MAX_TEXT_LENGTH,"Camper time: %i",CAMPER_TIME);
		selfmessage(Text);
	}
	say_command(User,Command,Data);
	return PLUGIN_HANDLED;
}
public admin_camperslap(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	if (strlen(Data)==0) {
		snprintf(Text,MAX_TEXT_LENGTH,"Camper slap: %i",CAMPER_SLAP);
		selfmessage(Text);
	} else if(check_param(Data)==1){
		CAMPER_SLAP=1;
		snprintf(Text,MAX_TEXT_LENGTH,"Camper slap: %i",CAMPER_SLAP);
		selfmessage(Text);
	}else{
		CAMPER_SLAP=0;
		snprintf(Text,MAX_TEXT_LENGTH,"Camper slap: %i",CAMPER_SLAP);
		selfmessage(Text);
	}
	say_command(User,Command,Data);
	return PLUGIN_HANDLED;
}

public admin_camperwarn(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	new i;
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	new temp_tol=0;
	if (strlen(Data)==0) {
		snprintf(Text,MAX_TEXT_LENGTH,"Camper warnings: %i",CAMPER_WARNINGS);
		selfmessage(Text);
	} else{
		temp_tol=strtonum(Data);
		CAMPER_WARNINGS=temp_tol;
		snprintf(Text,MAX_TEXT_LENGTH,"Camper warnings: %i",CAMPER_WARNINGS);
		selfmessage(Text);
		for	(i=i;i<=MAX_PLAYERS;++i){
			CamperWarnings[i]=CAMPER_WARNINGS;
		}
	}
	say_command(User,Command,Data);
	return PLUGIN_HANDLED;
}
public plugin_init() {

	//Don't edit below this, please. I put lots of hard work into this plugin.
	plugin_registerinfo("milkmans Anti-Camper plugin","Auto detects, announces, warns, slaps, and slays campers.",STRING_VERSION);
	plugin_registercmd("admin_campercheck","admin_campercheck",ACCESS_SLAY,"Enables/disables checking for campers.");
	plugin_registercmd("admin_campert","admin_campert",ACCESS_SLAY,"admin_campert <tolerance> Sets/displays camper tolerance in units.");
	plugin_registercmd("admin_campertime","admin_campertime",ACCESS_SLAY,"admin_campertime <time> Sets/displays camper time check in seconds.");
	plugin_registercmd("admin_camperslap","admin_camperslap",ACCESS_SLAY,"admin_camperslap <value> Enables/disables and displays the current setting of camperslap.");
	plugin_registercmd("admin_camperwarn","admin_camperwarn",ACCESS_SLAY,"admin_camperwarn <value> Sets/displays number of camper warnings. Resests warnings.");
	plugin_registercmd("admin_vote_camper","admin_vote_camper",ACCESS_ALL,"admin_vote_camper: starts a vote for camper-checking.");
	plugin_registercmd("admin_camperteam","admin_camperteam",ACCESS_SLAY,"admin_camperteam <team> Sets which team is checked for camping.");
	plugin_registercmd("say","HandleSay",ACCESS_ALL);
	plugin_registerhelp("say vote_camper",ACCESS_ALL,"Starts a vote for camper-checking.");
	CamperTimer=set_timer("RecordPositions", CAMPER_TIME,9999);
	return PLUGIN_CONTINUE;
	
#if AUTO_CP_VOTE==1	
	set_timer("CPVote",610,1);
#endif
	return PLUGIN_CONTINUE;
}


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 02.01.2003, 11:30 
AM.de Team

Registriert: 08.07.2002, 21:11
Beiträge: 2192
Hmm, dann wuerde ich alle ACCESS_SLAY wieder in ACCESS_KICK umwandeln, unten in den registercmd's.
Letztendlich wird hiermit der Rechtelevel zum Ausfuehren des Commands bestimmt.

(moegen die Profis mich berichtiigen, wenn ich Unsinn erzaehle)

_________________
it's better to burn out, than to fade away


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 02.01.2003, 12:43 

Registriert: 14.05.2002, 22:37
Beiträge: 33
also hab ACCESS wieder auf ACCESS_KICK gesetzt und alles mit kick durch slay ersetzt, das lustige daran ist, das des plugin zwar geladen ist, aber machen tut es NICHTS obwohl ich es so eingestellt hab


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 02.01.2003, 14:00 

Registriert: 06.01.2002, 01:00
Beiträge: 415
Wohnort: nicht weit weg von Köln
Das 'ACCESS_SLAY' kannst du ruhig unten in den Registercmds stehen lassen, nur mußt du es dann oben auch mit define einem Wert zuordnen:
Code:
#define ACCESS_SLAY 1024
BTW: Wußtest du das es eine neue Version des Plugins gibt ?

Bio

_________________
It's not a bug, it's a feature !


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 02.01.2003, 19:40 

Registriert: 14.05.2002, 22:37
Beiträge: 33
nein weiss ich nicht, da weder diese seite noch die adminmod-hilfe.de irgendwelche neuen plugins zur zeit hat !


ich suche eben dieses plugin nur will ich statt kick ---> Slay haben mit so einem lustigen donner usw. da dachte ich mir man kann des ja umschreiben, da ich aber keinen plan davon hab hats auch net geklappt :D
dein Code daoben hört sich zwar gut an aber wo ich den hinstellen soll usw. hab ich keinen plan von ! :( kannste mir da helfen ?

gibt also ein neues ? wo kann man das MIT Sourcecode downloaden ? ich suche zu jedem plugin immer die source code schau sie mir an und grübel drüber nach ob man was verändern könnte usw. weil ich irgendwann mal nen durchblick haben möchte ;)


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 02.01.2003, 21:10 
AM.de Team

Registriert: 08.07.2002, 21:11
Beiträge: 2192
Zitat:
Code:
#define ACCESS_SLAY 1024
Haett ich auch drauf kommen sollen :oops:

_________________
it's better to burn out, than to fade away


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