Ein neues Thema erstellen  Auf das Thema antworten  [ 51 Beiträge ]  Gehe zu Seite Vorherige 1 2 3 Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 13.04.2002, 21:34 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
Gut dann versuche ich es noch einmal.

Ich habe ein script geschrieben, dass überwacht den chat.
Wenn nun ein user ein bestimmtes word schreibt z.b. "camper",
dann "gag" das script den user.

das script:

snprintf(Text, MAX_TEXT_LENGTH, "admin_command admin_gag ^"%s^" 5", User);

Nun ist aber das problem , das der text des user im chat erscheint , weil er ja erst ausliest und dann "gag" macht , blos dann steht der text ja schon. Also meine frage , wie kann ich es machen das er "gag" wird und der text aber nicht ausgegen wird.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 13.04.2002, 23:10 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Erstens ist das schonmal komplett falsch, weil Du da ein "admin_command admin_gag..." stehen hast und danach wahrscheinlich ein exec(). Das geht in Zukunft nicht mehr. Steht im obersten Thread in diesem Forum; der, vor dem "Wichtig" steht. Lesen.

Zweitens haettest Du das Problem schon vor Tagen loesen koennen, wenn Du einmal meinen Ratschlag vom Anfang dieses Threads befolgt und die entsprechenden Sourcen gelesen haettest. Aber um des lieben Frieden willen hier ein weiterer Hinweis: beende die Funktion, die auf den Chat der Spieler lauscht, mit
Code:
return PLUGIN_HANDLED
und nicht mit
Code:
return PLUGIN_CONTINUE


Ich hoffe das loest das.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 00:20 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
ok , ich werd es mal versuchen , hab mir den post "wichtig" auch durch gelsenen , aber wo muß ich denn alles return PLUGIN_HANDLED; setzen ? ich hab viel if() in der function und bei jeder if() wird etwas ausgefürt , endweder wird etwas im chat ausgeben oder eine servereinstellung wird geändert.

Nachtrag:
Irgendwie bekomme ich immer

plugin_say.sma(104) Warning [209]: function should return a value

ausgeworfen , is zwar nur nee warnung , aber eigendlich haben meine scripte nie nee warnung bekommmen.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 11:00 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Spoocy, zum letztem mal, lies Dir das plugin_retribution durch und zwar so lange und so oft bis Du es verstanden hast. Ich werde Dir hier nicht vorbeten, was Du zu schreiben hast. Fuer Leute, die versuchen Plugins zu schreiben, ohne die geringste Ahnung davon zu haben was sie da tun, bin ich nicht zustaendig.

Du hast eine Funktion, die aufgerufen wird, wenn jemand das say Kommando benutzt. Diese Funktion ist irgendwann beendet und gibt dann entweder ein PLUGIN_CONTINUE zurueck oder ein PLUGIN_HANDLED. In ersterem Fall wird das say vom Server noch ausgefuehrt, in letztem Falle nicht.

Zu der Warnung: du hast die Zeilennummer, also kuck halt nach, was fehlt. Die Warnung ist doch klar und deutlich.


Nochwas, warum hast Du es genau ein Posting lang ausgehalten, Deinen Schreibstil etwas normaler zu gestalten? Das hier ist ein schriftliches Medium. Also tu uns allen den Gefallen und schreib hier nicht wie wenn Du mit Deinen Kumpels labern wuerdest. Wenn Du sowas in der Schule bringen wuerdest, sollte Dir Dein Lehrer das um die Ohren haeuen. Geh davon aus, dass ich hier dasselbe tue. Uebrigens, zwischen Satzzeichen und das vorausgehende Wort kommen keine Leerzeichen.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 13:58 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
Hm ,

ich hab mich in den letzten 2 post doch angesträngt ordendlich zu schreiben. In der schule bin ich leider nicht, das mit dem schreiben liegt wohl daran das ich ein spitzencoder in php bin und zuviel zeit vorm PC verbringe als im sozialen leben.

