Jump to content
Korean Random

coJlHe4Hblu_noH4uk

User
  • Posts

    551
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by coJlHe4Hblu_noH4uk

  1. Да, это вариант нормальный.

    Попробовал. Тогда в бою дублируются клантеги, если в ушах уже есть клантег.

    Видимо варианта два - или вообще не трогать, или делать третье поле.

  2. @Mr 13,  да. У игроков других кланов нет клантегов. Думаю, что клантег нужно оставить, оставить всем, но есть предложение.

    Переместить клантег перед ником - будет каша, если не изменять порядок сортировки. Оставить после автоматически - потеряется возможность настройки клантега, что некоторым пригодится. Я бы сделал, к примеру, своим сокланам красивую звёздочку или что-то типа этого. Есть идея сделать еще одно поле для клантега.

  3. @Kradar, кинул в \World_of_Tanks\res_mods\0.9.3\scripts\client\mods\SampleMod.pyc

    import BigWorld
    from gui.WindowsManager import g_windowsManager 

    Запустил WoT, всё гуд.

    Лог норм:

    
    
    /------------------------------------------------------------------------------------------------------------------------\
       BigWorld Release Client (compiled at 15:29:52 Sep  3 2014) starting on Tue Oct 07 22:54:40 2014
       Content Type: content
    
    Checking ./res_mods/0.9.3: mods found
    Load mods: SampleMod
    [NOTE] (scripts/common/fortified_regions.py, 188): fortified_regions.init()
    [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read fractureEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole.model
    [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read touchdownEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole.model
    [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read fractureEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole10.model
    [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read touchdownEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole10.model
    [NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 2 was selected.
    [NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 3 was selected.
    [SPACE] Loading space: spaces/hangar_premium_v2
    PostProcessing.Phases.fini()
    
    \------------------------------------------------------------------------------------------------------------------------/
    
    
  4. Предлагаю примерно такой вариант:

    • добавить кнопку "сохранить для всех игроков группы";
    • (опционально, т.к. тут все упирается в вопросы этики и приватности данных) - добавить кнопку "импортировать настройки командира клана" для клановых игроков, которая импортировала бы только альтернативные никнеймы, если они прописаны командиром. В принципе, ничего страшного, если командир обозвал у себя половину игроков матом, от таких нужно уходить, поэтому можно оставить.
    • Если же игрок, согласно вышеозвученному предложению сам добавил себе альтернативный ник и комментарий - импортировать их;
    • Добавить поле для альтернативного нинейма, суть предложения я описывал, единственное отличие - данные будут храниться на сервере.

    Вот что получилось нарисовать под это дело (отличаются одной кнопкой):

     

    UPD 1. Никнейм под полем "Изменить комментарий" - сделайте тень как в заголовке, а то выбивается.

    UPD 2. Надписи "отмена" и "сохранить" выглядят съехавшими вверх.

    post-13222-0-79236500-1412693959_thumb.png

    post-13222-0-97307600-1412693966_thumb.png

    • Upvote 2
  5. Раз уж тут есть хорошее окошко для редактирования, то может быть в него добавить второе поле для ввода и реализовать вот это: http://www.koreanrandom.com/forum/topic/18884-кастомизация-никнеймов-для-гк-рот-кб/ ?

    Темы ну очень похожи, за исключением того, что измененный ник ещё и в бою будет.

  6.  

     

    Скоро будет :)

    А скоро, это как скоро?

    И вопрос вдогонку, что лучше для девелопинга на мощный комп поставить, кубунту или минт?

    И списочек IDE для пайтона киньте сразу, чтоб с автодополнением, для нуба, а я уж выберу из него.

    Спасибо!

  7. Нашел мод, написанный где-то и кем-то, в общем, не суть.
    Мод с определенным интервалом выкидывает в общий чат сообщения о приглашении в клан.
    Решил, что называется, переделать его под себя, заодно начал разбираться в 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

  8. We are using XVM Scale

    А жаль.

    Больше цветовых градаций и отсутствие сильных перепадов яркости пошли бы на пользу и шкале XVM.

    Меньше в ушах разно3.14и скачущих и выделяющихся цветов.

    Сорри за оффтоп.

  9. Сабж в заголовке темы.

    Т.к. помимо самого пинга немаловажную роль играет еще и его стабильность, то это было бы полезной фичей.

     

    Пример:

     

    RU1: 17 (2)

    RU2: 15 (4)

    RU3: 87 (9)

    RU4: 37 (2)

    RU5: 19 (1)

    RU6: 18 (2)

    RU7: 22 (5)

    RU8: 54 (8)

     

    Для тех, кто не в теме (из вики):

    В телекоммуникациях под джиттером часто понимается разброс максимального и минимального времени прохождения пакета от среднего.[2] К примеру, посылается 100 пакетов минимальное время прохождения пакета — 395 мс, среднее — 400 мс, максимальное — 405 мс, в этом случае джиттер можно считать маленьким. Если же посылается 100 пакетов минимальное время прохождения пакета — 1 мс, среднее — 50 мс, максимальное — 100 мс, в этом случае джиттер большой. Например VoIP очень чувствителен к джиттеру.

  10.  

     

    Например, делать ее менее точной, с рандомным смещением в 30-40 градусов.

    Тогда им придется переписать и эффект попадания / рикошета снаряда по танку.

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

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

    А исходя из того, что WG наоборот, только совершенствуют техническую правильность и красоту подобных эффектов, можно сделать вывод, что данную информацию читом они не считают.

     

    А вообще, как такового, преимущества это не даст. Есть мод, отображающий как раз линию прилета снаряда. Типа трассера, только от незасвеченных противников.

    Видел его в работе, абсолютно бесполезная вещь. Т.к. траектория снаряда идёт по дуге, точно он ничего не показывает (например, если прилетает от арты - палка "торчит" вверх). А ты уже сиди и угадывай.

     

    Известен только азимутальный угол, при отсутствии зенитного от этого толку мало.


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

    Лучше ограничивать не границей карты, а квадратом отрисовки.

    • Upvote 2
  11.  

     

    какое местоположение занимает TColor
     только для хранения значений, которые RGB. Объясню почему. Красный в RGB это ff0000. Но в природе есть "еще более красный", но для красного 255 - и потолок, краснее не сделаешь.

    Но в пространствах Lab, LCh, XYZ он есть.

     

    При этом, чтобы в RGB у тебя не было чисел больше 255, есть код:

     if r < 0 then r := 0;
     if r > 1 then r := 1;
     if g < 0 then g := 0;
     if g > 1 then g := 1;
     if b < 0 then b := 0;
     if b > 1 then b := 1;
    

    Т.е. он обрезает выходящие за диапазон значения. А обрезать их можно только в случае вывода на экран циферок или при рисовании цвета. А при преобразовании Lab в LCh - там RGB вообще не нужен в расчетах.


    Вообще, допустим я изменил L, C или h - при этом остальные поля должны обновиться в следующем порядке:

    • Lab.
    • из Lab'а мы считаем RGB.
    • из RGB - HSB/HSV/HSL/CMY/CMYK в любом порядке.

    Но если после этого я тронул RGB, то "волна" расчетов должна идти от него.

×
×
  • Create New...