IPB

Здравствуйте, гость ( Авторизация | Регистрация )

Скрыть объявления

Объявления

> Объявление

При написании заголовка темы просьба ставить перед названием префикс той игры про администрирование серверов которой пойдёт речь в теме.
Например: BFBC2: BC2 Command Center

 
Добавить ответ в эту темуОткрыть тему
> BF2: Ограничение воюющих командеров.
ckopnuys
сообщение 5.1.2010, 14:23
Сообщение #1


private
Иконка группы

Группа: Пользователи
Сообщений: 9
Регистрация: 5.1.2010
Пользователь №: 11974
Статус: игрок
Класс: командер
Спасибо сказали: 0 раз(а)



Репутация:   0  


Когда админы на сервере это еще как то контролируеться, но вот когда их нет...

Подскажите что делать?

Слышал про скрипт который если командующий убьет кого на поле боя, то его кикает. Не могли бы дать сссылку на него?


Забыл сказать... Co-op режим.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
orion
сообщение 8.1.2010, 11:27
Сообщение #2


Master Sergeant
Иконка группы

Нашивка ТotalBF|ru
Группа: Пользователи
Сообщений: 568
Регистрация: 6.6.2008
Из: Украина, Николаев
Пользователь №: 6683
Награды: 1
Команда (клан):NWP
Статус: игрок
Класс: универсал
Спасибо сказали: 214 раз(а)



Репутация:   0  


 
Цитата(ckopnuys @ 5.1.2010, 13:23) *
Слышал про скрипт который если командующий убьет кого на поле боя, то его кикает. Не могли бы дать сссылку на него?


Хоть я считаю это и неправильным, стоит все же придумать другие ограничения, если они нужны, но сама реализация элементарна. Если стоит modmanager на сервере, то заходишь в папку /admin/modules/ Ищешь в каком-то скрипте функцию onPlayerKilled, что-то типа  

  def onPlayerKilled(self, victim, attacker, weapon, assists, object):

ну и добавляешь в нее следующий код:

Код
if attacker.isCommander():

       attackerVehicle = bf2.objectManager.getRootParent(weapon)
       if (attackerVehicle.isPlayerControlObject and attackerVehicle.getIsRemoteControlled()):         

               pass

       else:

               host.rcon_invoke( "admin.kickPlayer %d" % ( attacker.index ) )


Ну еще можно дописать какую-то лабуду на тему какой негодяй этот командир. Второе условие нужно для того чтобы не наказывало за килы артой. 

Сообщение отредактировал orion - 8.1.2010, 11:30


Спасибо сказали:
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ckopnuys
сообщение 9.1.2010, 10:55
Сообщение #3


private
Иконка группы

Группа: Пользователи
Сообщений: 9
Регистрация: 5.1.2010
Пользователь №: 11974
Статус: игрок
Класс: командер
Спасибо сказали: 0 раз(а)



Репутация:   0  


А в какой модуль это все добавлять? ) в любой чтоль?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
orion
сообщение 9.1.2010, 11:15
Сообщение #4


Master Sergeant
Иконка группы

Нашивка ТotalBF|ru
Группа: Пользователи
Сообщений: 568
Регистрация: 6.6.2008
Из: Украина, Николаев
Пользователь №: 6683
Награды: 1
Команда (клан):NWP
Статус: игрок
Класс: универсал
Спасибо сказали: 214 раз(а)



Репутация:   0  


Да, можно в любой добавить где эта процедура есть уже(в стандартных она правда редко встречается). Можно по образцу свой отдельный сделать, и подключить через modmanager.con. Можно процедуру в какой-то уже существующий дописать(не забыв объявить ее в init). 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ckopnuys
сообщение 9.1.2010, 14:08
Сообщение #5


private
Иконка группы

Группа: Пользователи
Сообщений: 9
Регистрация: 5.1.2010
Пользователь №: 11974
Статус: игрок
Класс: командер
Спасибо сказали: 0 раз(а)



Репутация:   0  


Можно ли поподробнее, а то в этом не сильно мыслю...

Среди модулей что у меня там есть такой строки либо нету, либо я плохо искал, видимо у меня ток дефолтные.

Можешь объяснить все(включая процессы включения в modmanager.con) как самому чайнистому чайнику, по пунктам =)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
orion
сообщение 9.1.2010, 14:37
Сообщение #6


Master Sergeant
Иконка группы

Нашивка ТotalBF|ru
Группа: Пользователи
Сообщений: 568
Регистрация: 6.6.2008
Из: Украина, Николаев
Пользователь №: 6683
Награды: 1
Команда (клан):NWP
Статус: игрок
Класс: универсал
Спасибо сказали: 214 раз(а)



Репутация:   0  


Как чайнику объяснить нимагу, нихачу, нибуду. Если уж ты взялся с админством сервера, так что прийдется немного поковыряться. smile.gif  

1. создаешь файл, к примеру mm_akc.py, в папке с модулями со след. содержимым:
Код
import bf2
import host
import mm_utils
from bf2.stats.constants import *
from bf2 import g_debug