Zu der fehlermldung, sie kommt nur wenn ich das von dir empfolende
return PLUGIN_HANDLED schreibe , also nach dem plugin_exec().

Ich habe nee menge plug ins geschrieben, also ich behaupte mal das ich das schon recht gut kann, das problem , ich will es immer verbessern um so optimale leistung zu holen. Z.b. habe ich einen timer geschrieben der sich nach änder der zeit neu einstellt und man brauch nicht das "lodg" oder wie das heist ! Also sowas gibs noch nicht.

Ich habe mir die Scripte vom Adminmod angeschaut, jedoch ist es in jeder datei anders. Mal kommt ein return PLUGIN_HANDLED 0 mal in einem Public und ein anderes mal nur ein mal. Wie soll ich da denn nun wissen wann ich es setzen muß ? Es gibt ja auch nirgens eine anweisung was return PLUGIN_HANDLED und return PLUGIN_CONTINUE machen , drum frage ich ja hier.

mfg Spoocy


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:04 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Poste die Funktion hier, das wird mir zu kompliziert.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:10 

Registriert: 27.02.2002, 14:50
Beiträge: 262
Wohnort: Hall in Tirol
darope du bist so keck


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:16 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
if(strcasestr(Speech, "lamer")!=-1 && access(ACCESS_VOTE_MAP,Name)==0)
{
snprintf(Text, MAX_TEXT_LENGTH, " ^"%s^" 5", User);
plugin_exec("admin_gag", Text);
return PLUGIN_HANDLED;
snprintf(Text, MAX_TEXT_LENGTH, "[ADMIN]: %s ist fuer 5min gag.", User);
say(Text)
}


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:20 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Nee, erstens sie ganze Funktion und nicht nur ein bisschen und zweitens bitte in [code][/code] Tags.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:24 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
Code:
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>

new STRING_VERSION[MAX_DATA_LENGTH] = "2.50.1";

public eingabe(HLCommand,HLData,HLUserName,UserIndex)
{
	new Command[MAX_COMMAND_LENGTH];
	new Speech[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Text[MAX_TEXT_LENGTH];

	new maxplayers = maxplayercount();
	new i;
	new Name[MAX_NAME_LENGTH];
	new SessionID;
	new Team;
	new WONID;
	new admincheck = false;
	new end[MAX_TEXT_LENGTH];

	new Map[MAX_NAME_LENGTH];
	new ip[MAX_TEXT_LENGTH];
	new port[MAX_TEXT_LENGTH];
	currentmap(Map, MAX_NAME_LENGTH);

	convert_string(HLCommand, Command, MAX_COMMAND_LENGTH);
	convert_string(HLData, Speech, MAX_DATA_LENGTH);
	convert_string(HLUserName, User, MAX_NAME_LENGTH);
	strstripquotes(Speech);

	if (strcasestr(Speech, "ff")!=-1 && strlen(Speech)==2)
	{
		if (getvar("mp_friendlyfire")==1)
		{
			say("Friendly fire is ON.  ! DANGER !");
		}
		else
		{
			say("Friendly fire is OFF. *puh*");
		}
	}
	else
	{
		if (strcasestr(Speech, "admin")!=-1 && strlen(Speech)==5)
		{
			for(i=1; i<=maxplayers; i++)
			{
				strinit(Name);
				if(playerinfo(i,Name,MAX_NAME_LENGTH,SessionID,WONID,Team)==1)
				{
					if(access(ACCESS_VOTE_MAP,Name)!=0)
					{
					snprintf(Text, MAX_TEXT_LENGTH, "%s, %s", Text,Name);
					admincheck = true;
					}
				}
			}
			if(admincheck)
			{
			snprintf(end, MAX_TEXT_LENGTH, "Anwesende Admins %s", Text);
			say(end);
			}
			else
			{
			say("Keine Admins anwesend.");
			}
		}
		else
		{
			if(strcasestr(Speech, "serverip")!=-1 && strlen(Speech)==8)
			{
		      	get_vaultdata("serverip",ip, MAX_DATA_LENGTH);
			get_vaultdata("serverport",port, MAX_DATA_LENGTH);
			snprintf(Text, MAX_TEXT_LENGTH, "IP des Servers ist: %s:%s", ip,port);
			say(Text);
			}
			else
			{
				if(strcasestr(Speech, "map")!=-1 && strlen(Speech)==3)
				{
		                snprintf(Text, MAX_TEXT_LENGTH, "Derzeitiege Map: %s", Map);
		                say(Text);
				}
				else
				{
					if(strcasestr(Speech, "lamer")!=-1 && access(ACCESS_VOTE_MAP,Name)==0)
					{
					snprintf(Text, MAX_TEXT_LENGTH, " ^"%s^" 2", User);
					plugin_exec("admin_gag", Text);
					return PLUGIN_HANDLED;
					snprintf(Text, MAX_TEXT_LENGTH, "[ADMIN]: %s ist fuer 2min gag.", User);
					say(Text)
					}
				}
			}
		}
	}
}
public plugin_init()
{
	plugin_registerinfo("Admin abfrage","Codet bei MrSpoocy www.foc-clan.de",STRING_VERSION);
	plugin_registercmd("say", "eingabe", ACCESS_ALL,"Dieses script reagiert auf chateingaben. ff,admin,serverip,map");
	plugin_registercmd("say_team", "eingabe", ACCESS_ALL,"Dieses script reagiert auf chateingaben. ff,admin,serverip,map");
	return PLUGIN_CONTINUE;
}


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:42 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Du machst es mir wirklich nicht leicht. Nun kram mal alle Dein Programmierkenntnisse zusammen und denk mal ganz scharf nach.
Zitat:
Code:
public eingabe(HLCommand,HLData,HLUserName,UserIndex)
{
      /* ... */
					if(strcasestr(Speech, "lamer")!=-1 && access(ACCESS_VOTE_MAP,Name)==0)
					{
					snprintf(Text, MAX_TEXT_LENGTH, " ^"%s^" 2", User);
					plugin_exec("admin_gag", Text);
/* WAS MACHT DAS HIER?! --------> */	return PLUGIN_HANDLED;
					snprintf(Text, MAX_TEXT_LENGTH, "[ADMIN]: %s ist fuer 2min gag.", User);
					say(Text)
					}
				}
			}
		}
	}
                return PLUGIN_CONTINUE;   /* wie waer es denn damit? */
}
Du schreibts da sowas
Code:
    snprintf(Text, MAX_TEXT_LENGTH, " ^"%s^" 2", User);
    plugin_exec("admin_gag", Text);
    return PLUGIN_HANDLED;
    snprintf(Text, MAX_TEXT_LENGTH, "[ADMIN]: %s ist fuer 2min gag.", User);
    say(Text)
Was macht ein 'return'? Ich darf doch mal annehmen, dass Du weisst, was ein 'return' macht. Wieso steht da also ein 'return' mitten im Code, obwohl hinterher noch zwei Anweisungen kommen, die ja anscheinend ausgefuehrt werden sollten?

Und die Warnung entsteht, weil der Compiler erkannt hat, dass diese Funktion anscheinend einen Rueckgabewert hat, aber es einen Kontrollfluss gibt, der ohne Rueckgabewert endet. Und das meckert er an.

Ueberleg DIr mal, ob Du generell das Gesagte nicht mehr ausgeben willst und beende die Funktion entsprechend. Und teste Deinen Code ab und zu auch mal.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 17:49 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
naja , ruturn kenne ich , aber was mich wundern und was ich in einem anderem post schon gefragt habe , was sind denn PLUGIN_CONTINUE; und das andere , da wird ja eine function ausgeführt , eigendlich müste doch da nur return; stehen.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 18:25 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Zitat:
naja , ruturn kenne ich , aber was mich wundern und was ich in einem anderem post schon gefragt habe , was sind denn PLUGIN_CONTINUE; und das andere , da wird ja eine function ausgeführt , eigendlich müste doch da nur return; stehen.
Widerspruch in sich.

