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

Klassen für Maps ein- und ausschalten
https://www.adminmod.de/viewtopic.php?t=9019
Seite 1 von 2

Autor:  Spinne [ 28.11.2004, 18:47 ]
Betreff des Beitrags:  Klassen für Maps ein- und ausschalten

Hallo Leutz,
ich hab da mal ne Frage. Kann man mit Adminmod die Zahl der erlaubten Klassen steuern?
z.b.:
Aufklärer ist in der Map "mulch_dm" verboten

Aufklärer ist in 2 Fort erlaubt

Gibt es dafür ein Plugin???

Und noch etwas ... wozu ist eigentlich diese "vault.ini"? Ich hab mir die Beschreibung in diesem online Manual durchgelesen, aber besonders ergiebig ist die leider nicht. . . .
Fragen über Fragen. Jedenfalls thx 4 ur help

mfg Spinne

Autor:  [WING] Black Knight [ 28.11.2004, 19:12 ]
Betreff des Beitrags: 

Es geht also um TFC?
Ein mapbasiertes Plugin zum setzen der Klassenvariablen ist mir nicht bekannt. Müsste jemand schreiben. Sollte aber nicht so schwierig sein.

Unter AMXMod kann man beispielsweise Servervariablen mit Plugins definieren und auch setzen. Dies steht unter Admin Mod nicht zur Verfügung. Die vault.ini ist jedoch ein Ersatz dafür. Die dort gespeicherten Daten werden von Admin Mod in den internen Speicher geladen und stehen den Plugins zur dauerhaften Speicherung zur Verfügung. Man kann also beliebige Plugin-Einstellungen in diese Datei speichern lassen. Es ist allerdings nicht zu empfehlen die Datei manuell zu bearbeiten. Gute Plugins übernehmen das ganz allein. In der Regel genügt es daher eine solche Datei nur zu erstellen.

Autor:  Spinne [ 28.11.2004, 21:09 ]
Betreff des Beitrags: 

Hey,
thx für die schnelle Antwort!!! *begeistert
Mit AMX-Mod hab ich mich noch nie beschäftigt. Aber rein theoretisch müsste das eh auch mit Admin-Mod möglich sein?!!?!? Weil wenn ja, werd ich mich halt ins Scripting reinlesen. So schwer sieht es, auf den ersten Blick zumindest, eh nicht aus.
Das mit der "vault.ini" hab ich immer noch ned gerafft :( Meinst Du mit internen Speicher das RAM???? Aber für mein Anliegen hilft mir das eh nicht, oder?!?!?!

mfg Spinne

Autor:  [WING] Black Knight [ 28.11.2004, 21:57 ]
Betreff des Beitrags: 

AMXMod ist nur ein Beispiel gewesen.
Natürlich ist das mit Admin Mod möglich, da hier nur ein paar TFC Servervariablen gesetzt werden müssen.

Ok, versuchen wir es mit der vault.ini anders.
In Admin Mod Plugins kann ich nur statische Variablen oder Felder erstellen, die zudem nur für die Dauer einer Map ihren Wert behalten. Diese Restriktion hat zum großen Teil sicherheitstechnische Gründe und deshalb wird auch Small als Sprache verwendet. (DaRope möge mich korrigieren, wenn ich nicht 100%ig richtig liege)
Will ich nun Daten über einen Mapchange retten oder, in selten Fällen, auch dynamischen Speicher verwenden, so müsste ich das über eine andere Methode erreichen.
Man könnte jetzt alle Daten in eine Datei schreiben. Das hätte jetzt das Problem, dass ich meine Daten erst durch suchen wiederfinden müsste. Das kostet aber sehr viel Zeit, insbesondere mittels readfile(). Festplattenzugriffe sind nunmal sehr langsam verglichen mit Speicherzugriffen.
Daher wurde die vault.ini eingeführt. Diese wird beim Mapstart in den Speicher geladen. Ich kann also die Einstellungen der Plugins dorthin speichern und bin beim Abruf deutlich schneller (get_vaultdata()).
Beim Schreiben der Variablen wird allerdings alles auf einmal in die vault.ini geschrieben, so dass ich im Gegensatz zu writefile() nur einen Schreibvorgang habe.
Die vault.ini hat also ihre Vorteile gegenüber einfachen Dateien, da die Einstellungen im Speicher vorliegen.

Autor:  Sir Drink a lot [ 29.11.2004, 02:02 ]
Betreff des Beitrags: 

nun...um zum Plugin zurückzukommen :)

