• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Форум » TrinityCore » [TrinityCore] Help » [HELP]Установка патчей в ласт реву TrnityCore[HELP] (Куда пропал ScriptLoader.cpp?)
[HELP]Установка патчей в ласт реву TrnityCore[HELP]
СимАрт
Сержант
Добрый день, подскажите, при накатывании патча в ласт версию trinity не могу найти файл ScriptLoader.cpp, я так думаю что этот файл переименовали, либо его убрали. Подскажите пожалуйста, ибо структура ласт версии стала другой.
Сообщение # 1 написано 30.01.2018 в 13:14
kvipka
Капрал
ну например так:
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
Сообщение # 2 отредактировано kvipka - Вторник, 30.01.2018, 14:13
_xXx_
Центурион
Падскажи плз. Создал новую папку 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
Infernales
Капрал
Цитата _xXx_ ()
Где прописывать?

Как и сказал kvipka, все кастомные скрипты теперь объявляются в /src/server/scripts/Custom/custom_script_loader.cpp.
Вот более наглядный пример:
https://github.com/TrinityCore/TrinityCore/compare/3.3.5...Rochet2:transmog
Перейди по ссылке и выбери "Files changed".
Сообщение # 4 отредактировано Infernales - Среда, 31.01.2018, 02:05
_xXx_
Центурион
Infernales, Как патчи ставить не нужно учить.
Сообщение # 5 написано 31.01.2018 в 02:30
Infernales
Капрал
_xXx_, тебя никто патчи ставить тут и не учил. У тебя возникла проблема, тебе дали более подробный пример на кастомном скрипте, а как ты это принял в своей голове, то это уже сугубо лично твои проблемы.
Сообщение # 6 написано 31.01.2018 в 02:44
_xXx_
Центурион
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 разных нпц с модами в куче.
Сообщение # 7 отредактировано _xXx_ - Среда, 31.01.2018, 08:47
Infernales
Капрал
Вот слабо было по нормальному прочитать то, что я скинул? Без разницы будут ли твои скрипты лежать по пути "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_
Центурион
Infernales, вот именно мне не нужно чтобы они были в папке кастом!
За коммит конечно спасибо но он не катит у меня лайст. Но ключевые слова появились по которым в поиске можно пройтиь. Спасибо с меня +
Сообщение # 9 отредактировано _xXx_ - Среда, 31.01.2018, 10:03
Infernales
Капрал
_xXx_, ну так возьми и положи их в другое место, гений блин. По коммиту видно, как объявлять скрипты, которые находятся в других местах.
Не ну серьёзно, чувак, прекращай так жёстко тупить, тебе ответы все уже разжевали, будь повнимательнее.
Сообщение # 10 отредактировано Infernales - Среда, 31.01.2018, 10:07
_xXx_
Центурион
Не катит мне нужно именно в папке нужной в отдельной. А не в папке кучу папок создавать(
Сообщение # 11 написано 31.01.2018 в 11:06
Infernales
Капрал
Окей, сделаем проще, напиши путь, где у тебя будут лежать скрипты.
Сообщение # 12 написано 31.01.2018 в 11:36
_xXx_
Центурион
e:\_Source\src\server\scripts\Custom_npc\npc_Teleporter.cpp вот что нужно. Так как в папке кастом другие патчи. Не НПЦ!!! Именно проблема с 
Цитата _xXx_ ()
Откуда взялась ошибка. Создал папку 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 все норм) Нет никаких проблем.
Сообщение # 13 отредактировано _xXx_ - Среда, 31.01.2018, 12:23
p620
Маршал
Цитата _xXx_ ()
"void __cdecl AddCustom_npcScripts(void)" (?AddCustom_npcScripts@@YAXXZ) в функции "void __cdecl AddScripts(void)"
Цитата _xXx_ ()
void AddCustomNpcScripts(){
}
А Вы не замечаете, что у Вас сигнатуры того, что Вы определили, и того, что вызываете, не совпадают (имена идентификаторов разные: `AddCustom_npcScripts` и `AddCustomNpcScripts`)? От этого, безусловно, и ошибка, т.к. компоновщик не нашел того, на что Вы ссылались.
Сообщение # 14 отредактировано p620 - Среда, 31.01.2018, 13:44
Infernales
Капрал
В общем накатал на скорую руку данный патч для примера:
https://pastebin.com/0UE567WN
Логику, думаю, поймёшь. Код с ним компилируется, проверено. Перед отправкой кода на компиляцию, обязательно пересобрать решение для компилятора в Cmake.
Сообщение # 15 написано 31.01.2018 в 13:23
_xXx_
Центурион
Цитата p620 ()
AddCustom_npcScripts

Спасибо вроде прокатило)))
С меня +
Сообщение # 16 отредактировано _xXx_ - Среда, 31.01.2018, 15:53
СимАрт
Сержант
Пытался накатить патч 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
p620
Маршал
СимАрт, похоже на отсутствие подключенных необходимых заголовков в искомой единице трансляции (`WorldChat.cpp`). Вывод, судя по всему, из студии. В контексте решения откройте рассматриваемый файл, пробегитесь по идентификаторам, которые парсер рассматривает как неопределенные, фокусируйте их по очереди, прожимая на каждом ПКМ->(Перейти к определению) или `F12` по умолчанию. Находите определение (именно определение, не объявление, оно может быть только одно на весь целевой модуль; если не знаете, в чем разница между первым и вторым - поисковики любезно подскажут), смотрите путь/имя заголовка, в котором оно находится (зависит от проектных настроек директорий поиска заголовков), и подключаете при помощи препроцессорной директивы `include` (можете образец в других местах решения подсмотреть), предоставляя, таким образом, контексту искомой единицы трансляции определение идентификатора, который в ней используется. Это должно привести к уменьшению количества ошибок (помните, что одно подключение может разрешить более одной и даже все разом). Повторяете, пока неопознанных идентификаторов не останется. Кстати, на VS, скорее всего, имеется расширение, которое может эту работу выполнить (полу-)автоматически. Параллельно можете сбоящий исходник на PasteBin залить, дабы я убедился в справедливости своего предположения.
Сообщение # 18 отредактировано p620 - Пятница, 02.02.2018, 18:51
Форум » TrinityCore » [TrinityCore] Help » [HELP]Установка патчей в ласт реву TrnityCore[HELP] (Куда пропал ScriptLoader.cpp?)
  • Страница 1 из 1
  • 1
Поиск: