Я новичок в C++, и я попытался создать сценарий для частного сервера Trinity Core World of Warcraft, но кажется, что некоторые из кодов успешно выполнялись, а другие экранированы для причина неизвестна ..Некоторые из этих кодов не запускаются
вот код
#include "ScriptPCH.h"
#include "DisableMgr.h"
class LearnSpellsOnLevelUp : public PlayerScript
{
public:
LearnSpellsOnLevelUp()
: PlayerScript("LearnSpellsOnLevelUp"){};
void OnLevelChanged(Player* player, uint8 oldLevel)
{
if (player->getClass() == 3 && player->getLevel() >= 12) // ran
{
if (player->HasSpell(23356)) // ran
return; // ran
else // ran
player->LearnSpell(23356, false); // ran
player->GetSession()->SendAreaTriggerMessage("|cff00FF00You Learnt new Spell [Taming Lesson]!|r"); // ran
}
if (player->getClass() == 9) // Warlock // ran
{
if (player->getLevel() >= 2) // ran
{
if (player->HasSpell(44163)) // ran
return;
else
player->LearnSpell(44163, false); // ran
player->GetSession()->SendAreaTriggerMessage("|cff00FF00You Learnt new Spell [Summon Imp]!|r"); // ran
}
else if (player->getLevel() >= 10)
{
if (player->HasSpell(25112))
return;
else
player->LearnSpell(25112, false);
player->GetSession()->SendAreaTriggerMessage("|cff00FF00You Learnt new Spell [Summon Voidwalker]!|r");
}
else if (player->getLevel() >= 20)
{
if (player->HasSpell(712))
return;
else
player->LearnSpell(712, false);
player->GetSession()->SendAreaTriggerMessage("|cff00FF00You Learnt new Spell [Summon Succubus]!|r");
}
else if (player->getLevel() >= 30)
{
if (player->HasSpell(691))
return;
else
player->LearnSpell(691, false);
player->GetSession()->SendAreaTriggerMessage("|cff00FF00You Learnt new Spell [Summon Felhunter]!|r");
}
else
return;
}
}
};
void AddSC_LearnSpellsOnLevelUp()
{
new LearnSpellsOnLevelUp();
}
я написал рядом с кодами, которые бежали успешно // побежал
Возможно, у вас нет Чернокнижника с уровнем> = 10. | Отладчик - ваш друг – Nils
Итак, следующее, что вам нужно узнать, это использовать ваш отладчик. Взгляните на эту ссылку https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – UKMonkey
IMHO, вам не нужно использовать 'else if' в вашем случае. Действительно, 32 больше 2, поэтому вы входите в первое условие. Поскольку вы используете 'else if' для другого случая, это нормально, что вы никогда не входите в него. Попробуйте заменить 'else if' простым' if' – Garf365