Ein neues Thema erstellen  Auf das Thema antworten  [ 51 Beiträge ]  Gehe zu Seite Vorherige 1 2 3
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 15.04.2002, 01:50 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
naja das mit den ställen is wegen

"say die admins sind net" dann würde der das auch aus geben , der soll aber nur dann ausgeben wenn admin alleine steht darum , aber is ja nich das problem kann ich ja wieder setzen. werd das nacher mal testen :-)))


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

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
ah ! Ja richtig. Das macht Sinn...Ist mir gar nicht auf die schnelle eingefallen !

_________________
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: 15.04.2002, 04:07 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
habs noch nich getestet , aber werd es gleich machen , hab aber noch nee frage , der gibt mir immer noch nee "warnung" aus wenn ich das return setze , und selbst wenns nur nee warnung is , ist es nicht dann vieleicht nicht optimal gecodet ?


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.04.2002, 12:23 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Und so sieht das ganze aus, wenn ich es umschreiben muesste. (Was ich hiermit getan habe, damit das ein Ende hat).
Code:
#include <core>
#include <string>
#include <admin>
#include <adminlib>

new STRING_VERSION[] = "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 Map[MAX_NAME_LENGTH];
	new ip[18];
	new port[7];

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



/* Check for 'ff' */
	if ( strcasestr(Speech, "ff") == 0 ) {
		if ( getvar("mp_friendlyfire") == 1 ) {
			say("Friendly fire is ON.  ! DANGER !");
		} else {
			say("Friendly fire is OFF. *puh*");
		}
		return PLUGIN_HANDLED;
	}
	


/* Check for 'admin' */
	if ( strcasestr(Speech, "admin") == 0 ) {
		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(Text, MAX_TEXT_LENGTH, "Anwesende Admins:^n%s", Text);
			say(Text);
		} else {
			say("Keine Admins anwesend.");
		}
		
		return PLUGIN_HANDLED;
	}
		


/* Check for 'serverip' */	
	if ( strcasestr(Speech, "serverip") == 0 ) {
		get_vaultdata("serverip", ip, sizeof(ip));
		get_vaultdata("serverport", port, sizeof(port));
		snprintf(Text, MAX_TEXT_LENGTH, "IP des Servers ist: %s:%s", ip, port);
		say(Text);
		return PLUGIN_HANDLED;
	}



/* Check for 'map' */
	if (strcasestr(Speech, "map") == 0 ) {
		snprintf(Text, MAX_TEXT_LENGTH, "Derzeitiege Map: %s", Map);
		say(Text);
		return PLUGIN_HANDLED;
	}
	


/* Check for profanity */
	if (strcasestr(Speech, "lamer") != -1 && access(ACCESS_VOTE_MAP, Name) == 0) {
		snprintf(Text, MAX_TEXT_LENGTH," ^"%s^" 2", User);
		plugin_exec("admin_gag", Text);
		snprintf(Text, MAX_TEXT_LENGTH, "[ADMIN]: %s ist fuer 2min geknebelt.", User);
		say(Text);
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_CONTINUE;
}



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;
}
Ist teilweise getestet und laeuft.

_________________
There are no stupid questions, only stupid people.


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

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
Natürlich habe ich das so auch getestet.

Wenn ich aber keine Rechte habe, kommt als Meldung User xy versucht admin_gag auszuführen und hat die Rechte nicht dazu.

Siehe dazu auch meine Anmerkung in Deinem Thread zu "Kein admin_command im exec()"

P.S.: Ich muss mir endlich mal angewöhnen, die geschweiften Klammern anders zu setzen :oops:

_________________
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: 15.04.2002, 13:13 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
also ich weis nich ,
snprintf(Text, MAX_TEXT_LENGTH," ^"%s^" 2", User);
plugin_exec("admin_gag", Text);

geht bei mi8r nicht , also der user wird nicht gag !! wenn ich den alten befehl nehm geht es , zudem is meine lösung mit dem
Code:
if(ff)
{

}
else
{
      if(map)
      {
       
      }
      else
      {
            if(admin)
            {
             }
       }
}
viel efectiever , als immer nur if zu nutzen , man muß sie so sortieren , wie die warscheinlich keit der nutzung ist , also was an heufigsten genutzt wird ins erste if() , jeder js php coder kann das bezeigen , nicht um sonnst hat man in php den befehl elseif() eingeführt.[/code]


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.04.2002, 13:44 
AM.de Team
Benutzeravatar

