04.04.2010, 22:41
|
#20
|
Пользователь
Регистрация: 07.03.2010
Сообщений: 46
Сказал(а) спасибо: 11
Поблагодарили 17 раз(а) в 11 сообщениях
|
Цитата:
Сообщение от NeatElves
Лучше добавить в кондиции что-то наподобие(состряпал навскидку, просто чтобы показать идею, не проверял):
Код:
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index d96c32f..d4b3b44 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -7435,6 +7435,10 @@ bool PlayerCondition::Meets(Player const * player) const
return !player->HasItemCount(value1, value2);
default:
return false;
+ case CONDITION_SPELL:
+ return player->HasSpell(value1);
+ case CONDITION_NO_SPELL:
+ return !player->HasSpell(value1);
}
}
@@ -7630,6 +7634,16 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
break;
}
+ case CONDITION_SPELL:
+ case CONDITION_NO_SPELL:
+ {
+ if(!sSpellStore.LookupEntry(value1))
+ {
+ sLog.outErrorDb("Spell condition requires to have non existing spell (Id: %d), skipped", value1);
+ return false;
+ }
+ break;
+ }
case CONDITION_NONE:
break;
}
diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h
index e3b22c5..a0b4293 100644
--- a/src/game/ObjectMgr.h
+++ b/src/game/ObjectMgr.h
@@ -314,9 +314,11 @@ enum ConditionType
CONDITION_RACE_CLASS = 14, // race_mask class_mask
CONDITION_LEVEL = 15, // player_level 0, 1 or 2 (0: equal to, 1: equal or higher than, 2: equal or less than)
CONDITION_NOITEM = 16, // item_id count
+ CONDITION_SPELL = 17, // spell_id 0
+ CONDITION_NO_SPELL = 18, // spell_id 0
};
-#define MAX_CONDITION 17 // maximum value in ConditionType enum
+#define MAX_CONDITION 19 // maximum value in ConditionType enum
struct PlayerCondition
{
И будет тогда проверка первая на уровень перса, вторая - не знает ли он спелл дуалспека, если совпало - меню есть..))
Пригодится и дя других меню, наподобие инженер гном и т.п..))
|
можно оставить CONDITION_SPELL, а отрицательное значение будет означать отсутствие спелла.
и
Код:
default:
return false;
должен быть в конце оператора switch
Последний раз редактировалось ghostpast; 04.04.2010 в 22:52.
|
|
|