1. Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, сыграть в увлекательные ФРПГ, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
    Скрыть объявление
  2. Форум аддона "Возвращение" 2.0:
    — Обсудить игру, почитать о прохождениях и/или разрешить свои вопросы по игре вы можете в одной из тем одноименного форума. Посетить...
    — Прочитать историю изменения и/или скачать последнюю версию аддона "Возвращение", вы можете на страницах наших ресурсов. Скачать...
    Скрыть объявление

Полезные советы

Тема в разделе "Модостроение", создана пользователем GeorG, 12 май 2009.

Модераторы: Marvіn, MEG@VOLT
  1. GeorG

    GeorG Участник форума

    Регистрация:
    27 авг 2008
    Сообщения:
    2.007
    Благодарности:
    109
    Баллы:
    265
    Не знаю, нужны кому или нет? Просто здесь я думаю, могли бы отписаться все кто их может дать…

    Просьба не засорять тему комментариями, а писать по существу четко и ясно, проверенные и подтвердившие себя в деле «полезные советы». Как можно подробнее объяснив их.
    Просьба ко всем:
    Для упрощения поиска, дабы не читать все подряд.
    Кто пишет полезный совет указать его тематику любым другим цветом.
    Например "Работа с GothicVDFS"


    Упрощаем работу с GothicSourcer

    Для тех, кто пользуется GothicSourcer. Иногда надоедает в ручную копировать из папки в папку файлы “GOTHIC.dat” и “ou.bin” для компиляции файла “*.VDF” или “*.mod”…
    Не знаю, как остальным, но мне делать одну и туже операцию по 100 раз не захотелось, и я сделал файл «.CMD» с таким содержанием…

    Открыть спойлер
    Код:
    @echo off
    
    DEL /F /Q "D:\Program Files\Gothic II\*.DMP"
    
    copy /y "C:\Program Files\GothicSourcer V3.14\Gothic Projects\SolWorldsMainPatch\PrjGOTHIC\GOTHIC.dat" "C:\Documents and Settings\Geor'G\ђ Ў®зЁ© бв®«\WorldsMainPatch\_WORK\DATA\SCRIPTS\_COMPILED\GOTHIC.dat"
    copy /y "C:\Program Files\GothicSourcer V3.14\Gothic Projects\SolWorldsMainPatch\PrjGOTHIC\ou.bin" "C:\Documents and Settings\Geor'G\ђ Ў®зЁ© бв®«\WorldsMainPatch\_WORK\DATA\SCRIPTS\CONTENT\CUTSCENE\ou.bin"
    
    GothicVDFS.exe /b .\WorldsMainPatch.vm
    EXIT
    И теперь не утруждаю себя в компиле .vdf файла (имя может быть любым), а приходится его компилеть ой как часто…

    Объясню по «строчкам», что каждая команда значит…
    Первая и вторая строка не столь важны как последующие…

    1. echo: - переключение режима отображения команд на экране…
    2. DEL: - удаляет файл «*.DMP» его всегда желательно удалять, когда экспериментируешь над игрой…
    3. и 4. COPY: - копируют заранее подготовленные файлы «GOTHIC.dat» и «ou.bin» в нужную папку…
    5. команда «GothicVDFS.exe /b .\WorldsMainPatch.vm» запускает прогу GothicVDFS.exe с заранее подготовленным скриптом (как его сделать смотрите ниже) и компилет ваш файл в файл “*.VDF” или “*.mod” для проверки и испытания ваших изменений…
    6. Завершающая строка, выход и закрытия CMD файла, без предварительного уведомления…


    Для удобства советую «GothicVDFS.exe» и файл скрипта, бросить в туже папку, где у вас находится ваш «.CMD» файл, тогда не надо будит прописывать дополнительно путь к файлам…

    Кто поймет, что я здесь написал, тот я думаю, сможет это хорошо использовать,… а уж кто не поймет… эх... ::)

    Как сделать скрипт:
    Открыть спойлер
    Запускаете прогу «GothicVDFS.exe» жмёте на кнопку “Builder” (панель инструментов), заполняете пустые строчки как вам угодно (как это делать читайте справку по программе или тутореалы), после жмете на кнопку «Save Script» внизу окна программы…


    P.S. Конечно надо пользоваться именами которые у вас, а не те которые я дал для примера…
    P.P.S. Те не понятные буквы которые имеют быть место в строках (ђ Ў®зЁ© бв®«), обозначают «Рабочий стол»…
     
  2. Saturas

    Saturas
    Модостроитель

    Регистрация:
    11 фев 2009
    Сообщения:
    1.919
    Благодарности:
    630
    Баллы:
    275
    Пол:
    Женский
    Если кому надо то вот:

    Выкладываю урок по быстрому созданию вейпоинтов в спейсере. (Без последующего соединения!!! соединяются автоматически!)
    1.Создаем вейпоинт даем ему любое имя.
    2.Выбираем только что созданный вейпоинт и нажимаем сочетание клавиш
    Ctrl+I и вводим имя для нашего вейпоинта (при этом он автоматически создается)
    итак продолжаем сколько угодно раз САМОЕ ГЛАВНОЕ ЭТО ЧТОБЫ ТОЛЬКО ЧТО СОЗДАННЫЙ ВЕЙПОИНТ ОСТАВАЛСЯ ВЫБРАННЫМ (хотя он итак будет выбран ;)) и при этом все созданные вейпоинты автоматически соединяются последовательно в цепь.
    Результат удобно, просто, качественно и главное быстро!
     
  3. DUSTinghoFFman

    DUSTinghoFFman Участник форума

    Регистрация:
    24 май 2008
    Сообщения:
    820
    Благодарности:
    2
    Баллы:
    185
    2@GeorG:
    Я делал проще: в настройках "сорсера" прописывал "путь к готике 2" как /MY_MOD.
    Там уже лежат все необходимые файлы - текстуры, модели, нехватает только скриптов.
    Как только отредактировал скрипты, скомпилировал, "сорсер" автоматически заменил “GOTHIC.dat” и “ou.bin”, осталось только запустить скрипт для GothicVDFS с рабочего стола. Мой образец в спойлере.
    Открыть спойлер
    [​IMG]
     
  4. MEG@VOLT

    MEG@VOLT ★★★★★★★
    Модератор

    Регистрация:
    24 мар 2006
    Сообщения:
    1.773
    Благодарности:
    782
    Баллы:
    340
    2Saturas,
    Ну не совсем качествоенно так получается, ты попробуй передвинуть вверх(а лучше вниз) первый вай, который создал и к которому прикриплял остальные. и посмотри что будет с прикрипленными ваями, не надо делать лестницу мобов - если конечно это не тригер(мувер обычно), костер(к кторому прикреплен огонь), и т.п.


    ЗЫ. думаю тема достояна звания важная.
     
  5. kraw

    kraw
    Модостроитель

    Регистрация:
    11 окт 2005
    Сообщения:
    1.840
    Благодарности:
    797
    Баллы:
    275
    Пол:
    Мужской
    Правило, которого следует придерживаться при написании диалогов:

    Когда пишете диалоги, следует избегать слишком длинных "фраз". Я имею в виду то, что в AI_Output идет после знака комментария (после //), то, что появится в субтитрах, если они будут включены. Поскольку при отсутсвиии озвучки эти фразы зачастую просто не успеваешь прочесть. Поэтому, длинную "фразу" лучше разбить на несколько. Каждую в своем AI_Output.
     
  6. TemplaR

    TemplaR Участник форума

    Регистрация:
    16 ноя 2008
    Сообщения:
    158
    Благодарности:
    0
    Баллы:
    165
    Для тех кто в танке, так сказать. ::)
    Когда делаетe локацию, лучше её делать по небольшим кусочкам, а затем склеивать воедино, детализация получается выше.
     
  7. s@m

    s@m
    Модостроитель

    Регистрация:
    2 мар 2007
    Сообщения:
    273
    Благодарности:
    56
    Баллы:
    195
    Дам удобный совет по Spacer
    Если вы летаете и не можете найти территорию или просто вам нужно увеличить дальность прорисовки нажмите View/Edit > Console и введите туда следующее: set clippingfactor 100
    Этот метод лучше подходит когда открыт 3дс, так как в зене можно щёлкнуть на что либо 2 раза и камера сама туда прилетит ;)
     
  8. redleha

    redleha
    Модостроитель

    Регистрация:
    26 фев 2008
    Сообщения:
    700
    Благодарности:
    656
    Баллы:
    245
    Пол:
    Мужской
    Совет по Cкриптингу в Gothic Sourcer

    А совет новичкам и неновичкам модостроения вот такого содержания...
    Тем люди, которые начинают работу в GS, используя не скриптовую болванку, а по тем или иным причинам некий готовый проект(в частности декомпилированные скрипты от Акеллы) я советую разбить файлы диалогов и файлы НПСов на две подпапки. Получается структура Story/Npc --->> Story/NPC/Original + Story/NPC/$ВашМод$ (аналогично и с диалогами). Соответственно, не забываем в файле gothic.src заранее изменить(переадресовать) пути к файлам. Это делается быстро в любом текстовом редакторе с помощью замены Story/NPC на Story/NPC/Original

    Поверьте, это очень приятное изменение, упрощающее работу и сокращающее время на нужные поиски.
    P.S. Также можно для уж полного комфорта(ежели надо) разбить файлы на дополнительные подпапки (Story/NPC/Original/Paladin , Story/NPC/Original/FireMag и т.д. и т.п.)
     
  9. kraw

    kraw
    Модостроитель

    Регистрация:
    11 окт 2005
    Сообщения:
    1.840
    Благодарности:
    797
    Баллы:
    275
    Пол:
    Мужской
    Альтернатива или дополнение к совету redleha: При разработке используйте системы контроля версий (например svn или, как его еще называют subversion). Особенно при коллективной разработке.
     
  10. Marvіn

    Marvіn ★★★★★★★
    Модератор

    Регистрация:
    17 апр 2008
    Сообщения:
    98
    Благодарности:
    6
    Баллы:
    180
    2kraw
    Эта тема была создана, для полных открытых советов, 100% проверенных, и работающих.

    Насчет subversive, то рационально и действительно полезная вещь при разработке больших проектов.
    Система позволяет вести контроль версий, а также историю изменений кода, так что в любой момент можно сделать откат до последней рабочей версии вашего проекта.
    Каждый сам для себя может установить свой локальный svn сервер.
    Например для Windows OS можно скачать VISUAL SVN SERVER, легкий и простой в использовании. Также необходимо скачать TortoiseSVN для работы с файлами проекта.

    Но эти варианты подходящие для одинокого разработчика. Если над проектом работают два и больше скриптера, тогда в этом случаи локальный svn сервер, теряет весь смысл использования. Для таких проектов можно использовать svn репозитории, дабы все имели доступ к файлам, вносить свои изменения не опасаясь что-то испортить.

    В общем svn это тема обширная и про нее можно долго рассказывать...
    Кому интересно может почитать вот эту документацию
     
  11. kraw

    kraw
    Модостроитель

    Регистрация:
    11 окт 2005
    Сообщения:
    1.840
    Благодарности:
    797
    Баллы:
    275
    Пол:
    Мужской
    Дополнительно - небольшое описание из wiki о svn (subversion). Советую прочесть, хотя бы из любопытства "пропуская таблицы и диаграмы" :) Возможно тогда увидите насколько это просто, полезно и упрощает работу над модом.

    Культуру производства в массы!!!! *bravo*

    Часть 1
    Часть 2
    Часть 3
     
  12. Feuermagier

    Feuermagier
    Модостроитель

    Регистрация:
    13 апр 2008
    Сообщения:
    779
    Благодарности:
    303
    Баллы:
    225
    Совет по сборке миров: При соединении нескольких ZEN файлов в директории с ними не должно быть 3ds файлов с именами мешей, кторые есть в составе ZEN файлов, иначе меши, при совпадении имени, будут заменены.
     
  13. redleha

    redleha
    Модостроитель

    Регистрация:
    26 фев 2008
    Сообщения:
    700
    Благодарности:
    656
    Баллы:
    245
    Пол:
    Мужской
    Расскажу небольшой секрет для новичков (и не новичков), как быстро получить и вообще получить анимации в готовом для игры формате (для Г2а) - то бишь скомпилированные man-файлы + суммарный msb-файл.

    1. Получаем все исходные анимации , декомпилируя исходный msb-файл монстра/орка, например с помощью GS v.3.14. В итоге получаем кучу asc-файлов + один mds-файл.
    2. Копируем все эти файлы в корень папки anims установленной игры(на всякий случай, хотя не обязательно) + asc-файлы своих анимаций.
    3. Изменяем mds файл, находящийся в папке anims, в соответствии со вносимыми дополнениями.
    4. Удаляем из папки Anims/_compiled файл %имямостра%.msb (+ man-файлы тех анимаций, которые вы изменяете).
    5. Запускаем новую игру и вызываем этого монстра или ищем его в игре. Как только монстр начнет обрабатываться движком, то произойдет компиляция новых анимаций/недостающих обновлённых + сбор нового msb-файла.
    6. Теперь в папке anims/_compiled вы увидите новые man-файлы анимаций + обновленный msb-файл.
    Вот их то и нужно упаковывать в свой мод, чтоб эти анимы увидеть в игре на другом компе.

    Если я что-то упустил, то прошу не пинать, а знающих модераторов подправить неточности или что-то ещё добавить (можно в личку, сам добавлю). Этот способ точно рабочий, лично проверял.
     
  14. Ice

    Ice Участник форума

    Регистрация:
    5 ноя 2009
    Сообщения:
    28
    Благодарности:
    1
    Баллы:
    150
    Работа с комментариями.
    Часто возникает необходимость отладить или переделать что-нибудь, а пока работа не закончена, изеняемый код держим под комментарием.
    Чтобы немножко упростить себе жизнь вспомним пару древних програмистских приёмов:

    1.
    Поточный комментарий с меткой.
    Раскомментировано:
    //*DEBUG
    func void myNewLouseFunction(){...};
    //*/

    Закомментировано:
    /*DEBUG
    func void myNewLouseFunction(){...};
    //*/

    Понятно, что комментируя тестируемый и отладочный код таким образом, мы можем запустить замену по файлам по строке "/*DEBUG" включая и выключая DEBUG функции.

    2. Как быть если мы не хотим удалять старую реализацию пока новая полностью не готова, а запускать проек надо?
    Добавим в потоковый комментарий "Реверс": /*/.
    Работает дебаг:
    //*DEBUG
    func void myNewLouseFunction(){...};
    /*/
    func void myOldGoodFunction(){...};
    //*/


    Работает старая реализация:
    /*DEBUG
    func void myNewLouseFunction(){...};
    /*/

    func void myOldGoodFunction(){...};
    //*/
    Как и в п. 1 надо всего лишь переключать строку "//*DEBUG" на "/*DEBUG"
     
  15. kraw

    kraw
    Модостроитель

    Регистрация:
    11 окт 2005
    Сообщения:
    1.840
    Благодарности:
    797
    Баллы:
    275
    Пол:
    Мужской
    Я бы предложил не заморачиваться с подобными приемами, а поставить себе систему контроля версий. Например subversion. И история изменений есть в любой момент, и откатить можно, и "снимки" состояний исходников держать (например разные версии), и ветвить проект можно.

    А самое главное - делать это достаточно удобно.
     
  16. Dimmell

    Dimmell Участник форума

    Регистрация:
    23 ноя 2008
    Сообщения:
    2.780
    Благодарности:
    864
    Баллы:
    285
    Пол:
    Мужской
    А я бы для начала предложил научиться пользоваться Соурсером в плане создания дублей проекта, вести нормальный, постоянный и понятный лог изменений в отдельный текстовый файл и ремарить не отлаженные куски кода понятными себе же комментариями, а после отладки чистить от мусора. Сделать отдельную тестовую сборку мода и прописать инишник и новичок сможет. И не хвататься за решение всех проблем сразу - поставил задачу, сделал, перешел к следующей.
    Иначе через неделю-месяц перерыва не поможет ни svn, ни надписи DEBUG - вспоминать придется все с самого начала где и что чудил и имел ввиду. :)
     
  17. kraw

    kraw
    Модостроитель

    Регистрация:
    11 окт 2005
    Сообщения:
    1.840
    Благодарности:
    797
    Баллы:
    275
    Пол:
    Мужской
    А если одновременно с svn не лениться вести trac, то вообще будет все просто. На каждую ошибку, доработку и т. п. заводить отдельный тикет. И в комментариях тикета делать ссылки на ревизии svn. А по завершении доработки, исправлении ошибки , тикет закрывать.

    Тогда точно ничего не потеряется.

    Но тут нужно придерживаться (как и в иных способах) элементарной технологической дисциплины. Иначе все бесполезно и ничто не поможет.
     
  18. Ice

    Ice Участник форума

    Регистрация:
    5 ноя 2009
    Сообщения:
    28
    Благодарности:
    1
    Баллы:
    150
    Регулярные выражения.
    Часто возникает ситуация внесения большого числа однотипных изменений в код.
    Например желаем добавить общий обработчик к массиву функций Eqip_xxx(). В файле примера такая функция встречается 62 раза, добавлять вручную-мартышкин труд.
    Часть файла до применения зменений.
    Открыть спойлер

    PHP:
    func void Equip_1H_02()
    {
        if(
    self.id == 0)
        {
            
    B_AddFightSkill(self,NPC_TALENT_1H,Waffenbonus_02);
            
    MELEEWEAPONINDEX 2;
            
    BONUSHW 2;
        };
    };

    func void UnEquip_1H_02()
    {
        if(
    self.id == 0)
        {
            
    B_AddFightSkill(self,NPC_TALENT_1H,-Waffenbonus_02);
            
    MELEEWEAPONINDEX 0;
            
    BONUSHW 0;
        };
    };

    func void Equip_1H_04()
    {
        if(
    self.id == 0)
        {
            
    B_AddFightSkill(self,NPC_TALENT_1H,Waffenbonus_04);
            
    MELEEWEAPONINDEX 4;
            
    BONUSHW 2;
        };
    };

    func void UnEquip_1H_04()
    {
        if(
    self.id == 0)
        {
            
    B_AddFightSkill(self,NPC_TALENT_1H,-Waffenbonus_04);
            
    MELEEWEAPONINDEX 0;
            
    BONUSHW 0;
        };
    };

    func void equip_crossbow_heavy()
    {
        if(
    self.id == 0)
        {
            
    RANGEWEAPONINDEX 6;
            
    BONUSRW 2;
        };
    };

    func void equip_crossbow_veryheavy()
    {
        if(
    self.id == 0)
        {
            
    RANGEWEAPONINDEX 8;
            
    BONUSRW 2;
        };
    };

    func void unequip_bow_light()
    {
        if(
    self.id == 0)
        {
            
    RANGEWEAPONINDEX 0;
            
    BONUSRW 0;
        };
    };

    func void unequip_bow_medium()
    {
        if(
    self.id == 0)
        {
            
    RANGEWEAPONINDEX 0;
            
    BONUSRW 0;
        };
    };

    Для использования регулярных выражений в Windows часто используются сторонние редакторы. Их поддержка хорошо реализована в PsPad
    Вставим содержимое нашего файла в редактор и выберем в меню Поиск->Заменить (Ctrl+H). В появившемся окне выберем пункт Регулярные выражения.
    А теперь посмотрим внимательнее на код в фале.
    В каждой функции существует строка BONUSRW = или BONUSHW =.
    При экипировке = конкретному значению при разэкипировке =0;
    Воспользуемся этим и в "Найти" запишем регулярное выражение для поиска:
    (BONUS.W = [1-9]);
    Что здесь написано:
    [1-9] - в квадратных скобках, означает 1-ин символ в перечне от 1 до 9.
    () - круглые скобки, означают запомнить найденый текст для последующей обработки!
    . - точка между S и W обознач 1-ин любой символ. В примере она заменяет или R или H.
    В поле заменить добавим:
    $1;\n Equip();
    Это значит:
    $1 - вставить снова найденное выражение содержащееся в круглых скобках. В примере это (BONUS.W = [1-9]). Иными словами вернуть на место, что изъяли. (В Notepad++ следует использовать \1 вмето $1)= \1;\n Equip();
    Плюс ";"
    \n - сивол перевода на новую строку.
    Equip(); - добавляемый вызов функции с отступом.
    Жмём ОК. Применить для всех. И:
    Открыть спойлер

    PHP:
    func void Equip_1H_02()
    {
        if(
    self.id == 0)
        {
            
    B_AddFightSkill(self,NPC_TALENT_1H,Waffenbonus_02);
            
    MELEEWEAPONINDEX 2;
            
    BONUSHW 2;
          
    Equip();
        };
    };

    func void UnEquip_1H_02()
    {
        if(
    self.id == 0)
        {
            
    B_AddFightSkill(self,NPC_TALENT_1H,-Waffenbonus_02);
            
    MELEEWEAPONINDEX 0;
            
    BONUSHW 0;
        };
    };

    func void Equip_1H_04()
    {
        if(
    self.id == 0)
        {
            
    B_AddFightSkill(self,NPC_TALENT_1H,Waffenbonus_04);
            
    MELEEWEAPONINDEX 4;
            
    BONUSHW 2
         Equip
    ();
        };
    };

    func void UnEquip_1H_04()
    {
        if(
    self.id == 0)
        {
            
    B_AddFightSkill(self,NPC_TALENT_1H,-Waffenbonus_04);
            
    MELEEWEAPONINDEX 0;
            
    BONUSHW 0;
        };
    };

    func void equip_crossbow_heavy()
    {
        if(
    self.id == 0)
        {
            
    RANGEWEAPONINDEX 6;
      
    BONUSRW 2;
          
    Equip();
        };
    };

    func void equip_crossbow_veryheavy()
    {
        if(
    self.id == 0)
        {
            
    RANGEWEAPONINDEX 8;
      
    BONUSRW 2;
          
    Equip();
        };
    };

    func void unequip_bow_light()
    {
        if(
    self.id == 0)
        {
            
    RANGEWEAPONINDEX 0;
            
    BONUSRW 0;
        };
    };

    func void unequip_bow_medium()
    {
        if(
    self.id == 0)
        {
            
    RANGEWEAPONINDEX 0;
            
    BONUSRW 0;
        };
    };


    Функции unequip_xxx() c BONUSHW = 0; остались нетронуты.
    оператор "(круглые скобки)" может быть использован в строке несколько раз, переменная для возврата найденного соответственно $1 $2 и т.д. (В Notepad++ следует использовать \1 вмето $1)
     
  19. Ice

    Ice Участник форума

    Регистрация:
    5 ноя 2009
    Сообщения:
    28
    Благодарности:
    1
    Баллы:
    150
    Notepad++
    Обновлено 2011.03.05
    Обновлено 2011.03.15
    Alt+B
    при изменении файла находящегося под контролем SVN, достаточно нажать Alt+B, чтобы сравнить его с последним сохранённым варинтом базы SVN.
    Настройка SVN

    Подсветка синтаксиса в стиле GothicSourcer для Notepad++.
    Обновлено. Дополнения от 2011.03.15
    Открыть спойлер

    Файл stylers.xml в каталоге установке Notepad++
    Заменить секцию <LexerType name="d" desc="D" ext="">

    PHP:
     <LexerType name="d" desc="D" ext="">
                <
    WordsStyle name="DEFAULT" styleID="0" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
                <
    WordsStyle name="IDENTIFIER" styleID="14" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
                <
    WordsStyle name="INSTRUCTION WORD" styleID="6" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="instre1">func var instance prototype</WordsStyle>
                <
    WordsStyle name="KEWORD1" styleID="7" fgColor="C1C100" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="instre2">hero other self item victim</WordsStyle>
                <
    WordsStyle name="KEWORD2" styleID="8" fgColor="800080" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" keywordClass="type1"></WordsStyle>
                <
    WordsStyle name="KEWORD3" styleID="9" fgColor="804000" bgColor="FFFFFF" fontName="" fontStyle="2" fontSize="" keywordClass="type2">aivar attribute bodymass bodyStateInterruptableOverr canChangeTargetDuringInvest canTurnDuringInvest change_atr change_value condition cond_atr cond_value count daily_routine damage damageTotal damageType damage_per_level description disguiseGuild duration effect exp exp_next failure failureConditions fight_tactic flags guild HitChance hp,hp_max id important information inv_animate inv_rotx inv_roty inv_rotz inv_zbias isMultiEffect item_azi item_elevdo item_elevup item_prio item_range1 item_range2 level lp magic mag_circle mainflag material mission mob_azi mob_elevdo mob_elevup mob_prio mob_range1 mob_range2 munition name nameID noFocus npc npcType npc_azi npc_elevdo,npc_elevup npc_longrange npc_prio npc_range1 npc_range2 nr nutrition obsolete obsoleteConditions offer offerConditions on_equip on_state on_unequip owner ownerGuild permanent protection range reaction requested_amount requested_cat requested_item running scemeName senses senses_range slot spawnDelay spawnPoint spell spellType start_aistate success successConditions targetCollectAlgo targetCollectAzi targetCollectElev targetCollectRange targetCollectType text time_per_mana trade trade_amount trade_item value visual visual_change visual_skin voice voicePitch weapon wear weight wp voicePitch bodymass daily_routine start_aistate spawnPoint spawnDelay senses senses_range aivar wp exp exp_next lp bodyStateInterruptableOverr noFocus </WordsStyle>
                <
    WordsStyle name="KEWORD4" styleID="20" fgColor="800080" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" keywordClass="type3">C_NPC C_ITEM C_Info c_mission c_focus c_spell c_itemreact</WordsStyle>
                <
    WordsStyle name="KEWORD5" styleID="21" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="type4" />
                <
    WordsStyle name="KEWORD6" styleID="22" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="type5" />
                <
    WordsStyle name="NUMBER" styleID="5" fgColor="0080C0" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
                <
    WordsStyle name="STRING" styleID="10" fgColor="800000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
                <
    WordsStyle name="CHARACTER" styleID="12" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
                <
    WordsStyle name="OPERATOR" styleID="13" fgColor="808000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
                <
    WordsStyle name="COMMENT" styleID="1" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
                <
    WordsStyle name="COMMENT LINE" styleID="2" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
                <
    WordsStyle name="COMMENT DOC" styleID="3" fgColor="008080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
                <
    WordsStyle name="COMMENT NESTED" styleID="4" fgColor="008080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
                <
    WordsStyle name="COMMENT LINE DOC" styleID="15" fgColor="008080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
                <
    WordsStyle name="COMMENT DOC KEYWORD" styleID="16" fgColor="008080" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" />
                <
    WordsStyle name="COMMENT DOC KEYWORD ERROR" styleID="17" fgColor="008080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" />
            </
    LexerType>

    Сочетание клавиш Alt+S сравнивает с сохранённой копией.

    Конфиг для плагина к Notepad++ SourceCookifie
    Плагин строит дерево переменных и функций в открытом/ых файлах.
    Позволяет быстро переходить к месту объявления.
    Обновлено. Исправления и дополнения от 2011.03.05
    Clipboard03.jpg
    Открыть спойлер


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

    Добавить в конец файла SourceCookifier.languages.xml (Notepad++\plugins\Config\SourceCookifier.languages.xml )
    перед тегом </SerializableDictionaryOfStringLanguage>
    Добавлять/заменять редактором отличным от Notepad++, иначе изменения не будут внесены!

    Warning!
    В связи с тем, что бэкслеш перед "\s*" в тексте поста не отображается, воспользуйтесь аттачем!!!
    Посмотреть вложение SourceCookifier.languages.txt

    PHP:
     <item>
        <
    key>
          <
    string>D</string>
        </
    key>
        <
    value>
          <
    Language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <
    BuildIn>false</BuildIn>
            <
    Extensions>
              <
    string>.d</string>
            </
    Extensions>
            <
    TagTypes>
              <
    item>
                <
    key>
                  <
    string>c</string>
                </
    key>
                <
    value>
                  <
    TagType>
                    <
    Description>const [c]</Description>
                    <
    BuildIn>false</BuildIn>
                    <
    RegexPatterns>
                      <
    string>/\\s*const\s+([a-Z_]+)\\s+([a-Z_0-9]+)\\s*=\\s*(.*)+;/\2access:\1signature:\3/c/ei</string>
                    </
    RegexPatterns>
                    <
    Show>true</Show>
                    <
    TrackCaret>false</TrackCaret>
                    <
    IconFilename>php_class_constants.png</IconFilename>
                    <
    ForeColor>-16777216</ForeColor>
                  </
    TagType>
                </
    value>
              </
    item>
              <
    item>
                <
    key>
                  <
    string>C</string>
                </
    key>
                <
    value>
                  <
    TagType>
                    <
    Description>Class[C]</Description>
                    <
    BuildIn>false</BuildIn>
                    <
    RegexPatterns>
                      <
    string>/\\s*classs+([a-Z_]+)/\1/C/ei</string>
                    </
    RegexPatterns>
                    <
    Show>true</Show>
                    <
    TrackCaret>false</TrackCaret>
                    <
    IconFilename>python_class.png</IconFilename>
                    <
    ForeColor>-16777216</ForeColor>
                  </
    TagType>
                </
    value>
              </
    item>
              <
    item>
                <
    key>
                  <
    string>i</string>
                </
    key>
                <
    value>
                  <
    TagType>
                    <
    Description>instance [i]</Description>
                    <
    BuildIn>false</BuildIn>
                    <
    RegexPatterns>
                      <
    string>/\\s*instances+([a-Z_]*)\\s*((\\s*[a-Z_]*\\s*))/\1signature:\2/i/ei</string>
                    </
    RegexPatterns>
                    <
    Show>true</Show>
                    <
    TrackCaret>false</TrackCaret>
                    <
    IconFilename>c_interface.png</IconFilename>
                    <
    ForeColor>-16777216</ForeColor>
                  </
    TagType>
                </
    value>
              </
    item>
              <
    item>
                <
    key>
                  <
    string>P</string>
                </
    key>
                <
    value>
                  <
    TagType>
                    <
    Description>Prototype [P]</Description>
                    <
    BuildIn>false</BuildIn>
                    <
    RegexPatterns>
                      <
    string>/\\s*prototype\\s+([a-Z_]*)\\s*((\\s*[a-Z_]*\\s*))/\1signature:\2/P/ei</string>
                    </
    RegexPatterns>
                    <
    Show>true</Show>
                    <
    TrackCaret>false</TrackCaret>
                    <
    IconFilename>c_property.png</IconFilename>
                    <
    ForeColor>-16777216</ForeColor>
                  </
    TagType>
                </
    value>
              </
    item>
              <
    item>
                <
    key>
                  <
    string>f</string>
                </
    key>
                <
    value>
                  <
    TagType>
                    <
    Description>function [f]</Description>
                    <
    BuildIn>false</BuildIn>
                    <
    RegexPatterns>
                      <
    string>/\\s*func\\s+([a-Z_]*)\\s+([a-Z_0-9]*)\\s*((.*))/\2access:\1signature:\3/f/ei</string>
                    </
    RegexPatterns>
                    <
    Show>true</Show>
                    <
    TrackCaret>true</TrackCaret>
                    <
    IconFilename>pascal_function.png</IconFilename>
                    <
    ForeColor>-16777216</ForeColor>
                  </
    TagType>
                </
    value>
              </
    item>
              <
    item>
                <
    key>
                  <
    string>a</string>
                </
    key>
                <
    value>
                  <
    TagType>
                    <
    Description>variables [a]</Description>
                    <
    BuildIn>false</BuildIn>
                    <
    RegexPatterns>
                      <
    string>/\\s*var\\s+([a-Z_]*)\\s+([a-Z_0-9]*)([[a-Z_0-9]*])*;/\2access:\1signature:\3/a/ei</string>
                    </
    RegexPatterns>
                    <
    Show>true</Show>
                    <
    TrackCaret>false</TrackCaret>
                    <
    IconFilename>c_union.png</IconFilename>
                    <
    ForeColor>-16777216</ForeColor>
                  </
    TagType>
                </
    value>
              </
    item>
            </
    TagTypes>
          </
    Language>
        </
    value>
      </
    item>
     
  20. Ice

    Ice Участник форума

    Регистрация:
    5 ноя 2009
    Сообщения:
    28
    Благодарности:
    1
    Баллы:
    150
    Notepad++
    .
    Ctrl+Space
    Ctrl+Shift+Space

    Коллекция встроенных функций и констант Gothic II для автодополнения в Notepad++
    по Ctrl+Space и Ctrl+Shift+Space(для дополнения аргументов функциий)
    Дополнено 2011.03.15 17:44
    Рекомендуется обновиться! Испраления 2011.03.16 21:52
    Clipboard01.jpg Clipboard02.jpg
    Открыть спойлер

    Положить в Notepad++\plugins\APIs\ содержимое архива
    Посмотреть вложение d.zip
    Взято из GothocSourcer (IntFuncGothic2_ru.d):
    1. Встроенные функции Готики 2.
    Взято из Vam_tutor.chm:

    1. Глобальные константы.
    2. Константы AI.
    3. Состояния тела НПС, фокусы камеры и параметры гильдий
    4. 4. Инициализация восприятий.
    5. 5. Функции обработки восприятий людей.
    6. 6. Функции обработки восприятий монстров.
    7. 7. Описание обработчиков состояний НПС.
    8. 8. Функции состояний людей.
    9. 9. Функции состояний монстров.
    10. 10. Функции распорядка дня людей.
    11. 11. Функции распорядка дня монстров.
    12. 12. Вспомогательные В_ функции для людей.
    13. 13. Вспомогательные С_ функции для людей (compare функции).
    14. 14. Отношения между гильдиями.
    15. 15. Магия.
    16. 16. Заклинания.
    17. 17. Обработчики состояний заклинаний.
    18. 18. Разные AI функции.
    19. 19. Обработчики состояний функций распорядка дня для людей.



    не чувствительно к регистру!
     
    Lancelot поблагодарил.
Модераторы: Marvіn, MEG@VOLT

Поделиться этой страницей