AdminMod.de
https://www.adminmod.de/

Text (mehr als 10 Zeilen) als CSAY möglich?
https://www.adminmod.de/viewtopic.php?t=9947
Seite 2 von 2

Autor:  Spinne [ 05.05.2007, 11:03 ]
Betreff des Beitrags: 

Sooo, jetzt habe ich ein bisserl mit String Operationen in Small gespielt.
Zuerst habe ich es mit menu() versucht. Aber da habe ich einfach gar nichts angezeigt bekommen (amv_enable_beta menu1 war in meiner adminmod.cfg).
Dann habe ich mir gedacht, dass ich einfach alle Zeilen aus der topten.txt auslese, mir so einen String bastle und den halt über ein motd Fenster rausschreibe. Aber irgenwie will das nicht so ganz klappen ......
Weil ich weiß nicht, welches Zeichen für einen Zeilenumbruch in diesem motd Fenster steht. Dieses könnte ich nämlich ziemlich leicht mit dem Perlskript schreiben.
Na wie auch immer ..... Das habe ich bis jetzt:
Code:
#include <string>
#include <admin>
#include <adminlib>

new STRING_VERSION[MAX_DATA_LENGTH] = "2.50.60_v.0.8";
new FILEPFAD[MAX_TEXT_LENGTH] = "addons/logster_records/";
new txtpfad[MAX_TEXT_LENGTH];
new aussage[MAX_TEXT_LENGTH];
new aussage1[MAX_TEXT_LENGTH];
new zeile;

public plugin_init() {
	plugin_registerinfo("MotD Browser","Displays URL in MotD Window",STRING_VERSION);
	plugin_registercmd("say","HandleSay",ACCESS_ALL,"say /rank: displays the Top10 Players");
	return PLUGIN_CONTINUE;
}

display_menu(User[]){
	snprintf(txtpfad,MAX_TEXT_LENGTH,"%stopten.txt",FILEPFAD);
	for (zeile=1;zeile <= 10;zeile++){
	readfile(txtpfad,aussage1,zeile,MAX_TEXT_LENGTH);
	strcat(aussage,aussage1,MAX_TEXT_LENGTH);
	}
	motd(User,aussage);
}

public HandleSay(HLCommand,HLData,HLUserName,UserIndex) {
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	strstripquotes(Data);
	if(strcmp(Data,"/top10")==0){
		display_menu(User);
	}
	return PLUGIN_CONTINUE;
}
meine topten.txt aus der ich lese
Code:
1) Spinne  Ratio: 49.517%^n
2) Cribius  Ratio: 42.299%^n
3) BISI  Ratio: 30.585%
4) hh  Ratio: 21.554%
5) Nadine  Ratio: 6.452%
6) cnc  Ratio: 5.784%
7) NIGHTMARE  Ratio: 4.839%
8) master_of_death  Ratio: 4.839%
9) [HP] Kolt Leopold  Ratio: 3.226%
10) Plaay  Ratio: 2.903%


Würde das evtl. klappen, wenn ich die einzelnen Zeilen in ein Array packe? Wenn ja, wo findet man Doku zum Thema Arrays in Small? Der Link zum Handbuch scheint nicht mehr zu funktionieren :(

Grüße
Spinne

Autor:  Sir Drink a lot [ 05.05.2007, 11:45 ]
Betreff des Beitrags: 

Also mal kurz noch für mich:

Du hast also nicht CS sondern für welches Spiel...?

Autor:  Spinne [ 05.05.2007, 12:19 ]
Betreff des Beitrags: 

Hab gerade bemerkt, dass ich das gar nicht erwähnt habe *oups* :shock: *sry*

Also es geht um einen HLDM Server ....

Autor:  Sir Drink a lot [ 05.05.2007, 12:50 ]
Betreff des Beitrags: 

nun denn...

dann versuch es mal hiermit :) Basiert aber wieder auf einem Menü und nicht motd.

Befehl:

admin_menu_display topten.txt
(Vorrausgesetzt, die topten.txt befindet sich direkt im cstrike Verzeichnis und die Datei heisst auch so ;) )

Mit say /stats wird sie aufgerufen. Er merkt sich die Datei in der vault.ini und lädt sie wieder nach mapchange.

Zur Array Behandlung:
Hier braucht man nur einen normalen Array. Muss aber natürlich viel größer sein als 200!! Lade einfach jede Zeile nacheinander ein und mit strcat füge ich sie dem g_MenuText hinzu. (Wie Du ja oben auch gemacht hast!) Ich baue selber ein "^n" am Ende jeder geladen Zeile ein. Braucht man also im Textfile nicht zu machen.

P.S.: Für Counterstrike oder DoD kann man Farben im Textfile verwenden. \r = rot, \y = gelb \w=weiß und erm... grau war... erm... habs vergessen.