Registriert: 27.11.2001, 01:00
Beiträge: 3564
Wohnort: In der Nähe von Bonn
ist ja kein Beinbruch mit dem else.

Ich habe sie für nicht notwendig erachtet. Aber vielleicht hast Du recht und der "Code wird schneller" :-) dadurch.

Ich muss zugeben, dass ich mit den ganzen else ein wenig in durcheinander gekommen bin und nachher vor lauter else nicht mehr wusste, welches else zu wem gehört.... :oops:

hast Du das mal mit admin_debug 1 getestet und die logs angesehen ?

Bei mir geht es mit dem plugin_exec ja auch nicht:
Code:
L 04/15/2002 - 03:09:23: [ADMIN] DEBUG: plugin_exec: Command: 'admin_gag' Args: '"Sir Drink a lo" 2'
L 04/15/2002 - 03:09:23: [ADMIN] DEBUG: Match found on command admin_gag for plugin D:\SPIELE\HALFLIFE\cstrike\dlls\plugin_retribution.amx / function 5
L 04/15/2002 - 03:09:23: [ADMIN] DEBUG: Sir Drink a lo attempted to use command 'admin_gag' without proper access.
L 04/15/2002 - 03:09:23: [ADMIN] (say) [ADMIN]: Sir Drink a lo ist fuer 2min gag.
Das erscheint bei der Benutzung von plugin_exec und einem User, der keine Rechte hat und "lamer" eingibt.

_________________
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: 15.04.2002, 14:53 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
hab nich nach geschaut , aber der neue befehl will net , hab es mal so versucht
Code:
snprintf(Text, MAX_TEXT_LENGTH, " ^"%s^" 5", User);
plugin_exec("admin_command admin_gag", Text);
geht aber auch net , vieleicht geht der neue befehl ja erst in der neuen adminmod version ?

Nachtrag:

Noch nee frage , warum nehmen alle
new maxplayers = maxplayercount();

um die zahl der durchleufe einer for -schleife zu bestimmen ? das heist wenns nin 20slot server is geht der die schleife 20 mal durch , auch wenn nur 3 player drauf sind , ist es nich besser einfach
new maxplayers = playercount();

zu nutzen ? weil dann geht die schleife auch nur 3 mal druch und is somit schneller , auch wenns nur tausenstel sind.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.04.2002, 15:29 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Ich kann bald nimmer...

Entschuldige, MrSpoocy, wenn ich langsam ausfallend werde, aber Deine Loesung mit den 'if's ist scheisse. Sie ist tatsaechlich effizienter (nicht effektiver) als das, was SDal da fabriziert hat, aber sie ist trotzdem scheisse. Das ist doch total unleserlich. Da sieht man schon an Deiner skelettierten Version. Tausende geschachtelte 'if's, unmotiviert in der Gegend herumstehende Klammern, da wird einem ja schlecht beim Lesen. Und versuch mal da noch weitere Schluesselwoerter einzubauen, dann ist das Chaos komplett.

Ich erkenne wohlwollend Dein Streben nach Effizienz an und sehe, dass Dir daran gelegen ist, schnellen Code zu produzieren. Bravo! Sehr loeblich. Daumen hoch. Das freut mich ganz ehrlich zu sehen. Du bist hier einer der Wenigen, die das tun. Jetzt solltest Du noch zwei Dinge tun. Erstens auch den Wunsch entwickeln, nicht nur schnellen, sondern auch kleinen Code zu schreiben. Und zweitens Programmieren lernen. Das zweite ist die Voraussetzung fuer das erste, denn Du kannst erst dann schnellen und kleinen Code schreiben, wenn Du erst mal gelernt hast, vernuenftig zu programmieren. Und da sehe ich noch gravierende Maengel.

Ich erklaer Dir auch noch mal, was ich mit dem "Widerspruch" meinte. Naemlich, dass Du erst schreibst, du wuerdest 'return' kennen und dann Deine Unkenntnis unter Beweis stellst, mit der Behauptung bei "return PLUGIN_HANDLED" wuerde erst noch eine Funktion aufgerufen. Das ist Quatsch.

