AdminMod.de https://www.adminmod.de/ |
|
PLUGIN_SDAL_REDIRECT https://www.adminmod.de/viewtopic.php?t=4664 |
Seite 1 von 2 |
Autor: | Sir Drink a lot [ 20.01.2003, 11:30 ] |
Betreff des Beitrags: | PLUGIN_SDAL_REDIRECT |
Hi Leute! Ich habe mal eine Erweiterung des plugin_sharp_direct gemacht. Man kann jetzt mehrere server und IP:Port in einer redirectserver.cfg anlegen, zu denen dann automatisch umgeleitet werden kann. (wenn der Server voll ist oder der Admin den Befehl: admin_redirect 'player' benutzt) Ausserdem hat der Spieler selber die Möglichkeit, mit der Chateingabe:"redirect me", sich die Serverliste in Menüform anzusehen und sich einen Server auszusuchen, zu dem er connecten möchte. Sinn ist, dass befreundete Clans sich ihre Spieler sharen Unser Server ist seit dem Wechsel zu NGZ leider sehr leer geworden Das Plugin ist noch im Betastatus. Was mich besonders interessieren würde ist, ob bei vollen Server der Admin mit dem Recht 'Reserved Slot' trotzdem connecten kann. (Sollte aber funktionieren). Desweiteren habe ich festgestellt, dass schon mal die Admin-Rechte flöten gehen, wenn der Admin von einem zum anderen Server umgeleitet wird und er normalerweise auf beiden Servern Admin-Rechte hat. Nun denn, berichtet mal, ob es läuft. Gruß, SDal |
Autor: | [-=THH=-]Stillsetzhut [ 20.01.2003, 12:50 ] |
Betreff des Beitrags: | |
Hmm, die Idee mit dem Redirect Menue finde ich klasse, gleich mal drauf machen |
Autor: | [WING] Black Knight [ 20.01.2003, 13:58 ] |
Betreff des Beitrags: | |
Hmmm, ich muss das mit meinen Ideen wieder öfter machen. Ich krieg ihn immer zum proggen. Und wenn er mal angefangen hat, gibt es kein halten mehr. Hier noch eine Verbesserung, da noch ein neues Feature. Respekt mein Herr. Deinen Arbeitseifer möchte ich beim Pluginprogrammieren auch haben. |
Autor: | Sir Drink a lot [ 20.01.2003, 19:43 ] |
Betreff des Beitrags: | |
tja, die Sucht...schrecklich...ich muss unbedingt eine Entziehungskur machen... |
Autor: | [-=THH=-]Stillsetzhut [ 22.01.2003, 20:13 ] |
Betreff des Beitrags: | |
Ok, weil mir Idee richtig gut gefaellt hab ich 'redirect' mal bei uns gesetzt. Eine Gamerserver 'Linkliste' find ich faszinierend. Es funktioniert auch soweit vorzueglich. Leider 'kollidiert' es jedoch mit SDal's Menu Plugins ....... sprich, wenn ich im Chat 'Menu' eingebe, erscheinen auch 4 Menue's. Wenn ich dann jedoch 'Playermenu' waehle (3), erscheint dieses nicht, sondern ich werde zum Wing Server weitergeleitet. Ich bin jedoch nicht gewillt auf die Menues zu verzichten, weil bei uns alle Admins diese schaetzen. Nun stellt sich die Frage, wie kann ich das umgehen, besser vielleicht noch integrieren? ............. Ich haette auch gern redirect ......... Beide Ideen finde ich erhaltenswert ....... nichts fuer ungut greez [-=THH=-]Stillsetzhut |
Autor: | Rinde [ 22.01.2003, 20:23 ] |
Betreff des Beitrags: | |
wenn es darum geht, dass sich die menüs gegenseitig überdecken und das falsche plugin das menuselect interpretiert, dagegen habe ich eine lösung, die immer funktioniert, vorrausgesetzt, alle menüplugins auf dem serve runterstützen diese funktion. bei interesse mal melden |
Autor: | [-=THH=-]Stillsetzhut [ 22.01.2003, 20:28 ] |
Betreff des Beitrags: | |
meld |
Autor: | Rinde [ 22.01.2003, 20:51 ] |
Betreff des Beitrags: | |
*seufz* ich habs befürchtet... okay, das prinzip ist folgendermaßen: jedesmal, wenn ein spieler ein menü aufruft, werden alle anderen plugins davon in kenntnis gesetzt. wie das geht? ganz einfach, mit plugin_exec(). als erstes habe ich ein base plugin, plugin_rindy_menubase. dieses fängt schonmal alle mod-menüs ab, so dass diese nicht in jedem plugin einzeln registert werden müssen, sowie connect und disconnect. Code: #include <adminlib> #include <plugin> new g_Version[100] = "0.1"; forward rmb_kill_menu(HLCommand,HLData,HLUserName,UserIndex); forward rmb_reset(HLCommand,HLData,HLUserName,UserIndex); forward rmb_receive_info(HLCommand,HLData,HLUserName,UserIndex); forward kill_menu(UserIndex = 0); public plugin_init(){ plugin_registerinfo("Rinde's Menu Base Plugin","Base functions for Rinde's menuplugins.",g_Version); plugin_registercmd("radio1","rmb_kill_menu",ACCESS_ALL); plugin_registercmd("radio2","rmb_kill_menu",ACCESS_ALL); plugin_registercmd("radio3","rmb_kill_menu",ACCESS_ALL); plugin_registercmd("buyequip","rmb_kill_menu",ACCESS_ALL); plugin_registercmd("buy","rmb_kill_menu",ACCESS_ALL); plugin_registercmd("chooseteam","rmb_kill_menu",ACCESS_ALL); plugin_registercmd("showbriefing","rmb_kill_menu",ACCESS_ALL); plugin_registercmd("rmb_reset","rmb_reset",ACCESS_ALL); return PLUGIN_CONTINUE; } public plugin_connect(HLUserName,HLIP,UserIndex) { kill_menu(UserIndex); return PLUGIN_CONTINUE; } public plugin_disconnect(HLUserName,UserIndex) { kill_menu(UserIndex); return PLUGIN_CONTINUE; } public rmb_kill_menu(HLCommand,HLData,HLUserName,UserIndex) { kill_menu(UserIndex); return PLUGIN_CONTINUE; } public rmb_reset(HLCommand,HLData,HLUserName,UserIndex) { return PLUGIN_HANDLED; } kill_menu(UserIndex = 0) { new str[3]; numtostr(UserIndex,str); plugin_exec("rmb_reset",str); }wie man sieht, ist es für cs ausgelegt, lässt sich aber für andere mods durchaus abändern. kernstück ist die funktion kill_menu(UserIndex). es sendet das plugin_exec, mit dem userindex als string. dies wird von anderen plugins als command registriert beispiel: plugin_rm_rindy_player (rm steht für rindy menu, kennzeichnet, dass plugin_rindy_menubase vorraussetzung ist, damit dieses plugin funktioniert) hier gekürzt, um das wesentliche zu verdeutlichen Code: new g_Menu[MAX_PLAYERS]; public plugin_init() { plugin_registerinfo("Rinde's Advanced Ban Plugin","Recognizes players that left recently, and logs bans to a textfile",g_Version); plugin_registercmd("admin_playermenu","BanMenu",ACCESS_BAN,"admin_playermenu: Display player menu."); plugin_registercmd("menuselect","HandleMS",ACCESS_ALL); plugin_registercmd("rmb_reset","rmb_reset",ACCESS_ALL); //function to reset the menu if another menu is called return PLUGIN_CONTINUE; } public rmb_reset(HLCommand,HLData,HLUserName,UserIndex) { new Data[3]; new i; convert_string(HLData,Data,3); if(Data[0] == '0') { for(i=1;i<=g_Maxplayers;i++) { g_Menu[i] = 0; } } else { g_Menu[strtonum(Data)] = 0; } return PLUGIN_CONTINUE; } public BanMenu(HLCommand,HLData,HLUserName,UserIndex) { if(UserIndex == 0) { selfmessage("This command cannot be used from console."); } else { kill_menu(UserIndex); g_Menu[UserIndex] = 1; show_menu(UserIndex); } return PLUGIN_HANDLED; } public HandleMS(HLCommand,HLData,HLUserName,UserIndex) { new Data[MAX_NAME_LENGTH]; new i; if(g_Menu[UserIndex] == 1) { convert_string(HLData,Data,MAX_NAME_LENGTH); i = strtonum(Data); switch(i) { ... } return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } kill_menu(UserIndex=0) { new str[3]; numtostr(UserIndex,str); plugin_exec("rmb_reset",str); }die globale variable g_Menu speichert für jeden spieler, ob er im menü ist oder nicht. wird ein anderes menü aufgerufen, wird rmb_reset ausgeführt, und für den/die entsprechenden user dieser wert auf 0 gesetzt. 0 im rmb_reset steht für alle spieler, beispielsweise für vote(...) ganz praktisch. umgekehrt führt das aufrufen der playermenus dazu, dass rmb_reset erneut aufgerufen wird, wodurch alle anderen plugins wissen: "ok, ich bin nicht mehr dran" (das kill_menu in public BanMenu). erst danach darf logischerweise g_Menu[UserIndex] = 1 gesetzt werden, da das kill_menu es erneut auf 0 setzt. und auf diese art und weise weiss die HandleMS funktion immer, ob der spieler gerade das menü dieses plugins sieht. alles klar? |
Autor: | Sir Drink a lot [ 23.01.2003, 12:36 ] |
Betreff des Beitrags: | |
@Rinde: ok. ich habe zwar jetzt nicht intensiv Deine Vorgehensweise getestet, aber das killmenu für alle CS-Menues habe ich ja bisher in jedem Menu-Plugin drin. Deine Idee ist aber gut. /* Anmerkung:rmb_reset würde ich dann aber auf ACCESS_CONSOLE setzen, wenn es die einzelnen Menüs untereindander aufrufen. */ Aber ich denke, ich habe bei mir nur einen kleinen Fehler gemacht...ich werde es nochmal durchgehen. Bei mir sollte es normalerweise so sein, dass immer wenn der Spieler das menu verlässt, auch seine kompletten Arrays gelöscht werden. |
Autor: | Rinde [ 23.01.2003, 14:29 ] |
Betreff des Beitrags: | |
Zitat: Anmerkung:rmb_reset würde ich dann aber auf ACCESS_CONSOLE setzen, wenn es die einzelnen Menüs untereindander aufrufen.
plugin_exec hat denselben accesslevel, wie der user, der es ausgeführt hat, d.h. es muss ACCESS_ALL sein, sonst funktioniert es nicht/edith: quoten ist schwer |
Autor: | [-=THH=-]Stillsetzhut [ 23.01.2003, 15:17 ] |
Betreff des Beitrags: | |
Erstma verdaum THX |
Autor: | Sir Drink a lot [ 23.01.2003, 19:45 ] |
Betreff des Beitrags: | |
@Rinde:hast Recht. /waltraud: Das mit dem Quoten klappt schon noch Wehe, Du editierst dabei meine Beiträge |
Autor: | Rinde [ 23.01.2003, 22:40 ] |
Betreff des Beitrags: | |
ich habe diesmal drauf geachtet, ich schwör auf koran |
Autor: | Gonz [ 15.03.2003, 09:53 ] |
Betreff des Beitrags: | immer umleiten? |
Huhu Ihr, unser Server ist umgezogen - wech von NGZ - das Problem ist nur, dass die Leute nicht lesen können oder wollen, sodass sie weiterhin aufm "alten" spielen.... Ist es möglich dass jeder spieler der connected automatisch weitergeleitet wird, egal wie voll der Server ist? Gruß Gonz |
Autor: | [-=THH=-]Stillsetzhut [ 15.03.2003, 14:26 ] |
Betreff des Beitrags: | |
Nimm das Redirect Plugin. Zu finden unter http://adminmod.battlenation.de/plugins.php Punkt 45 . Hab es kurz ueberflogen, es braucht allerdings LogD. Befehl waere Code: admin_redirect all. |
Autor: | Gonz [ 15.03.2003, 16:07 ] |
Betreff des Beitrags: | |
Danke für den Tip, leider stürzt der Server aber ab, sobald jemand connectet... Habs nich zum Laufen bekommen |
Autor: | [-=THH=-]Stillsetzhut [ 15.03.2003, 18:00 ] |
Betreff des Beitrags: | |
Oups, ich hab das Plugin nie probiert. Es soll auf einem NGZ Server laufen, sagst Du? Ist es auch sicher eine .amx fuer Windows? |
Autor: | Gonz [ 15.03.2003, 18:52 ] |
Betreff des Beitrags: | |
Hihihi, Nein, es soll auf unserem pro-gameserver laufen.... Also, auf der am-seite gibt es nur eine .sma Datei. Wir haben einen Linux-Server, deswegen habe ich die Linux .sma gezogen und mit einem aktuellen AM compiliert.... Evtl. ist das plugin schon zu alt, sodass deswegen der Server abschmiert wenn einer connectet? Wer weiss es? Wer weiss es? Die Klasse? Greetz Gonz |
Autor: | [-=THH=-]Stillsetzhut [ 15.03.2003, 19:24 ] |
Betreff des Beitrags: | |
Es gibt keine Linux oder Windows .sma (jedenfalls nicht, dass ich wuesste). Die .sma beinhaltet den Quellcode des Plugins und ist fuer beide Betriebssysteme gleich.. Ich compiliere sie immer auf meinem Windowsclienten zu einer Win.amx und konvertiere diese dann wiederum, meist mit dem GUI Converter, in eine Linux.amx um. Nur um hier mal der Verwirrung einhalt zu gebieten. Du hast sicher das richtige gemeint. Deine Servershutdowns beim Connecten von Spielern deuteten schon auf eine .amx fuer das falsche Betriebssystem hin. [-=THH=-]Stillsetzhut |
Autor: | Gonz [ 15.03.2003, 19:31 ] |
Betreff des Beitrags: | |
Herr, schmeiss Hirn vom Himmel!!!!!! Ich hab das umwandeln von windoof in linux vergessen Die Pause war für mich wohl doch zulang..... Ich nehm alles zurück und behaupte das Gegenteil!! Nu gehts natürlich THX!!! Greetz Gonz Mein Bildchen passt besser denn je zu mir |
Seite 1 von 2 | Alle Zeiten sind UTC+01:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |