AdminMod.de https://www.adminmod.de/ |
|
say nicht ausgeben ? https://www.adminmod.de/viewtopic.php?t=2453 |
Seite 2 von 3 |
Autor: | MrSpoocy [ 13.04.2002, 21:34 ] |
Betreff des Beitrags: | |
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. |
Autor: | daRope [ 13.04.2002, 23:10 ] |
Betreff des Beitrags: | |
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_HANDLEDund nicht mit Code: return PLUGIN_CONTINUE Ich hoffe das loest das. |
Autor: | MrSpoocy [ 14.04.2002, 00:20 ] |
Betreff des Beitrags: | |
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. |
Autor: | daRope [ 14.04.2002, 11:00 ] |
Betreff des Beitrags: | |
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. |
Autor: | MrSpoocy [ 14.04.2002, 13:58 ] |
Betreff des Beitrags: | |
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 |
Autor: | daRope [ 14.04.2002, 17:04 ] |
Betreff des Beitrags: | |
Poste die Funktion hier, das wird mir zu kompliziert. |
Autor: | florian [ 14.04.2002, 17:10 ] |
Betreff des Beitrags: | |
darope du bist so keck |
Autor: | MrSpoocy [ 14.04.2002, 17:16 ] |
Betreff des Beitrags: | |
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) } |
Autor: | daRope [ 14.04.2002, 17:20 ] |
Betreff des Beitrags: | |
Nee, erstens sie ganze Funktion und nicht nur ein bisschen und zweitens bitte in [code][/code] Tags. |
Autor: | MrSpoocy [ 14.04.2002, 17:24 ] |
Betreff des Beitrags: | |
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; } |
Autor: | daRope [ 14.04.2002, 17:42 ] |
Betreff des Beitrags: | |
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? */ } 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. |
Autor: | MrSpoocy [ 14.04.2002, 17:49 ] |
Betreff des Beitrags: | |
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. |
Autor: | daRope [ 14.04.2002, 18:25 ] |
Betreff des Beitrags: | |
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.) |
Autor: | SN8P [ 14.04.2002, 18:29 ] |
Betreff des Beitrags: | |
@ daRope Und was soll ich da helfen ?!? |
Autor: | daRope [ 14.04.2002, 18:34 ] |
Betreff des Beitrags: | |
Na, irgendeiner muss ihm doch die Grundlagen beibringen, wenn er es nicht selber machen will. ![]() |
Autor: | SN8P [ 14.04.2002, 18:40 ] |
Betreff des Beitrags: | |
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 ![]() |
Autor: | Biohazard1 [ 14.04.2002, 20:07 ] |
Betreff des Beitrags: | |
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 |
Autor: | daRope [ 14.04.2002, 21:13 ] |
Betreff des Beitrags: | |
Hab ich nicht schonmal gesagt, dass man sich die ganze Spannung lieber sparen sollte? Dann tu ich es hiermit. So spannend ist es nicht. |
Autor: | MrSpoocy [ 14.04.2002, 22:16 ] |
Betreff des Beitrags: | |
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_HANDLEDund 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.
|
Autor: | Sir Drink a lot [ 15.04.2002, 01:40 ] |
Betreff des Beitrags: | |
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. |
Seite 2 von 3 | Alle Zeiten sind UTC+01:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |