|
Архив - только для чтения |
Модератор форума: andycrowz |
Форум Корзина форума Корзина Авто изучение классовых спеллов (подскажите есть ли скрипт?) (С++) |
Авто изучение классовых спеллов (подскажите есть ли скрипт?) |
Добрый день всем
Копался и тут и в гугле но не могу найти есть ли скрипт на авто изучение классовых спеллов как в Пандарии но для 2,4,3 - 3,3,5 ? Везде упоминаются только макросы а интересует именно чтобы спеллы сами изучались при получении левела без тренера
Если помог, ставь плюсик в репу :)
Сообщение # 1 написано 13.07.2014 в 13:53
|
Сообщение # 6 написано 13.07.2014 в 14:45
|
Сообщение # 7 написано 13.07.2014 в 15:56
|
эххх всё бы хорошо но к Орегону не подходит ни первый ни второй скрипт
там такое количество нестыковок что исправить их врядли я смогу просто не могу найти соответствующие функции в своём ядре 1 IntelliSense: не является именем класса или структуры e:\Oregon Server\WarpCoreWork\src\scripts\World\learnspell.cpp 4 38 scripts 2 IntelliSense: "PlayerScript" не является нестатическим элементом данных или базовым классом для класса "player_learnspell" e:\Oregon Server\WarpCoreWork\src\scripts\World\learnspell.cpp 7 35 scripts 3 IntelliSense: идентификатор "sObjectMgr" не определен e:\Oregon Server\WarpCoreWork\src\scripts\World\learnspell.cpp 28 46 scripts 4 IntelliSense: имя, за которым следует выражение "::", должно определять класс или пространство имен e:\Oregon Server\WarpCoreWork\src\scripts\World\learnspell.cpp 29 19 scripts 5 IntelliSense: требуется точка с запятой ";" e:\Oregon Server\WarpCoreWork\src\scripts\World\learnspell.cpp 29 51 scripts 6 IntelliSense: идентификатор "itr" не определен e:\Oregon Server\WarpCoreWork\src\scripts\World\learnspell.cpp 29 86 scripts 7 IntelliSense: class "TrainerSpell" не содержит члена "reqLevel" e:\Oregon Server\WarpCoreWork\src\scripts\World\learnspell.cpp 33 34 scripts 8 IntelliSense: идентификатор "SpellInfo" не определен e:\Oregon Server\WarpCoreWork\src\scripts\World\learnspell.cpp 34 28 scripts 9 IntelliSense: идентификатор "sSpellMgr" не определен e:\Oregon Server\WarpCoreWork\src\scripts\World\learnspell.cpp 34 55 scripts 10 IntelliSense: слишком много аргументов в вызове функции e:\Oregon Server\WarpCoreWork\src\scripts\World\learnspell.cpp 35 128 scripts
Если помог, ставь плюсик в репу :)
|
Некогда читать все посты выше, но думаю суть в том, что при включении всех спеллов рассовые (на пример у пристов) отсутствуют. я решал это по принципу добавления райдинга для фан сервера.
Код DELETE FROM `playercreateinfo_spell_custom` WHERE Spell = 34091; INSERT INTO `playercreateinfo_spell_custom` (`race`, `class`, `Spell`, `Note`, `Active`) SELECT `race`, `class`, 34091, 'Artisan Riding', 1 FROM `playercreateinfo`;
2.4.3 Blizzlike Server by Evrial - Лучшая 2.4.3 сборка+исходник.
Рисуем итемы для 2.4.3 ГАЙД Создаём свой сервер WoW (подробно и доходчиво) Поистине ловок тот, кто умеет скрывать свою ловкость
Сообщение # 13 написано 14.07.2014 в 00:07
|
Даже рядом не попал Evrial
я вообще не понял что и к чему ты написал у меня был вопрос про скрипт на автоматическое изучение спеллов при получении левела - как на оффе Пандарии И суть в том что есть 2 скрипта но оба они вообще не подходят для Орегона - ошибок тьма так что пока я в ступоре
Если помог, ставь плюсик в репу :)
Сообщение # 14 написано 14.07.2014 в 09:35
|
во. теперь понятно что нужно)))
1. Изменения вносятся в функцию левелапа (думаю ты и сам понял) 2. Смотрим обработку параметра конфига PlayerStart.AllSpells. Вроде как оно там откудато-же спеллы берёт... Значит можно оттуда же взять 3. Допишем измененное условие из пункта 2 с поправкой не на все спеллы как там, а на доступные на текущем левеле. Добавлено (14.07.2014, 11:40) Добавлено (14.07.2014, 12:38) Код if (level < sWorld.getConfig(CONFIG_MAX_PLAYER_LEVEL)) GiveLevel(level + 1); Сюда и будем дописывать. 2. Отсеивание спеллов вижу 2 варианта: или для каждого класса берём данные из таблицы тренеров, или же из таблицы playercreateinfo_spell_custom (или playercreateinfo_spell) и запрашиваем лвл спелла из спелл стора. У меня даже студия не установлена поэтому сделаю по таблице тренеров. А вообще, правильно будет делать по запросу в спеллсторе. Код uint32 class = GetClass(); uint32 trainerId; swtich (class) { case 1: trainerId = 1 // т.е. для класса вариор ид тренера будет 1 - а вообще нужно взять тренера варов у которого есть все нужные спеллы... ну или создать его. case 2: trainerId = 570 // для паладинов ИД моба-тренера со всеми спеллами 570. сюда нужно подставить реальный ИД тренера. я цифру для примера написал) // и так далее для всех классов } QueryResult_AutoPtr result = WorldDatabase.PQuery("SELECT spell FROM npc_trainer WHERE entry = %d AND reqlevel = %d", trainerId, GetLevel()); uint32 count = 0; if (result) { barGoLink bar(result->GetRowCount()); do { Field* fields = result->Fetch(); uint32 spell_id = fields[0].GetUInt32(); uint8 current_race = GetRace(); uint8 current_class = GetClass(); PlayerInfo* pInfo = &playerInfo[current_race][current_class]; pInfo->spell.push_back(CreateSpellPair(spell_id, 1)); bar.step(); ++count; } while (result->NextRow()); } Ну вот я себе это как-то так представляю. Добавлено (14.07.2014, 12:43)
2.4.3 Blizzlike Server by Evrial - Лучшая 2.4.3 сборка+исходник.
Рисуем итемы для 2.4.3 ГАЙД Создаём свой сервер WoW (подробно и доходчиво) Поистине ловок тот, кто умеет скрывать свою ловкость
Сообщение # 15 написано 14.07.2014 в 12:43
|
ну так там использована функция GetNpcTrainerSpells(entry). По сути она выдаёт список спеллов которым обучает тренер. У меня тоже самое запросом в базу берётся список спеллов. Не вижу принципиальной разницы. Можно вообще взять из 335 эту функцию и адаптировать под орегон, после чего так же использовать. p.s. к сожалению не имею исходника 335. У кого есть - сами посмотрите определение GetNpcTrainerSpells и станет понятно что в итоге оно берёт данные из таблицы тренеров.
2.4.3 Blizzlike Server by Evrial - Лучшая 2.4.3 сборка+исходник.
Рисуем итемы для 2.4.3 ГАЙД Создаём свой сервер WoW (подробно и доходчиво) Поистине ловок тот, кто умеет скрывать свою ловкость
Сообщение # 17 написано 16.07.2014 в 13:12
|
p.s. к сожалению не имею исходника 335. У кого есть - сами посмотрите определение GetNpcTrainerSpells и станет понятно что в итоге оно берёт данные из таблицы тренеров. Даже если так, то данные берутся во время загрузки сервера и сохраняются для последующего их применения без особой нагрузки. Если уж хочешь , чтобы нагрузка была меньше, используй хотя бы подготовленные выражения. А так - все вроде правильно
Сообщение # 18 написано 16.07.2014 в 22:10
|
Vitalya7, полностью согласен. динамическое обращение к БД явно жрёт больше ресурсов и менее безопасно чем взять данные при загрузке и хранить их. О оптимизации речи не шло. Речь бы о простейшей реализации.
2.4.3 Blizzlike Server by Evrial - Лучшая 2.4.3 сборка+исходник.
Рисуем итемы для 2.4.3 ГАЙД Создаём свой сервер WoW (подробно и доходчиво) Поистине ловок тот, кто умеет скрывать свою ловкость
Сообщение # 19 написано 18.07.2014 в 01:24
|
| |||
| |||