# -*- coding: utf-8 -*- # nazwa serwera server_name = 'cuwo server' # maksymalna liczba graczy, najlepiej doliczyć +1, jako slot # zarezerwowany na pamięć RAM serwera (taki zapas), max_players = 4 # SEED mapy seed = 26879 # szybkość zmiany czasu na serwerze np. 2.0 to 2 krotnie szybszy upływ czasu time_modifier = 1.0 # skrypty z podfolderu "sripts", można je wyłączyć, po prostu usuwasz nazwę # wpisujesz tylko nazwy skryptów jako plików bez rozszerzenia scripts = ['commands', 'welcome', 'ban'] # hasło używane do zarządzania ważniejszymi parametrami serwera w grze # niektóre skrypty korzystają passwords = { 'PASSWORDREPLACEME': ['admin'] # Używanie skryptu powitalnego (welcome), nazwę serwera nadpisujesz %(server_name)s # np. ["Witaj na mega serwerze o nazwie: %(server_name)s!",] welcome = ["Welcome to %(server_name)s!", "(server powered by cuwo)"] # Używanie skryptu IRC irc_nickname = 'cuwobot' irc_server = 'irc.esper.net' irc_port = 6667 irc_channel = '#cuwo.bots' irc_password = None irc_commandprefix = '.' irc_chatprefix = '#' # Pliki graczy, ich charaktery itp. Wpisujesz nazwę aby włączyć, # wpisujesz None aby wyłączyć. Po włączeniu gracze mają unikalne postacie # nie te z Singla profile_file = None # Aktualna wersja git_rev = '2c154e3'
Teraz opis skryptu Ban (jako jedyny, który warto edytować, pozostałe pozostawiacie bez zmian):
- # Copyright (c) Mathias Kaerlev 2013.
- #
- # This file is part of cuwo.
- #
- # cuwo is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.
- #
- # cuwo is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with cuwo. If not, see <http://www.gnu.org/licenses/>.
- """
- Ban management
- """
- from cuwo.script import ServerScript, command, admin, get_player
- # teksty po: zbanowaniu, reason to powód
- # druga opcja to podstawienie nicku na chatcie zbanowanego + powód
- # trzecia to coś w stylu: Nie napisano przyczyny.
- SELF_BANNED = 'You are banned: {reason}'
- PLAYER_BANNED = '{name} has been banned: {reason}'
- DEFAULT_REASON = 'No reason specified'
- # baza danych, zbanowanych
- DATA_NAME = 'banlist'
- class BanServer(ServerScript):
- def on_load(self):
- self.ban_entries = self.server.load_data(DATA_NAME, {})
- def save_bans(self):
- self.server.save_data(DATA_NAME, self.ban_entries)
- def ban(self, ip, reason):
- self.ban_entries[ip] = reason
- self.save_bans()
- for connection in self.server.connections.values().copy():
- if connection.address.host != ip:
- continue
- name = connection.name
- if name is not None:
- connection.send_chat(SELF_BANNED.format(reason=reason))
- connection.disconnect()
- message = PLAYER_BANNED.format(name=name, reason=reason)
- print message
- self.server.send_chat(message)
- def on_connection_attempt(self, addr):
- try:
- reason = self.ban_entries[addr.host]
- except KeyError:
- return
- return SELF_BANNED.format(reason=reason)
- def get_class():
- return BanServer
- @command
- @admin
- def ban(script, name, *args):
- player = get_player(script.server, name)
- reason = ' '.join(args) or DEFAULT_REASON
- script.parent.ban(player.address.host, reason)