niedziela, 17 sierpnia 2014

Zaawansowany serwer CUWO - konfiguracja

# -*- 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):
  1. # Copyright (c) Mathias Kaerlev 2013.
  2. #
  3. # This file is part of cuwo.
  4. #
  5. # cuwo is free software: you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation, either version 3 of the License, or
  8. # (at your option) any later version.
  9. #
  10. # cuwo is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with cuwo. If not, see <http://www.gnu.org/licenses/>.
  17.  
  18. """
  19. Ban management
  20. """
  21.  
  22. from cuwo.script import ServerScript, command, admin, get_player
  23.  
  24. # teksty po: zbanowaniu, reason to powód
  25. # druga opcja to podstawienie nicku na chatcie zbanowanego + powód
  26. # trzecia to coś w stylu: Nie napisano przyczyny.
  27. SELF_BANNED = 'You are banned: {reason}'
  28. PLAYER_BANNED = '{name} has been banned: {reason}'
  29. DEFAULT_REASON = 'No reason specified'
  30.  
  31. # baza danych, zbanowanych
  32. DATA_NAME = 'banlist'
  33.  
  34.  
  35. class BanServer(ServerScript):
  36. def on_load(self):
  37. self.ban_entries = self.server.load_data(DATA_NAME, {})
  38.  
  39. def save_bans(self):
  40. self.server.save_data(DATA_NAME, self.ban_entries)
  41.  
  42. def ban(self, ip, reason):
  43. self.ban_entries[ip] = reason
  44. self.save_bans()
  45. for connection in self.server.connections.values().copy():
  46. if connection.address.host != ip:
  47. continue
  48. name = connection.name
  49. if name is not None:
  50. connection.send_chat(SELF_BANNED.format(reason=reason))
  51. connection.disconnect()
  52. message = PLAYER_BANNED.format(name=name, reason=reason)
  53. print message
  54. self.server.send_chat(message)
  55.  
  56. def on_connection_attempt(self, addr):
  57. try:
  58. reason = self.ban_entries[addr.host]
  59. except KeyError:
  60. return
  61. return SELF_BANNED.format(reason=reason)
  62.  
  63.  
  64. def get_class():
  65. return BanServer
  66.  
  67.  
  68. @command
  69. @admin
  70. def ban(script, name, *args):
  71. player = get_player(script.server, name)
  72. reason = ' '.join(args) or DEFAULT_REASON
  73. script.parent.ban(player.address.host, reason)
  74.