• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Форум » TrinityCore » [TrinityCore] Help » Мини Решение [важно]
Мини Решение [важно]
r0m1ntik
Центурион
Всем привет,

Хочу сделать сделать чтобы итем давал опыт (в поднятие лвл)

Вот пример:

pPlayer->SetFreeTalentPoints(1);
тут дает талант, мне нужно чтобы давал опыт.

Спс)
Сообщение # 1 написано 12.09.2015 в 04:39
Mocosin
Капрал
Код
+#include "ScriptPCH.h"
+
+class item_lvl_up : public ItemScript
+{
+    public:
+
+        item_lvl_up()
+            : ItemScript("item_lvl_up")
+        {
+        }
+
+        bool OnUse(Player* player, Item* item, SpellCastTargets const& /*targets*/)
+        {
+            player->DestroyItemCount(54452, 1, true, false);
+            player->SetLevel ( player->getLevel() + 1 );
+            return true;
+        }
+};
+
+void AddSC_item_lvl_up()
+{
+    new item_lvl_up();
+}

Добавлено (12.09.2015, 05:08)
---------------------------------------------
Это даёт уровень

Добавлено (12.09.2015, 05:12)
---------------------------------------------
pPlayer->GiveXP(40000, NULL); -> это даёт хр, подставь под этот скрипт

Сообщение # 2 написано 12.09.2015 в 05:12
r0m1ntik
Центурион
Mocosin, не подскажете еще как сделать итем чтобы нажималось и давалось, а то сделал и не жмется и нечего не дает
Сообщение # 3 написано 16.09.2015 в 21:20
FreeCat
Капрал
r0m1ntik, сделай итем юзабельным через трайс колонка там где касты вроде 1 или 2 флаг делает его On use(юзабельным)
Сообщение # 4 написано 16.09.2015 в 21:23
r0m1ntik
Центурион
Неа
Сообщение # 5 написано 16.09.2015 в 21:40
p620
Маршал
Цитата FreeCat ()
сделай итем юзабельным через трайс колонка там где касты вроде 1 или 2 флаг делает его On use(юзабельным)

"Юзабельность" - флаг.
А если быть точным - 0x40 в поле Flags.
Сообщение # 6 написано 16.09.2015 в 21:41
r0m1ntik
Центурион
не помогает
Сообщение # 7 написано 17.09.2015 в 01:06
p620
Маршал
Цитата r0m1ntik ()
не помогает

Предмет стал писать что-нибудь при нажатии по нему ПКМ?
Сообщение # 8 написано 17.09.2015 в 01:26
r0m1ntik
Центурион
неа нечего не пишет

Добавлено (17.09.2015, 03:31)
---------------------------------------------
неа нечего не пишет

Сообщение # 9 написано 17.09.2015 в 03:31
Pallam
Рыцарь
Не ломай мозг и добавь спелл в таблицу spell_dbc в базе world, со свойством лвл-апа.
Сообщение # 10 написано 17.09.2015 в 10:02
FreeCat
Капрал
Какую базу используешь? и какой ревизии? Я тебе сделаю такой предмет просто присвоишь ему ScriptNames
Сообщение # 11 написано 17.09.2015 в 11:25
r0m1ntik
Центурион
FreeCat, TDB 58

Добавлено (17.09.2015, 14:22)
---------------------------------------------
Pallam, у меня через с++ предмет сделан

Сообщение # 12 написано 17.09.2015 в 14:22
Pallam
Рыцарь
Цитата r0m1ntik ()
Pallam, у меня через с++ предмет сделан

Смысл лишний раз делать подобные предметы, если их единственная задача - lvlup?
Сообщение # 13 написано 17.09.2015 в 14:23
r0m1ntik
Центурион
Не только) я много чего добавил туда
Сообщение # 14 написано 17.09.2015 в 14:26
Mocosin
Капрал
что бы юзалось, добавь к нему любой спел, например я делал из камня возвращения, и у меня юзался)
Сообщение # 15 написано 18.09.2015 в 02:47
r0m1ntik
Центурион
Mocosin, спасибо помогло)

Добавлено (18.09.2015, 15:14)
---------------------------------------------
+ через 24 часа только смогу

Сообщение # 16 написано 18.09.2015 в 15:14
Mocosin
Капрал
Цитата r0m1ntik ()
Mocosin, спасибо помогло)

я забыл тут добавить на максимальный плеер левелпроверку вроде, поставь) а то после 80 будет давать)

Добавлено (19.09.2015, 03:13)
---------------------------------------------

Код

#include "ScriptPCH.h"  

class item_lvl_up : public ItemScript  
{  
public:  

item_lvl_up()  
: ItemScript("item_lvl_up")  
{  
}  

bool OnUse(Player* player, Item* item, SpellCastTargets const& /*targets*/)  
{
    
  if(player->HasItemCount(100202, 1) && player->getLevel() > 299)
{
} else {

player->DestroyItemCount(100202, 1, true, false);  
player->SetLevel ( player->getLevel() + 1 );  
player->SaveToDB();  
return true;  
}  
}
};  

void AddSC_item_lvl_up()  
{  
new item_lvl_up();  
}

Добавлено (19.09.2015, 03:13)
---------------------------------------------

Цитата Mocosin ()
player->getLevel() > 299)

тут поставь 79
Сообщение # 17 написано 19.09.2015 в 03:13
Pallam
Рыцарь
Код
  if(player->HasItemCount(100202, 1) && player->getLevel() > 79)
{
} else {

player->DestroyItemCount(100202, 1, true, false);   
player->SetLevel ( player->getLevel() + 1 );   
player->SaveToDB();   
return true;   
}  

Ты серьезно?)
Моделирую ситуацию - предмет есть, лвл = 80.
Первое условие - да, второе - нет. Пойдет в else, даст уровень. А вот при 79 лвл-е уже не даст. Смешно.
Сообщение # 18 написано 19.09.2015 в 05:34
r0m1ntik
Центурион
Ребят у меня все это стоит) то что я просил в начале просто 1 строка из 289
Спс еще раз) я придумал фишку по круче)
Сообщение # 19 написано 20.09.2015 в 03:26
Mocosin
Капрал
Цитата Pallam ()
Моделирую ситуацию - предмет есть, лвл = 80.

намаделируй в коде, посмотрим как тебе даст 81 уровень, умник
Сообщение # 20 написано 24.10.2015 в 11:54
p620
Маршал
Цитата Pallam ()
Моделирую ситуацию - предмет есть, лвл = 80. Первое условие - да, второе - нет. Пойдет в else, даст уровень.

В том то и дело, что оба условия - *да*, и ничего не произойдет. Но вот если хотя бы одно не будет выполняться - пойдет в else. В том числе и то, которое проверяет, есть ли у игрока предмет. В любом случае так никто не пишет. Создавать if-конструкцию ТОЛЬКО ради else-ветви - по меньшей мере странное решение.
Сообщение # 21 написано 24.10.2015 в 14:18
Форум » TrinityCore » [TrinityCore] Help » Мини Решение [важно]
  • Страница 1 из 1
  • 1
Поиск: