Кто знаеть python ?

maza511

Участник
Сообщения
882
Реакции
407
Кто разбирается в этом языке? Нужно чутка править файл..
 

maza511

Участник
Сообщения
882
Реакции
407
Вот я подделал под себя скрипт:
PHP:
#anti-bhop.py

### imports ###
import es
import playerlib
import time


# Number of warnings before the Player get banned
numWarnings = 10

# The number of minutes a player get banned
# Tip: write 0 for permban
timeOfBan = '5'

#intern used variable
Data = {}


default = str(es.ServerVar('eventscripts_noisy'))

def load():
    es.setinfo('eventscripts_noisy', '1')

def unload():
    es.setinfo('eventscripts_noisy', default)

def warnPlayer(userid):
    if Data[userid]['warnings']+1 == numWarnings:
        es.tell(userid, "#multi", "#green ПЕРЕСТАНТЕ БАНИХОПИТЬ ИЛИ ВАС ЗАБАНЯТ!")
    else:
        es.tell(userid, "#multi", "#lightgreen ВНИМАНИЕ#default ПЕРЕСТАНТЕ БАНИХОПИТЬ!")

def player_disconnect(ev):
    if Data.has_key(ev['userid']):
        del Data[ev['userid']]
        
def player_footstep(ev):
    if not Data.has_key(ev['userid']):
        Data[ev['userid']] = {}
        Data[ev['userid']]['laststep'] = 0
        Data[ev['userid']]['warnings'] = 0
    Now = float(time.time())
    Old = float(Data[ev['userid']]['laststep'])
    Data[ev['userid']]['laststep'] = Now
    if (Now - Old) <= 0.01:
        if Data[ev['userid']]['warnings'] < numWarnings:
            warnPlayer(ev['userid'])
            Data[ev['userid']]['warnings'] += 1
        else:
            es.server.queuecmd("kickid %s Забанен на 5 минут за банихоп" % ev['userid'])
            es.server.queuecmd("banid %s %s" % (timeOfBan, es.getplayersteamid(ev['userid'])))

Но он не совсем устраивает. Если человек бхопит десять раз, то его банит на 5 минут.
Нужно переделать так, чтобы игрок сделавший бхоп 10 раз ПОДРЯД только банился. То есть если игрок сделал бхоп 9 раз и перестал прыгать, надо чтоб все сбилось и он снова мог прыгать 9 раз =)
 

_creotiv_

Участник
Сообщения
96
Реакции
114
возможно в функцию warnplayer, где условие if........ +1 == numwarnings , добавить еще одно условие что то типа ....if +1 < numwarnings ! то есть если меньше заданного числа то как то стереть данные! хдхд! блин с права весь код не вижу.... с телефона...
 

maza511

Участник
Сообщения
882
Реакции
407
возможно в функцию warnplayer, где условие if........ +1 == numwarnings , добавить еще одно условие что то типа ....if +1 < numwarnings ! то есть если меньше заданного числа то как то стереть данные! хдхд! блин с права весь код не вижу.... с телефона...
Нет, это не то. Так ниче не выдит. Надо добавить новый код, который создаст это условие..
 

Горбаг

Админ Servers-Info.Ru
Сообщения
16
Реакции
0
Чем больше у тебя условий, тем тормознутее плагин. И тем выше вероятность заглючить сервер/плагин бесконечным циклом... Лучше все же отредактируй, а не добавляй новое.
 

tooshkan4uk

Участник
Сообщения
455
Реакции
446
Не тестил, но должно работать. Если игрок перестал прыгать, количество предупреждений данных игроку, сбрасывается на 0

PHP:
#anti-bhop.py

### imports ###
import es
import playerlib
import time


# Number of warnings before the Player get banned
numWarnings = 10

# The number of minutes a player get banned
# Tip: write 0 for permban
timeOfBan = '5'

#intern used variable
Data = {}


default = str(es.ServerVar('eventscripts_noisy'))

def load():
    es.setinfo('eventscripts_noisy', '1')

def unload():
    es.setinfo('eventscripts_noisy', default)

def warnPlayer(userid):
    if Data[userid]['warnings']+1 == numWarnings:
        es.tell(userid, "#multi", "#green ПЕРЕСТАНТЕ БАНИХОПИТЬ ИЛИ ВАС ЗАБАНЯТ!")
    else:
        es.tell(userid, "#multi", "#lightgreen ВНИМАНИЕ#default ПЕРЕСТАНТЕ БАНИХОПИТЬ!")

def player_disconnect(ev):
    if Data.has_key(ev['userid']):
        del Data[ev['userid']]
        
def player_footstep(ev):
    if not Data.has_key(ev['userid']):
        Data[ev['userid']] = {}
        Data[ev['userid']]['laststep'] = 0
        Data[ev['userid']]['warnings'] = 0
    Now = float(time.time())
    Old = float(Data[ev['userid']]['laststep'])
    Data[ev['userid']]['laststep'] = Now
    if (Now - Old) <= 0.01:
        if Data[ev['userid']]['warnings'] < numWarnings:
            warnPlayer(ev['userid'])
            Data[ev['userid']]['warnings'] += 1
        else:
            es.server.queuecmd("kickid %s Забанен на 5 минут за банихоп" % ev['userid'])
            es.server.queuecmd("banid %s %s" % (timeOfBan, es.getplayersteamid(ev['userid']))) 
    else:
        Data[ev['userid']]['warnings'] = 0
 

tooshkan4uk

Участник
Сообщения
455
Реакции
446
Чем больше у тебя условий, тем тормознутее плагин. И тем выше вероятность заглючить сервер/плагин бесконечным циклом... Лучше все же отредактируй, а не добавляй новое.

Бред написал...
 
Сверху Снизу