Ich komm wieder vorbei, wenn Du ein wenig mehr von Programmierung gelernt hast.

(Und endlich Deinen Postingstil auf vordermann bringst.)

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 18:29 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
@ daRope
Und was soll ich da helfen ?!?

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 18:34 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Na, irgendeiner muss ihm doch die Grundlagen beibringen, wenn er es nicht selber machen will. :) Ich tu's nicht. Ich habe ganz was anderes zu tun.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 18:40 

Registriert: 12.01.2002, 20:24
Beiträge: 227
Wohnort: Giessen, Hessen, Germany
Ach so meinst Du das... Danke für dein Vertrauen!
Ich werd' mich dann einfach mal deinerstatt um diesen Thread die nächsten Tage kümmern 8)

_________________
Denn nur wer was zu sagen hat,
Der hat's, wenn es nicht unabdingbar ist

http://clan-ggg.de.vu/


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 20:07 

Registriert: 06.01.2002, 01:00
Beiträge: 415
Wohnort: nicht weit weg von Köln
Zitat:
... Ich habe ganz was anderes zu tun.
Genau, lasst den daRope mal weiter an der neuen AdminMod Version werkeln und feilen. Ich bin mehr als gespannt darauf.

Bio

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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 21:13 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Hab ich nicht schonmal gesagt, dass man sich die ganze Spannung lieber sparen sollte? Dann tu ich es hiermit. So spannend ist es nicht.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 14.04.2002, 22:16 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
Zitat:
Zweitens haettest Du das Problem schon vor Tagen loesen koennen, wenn Du einmal meinen Ratschlag vom Anfang dieses Threads befolgt und die entsprechenden Sourcen gelesen haettest. Aber um des lieben Frieden willen hier ein weiterer Hinweis: beende die Funktion, die auf den Chat der Spieler lauscht, mit
Code:
return PLUGIN_HANDLED
und nicht mit
Code:
return PLUGIN_CONTINUE

wer macht denn hier die wiedersprüche ?
Zitat:
/* WAS MACHT DAS HIER?! --------> */ return PLUGIN_HANDLED;
Also endscheid dich was ich das setzen soll , bei beiden gibt er mir wieder mal nee Warnung aus. Nun zu der behauptung das ich einen wiederspruch mache, es ist ein unterschied ob ich return; oder return plug...; schreibe, den beim 2ten wird noch eine function aufgerufen.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.04.2002, 01:40 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
Das ist doch alles sehr mühselig hier :-)

Ich habe Deinen Code mal eben funktionsfähig gemacht.

Ich hoffe, daraus wirst Du dann schlauer, wie das mit dem Plugin_Handled bzw. Continue gemeint ist.
Code:
#include <core> 
#include <console> 
#include <string> 
#include <admin> 
#include <adminlib> 

new STRING_VERSION[MAX_DATA_LENGTH] = "2.50.1"; 

