Sie sind nicht angemeldet.

1

Freitag, 27. März 2009, 13:12

Force Rates

Hallo,

könnte sich jemand wohl mal das Script anschauen ob es richtig ist?

Es handelt sich um folgendes und zwar hätten wir gerne ein Script das Lowrater automatisch beim Serer join hoch setzt!

Sprich, wenn jemand mit folgen Rates joint

rate 10000 > hochsetzen auf 25000
cl_cmdrate 30 > hochsetzen auf 50
cl_updaterate 20 > hochsetzen auf 50

Alles was darüber ist soll nicht verändert werden. Wenn jemand mit
Rate 30000
cl_cmdrate 71
cl_updaterate 71
sollte dies so bleiben!

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import es

### config ###

min_rate = 25000 # wenn rate unter 25000 dann wird set_rate geforced
min_cmdrate = 100 # das selbe
min_updaterate = 100 # das selbe

set_rate = 25000 # setze rate auf 25000 wenn rate unter min_rate
set_cmdrate = 100 # das selbe
set_updaterate = 100 # das selbe

#### ENDE ####

def player_activate(ev):
        rate = es.getclientvar(ev["userid"], "rate")
        crate = es.getclientvar(ev["userid"], "cl_cmdrate")
        urate = es.getclientvar(ev["userid"], "cl_updaterate")
       
        if min_rate > rate or min_cmdrate > crate or min_updaterate > urate:
                SetVars(ev["userid"])
                es.tell(ev["userid"], "#multi", "#lightgreen[FixRates]#green fixing your rates...")
               
        else:
                es.tell(ev["userid"], "#multi", "#lightgreen[FixRates]#green your rates are ok.")
       
       
def SetVars(uid):
        uid = int(uid)
        es.usermsg("create", "setze_vars", "VGUIMenu")
        es.usermsg("write", "string", "setze_vars", "info")
        es.usermsg("write", "byte", "setze_vars", 1)
        es.usermsg("write", "byte", "setze_vars", 4)
        es.usermsg("write", "string", "setze_vars", "type")
        es.usermsg("write", "string", "setze_vars", 0)
        es.usermsg("write", "string", "setze_vars", "msg")
        es.usermsg("write", "string", "setze_vars", "enforcing settings...")
        es.usermsg("write", "string", "setze_vars", "cmd")
        es.usermsg("write", "string", "setze_vars", "rate %i; cl_cmdrate %i; cl_updaterate %i; chooseteam" % (set_rate, set_cmdrate, set_updaterate))
        es.usermsg("send", "setze_vars", uid)
        es.usermsg("delete", "setze_vars")


Das Script läuft auch!
Wenn man mit Lowrates joint dann kommt der Befehl "your rates are ok" !

Wenn man dann in die console "ma_rates" eingibt, dann werden die Rates angezeigt mit denen man gejoint ist.
z.B. 10000 30 20

Oder ist das so normal?

Vielen dank für eure Hilfe!

Chrisber

Administrator

Beiträge: 1 030

Wohnort: localhost

Rootserver vorhanden: Ja

  • Nachricht senden

2

Freitag, 27. März 2009, 13:30

Re: Force Rates

Keine Ahnung, ich bezweifle auch immer noch dass diese Methode zuverlässig arbeitet.
Jedenfalls werden die Variablen Serverseitig gesetzt und deshalb ergibt eine Auslesung mittels es.getclientvar auch immer den alten Wert, den der Client bei sich in der Console hat.

~ Chris
Und das letzte, was gesagt wird, wenn die Welt untergeht, ist: das ist technisch unmöglich.

3

Freitag, 27. März 2009, 14:07

Re: Force Rates

Kann man das denn irgendwie Serverseitig ändern Chrisber! Bin in der Beziehung ein echter noob!

4

Freitag, 27. März 2009, 22:21

Re: Force Rates

Hiho, naja anscheinend ist
Python:
es.getclientvar
defekt und man muss das mit dem shell code machen.

Auf jeden fall habe ich es jetzt etwas verfeinert und funktionstüchtig gemacht.

Python:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import es
import usermsg
import gamethread

### CONFIG ###

min_rate = 25000 # wenn rate unter 25000 dann wird set_rate geforced
min_cmdrate = 100 # das selbe
min_updaterate = 100 # das selbe

set_rate = 25000 # setze rate auf 25000 wenn rate unter min_rate
set_cmdrate = 100 # das selbe
set_updaterate = 100 # das selbe