'return' veranlasst, dass eine Funktion beendet wird und zurueckkehrt. Es wird kein Rueckgabewert zurueck gegeben.
'return 5' veranlasst ebenso, dass eine Funktion zurueckkehrt. Allerdings hat diese Funktion einen Rueckgabewert, es wird naemlich 5 zurueckgegeben.
(In Pascal waere das der Unterschied zwischen iner Prozedur und einer Funktion).

Warum ist mein Code also besser? Weil man ihn leichter lesen kann und weil man ohne Probleme neue Schluesselwoerter dazufuegen kann. Und er ist ebenso effizient wie Deiner, denn sobald ein 'if'-Fall zutrifft und ausgefuehrt wurde, wird die Funktion beendet und die weiteren Bedingungen nicht mehr geprueft. Ausserdem wird bei mir im Fall, dass ein Schluesselwort gefunden wurde, der Chattext nicht ausgegeben. Das ist natuerlich Gemacksache, aber ich finde es doof, wenn der noch ausgegeben wird.

Kuck Dir auch mal die 'if's an, die sind naemlich effizienter als bei Dir, weil ich nur einen, statt zwei Funktionsaufrufe brauche, um auf ein Schluesselwort zu testen.

_________________
There are no stupid questions, only stupid people.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.04.2002, 15:49 

Registriert: 25.03.2002, 23:02
Beiträge: 131
Wohnort: Berlin
es sei dir verziehn , kannst ausfallend werden :-)))

nun alles schön und gut , hat mich beschrieben , nun wissen wir aber immer noch nicht warum der neue befeh (plugin_exec) nicht geht.

zu deiner aussage ich soll coden lehrnen .....was denkst was ich grade mach ? ich les mir fast alle forumbeiträge durch, und so bekomme ich infos , in den fällen wo ich nirgens infos bekommen habe , mache ich selber einen post auf.

Zu der unübersichlichkeit......Ich habe darmals in php so angefangen mit den vielen ifs und kanns daher lesen. Mitlerweile nutze ich bei php break und bei js return. Aber da ich ja small erst lehrne weis ich halt nich alles auf anhieb.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 15.04.2002, 16:02 
AM.de Team
Benutzeravatar

Registriert: 22.10.2001, 01:00
Beiträge: 839
Zitat:
nun alles schön und gut , hat mich beschrieben , nun wissen wir aber immer noch nicht warum der neue befeh (plugin_exec) nicht geht.
Doch, habe ich jetzt schon oefter hier im Forum geschrieben. Du kannst mit plugin_exec() nicht einfach das Rechtesystem aushebeln.
Zitat:
zu deiner aussage ich soll coden lehrnen .....was denkst was ich grade mach ? ich les mir fast alle forumbeiträge durch, und so bekomme ich infos , in den fällen wo ich nirgens infos bekommen habe , mache ich selber einen post auf.
Das ist ja schonmal gut, aber man lernt Programmieren nicht in einem Forum. Dafuer gibt es Buecher, Kurse, den Sourcecode von anderen (faehigen) Programmierern und anschliessend viiiieeeel Uebung.
Zitat:
Zu der unübersichlichkeit......Ich habe darmals in php so angefangen mit den vielen ifs und kanns daher lesen. Mitlerweile nutze ich bei php break und bei js return. Aber da ich ja small erst lehrne weis ich halt nich alles auf anhieb.
Das hat mit Small oder PHP nichts zu tun, das wuerde Dir jeder ordentliche Programmierer als schlechten Code ankreiden. Wenn Du schon so eine 'if' Kette machst, dann nimm
if() {
} else if () {
} else if () {
}

Ueber die Klammersetzung wird man sich ewig streiten, das ist Sache des persoenlichen Stils. Aber solche if-else Ketten ineinander zu schachteln macht man einfach nicht.
Zitat:
Es ist auch noch ungeklärt was mit dem playercount() is.
Siehe dazu Dein Thread, wo Du das zum ersten mal gefragt hast.

_________________
There are no stupid questions, only stupid people.


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


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