Es stellt sich also nun die Frage, wie man genau die Klasse abfängt.
Leider spiele ich kein TFC und habe keine Ahnung davon.

LogD (ich bin ja ein Anhänger davon...zusätzliches metamod-plugin) besitzt einen Event 55 Role Selection...
Damit könnte man nun eventuell (noch nie benutzt!!!) herrausfinden, welche Rolle der Spieler ausgewählt hat...bzw. dann irgendwie ihn auch wieder dort rauszuwerfen, wenn diese Rolle nicht erlaubt ist...dass weiss ich aber noch nicht, ob das möglich ist...

LogD: http://logd.sourceforge.net
LogD Events: http://logd.sourceforge.net/help/events.html

Autor:  [WING] Black Knight [ 29.11.2004, 09:15 ]
Betreff des Beitrags: 

Dann starte doch mal einen TFC-Server und schau Dir die Servervariablen an.

Autor:  Sir Drink a lot [ 29.11.2004, 12:31 ]
Betreff des Beitrags: 

aber Spinne wollte sich doch in Scripting einlesen :)
Ich wollte nur Tipps geben.

Aber mich packt gleich die Neugier und werde es doch mal testen :lol:

Autor:  [WING] Black Knight [ 29.11.2004, 13:04 ]
Betreff des Beitrags: 

Das soll er auch gerne tun, nur ist die Verwendung von LogD hier wohl mit Kanonen auf Spatzen schießen.

Autor:  Sir Drink a lot [ 29.11.2004, 14:13 ]
Betreff des Beitrags: 

stimmt. Habe gerade noch mal überlegt.
LogD bringt ja auch nichts, um etwas zu verbieten.

Da muss man nun doch das menuselect mit return HANDLED abfangen.

Man muss also nur den Befehl "changeclass" registrieren, dem Player einen Flag setzen, menuselect abfangen und vergleichen ob erlaubt, verbieten mit return PLUGIN_HANDLED;

Fertig :)

Autor:  Sir Drink a lot [ 29.11.2004, 14:52 ]
Betreff des Beitrags: 

^naja...blödes MOD...menuselect springt beim Auswählen des Teams oder Klasse nicht an....das ist blöd...mal sehen, ob man es noch irgendwie anders rausbekommt. Sonst muss man doch LogD verwenden...

Autor:  [WING] Black Knight [ 29.11.2004, 15:58 ]
Betreff des Beitrags: 

*seufz*
Schau Dir doch mal bitte die "cr_" Variablen an.

http://www.config-world.uklinux.net/tfc/1.shtml

Autor:  Sir Drink a lot [ 29.11.2004, 16:32 ]
Betreff des Beitrags: 

fein. na dann kann man es ja ganz anders machen.

Autor:  Sir Drink a lot [ 29.11.2004, 18:17 ]
Betreff des Beitrags: 

Code:
#include <string>
#include <admin>
#include <adminlib>

new STRING_VERSION[MAX_TEXT_LENGTH]="0.8";

#define MAX_CLASSES	10

new g_Classes[MAX_CLASSES][MAX_NAME_LENGTH]={
	"scout",
	"sniper",
	"soldier",
	"demoman",
	"medic",
	"hwguy",
	"pyro",
	"spy",
	"engineer",
	"random"
};

public plugin_init() {
	plugin_registerinfo("TFC Class Restriction","Restricts classes in TFC",STRING_VERSION);
	plugin_registercmd("admin_tfc_restrict","restrict_class",ACCESS_CONFIG,"admin_tfc_restrict <class> <-1=restrict/0=unlimeted/number of players>: name of class, which shall be restricted/limited");
	return PLUGIN_CONTINUE;
}