#### ENDE ####

class FixRates(int):
        def __init__(self, uid):
                self.uid = int(uid)
                self.CheckIt()
               
        def GetRate(self, rate):
                es.set("temp_rate", 0)
                es.server.cmd("es_xgetclientvar temp_rate %i %s" % (self.uid, rate))
                return es.getInt("temp_rate")
               
        def SetRate(self):                 
                es.usermsg("create", "setze_vars", "VGUIMenu")
                es.usermsg("write", "string", "setze_vars", "info")
                es.usermsg("write", "byte", "setze_vars", 1)
                es.usermsg("write", "byte", "setze_vars", 4)
                es.usermsg("write", "string", "setze_vars", "type")
                es.usermsg("write", "string", "setze_vars", 0)
                es.usermsg("write", "string", "setze_vars", "title")
                es.usermsg("write", "string", "setze_vars", "FixRates by sea212. check out http://mattie.info")
                es.usermsg("write", "string", "setze_vars", "msg")
                es.usermsg("write", "string", "setze_vars", "You have the wrong rates. The server has fixed your rates... Please close this window.")
                es.usermsg("write", "string", "setze_vars", "cmd")
                es.usermsg("write", "string", "setze_vars", "rate %i; cl_cmdrate %i; cl_updaterate %i" % (set_rate, set_cmdrate, set_updaterate))
                es.usermsg("send", "setze_vars", self.uid)
                es.usermsg("delete", "setze_vars")
               
        def CheckIt(self):
                rate = self.GetRate("rate")
                crate = self.GetRate("cl_cmdrate")
                urate = self.GetRate("cl_updaterate")
               
                if min_rate > rate or min_cmdrate > crate or min_updaterate > urate:
                        self.SetRate()
                        es.tell(self.uid, "#multi", "#lightgreen[FixRates]#green fixed your rates...")
                          
                else:
                        es.tell(self.uid, "#multi", "#lightgreen[FixRates]#green your rates are ok.")
                       

def player_activate(ev):
        FixRates(ev["userid"])
               
               
def player_spawn(ev):
        FixRates(ev["userid"])

DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

5

Freitag, 27. März 2009, 22:53

Re: Force Rates

Man kann die Netsettings der Spieler nicht ändern. Das ist eigentlich auch ganz gut so. Immerhin gibt es noch Spieler mit einer nicht so guten Anbindung. Du kannst mit den Netsettings des Servers die zulässigen Grenzwerte der Spieler festlegen. Außerdem zeigt ma_rates an was der Spieler für Werte eingestellt hat, aber nicht die vom Server erzwungen Werte.

Lies dir das mal durch: http://www.esl.eu/de/forum/43/6425/421843/">http://www.esl.eu/de/forum/43/6425/421843/</a>

6

Samstag, 28. März 2009, 00:49

Re: Force Rates

Dann joine mal auf unserem Server und probiere es aus!

Es geht du kannst jedem die Rates aufzwingen!

Macht z.B. Force Rates auch dort wirst du auch gezwungen die vorgegeben Rate zu Spielen!
Wir haben schon Rücksicht auf die Leute genommen die einen schlechten Rechner haben und auch eine magere DSL Leitung! (DSL-Lite)
Der jenige ist auch aus unserem Clan und der kann mit den vorgegeben Rates bestens spielen!
Sprich Ping=60 Loss=0 und Choke=0

Wenn du die Server IP haben möchtest dann schreibe bitte eine PM!

Danke trotzdem allen für die ganze Hilfe hier! Da ich auf diesem Gebiet nicht soviel Ahnung habe.

7

Samstag, 28. März 2009, 20:19

Re: Force Rates

Hättest du aber auch einfach mit "sv_mincmdrate, sv_minupdaterate, sv_minrate" machen können ^_^
Das bezweckt das selbe ohne das du dem Client etwas an der Config aufzwingst ^^

DeaD_EyE

Administrator

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

8

Samstag, 28. März 2009, 21:03

Re: Force Rates

Schick mal deine IP vom Gameserver als PM oder hier im Beitrag.

9

Sonntag, 29. März 2009, 22:15

Re: Force Rates

Hallo Dead Eye,

hast du dich überzeugt?

Ach übrigens die Rates sind nicht so vorgegeben wie sie in dem Script stehen, hatte ich vergessen zu erwähnen! zwinker

Gruß Bounty