public admin_eingabe(HLCommand,HLData,HLUserName,UserIndex) 
{
	new Command[MAX_COMMAND_LENGTH]; 
	new Speech[MAX_DATA_LENGTH]; 
	new User[MAX_NAME_LENGTH]; 
	new Text[MAX_TEXT_LENGTH]; 
	
	new maxplayers = maxplayercount(); 
	new i; 
	new Name[MAX_NAME_LENGTH]; 
	new SessionID; 
	new Team; 
	new WONID; 
	new admincheck = 0;
	
	new Map[MAX_NAME_LENGTH]; 
	new ip[MAX_TEXT_LENGTH]; 
	new port[MAX_TEXT_LENGTH]; 
	currentmap(Map, MAX_NAME_LENGTH); 
	
	convert_string(HLCommand, Command, MAX_COMMAND_LENGTH); 
	convert_string(HLData, Speech, MAX_DATA_LENGTH); 
	convert_string(HLUserName, User, MAX_NAME_LENGTH); 
	strstripquotes(Speech);
	
	/*wofür waren die strlen eigentlich gedacht? Geht doch auch ohne !*/
	if (strcasestr(Speech, "ff")!=-1) 
	{ 
		if (getvar("mp_friendlyfire")==1) 
		{ 
	      		say("Friendly fire is ON.  ! DANGER !"); 
	      	} 
	      	else 
	      	{ 
	         	say("Friendly fire is OFF. *puh*"); 
	      	} 
	}
	/*Entliehen aus plugin_stetze */
   	if ( (strcasestr(Speech, "admin") != -1)  || (strcasestr(Speech, "moderator") != -1) )
        {
        	snprintf(Text, MAX_DATA_LENGTH, "Admins on Server: ^n");        
          	for(i=1; i<=maxplayers; i++) 
          	{
            		strinit(Name);
	            	if(playerinfo(i,Name,MAX_NAME_LENGTH,SessionID,WONID,Team)==1) 
	            	{
	              		if(access(ACCESS_VOTE_MAP,Name)!=0) /*Ein bisschen niedrig. Steht in der Server.cfg auch default_access 0 ?*/
	              		{    
	              			strcat(Text," ",MAX_DATA_LENGTH);            
	                		strcat(Text,Name,MAX_DATA_LENGTH);
	                		admincheck = 1;
	              		}
	            	}
          	}
          	if (admincheck == 0)
          	{
          		strcat(Text," Keine Admins anwesend.",MAX_DATA_LENGTH);
          	}
        	typesay(Text,10,0,255,0);
        }
	if(strcasestr(Speech, "serverip")!=-1 ) 
 	{ 
	        get_vaultdata("serverip",ip, MAX_DATA_LENGTH); 
	 	get_vaultdata("serverport",port, MAX_DATA_LENGTH); 
	        snprintf(Text, MAX_TEXT_LENGTH, "IP des Servers ist: %s:%s", ip,port); 
	        say(Text); 
 	}
	if(strcasestr(Speech, "map")!=-1 ) 
	{ 
    		snprintf(Text, MAX_TEXT_LENGTH, "Derzeitiege Map: %s", Map); 
    		say(Text); 
	}
	if(strcasestr(Speech, "lamer")!=-1 && access(ACCESS_VOTE_MAP,Name)==0)/*Siehe auch oben bei "admin" */
	{
		snprintf(Text, MAX_TEXT_LENGTH, "admin_gag ^"%s^" 2", User); /*Hm..admin_llama wäre besser. Dann kann er seinen Namen nicht ändern !*/
		execclient(User,Text);/*plugin_exec ist hier nicht sinnig, da der User ja nicht das Plugin benutzen soll, sondern es soll auf ihn angewendet werden. Oder ist es genau das, was sich in der neuen Version ändert ?*/
		snprintf(Text, MAX_TEXT_LENGTH, "[ADMIN]: %s ist fuer 2min gag.", User); 
		say(Text);
		return PLUGIN_HANDLED;/*Dieses Handled bewirkt eben, dass das say NICHT ausgeführt wird.*/
        }
	return PLUGIN_CONTINUE;/*Die say (chat)-Ausgabe wird angezeigt.*/
} 
public plugin_init() 
{
   	plugin_registerinfo("Admin Abfrage","Codet bei MrSpoocy www.foc-clan.de",STRING_VERSION); 
   	plugin_registercmd("say", "admin_eingabe", ACCESS_ALL,"Dieses script reagiert auf chateingaben. ff,admin,serverip,map"); 
   	plugin_registercmd("say_team", "admin_eingabe", ACCESS_ALL,"Dieses script reagiert auf chateingaben. ff,admin,serverip,map"); 
   	return PLUGIN_CONTINUE; 
}
Das mit der serverip habe ich jetzt nicht getestet.

Gruss,
SDal

P.S.: @daRope: Ich hoffe, ich habe jetzt nichts falsch gemacht, in dem ich den Code hier poste.

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