public restrict_class(HLCommand,HLData,HLUserName,UserIndex) {
	new Data[MAX_DATA_LENGTH];
	new Class[MAX_NAME_LENGTH];
	new Number[MAX_NUMBER_LENGTH];
	new iNumber; 
	new i;
	
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	strbreak(Data,Class,Number,MAX_DATA_LENGTH);
	
	if(strlen(Number)!=0){
		iNumber=strtonum(Number);
		for(i=0;i<=MAX_CLASSES;i++){
			if (strcasecmp(Class,g_Classes[i])==0){
				snprintf(Data,MAX_DATA_LENGTH,"cr_%s %i",g_Classes[i],iNumber);
				exec(Data);
				break;
			}
		}
	}else{
		selfmessage("[CLASS-RESTRICT] You have to use <classname> <-1=restrict or 0=unlimeted or number of players>");
	}
	
	selfmessage("---------------------------------");
	selfmessage("* Restricted classes on this map:");
	selfmessage("* (-1=restricted / 0=unlimeted / >0=no. of players)");
	for(i=0;i<MAX_CLASSES;i++){
		snprintf(Class,MAX_NAME_LENGTH,"cr_%s",g_Classes[i]);
		snprintf(Data,MAX_DATA_LENGTH,"* %s : %i",g_Classes[i],getvar(Class));
		selfmessage(Data);
		strinit(Data);
	}
	selfmessage("---------------------------------");
	return PLUGIN_HANDLED;
}
 
Naja...ein Plugin ist dann wohl eher überflüssig...aber was solls. Man sollte nun aber daran denken, die Klassen mit cr_ in der server.cfg anzulegen, in der autoexec.cfg mapchangecfgfile "server.cfg" setzen und den Server neu starten. Sonst behält er eventuelle Restriktionen immer bei. Egal welche Map.

plugin_base muss aktiviert sein:
Um dann einfach mapspezifische Restriktionen anzulegen, erstellt man einfach eine mapname.cfg und kopiert diese in das TFC Verzeichnis auf dem Server.

Und da schreibt man eben z.B. rein:
cr_scout -1

Autor:  daRope [ 29.11.2004, 21:12 ]
Betreff des Beitrags: 

Ich meine ja, dafuer braucht man gar keine Plugin, geschweige denn Admin Mod, da TFC das von Haus aus mitbringt. Inklusive Konfigadteien pro Map. Befrage er dazu mal Tante Google.

Autor:  Sir Drink a lot [ 29.11.2004, 21:25 ]
Betreff des Beitrags: 

Zitat:
Ich meine ja, dafuer braucht man gar keine Plugin
ja. ich weiss...aber da habe ich das Plugin schon fertig gehabt. :)
Zitat:
Inklusive Konfigadteien pro Map
Das ist mir allerdings neu. Naja. Fein.

Ich war eigentlich davon ausgegangen, dass wenn hier einer nach Optionen fragt, dass er sich mit seinem MOD 100% auskennt und alle relevanten Daten zum MOD erforscht hat.

Damit ich nicht anfangen brauche, mich mit dem MOD zu beschäftigen.

Tja, leider verloren. :)

Autor:  MasterK [ 30.11.2004, 18:37 ]
Betreff des Beitrags: 

tss, du wolltest nur deine programmiersucht ein wenig besänftigen :)

Autor:  Sir Drink a lot [ 30.11.2004, 19:10 ]
Betreff des Beitrags: 

*hm..ich brauche eine Therapie gegen Programiersucht...schnell mal googeln*

Autor:  MasterK [ 30.11.2004, 19:24 ]
Betreff des Beitrags: 

http://www.onlinesucht.de/
:D

Autor:  Spinne [ 30.11.2004, 20:55 ]
Betreff des Beitrags: 

Zitat:
Ich meine ja, dafuer braucht man gar keine Plugin, geschweige denn Admin Mod, da TFC das von Haus aus mitbringt. Inklusive Konfigadteien pro Map. Befrage er dazu mal Tante Google.
Boaaaah,
erst mal thx für die Anteilnahme. Bin begeistert . . ..
Hab grad mit Google gesucht, aber dafür hab ich nix gefunden :( Könntest vielleicht mal den Link hier reinposten :) ????

danke Spinne

Autor:  Sir Drink a lot [ 30.11.2004, 21:22 ]
Betreff des Beitrags: 

huh?

BlackKnight hat doch schon die cvarliste geposted, mit der man über rcon alles einstellen kann:

http://www.config-world.uklinux.net/tfc/1.shtml

Oder mein Plugin benutzen, was ich oben geschrieben habe :)
Dies führt eben auch die Cvars für die Restriktion aus.
Zitat:
Inklusive Konfigadteien pro Map
Da habe ich nicht weiter gesucht. Weiss ich nicht.

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