# Set the version of your module here
__version__ = 1.0

# Set the required module versions here
__required_modules__ = {
        'modmanager': 1.0
}

# Does this module support reload ( are all its reference closed on shutdown? )
__supports_reload__ = False

# Set the description of your module here
__description__ = "Anti kill from commander v%s" % __version__

class antikillcom( object ):
    def __init__( self, modManager ):
        self.mm = modManager
        self.__state = 0

    def onPlayerKilled(self, victim, attacker, weapon, assists, object):
        if (attacker == None) or (attacker.getTeam() == victim.getTeam()) or (victim == None):
            return
        if attacker.isCommander():
            attackerVehicle = bf2.objectManager.getRootParent(weapon)
            if (attackerVehicle.isPlayerControlObject and attackerVehicle.getIsRemoteControlled()):
                pass
            else:
                host.rcon_invoke( "admin.kickPlayer %d" % ( attacker.index ) )

    def init( self ):
        if 0 == self.__state:
            host.registerHandler('PlayerKilled', self.onPlayerKilled)

        self.__state = 1

def mm_load( modManager ):
        """Creates and returns your object."""
        return antikillcom( modManager )


2. в modmanager.con добавить строку modmanager.loadModule "mm_akc"

3. ребут сервера, посмотреть modmanager.log убедится что модуль загрузился и нет никаких ошибок. 

Сообщение отредактировал orion - 9.1.2010, 14:39


Спасибо сказали:
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ckopnuys
сообщение 10.1.2010, 10:17
Сообщение #7


private
Иконка группы

Группа: Пользователи
Сообщений: 9
Регистрация: 5.1.2010
Пользователь №: 11974
Статус: игрок
Класс: командер
Спасибо сказали: 0 раз(а)



Репутация:   0  


Спасибо огромное, все работает.

Можно ли как то сделать чтобы причина кика была "You have been kicked from the server because you conducted operations being in a post of the commander" Ну или 'NO FIGHTING COMMANDER"

Посмотрел модуль там нигде причина кика похоже не прописываеться

Сообщение отредактировал ckopnuys - 10.1.2010, 10:18
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
orion
сообщение 10.1.2010, 11:01
Сообщение #8


Master Sergeant
Иконка группы

Нашивка ТotalBF|ru
Группа: Пользователи
Сообщений: 568
Регистрация: 6.6.2008
Из: Украина, Николаев
Пользователь №: 6683
Награды: 1
Команда (клан):NWP
Статус: игрок
Класс: универсал
Спасибо сказали: 214 раз(а)



Репутация:   0  


2 ckopnuys, молодец что разобрался. Значит и дальше разберешься. Копай в сторону стандартной процедуры modmanager'a kickPlayer - там можно задать KickReason. Ей надо заменить строку там где идет кик.
Так же в ней есть возможность установить KickDelay - задержку через которую будет kick, это можно совместить с выводом сообщения в чат через mm_utils.msg_server. Все будет примерно так: кил командиром => сообщение в чат(из-за задержки комрад тоже увидит это сообщение) => кик командира.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ckopnuys
сообщение 10.1.2010, 12:45
Сообщение #9


private
Иконка группы

Группа: Пользователи
Сообщений: 9
Регистрация: 5.1.2010
Пользователь №: 11974
Статус: игрок
Класс: командер
Спасибо сказали: 0 раз(а)



Репутация:   0  


Цитата(orion @ 10.1.2010, 13:01) *
2 ckopnuys, молодец что разобрался. Значит и дальше разберешься. Копай в сторону стандартной процедуры modmanager'a kickPlayer - там можно задать KickReason. Ей надо заменить строку там где идет кик.
Так же в ней есть возможность установить KickDelay - задержку через которую будет kick, это можно совместить с выводом сообщения в чат через mm_utils.msg_server. Все будет примерно так: кил командиром => сообщение в чат(из-за задержки комрад тоже увидит это сообщение) => кик командира.





Возможно я не там ищу... 


Я искал вначале по файлу modamager.con (в том где я правил строку на загрузку модуля), но там причин не нашел.

Потом полез в модули в итоге нашел модуль "mm_kicker" но и там не нашел причин... возможно я не там ищу?..

Сообщение отредактировал ckopnuys - 10.1.2010, 12:45
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
orion
сообщение 10.1.2010, 13:13
Сообщение #10


Master Sergeant
Иконка группы

Нашивка ТotalBF|ru
Группа: Пользователи
Сообщений: 568
Регистрация: 6.6.2008
Из: Украина, Николаев
Пользователь №: 6683
Награды: 1
Команда (клан):NWP
Статус: игрок
Класс: универсал
Спасибо сказали: 214 раз(а)



Репутация:   0  


2 ckopnuys сама процедура описана в модуле mm_banmanager. А пример использования в mm_kicker есть.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Добавить ответ в эту темуОткрыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 24.9.2019, 11:39
Яндекс.Метрика