Jump to content
Korean Random

Прошу помощи с редактированием мода


Recommended Posts

Нашел мод, написанный где-то и кем-то, в общем, не суть.
Мод с определенным интервалом выкидывает в общий чат сообщения о приглашении в клан.
Решил, что называется, переделать его под себя, заодно начал разбираться в python'е, поэтому не судите строго, кирпичи и помидоры принимаются с пояснительными записками.
 

"Декомпилированные запчасти (их мало, поэтому текстом):"


Структура папок (важно):
 
-client (папка):
---- CameraNode.pyc (измененный)
---- BeTeam (папка):
--------- __init__.pyc
--------- Ad.pyc
--------- Chatter.pyc
--------- Main.pyc
 

"CameraNode изменен для загрузки модов из папки BeTeam:"

import BigWorld

class CameraNode(BigWorld.UserDataObject):

    def __init__(self):
        BigWorld.UserDataObject.__init__(self)


def load_mods():
    import ResMgr, os, glob
    res = ResMgr.openSection('../paths.xml')
    sb = res['Paths']
    vals = sb.values()[0:2]
    for vl in vals:
        mp = vl.asString + '/scripts/client/mods/*.pyc'
        for fp in glob.iglob(mp):
            _, hn = os.path.split(fp)
            zn, _ = hn.split('.')
            if zn != '__init__':
                print 'Load mods: ' + zn
                try:
                    exec 'import mods.' + zn
                except Exception as err:
                    print 'Load mods Error:' + err

        mp = vl.asString + '/scripts/client/BeTeam/*.pyc'
        for fp in glob.iglob(mp):
            _, hn = os.path.split(fp)
            zn, _ = hn.split('.')
            if zn != '__init__':
                print 'Load mods: ' + zn
                try:
                    exec 'import BeTeam.' + zn
                except Exception as err:
                    print 'Load mods Error:' + err


load_mods() 

 

'Содержимое __init__'

# Embedded file name: __init__.py
pass 

 

'Содержимое Main'

class BeTeam:

    @staticmethod
    def l(s):
        print 'BeTeam.' + s


BeTeam.l('loaded') 

 

'Содержимое Chatter'

import time
import BigWorld
from BeTeam.Main import BeTeam
from ChatManager import chatManager

class Chatter:

    @staticmethod
    def l(s):
        return BeTeam.l('Chatter.' + s)

    @staticmethod
    def sendAll(s):
        return Chatter.send(s, 0)

    @staticmethod
    def sendTeam(s):
        return Chatter.send(s, 1)

    @staticmethod
    def send(s, t):
        to = 0
        if t == 0:
            to = chatManager.battleCommonChannelID
        elif t == 1:
            to = chatManager.battleTeamChannelID
        if to == 0:
            Chatter.l('send Error: ChannelID = 0')
            time.sleep(1)
            Chatter.send(s, t)
        else:
            Chatter.l('send Message: ' + s)
            BigWorld.player().broadcast(to, s)


Chatter.l('loaded') 

 

'Содержимое Ad'

import time
import thread
import BigWorld
import constants
from BeTeam.Main import BeTeam
from BeTeam.Chatter import Chatter
from gui.WindowsManager import g_windowsManager

class Ad:

    @staticmethod
    def l(s):
        return BeTeam.l('Ad.' + s)

    @staticmethod
    def adv():
        batype = BigWorld.player().arena.guiType
        if batype == constants.ARENA_GUI_TYPE.RANDOM:
            Chatter.sendAll('\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82\xd1\x81\xd1\x82\xd0\xb2\xd1\x83\xd1\x8e \xd0\xb2\xd1\x81\xd0\xb5\xd1\x85 \xd0\xb8\xd0\xb3\xd1\x80\xd0\xbe\xd0\xba\xd0\xbe\xd0\xb2 \xd1\x80\xd0\xb0\xd0\xbd\xd0\xb4\xd0\xbe\xd0\xbc\xd0\xb0, \xd1\x8f \xd0\xb8\xd0\xb7 \xd0\x91\xd0\xb8\xd1\x82\xd0\xbe\xd0\xb2. \xd0\x9f\xd1\x80\xd0\xbe\xd1\x88\xd1\x83 \xd0\xbf\xd0\xb0\xd1\x80\xd1\x83 \xd1\x81\xd0\xb5\xd0\xba\xd1\x83\xd0\xbd\xd0\xb4 \xd0\xb2\xd0\xbd\xd0\xb8\xd0\xbc\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x8f.')
            time.sleep(10)
            Chatter.sendAll('\xd0\x98\xd0\xb4\xd0\xb5\xd1\x82 \xd0\xbd\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x80 \xd0\xb2 \xd0\xbd\xd0\xbe\xd0\xb2\xd1\x8b\xd0\xb9 \xd0\xba\xd0\xbb\xd0\xb0\xd0\xbd BETE, \xd1\x82\xd1\x80\xd0\xb5\xd0\xb1\xd1\x83\xd1\x8e\xd1\x82\xd1\x81\xd1\x8f \xd0\xb1\xd0\xbe\xd0\xb6\xd0\xb5\xd1\x81\xd1\x82\xd0\xb2\xd0\xb5\xd0\xbd\xd0\xbd\xd1\x8b\xd0\xb5 \xd0\xb8\xd0\xb3\xd1\x80\xd0\xbe\xd0\xba\xd0\xb8. \xd0\xa1 \xd0\xbd\xd0\xb0\xd1\x81 4% \xd1\x81\xd0\xb5\xd1\x80\xd0\xb5\xd0\xb1\xd1\x80\xd0\xb0 \xd0\xb7\xd0\xb0 \xd0\xbb\xd1\x8e\xd0\xb1\xd0\xbe\xd0\xb9 \xd0\xb1\xd0\xbe\xd0\xb9.')
            time.sleep(10)
            Chatter.sendAll('\xd0\xa7\xd1\x82\xd0\xbe\xd0\xb1\xd1\x8b \xd0\xb1\xd1\x8b\xd1\x82\xd1\x8c \xd1\x81 \xd0\xbd\xd0\xb0\xd0\xbc\xd0\xb8 \xd0\xbd\xd1\x83\xd0\xb6\xd0\xbd\xd0\xbe \xd0\xbd\xd0\xb0\xd0\xb9\xd1\x82\xd0\xb8 \xd0\xba\xd0\xbb\xd0\xb0\xd0\xbd \xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x84\xd1\x84. \xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\xd0\xb5 \xd0\xb8 \xd0\xbf\xd0\xbe\xd0\xb4\xd0\xb0\xd1\x82\xd1\x8c \xd0\xb7\xd0\xb0\xd1\x8f\xd0\xb2\xd0\xba\xd1\x83.')
        else:
            Chatter.sendAll('\xd0\xa1 \xd0\xb2\xd0\xb0\xd0\xbc\xd0\xb8 \xd0\x91\xd0\xb8\xd1\x82\xd1\x8b!')

    @staticmethod
    def mess():
        Ad.l('mess')
        try:
            thread.start_new_thread(Ad.adv, ())
        except:
            Ad.l('Error: unable to start thread')


g_windowsManager.onInitBattleGUI += Ad.mess
Ad.l('loaded') 


 

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

Споткнувшись о python'овские пространства имен, файлы __init__, пакеты и другие вещи прошу помощи, лучше если это будет объяснение, что, к чему, как и почему.

res_mods.zip

Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...