• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
Как получить игрока, добившего моба
Llfe
Скаут
Как сделать ластхит моба? То есть мне нужно вывести в чат имя игрока, который нанес последний урон мобу. У меня была мысль сделать цикл: засовывать всех аттакеров в массив пока у моба хп >=0, когда здох - получить последнего аттакера, ЕГО ИМЯ. Кто может помочь, какие функции мне нужно юзать чтобы реализовать это??? А еще я прописал этот скрипт в бд мобу, но он его не видит... Что не так?

Код

class battleChip : public CreatureScript
{
    public:
          battleChip() : CreatureScript("battleChip"){}
           
          CreatureAI* GetAI(Creature* pCreature) const
          {
                  return
       new battleChipAI(pCreature);
          }
     
          struct battleChipAI : public ScriptedAI
          {
                  battleChipAI(Creature *c) : ScriptedAI(c) {}

                  void UpdateAI(const uint32 diff)
                  {
                  // Updates Out of Combat                       
               
       if(me -> GetHealth() <= 100)
       {
        //me -> SummonGameObject(185128, 7413.423340, -2815.985107, 464.573029, 0.16594, 0, 0, 0, 0, 10);

        me -> SetHealth(999);
       }
         }   



в бд в соответствующей колонке скрипта я написал battleChip - все же правильно, почему он его не читает???

Короче, помогите, плюсом не обижу=)
Сообщение # 1 отредактировано Llfe - Понедельник, 13.01.2014, 19:54
_Support_
Сore Developer
Джаст дие пробывал ?
Код

         void JustDied(Unit* /*killer*/)
         {
             instance->SetBossState(BOSS_NAME, DONE);
             Talk(SAY_DEATH);
             _JustDied();
         }
upon the look
Сообщение # 2 написано 13.01.2014 в 20:30
SPRaiT
Капрал
void OnCreatureKill (Player* killer, Creature* killed)
{
if(killed->GetGUID() == ид твоего моба)
std::string message;
message = killer->GetName();
message += " убил ";
message += killed->GetName();
sWorld->SendServerMessage(SERVER_MSG_STRING, message.c_str(), 0);
}
Сообщение # 3 написано 13.01.2014 в 21:07
Llfe
Скаут
Блин, вижу что скрипт правильный... Но почему-то ничего не происходит. Я ведь правильно скрипт привязал к мобу (просто записал имя класса в бд)??? Просто ничего не происходит.=(
Сообщение # 4 отредактировано Llfe - Понедельник, 13.01.2014, 21:23
SPRaiT
Капрал
if(killed->GetEntry() == ид твоего моба)
вот так будет правильнее.
Сообщение # 5 написано 13.01.2014 в 21:21
Llfe
Скаут
(удалено)
Стоп, а как откуда и как этот метод получает аргументы, я что-то не пойму?

Добавлено (13.01.2014, 21:35)
---------------------------------------------
Кстати это не совсем то, мне нид, чтобы моба била толпа, а вывести одного добившего среди них, это разве сработает?

Сообщение # 6 отредактировано Llfe - Понедельник, 13.01.2014, 21:28
SPRaiT
Капрал
Цитата Llfe ()
Кстати это не совсем то, мне нид, чтобы моба била толпа, а вывести одного добившего среди них, это разве сработает?


Код

void OnCreatureKill (Player* killer, Creature* killed)   
{   
if(killed->GetEntry() == ид твоего моба)   
{
std::string message;   
message = killer->GetName();   
message += " убил ";   
message += killed->GetName();   
sWorld->SendServerMessage(SERVER_MSG_STRING, message.c_str(), 0);  
}  
}


И кодировка UTF-8 (без BOM)
Сообщение # 7 отредактировано SPRaiT - Понедельник, 13.01.2014, 21:40
_dm666
<3 Death Metal
Код
void DamageTaken(Unit* killer, uint32 &damage)
   {
      if(killer->GetTypeId() == TYPEID_PLAYER)
        if (damage >= me->GetHealth())
      killer->ToPlayer()->GetSession()->SendNotification("%s killed by %s.", me->GetName().c_str(), killer->GetName().c_str());
   }
Сообщение # 8 отредактировано std_Suicide - Понедельник, 13.01.2014, 21:48
Llfe
Скаут
Блин, посмотрите на мой скрипт, что может быть неправильным, почему его не читает моб???
Сообщение # 9 написано 13.01.2014 в 21:50
SPRaiT
Капрал
а мой скрипт работал бы smile
Сообщение # 10 написано 13.01.2014 в 22:22
Llfe
Скаут
Да я даже ничего проверить не могу=(
Сообщение # 11 написано 13.01.2014 в 22:35
_dm666
<3 Death Metal
Эм.. Ну как бы
Цитата Llfe ()
void AddSC_boss_darksaw()
{

     new battleChip();
}
};

Находится в классе. Не так должно быть. Напиши вне класса.
Сообщение # 12 написано 13.01.2014 в 22:57
Llfe
Скаут


Все ровно
Сообщение # 13 написано 13.01.2014 в 23:17
Evrial
Маршал
Цитата std_Suicide ()
if (damage >= me->GetHealth())

++
Сообщение # 14 написано 14.01.2014 в 02:08
Llfe
Скаут
помогите разобраться почему моб не видит скрипт... Надо просто в бд в колонке СкриптНейм написать battleChip и все?
Сообщение # 15 написано 14.01.2014 в 12:14
_dm666
<3 Death Metal
В ScriptLoader писал строку?
http://collab.kpsn.org/display/tc/How-to_CustomScript
Сообщение # 16 написано 14.01.2014 в 14:44
Llfe
Скаут
Хоть я и не сделал кастом скрипт, я написал метод в уже существующий.

Спасибо тебе, std_Suicide, все работает верно biggrin И остальным тоже спс=)
Сообщение # 17 написано 14.01.2014 в 17:23
  • Страница 1 из 1
  • 1
Поиск: