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

Akurates Timeleft (Notlösung?)
https://www.adminmod.de/viewtopic.php?t=2495
Seite 1 von 1

Autor:  [WING] Black Knight [ 14.04.2002, 04:12 ]
Betreff des Beitrags:  Akurates Timeleft (Notlösung?)

Hi,

bin mal unter die Codeklauer gegangen und habe den Umstand, dass das Timeleft von AdminMod so schlecht berechnet wird (kein Vorwurf an die Programmierer!), quasi entfernt. Wie viele wissen, kann man durch die Eingabe von "timeleft" in der Console des Clients eine recht akurate Rückmeldung der Restzeit bekommen. Netterweise wird das sogar direkt auf dem Spielerschirm ausgegeben. Ich habe daher ein Plugin erstellt, das genau diese Funktion beim Client ausführt. Ein erster Test war erfolgreich.
Kein Vorteil, wenn es nicht auch einen Nachteil gäbe. Die so beliebte Funktion, dass die Zeit angesagt wird entfällt natürlich, da der Server die genaue Zeit ja nicht kennt. Auch für Timerem ist die Funktion unbrauchbar. Allerdings will ich morgen mal testen, ob sie nicht in SDals playeraward von Nutzen ist. Dann würde nach jeder Runde die Restzeit angezeigt, was neben dem aktuellen Spielstand für CWs besonders interessant wäre.
Nun noch der zugegebenermaßen simple Code (Jeder fängt mal klein an, :wink: ):
Code:
/* Dieses Plugin gibt die akurate Zeit aus, da die Timeleft-Funktion von Client ausgeführt wird.
Vielen Dank an alle, bei denen ich den Code geklaut habe. Insbesondere daRope und Sir Drink a lot :-D */

#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>

new STRING_VERSION[MAX_DATA_LENGTH] = "2.50.2";

public HandleSay(HLCommand,HLData,HLUserName,UserIndex) {

	new Data[MAX_DATA_LENGTH];
	
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	strstripquotes(Data);

	if (streq(Data, "timeleft")==1) {
		new userid = 0;
		new wonid = 0;
		new teamid = 0;
		new username[200];
		new i = 0;
		new x = 0;
		x = maxplayercount();
		for (i = 1; i <= x; i = i + 1) {
			strinit(username);
			if (playerinfo(i, username, 200, userid, wonid, teamid) == 1) {
				execclient(username, "timeleft");
			}
		}
	}
	return PLUGIN_CONTINUE;
}

public plugin_init() {
	plugin_registerinfo("Akurates Timeleft","Gibt eine genaue Restzeitangabe aus.",STRING_VERSION);
	plugin_registercmd("say","HandleSay",ACCESS_ALL);
	plugin_registerhelp("say",ACCESS_ALL,"say timeleft: Gibt die Restzeit an.");
	
	return PLUGIN_CONTINUE;
}
Ich hoffe, es funktioniert so wie es soll. Ein Test lief jedenfalls ohne Probleme ab.

Autor:  Loki1 [ 14.04.2002, 07:56 ]
Betreff des Beitrags: 

es ist auf jeden Fall eine Alternative zur Version mit logd.

man könnte es alternativ auch jede Minute anzeigen lassen... wäre auch eine ganz nette Idee, finde ich...

ganz klar: Eigentlich eine Klasse Idee, da hätten wir auch früher drauf kommen können ;)

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

Das ist ja cool :-)
Ich werde mal sehen, was sich da noch mit der Speech-Ausgabe machen lässt.

Autor:  [COLA]*Whiskey [ 14.04.2002, 15:09 ]
Betreff des Beitrags: 

hab ich mich schon immer gefragt ob das nich auch so geht da die zeit vom timeleft ja 100 % genau ist. wenn man die zeit auslesen könnte dann kann man doch bestimmt recht einfach ne speech oder ne centersay-nachricht ausgeben.

bin mal gespannt was SDal da draus macht

Autor:  Sir Drink a lot [ 14.04.2002, 15:45 ]
Betreff des Beitrags: 

habe versagt. Ich kriege es nicht hin. Kriege einfach keinen Wert.

Habe es so versucht x = execclient(xxxx) und habe angenommen, dass in x dann ein Wert steht. Aber es will nicht so ganz.

Autor:  [COLA]*Whiskey [ 14.04.2002, 18:32 ]
Betreff des Beitrags: 

ach was irgendwie geht das schon :D

Autor:  daRope [ 14.04.2002, 18:36 ]
Betreff des Beitrags: 

Wetten, dass nicht? :P

Autor:  [COLA]*Whiskey [ 14.04.2002, 19:24 ]
Betreff des Beitrags: 

Zur Not hat er noch den Telefon-joker

Autor:  [WING] Black Knight [ 14.04.2002, 21:50 ]
Betreff des Beitrags: 

Zu der Einsicht ist er inzwischen selber gekommen. ;)

Autor:  MrClone [ 15.04.2002, 12:11 ]
Betreff des Beitrags: 

So weit ich mich erinnere hab ich das schonmal vor 3 Monaten angesprohen!!!! Nur hat anscheinend keiner zugehört :evil:
Und um die data aus "timeleft" zu bekommen hab ich leider auch keine Mögligkeit gefunden!! wenn man "timeleft" am server anwendet, wird timeleft geloggt?............

Autor:  Sir Drink a lot [ 15.04.2002, 13:30 ]
Betreff des Beitrags: 

Stimmt MrClone :oops:

Ich gehörte auch zu denjenigen, die daran nicht glaubten.

Aber Du bekommst die Data des timeleft nicht brauchbar in die Finger, um daraus noch eine Speechausgabe zu machen.

Autor:  [COLA]*Whiskey [ 15.04.2002, 14:05 ]
Betreff des Beitrags: 

habs zwar nich getestet, aber der Compiler meckert nich rum
Code:
timeleft(timeblabla,MAX_DATA_LENGTH);
bin nur ma so da drauf gekommen da man ja auch z.b.
Code:
nextmap(nextmapblabla,MAX_NAME_LENGTH);
benutzen kann, denn wenn man anstatt timeleft da n anderes wort hinschreibt dann meckert er.

meint ihr das, das funktioniert :-?

Autor:  Warhead [ 15.04.2002, 14:26 ]
Betreff des Beitrags: 

Sicher gibts die timeleft-Funktion, irgendwoher muß man ja die ungenaue Restzeit auch herbekommen.

Autor:  MrClone [ 15.04.2002, 14:59 ]
Betreff des Beitrags: 

@[COLA]*Whiskey
Das ist von adminmod ein eigenes timeleft "timeleft(iPrintToConsole = 1)" ist aber ungenau und schnallt viele Änderungen nicht!

Autor:  [COLA]*Whiskey [ 15.04.2002, 18:06 ]
Betreff des Beitrags: 

hmm achso

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