|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help [HELP]Установка патчей в ласт реву TrnityCore[HELP] (Куда пропал ScriptLoader.cpp?) |
[HELP]Установка патчей в ласт реву TrnityCore[HELP] |
ну например так:
src\server\scripts\Custom создаешь файл custom_script_loader.cpp в его содержимое запихиваешь регистрацию твоего скрипта, например как вот трансмог: Код void AddSC_Transmogrification(); //void AddSC_еще_какой_скрипт(); //void AddSC_и_еще_какой_скрипт(); //void AddSC_и_еще_какой_скрипт(); void AddCustomScripts() { AddSC_Transmogrification(); //AddSC_еще_какой_скрипт(); //AddSC_и_еще_какой_скрипт(); //AddSC_и_еще_какой_скрипт(); } после этого не забудь только пересобрать cmake |
Падскажи плз. Создал новую папку Custom_npc в нем создал файл custom_npc_script_loader.cpp В смаке норм все а при компиляции ошибка типа custom_npc_script_loader.cpp где не прописан. Где прописывать? НА старой реве просто вписывал в CMakeLists.txt
include(Custom_npc/CMakeLists.txt) А в новой реве никак не могу понять(
Сообщение # 3 написано 30.01.2018 в 17:32
|
kvipka, Подскажи пожалуйста))) При компиляции выдает вот такую ошибку
2>scripts.lib(ScriptLoader.obj) : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl AddCustom_npcScripts(void)" (?AddCustom_npcScripts@@YAXXZ) в функции "void __cdecl AddScripts(void)" (?AddScripts@@YAXXZ) 2>E:\_Source\_Source\bin\Release\worldserver.exe : fatal error LNK1120: неразрешенных внешних элементов: 1 2>Сборка проекта "worldserver.vcxproj" завершена с ошибкой. Откуда взялась ошибка. Создал папку Custom_npc и файл в ней custom_npc_script_loader.cpp в нем void AddCustomNpcScripts() { } Перепробовал кучу разных вариантов в написании AddCustomNpcScripts, но ни один не прокатил. Искал по коммитам в Тринити как они вводили новые папки, но не нашел. В то время как они как то же добавили папки Legion Draenor и так далее. Спасибо за внимание. Мне нужно не в папке Custom, а именно в новой. Так как более аккуратно рассортировать моды нпц и тд по разным папкам. А то не очень удобно без малого 100 разных нпц с модами в куче. |
Вот слабо было по нормальному прочитать то, что я скинул? Без разницы будут ли твои скрипты лежать по пути "src/server/scripts/Custom/" или " src/server/scripts/Custom/имя_папки",
главное их объявить в файле "custom_script_loader.cpp", который находится по пути "/src/server/scripts/Custom/". Как это сделать есть в сообщении kvipka и в моём сообщении с наглядным примером. Вот тебе даже коммит из официального TrinityCore с этими изменениями, а то тебя опять будут учить патчи накатывать по твоему мнению.
Сообщение # 8 написано 31.01.2018 в 09:52
|
_xXx_, ну так возьми и положи их в другое место, гений блин. По коммиту видно, как объявлять скрипты, которые находятся в других местах.
Не ну серьёзно, чувак, прекращай так жёстко тупить, тебе ответы все уже разжевали, будь повнимательнее. |
e:\_Source\src\server\scripts\Custom_npc\npc_Teleporter.cpp вот что нужно. Так как в папке кастом другие патчи. Не НПЦ!!! Именно проблема с
Откуда взялась ошибка. Создал папку Custom_npc и файл в ней custom_npc_script_loader.cpp в немvoid AddCustomNpcScripts() { } Цитата void AddSC_npc_Teleporter(); // The name of this function should match: // void Add${NameOfDirectory}Scripts() void AddCustomNpcScripts() { AddSC_npc_Teleporter(); } e:\_Source\src\server\scripts\Custom\mod_CharacterBonusStates.cpp тут проблем нету. Как пример в папке Custom все норм) Нет никаких проблем. |
"void __cdecl AddCustom_npcScripts(void)" (?AddCustom_npcScripts@@YAXXZ) в функции "void __cdecl AddScripts(void)" |
В общем накатал на скорую руку данный патч для примера:
https://pastebin.com/0UE567WN Логику, думаю, поймёшь. Код с ним компилируется, проверено. Перед отправкой кода на компиляцию, обязательно пересобрать решение для компилятора в Cmake.
Сообщение # 15 написано 31.01.2018 в 13:23
|
Пытался накатить патч WorldChat и при компиляции выдаёт ошибку
14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(35): error C2027: использование неопределенного типа "WorldSession" 14>C:\TrinityCore\source\src\server\game\World\World.h(41): note: см. объявление "WorldSession" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(35): error C2227: выражение слева от "->GetSecurity" должно указывать на тип класса, структуры или объединения либо на универсальный тип 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(40): error C2065: SEC_VIP: необъявленный идентификатор 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(40): error C2131: выражение не определяется константой 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(40): note: сбой был вызван неконстантными аргументами или ссылкой на неконстантный символ 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(40): note: см. использование "SEC_VIP" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(49): error C2065: SEC_EVENTM: необъявленный идентификатор 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(49): error C2131: выражение не определяется константой 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(49): note: сбой был вызван неконстантными аргументами или ссылкой на неконстантный символ 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(49): note: см. использование "SEC_EVENTM" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(52): error C2065: SEC_GLGM: необъявленный идентификатор 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(52): error C2131: выражение не определяется константой 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(52): note: сбой был вызван неконстантными аргументами или ссылкой на неконстантный символ 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(52): note: см. использование "SEC_GLGM" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(52): error C2065: GLGM: необъявленный идентификатор 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(55): error C2065: SEC_DEVELOPER: необъявленный идентификатор 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(55): error C2131: выражение не определяется константой 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(55): note: сбой был вызван неконстантными аргументами или ссылкой на неконстантный символ 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(55): note: см. использование "SEC_DEVELOPER" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(61): error C2065: SEC_RPMAN: необъявленный идентификатор 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(61): error C2131: выражение не определяется константой 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(61): note: сбой был вызван неконстантными аргументами или ссылкой на неконстантный символ 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(61): note: см. использование "SEC_RPMAN" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(61): error C2065: RPMAN: необъявленный идентификатор 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(78): error C2027: использование неопределенного типа "WorldSession" 14>C:\TrinityCore\source\src\server\game\World\World.h(41): note: см. объявление "WorldSession" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(78): error C2227: выражение слева от "->SendNotification" должно указывать на тип класса, структуры или объединения либо на универсальный тип 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(103): error C2555: World_Chat::GetCommands: возвращаемый тип перегруженной виртуальной функции отличается от "CommandScript::GetCommands" и не является ковариантным 14>C:\TrinityCore\source\src\server\game\Scripting\ScriptMgr.h(497): note: см. объявление "CommandScript::GetCommands" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(93): error C2027: использование неопределенного типа "WorldSession" 14>C:\TrinityCore\source\src\server\game\World\World.h(41): note: см. объявление "WorldSession" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(93): error C2227: выражение слева от "->GetPlayer" должно указывать на тип класса, структуры или объединения либо на универсальный тип 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(96): error C2027: использование неопределенного типа "WorldSession" 14>C:\TrinityCore\source\src\server\game\World\World.h(41): note: см. объявление "WorldSession" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(96): error C2227: выражение слева от "->SendNotification" должно указывать на тип класса, структуры или объединения либо на универсальный тип 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(98): error C2027: использование неопределенного типа "WorldSession" 14>C:\TrinityCore\source\src\server\game\World\World.h(41): note: см. объявление "WorldSession" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(98): error C2227: выражение слева от "->GetPlayer" должно указывать на тип класса, структуры или объединения либо на универсальный тип 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(109): error C2440: инициализация: невозможно преобразовать "initializer list" в "ChatCommand" 14>C:\TrinityCore\source\src\server\scripts\Custom\WorldChat.cpp(109): note: Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
Сообщение # 17 написано 02.02.2018 в 15:32
|
СимАрт, похоже на отсутствие подключенных необходимых заголовков в искомой единице трансляции (`WorldChat.cpp`). Вывод, судя по всему, из студии. В контексте решения откройте рассматриваемый файл, пробегитесь по идентификаторам, которые парсер рассматривает как неопределенные, фокусируйте их по очереди, прожимая на каждом ПКМ->(Перейти к определению) или `F12` по умолчанию. Находите определение (именно определение, не объявление, оно может быть только одно на весь целевой модуль; если не знаете, в чем разница между первым и вторым - поисковики любезно подскажут), смотрите путь/имя заголовка, в котором оно находится (зависит от проектных настроек директорий поиска заголовков), и подключаете при помощи препроцессорной директивы `include` (можете образец в других местах решения подсмотреть), предоставляя, таким образом, контексту искомой единицы трансляции определение идентификатора, который в ней используется. Это должно привести к уменьшению количества ошибок (помните, что одно подключение может разрешить более одной и даже все разом). Повторяете, пока неопознанных идентификаторов не останется. Кстати, на VS, скорее всего, имеется расширение, которое может эту работу выполнить (полу-)автоматически. Параллельно можете сбоящий исходник на PasteBin залить, дабы я убедился в справедливости своего предположения.
|
| |||
| |||