Archiv verlassen und diese Seite im Standarddesign anzeigen : Serverconfig auslesen für Logic_Compare?
Alife
13.08.2010, 19:42:06
Ich gebe ein Beispiel was ich meine:
Sagen wir die Freezetime ist auf 20 Sekunden eingestellt.
Wegen mapspezifischen Gründen darf sie aber nicht über 15 Sekunden liegen...
Was tun?
Ein logic_compare muss her! (kleiner Reim :D)
Einfach 15 Sekunden, kk, alles gut... und dann als Vergleichswert?
Etwa einfach mp_freezetime?
Und dann einfach ein point_servercommand erstellen welches die freezetime auf 15 setzt.
Problem: mp_freezetime will er nicht als Variable haben (er setzt einfach IMMER ... oder NIE die Freezetime auf 15)
Okay, falls das unverständlich sein sollte, noch einmal eine andere Erklärungsversion für Informatiker:
Ich will folgendes mappingtechnisch (also im Hammer) lösen:
if mp_freezetime>15
then mp_freezetime:=15
Mein Problem ist einfach die Variable mp_freezetime irgendwie einzulesen.
Ist jetzt nur Beispielhaft, sollte natürlich für alle anderen Werte (sv_airaccelerate etc) funktionieren.
Falls mein Problem immer noch nicht klar ist -> nachfragen
Achja, nicht zu vergessen: Hallo ihr :wink:
Billkiller
13.08.2010, 19:50:22
Öhm ich versteh dein Problem nicht? Warum benutzt du nicht einfach ein logic_auto mit einem point_servercommand!?
Ist doch nicht so schlimm wenn der Wert noch mal an den Server gegeben wird?
Frontschwein
13.08.2010, 19:54:11
Ich kann deine Nachsicht, bzw dein vorsichtiges Vorgehen mit servercommands verstehen, aber:
Die Serverconfig wird bei jedem Mapchange neugeladen.
Sprich, du musst nichts auslesen, sondern überschreibst einfach temporär Teile der serverconfig. Das ist nicht schlimm und auch nix Neues, das wird nunmal so gemacht
Alife
13.08.2010, 20:11:04
Naja, wenn Leute mit 5 Sekunden starten wollen, ist das für mich kein Problem... Warum sollte ich diese Zeit auf 15 Verlängern?
Wenn Leute mit 30 Sekunden (übertrieben) freezetime starten wollen IST das ein Problem... Aber wie kann ich prüfen, ob sie jetzt mehr Zeit als 15 Sekunden haben oder weniger?
Logic_auto bzw logic_relay deshalb nicht, da ich ja die freezetime nicht immer festnageln will, sondern nur wenn nötig..
Ich kann deine Nachsicht, bzw dein vorsichtiges Vorgehen mit servercommands verstehen, aber:
Die Serverconfig wird bei jedme mapchange neugeladen.
Sprich, du musst nichts auslesen, sondern überschreibst einfach temporär Teile der serverconfig. Das ist nicht schlimm und auch nix Neues, das wird nunmal so gemacht
Soll ja dann nur für eine Maprunde sein (also wenn meine Map gestartet wird, auf anderen ist mir das egal, ich will ja nicht global den Server hacken bzw. dauerhaft beeinflussen, nur für die Map für welche die Einstellungen, die ich haben möchte wichtig sind... Das die nach Mapchange überschrieben werden ist mir klar und egal bzw. sogar erwünscht.)
Frontschwein
13.08.2010, 20:22:15
Mir ist kein Weg bekannt (außer Mod), irgendwelche Werte aus der Config auszulesen. Du kannst nur überschreiben.
Und dann is das auf deiner Map so, dass die Freezetime <15sek ist. Wenns dem Serverbetreiber nicht passt, kanner die Map nicht nutzen.
Ich würd mir da keinen Kopf machen
Alife
13.08.2010, 20:42:50
Also, wenn man z.B. einfach in die Konsole "mp_freezetime" (ich bleibe bei dem Beispiel) eingibt, wird ja auch die jetzige Variable angezeigt. Also es wird geschrieben
"mp_freezetime" = "15"
... Oder so ähnlich...
Irgendwie muss es doch möglich sein, die 15 auszulesen und zwar für die Map als Variable für ein logic_compare... :wall:
edit: Achja und ich mach mir halt nen Kopf... Für all die lieben Leute...
damagefilter
14.08.2010, 10:30:51
Es gibt kein Entity im CSS FGD welches die Fähigkeit hätte eine cfg Datei auszulesen.
Das ist natürlich kein großes Ding, soetwas auszulesen.
Aber so ein Entity gibt es trotzdem nicht.
Sprich es gibt keine ... ich meine wirklich absolut keine Möglichkeit, an diese Variable ranzukommen.
Und wie Frontschwein schon sagte ist das auch gar nicht notwendig.
Wenn du mittels eines logic_auto und eines point_servercommand
mp_freezetime 15 gibst dann reicht das völlig aus.
Wenn dann irgendwann ne andere Map geladen wird is die Freezetime
wieder so, wie sie vorher war.
(Auch das hat Frontschwein bereits erwähnt. Aber ich möchte es gern nochmal sagen)
//Ich meine das bestimmt nicht böse oder so.
Ich will nur vermeiden dass du dir Tag und Nacht die Birne zerreibst für etwas,
was bestätigtermaßen einfach nicht geht. ;)
Alife
14.08.2010, 12:23:31
Es gibt kein Entity im CSS FGD welches die Fähigkeit hätte eine cfg Datei auszulesen.
Das ist natürlich kein großes Ding, soetwas auszulesen.
Aber so ein Entity gibt es trotzdem nicht.
Sprich es gibt keine ... ich meine wirklich absolut keine Möglichkeit, an diese Variable ranzukommen.
Und wie Frontschwein schon sagte ist das auch gar nicht notwendig.
Wenn du mittels eines logic_auto und eines point_servercommand
mp_freezetime 15 gibst dann reicht das völlig aus.
Wenn dann irgendwann ne andere Map geladen wird is die Freezetime
wieder so, wie sie vorher war.
(Auch das hat Frontschwein bereits erwähnt. Aber ich möchte es gern nochmal sagen)
//Ich meine das bestimmt nicht böse oder so.
Ich will nur vermeiden dass du dir Tag und Nacht die Birne zerreibst für etwas,
was bestätigtermaßen einfach nicht geht. ;)
Hab mir gestern schon den ganzen Tag den Kopf zerbrochen... >_>
Grrrrrrrrrrr... Jetzt muss ich mir irgendwas anderes überlegen... Weil ich wie gesagt die Einstellungen nur verändern möchte, wenn es nötig ist...
Danke trotzdem^^
Achja, gibt es irgendwie irgendwas, was bestimmte Events merkt?
Ergo: Bombe grade geplanted, Erster Spieler erschossen, Freezetime vorbei?
Absolute
14.08.2010, 12:35:47
In einer meiner maps lese ich die Server Variablen aus (braucht aber eventscripts):
point_servercommand mit dem command
if (server_var(mp_freezetime) > 15) then do changelevel de_dust2
changed jetzt zum beispiel die map auf de_dust2 wenn die freezetime >15 ist :p
und wenn du mapinterne outputs abfeuern willst brauchst du folgende methode:
es_set randomuser 0
es_getuserid randomuser
if (server_var(mp_freezetime) > 15) then do es_fire server_var(randomuser) <name des target entities> <input>
damagefilter
14.08.2010, 13:11:00
Ja.
Das es mit eventscripts geht, das ist sicherlich keine Frage.
Es geht aber darum dass du nicht erwarten kannst dass ein Server eventscripts installiert hat.
(Die meißten haben schon, aber trotzdem nicht alle)
Und wenn dann so ein Server aus versehen mal die Map spielt,
dann fliegt das ganze Konzept über den Jordan.
Und das is dann halt auch nicht das Maß aller Dinge.
Obgleich das so natürlich ne sehr gute Lösung ist ;)
Alife
15.08.2010, 00:03:50
Ja.
Das es mit eventscripts geht, das ist sicherlich keine Frage.
Es geht aber darum dass du nicht erwarten kannst dass ein Server eventscripts installiert hat.
(Die meißten haben schon, aber trotzdem nicht alle)
Und wenn dann so ein Server aus versehen mal die Map spielt,
dann fliegt das ganze Konzept über den Jordan.
Und das is dann halt auch nicht das Maß aller Dinge.
Obgleich das so natürlich ne sehr gute Lösung ist ;)
Genau das ist es... ich will keinerlei Plugins verwenden müssen... Wasn shice
damagefilter
15.08.2010, 13:46:23
Wie gesagt.
Ich denke es gibt nativ keine solche Methode einfach aus dem Grund dass man, wenn man Servervars ändern will einfach
ein servercommand Entity nutzen kann.
Das zieht ja keinerlei Performance oder ähnliches und es stellt definitiv sicher dass auf deiner Map alles so ist wie es sein sollte.
(Beim nächsten Mapchange setzen sich die Vars ja wieder zurück)
Zu den Listenern ... ich glaube auch das gibts nicht.
Also es werden natürlich Events gefeuert wenn irgendwas passiert. Ist ja klar.
Aber die kann man aus der Map heraus nicht abfangen.
Was du aber mal probieren könntest: (ich gebe keine Garantie dass es funktioniert)
Du könntest in allen playerstarts ein OnKill Output stecken welches dann triggert, was auch immer getriggert werden soll.
Dann vlt das getriggerte Entity als letztes disablen damit es nicht nochmal getriggert werden kann.
Öh...
War das verständlich? :ugly:
Alife
15.08.2010, 14:16:29
Wie gesagt.
Ich denke es gibt nativ keine solche Methode einfach aus dem Grund dass man, wenn man Servervars ändern will einfach
ein servercommand Entity nutzen kann.
Das zieht ja keinerlei Performance oder ähnliches und es stellt definitiv sicher dass auf deiner Map alles so ist wie es sein sollte.
(Beim nächsten Mapchange setzen sich die Vars ja wieder zurück)
Zu den Listenern ... ich glaube auch das gibts nicht.
Also es werden natürlich Events gefeuert wenn irgendwas passiert. Ist ja klar.
Aber die kann man aus der Map heraus nicht abfangen.
Was du aber mal probieren könntest: (ich gebe keine Garantie dass es funktioniert)
Du könntest in allen playerstarts ein OnKill Output stecken welches dann triggert, was auch immer getriggert werden soll.
Dann vlt das getriggerte Entity als letztes disablen damit es nicht nochmal getriggert werden kann.
Öh...
War das verständlich? :ugly:
War es, aber funktioniert afaik nicht :ugly:
Powered by vBulletin® Version 4.2.0 Copyright ©2013 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.