Dateianhänge:
Dateikommentar: Plugin Menu Display
plugin_menu_display.zip [1.67 KiB]
1156-mal heruntergeladen

Autor:  Sir Drink a lot [ 05.05.2007, 13:18 ]
Betreff des Beitrags: 

Ärger Dich nicht mit der MotD Funktion rum...

a. Zeilenumbruch wäre <br>, da Du aber kein HTML darfst....

b. AdminMod kriegt einfach nicht alle Zeichen in das motd Fenster aus einem Array übertragen. Warum auch immer... Hab nie rausgefunden warum... eigentlich wären ca. 1500 Zeichen möglich. Aber es wird immer nach x Zeichen abgebrochen. Die Zahl x kann ich noch nicht mal definieren. Wahrscheinlich ist der Array in der dll/so von AdminMod zu klein gewählt...

Autor:  Sir Drink a lot [ 05.05.2007, 13:49 ]
Betreff des Beitrags: 

Wie wäre es denn, wenn Du das Menü nicht zum laufen bekommst, mit der guten alten Konsole???

admin_con_display textfile.txt

Bei /stats wird dann nach 1sek die Konsole aufgerufen und die Daten angezeigt. :)
(Ich brauche die Sekunde, weil ich ein "clear" vorrausschicke. Das klappt nicht ohne Verzögerung ;) )

Ist natürlich mit Vorsicht zu genießen. Wenn 16 Spieler gleichzeitig Stats aufrufen, dann könnte es was laggen ;) , da ich readfile direkt ausgebe. Wäre natürlich noch zu verfeinern... Aso.. Die einzelne Zeile darf 256 Zeichen nicht überschreiten!

Dateianhänge:
Dateikommentar: Console Display
plugin_console_display.sma [2.87 KiB]
1044-mal heruntergeladen

Autor:  Spinne [ 05.05.2007, 14:16 ]
Betreff des Beitrags: 

Also das plugin_menu_display ist ja UR GEIL.
Hat auf Anhieb funktioniert *thx*. Allerdings verstehe ich nicht, warum die menu() Funktion bei mir nicht funktioniert hat, hab eigentlich nichts anderes gemacht ......

Das mit der Konsole habe ich mir auch einmal überlegt. Aber mich haben am Server schon des öfteren Leute gefragt, wie sie irgendwas auf eine Waffe binden können. Und naja, die meisten wussten dann nicht, was die Konsole ist und wie sie die aufmachen .......

Na jedenfalls ein großes DANKE!

btw: solche Plugins sollten hier ?q=node/view/41 oberste Priorität haben. Weil einen Text am Server einblenden ist so eine Sache ..... das hab sogar ich Small Noob schon rausgefunden.

Grüße
Spinne

Autor:  Sir Drink a lot [ 07.05.2007, 08:19 ]
Betreff des Beitrags: 

Zur Menüfunktion:

Aus Deinem Code oben, stand wahrscheinlich ja anstatt
Code:
motd(User,aussage); 
dies:
Code:
menu(User,aussage); 
Nebenbei bemerkt:
Okay. Der String "aussage" war nur etwas klein gewählt. MAX_TEXT_LENGTH sind 200 Zeichen. Angenommen, Zeile 1 hat schon 70 Zeichen. Wird mit "aussage1" reingeladen und an "aussage" angehangen. 2. und 3. Zeile danach haben auch ca. 70 Zeichen. Dann wäre nach dem Anfügen dieser 2 Zeilen das Ende des Strings "aussage1" erreicht... und alles andere könnte nicht mehr angezeigt werden.

1. Möglichkeit:
Ob eine Fehlermeldung wie AMX 10 Error kommt, wenn man mit strcat die Länge des Arrays überschreitet, weiß ich nicht. Aber wenn doch, wäre dies vllt. der Grund, warum das Menü nicht angezeigt werden konnte.

2. Möglichkeit:
Die Funktion menu(....) hat aber noch 2 Parameter mehr. "keys" und "Anzeigezeit", wobei die "Anzeigezeit" optional ist. Daher vermute ich nun, da Du die Angabe der keys vergessen hast, dass auch nicht der Teil der aussage1 in Menüform angezeigt werden konnte. Würde aber beim Kompilieren ein Warning produzieren!

3. Möglichkeit: (abwegiger Gedanke)
Du hast auch noch die Anzeigezeit mit angegeben und diese zu klein gewählt oder ein anderes CS Menü hat es einfach überschrieben.

Autor:  Sir Drink a lot [ 07.05.2007, 08:33 ]
Betreff des Beitrags: 

Anbei noch mal ein Beispielplugin, um auch auf Eingaben des Menüs zu reagieren.

Dateianhänge:
plugin_testmenu.zip [1.59 KiB]
1148-mal heruntergeladen

Seite 2 von 2 Alle Zeiten sind UTC+01:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/