|
Архив - только для чтения |
Модератор форума: andycrowz |
Форум » Корзина форума » Корзина » [Help] Пароль на телепорт (gossip_menu_option и smart_scripts [ box_code ]) |
[Help] Пароль на телепорт |
Если кто знает помогите
Как поставить свой пароль на телепорт? box_code = 1 (пароль 1 не подходит) при вводе любых цифр не телепортирует по координатам.
Сообщение # 1 написано 16.04.2014 в 06:08
|
Насколько мне известно, поле "box_code" не реализовано в чистой трине. Но я могу ошибаться.
|
Да это я уже слышал.
Но вот в чем запара, я уже ставил пароль раньше, но вот не помню как. Если нужен код в ядро, то где его взять? И как проверить реализована ли эта функция у меня в сборке?
Сообщение # 4 написано 17.04.2014 в 00:27
|
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 5 написано 17.04.2014 в 00:33
|
Умел бы написал, по этому и спрашиваю, он где то есть по любому, потому что раньше я без всяких патчей в ядро ставил пасс.
p.s. google, yandex не помогли, искал (может я плохо искал) если кто найдет такой код, или сможет написать сам просьба выложить сюда.
Сообщение # 6 написано 17.04.2014 в 00:37
|
вырезал из своего репо кусок кода
Код # HG changeset patch # User WorldCroFF@Avatar # Date 1355978596 -28800 # Node ID 77c0e07455994bf73214057434381d34578f7efb # Parent e72da21ed80c50f86375305efd22d270344984aa РџСЂРѕРјРѕ РєРѕРґС‹ diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -141,6 +141,7 @@ if (unit) { unit->AI()->sGossipSelectCode(_player, menuId, gossipListId, code.c_str()); + sScriptMgr->AllCreatureCode(_player, unit, _player->PlayerTalkClass->GetGossipOptionSender(gossipListId), _player->PlayerTalkClass->GetGossipOptionAction(gossipListId), code.c_str()); if (!sScriptMgr->OnGossipSelectCode(_player, unit, _player->PlayerTalkClass->GetGossipOptionSender(gossipListId), _player->PlayerTalkClass->GetGossipOptionAction(gossipListId), code.c_str())) _player->OnGossipSelect(unit, gossipListId, menuId); } diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -274,6 +274,7 @@ SCR_CLEAR(BattlegroundMapScript); SCR_CLEAR(ItemScript); SCR_CLEAR(CreatureScript); + SCR_CLEAR(AllCreatureScript); SCR_CLEAR(GameObjectScript); SCR_CLEAR(AreaTriggerScript); SCR_CLEAR(BattlegroundScript); @@ -759,6 +760,7 @@ return tmpscript->OnDummyEffect(caster, spellId, effIndex, target); } + bool ScriptMgr::OnGossipHello(Player* player, Creature* creature) { ASSERT(player); @@ -859,6 +861,36 @@ tmpscript->OnUpdate(creature, diff); } +void ScriptMgr::AllCreatureJustDied(Creature* creature) +{ + FOREACH_SCRIPT(AllCreatureScript)->AllCreatureJustDied(creature); +} + +void ScriptMgr::AllCreatureSelectLevel(Creature* creature, bool& needSetStats) +{ + FOREACH_SCRIPT(AllCreatureScript)->AllCreatureSelectLevel(creature, needSetStats); +} + +void ScriptMgr::AllCreatureCreate(Creature* creature) +{ + FOREACH_SCRIPT(AllCreatureScript)->AllCreatureCreate(creature); +} + +void ScriptMgr::AllCreatureSpellDamageMod(Creature* creature, SpellInfo const* spellProto, DamageEffectType damagetype, float& doneTotalMod) +{ + FOREACH_SCRIPT(AllCreatureScript)->AllCreatureSpellDamageMod(creature, spellProto, damagetype, doneTotalMod); +} + +void ScriptMgr::AllCreatureCreateLoot(Creature* creature, uint32& lootid) +{ + FOREACH_SCRIPT(AllCreatureScript)->AllCreatureCreateLoot(creature, lootid); +} + +void ScriptMgr::AllCreatureCode(Player* player, Creature* creature, uint32 sender, uint32 action, const char* code) +{ + FOREACH_SCRIPT(AllCreatureScript)->AllCreatureCode(player, creature, sender, action, code); +} + bool ScriptMgr::OnGossipHello(Player* player, GameObject* go) { ASSERT(player); @@ -978,6 +1010,7 @@ return tmpscript->GetAI(go); } + bool ScriptMgr::OnAreaTrigger(Player* player, AreaTriggerEntry const* trigger) { ASSERT(player); @@ -1475,6 +1508,12 @@ ScriptRegistry<CreatureScript>::AddScript(this); } +AllCreatureScript::AllCreatureScript(const char* name) + : ScriptObject(name) +{ + ScriptRegistry<AllCreatureScript>::AddScript(this); +} + GameObjectScript::GameObjectScript(const char* name) : ScriptObject(name) { @@ -1579,6 +1618,7 @@ template class ScriptRegistry<BattlegroundMapScript>; template class ScriptRegistry<ItemScript>; template class ScriptRegistry<CreatureScript>; +template class ScriptRegistry<AllCreatureScript>; template class ScriptRegistry<GameObjectScript>; template class ScriptRegistry<AreaTriggerScript>; template class ScriptRegistry<BattlegroundScript>; diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -436,6 +436,29 @@ virtual CreatureAI* GetAI(Creature* /*creature*/) const { return NULL; } }; +class AllCreatureScript : public ScriptObject +{ + protected: + + AllCreatureScript(const char* name); + + public: + + // Called when die creature + virtual void AllCreatureJustDied(Creature* /*creature*/) { } + + virtual void AllCreatureSelectLevel(Creature* /*creature*/, bool& /*needSetStats*/) { } + + virtual void AllCreatureCreate(Creature* /*creature*/) { } + + virtual void AllCreatureSpellDamageMod(Creature* /*creature*/, SpellInfo const* /*spellProto*/, DamageEffectType /*damagetype*/, float& /*doneTotalMod*/) { } + + virtual void AllCreatureCreateLoot(Creature* /*creature*/, uint32& /*lootid*/) { } + + // Called when a player selects a gossip with a code in the creature's gossip menu. + virtual void AllCreatureCode(Player* /*player*/, Creature* /*creature*/, uint32 /*sender*/, uint32 /*action*/, const char* /*code*/) { } +}; + class GameObjectScript : public ScriptObject, public UpdatableScript<GameObject> { protected: @@ -909,6 +932,15 @@ CreatureAI* GetCreatureAI(Creature* creature); void OnCreatureUpdate(Creature* creature, uint32 diff); + public: /* AllCreatureScript */ + + void AllCreatureJustDied(Creature* creature); + void AllCreatureSelectLevel(Creature* creature, bool& needSetStats); + void AllCreatureCreate(Creature* creature); + void AllCreatureSpellDamageMod(Creature* creature, SpellInfo const* spellProto, DamageEffectType damagetype, float& doneTotalMod); + void AllCreatureCreateLoot(Creature* creature, uint32& lootid); + void AllCreatureCode(Player* player, Creature* creature, uint32 sender, uint32 action, const char* code); + public: /* GameObjectScript */ bool OnDummyEffect(Unit* caster, uint32 spellId, SpellEffIndex effIndex, GameObject* target); |
Сообщение # 10 написано 29.04.2014 в 19:12
|
Просто эпический фейспалм. Во-первых, это просто хуки (про гениальность некоторых я промолчу, пожалуй), из которых, в данном дифе, нормально (ой ли?) прикручен только один. Во-вторых, просто хуки сами по себе не вносят новой функциональности. Где обработка действий? Где проверка пароля? Ничего из этого я не увидел. Так что не надо вводить людей в заблуждение.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку. |
| |||
| |||