• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
Кусок кода
Funtomas
Рыцарь
Всем привет, накатил патч ПвП Систему, но мне показалось этого мало, я хочу сделать чтоб когда игрок убивал другово игрока выдовалось звуковое сообщение "Конец света", я это слышал у лича и начал искать этот кусочек кода,так и не нашел. Кто может помогите найти его)

Добавлено (05.11.2012, 22:29)
---------------------------------------------
вот что-то похожее, но я хз оно или нет

Code
            void KilledUnit(Unit* victim)
             {
                 if (victim->GetTypeId() == TYPEID_PLAYER && !me->IsInEvadeMode() && !(events.GetPhaseMask() & PHASE_MASK_OUTRO))
                     Talk(SAY_LK_KILL);
             }
Сообщение # 1 написано 05.11.2012 в 22:29
Dinoza
para bellum
ПлеерСкрипт напиши
Сообщение # 2 написано 05.11.2012 в 22:36
Funtomas
Рыцарь
Dinoza, умел бы написал, но увы, приходится пользоватся тем что есть
Сообщение # 3 написано 05.11.2012 в 22:39
C3mak
Dev
Quote (Funtomas)
Dinoza, умел бы написал, но увы, приходится пользоватся тем что есть

Нет ничего проще =) сам не проверял, не на компил и не на работоспособность, если что пишите, звук будет на всю зону, если нужно на весь мир, напишите.
id звука: 17364.

Code
class pvp_sound_Player_Scripts : public PlayerScript                 
{                 
public:                 
                  pvp_sound_Player_Scripts() : PlayerScript("pvp_sound_Player_Scripts") { }                 

                  void OnPVPKill(Player* killer, Player* dier)                 
                  {                 
                    if(killer->InBattleground() || dier->InBattleground()) //чек на бг.
                        return;
                    
                    if(killer->InArena() || dier->InArena()) //чек на арену
                       return;
                       /* тоесть на бг или арене - эта система работать не будет, чтобы заработало, нужно закомментировать эти строчки, включая return; */
                        uint64 kGUID;
                        uint64 dGUID;
                        kGUID = killer->GetGUID();
                        dGUID = dier->GetGUID();
                        if(kGUID == dGUID){
                          return; //если игрок разбился на смерть, звука не будет
                        }
                        if(killer->GetZoneId() == dier->GetZoneId()){ //Чек на одной ли зоне - это произошло
                          uint32 Id_sound = 17364 ; //сюда добавить ид звука.
                          uint32 Id_zone = killer->GetZoneId(); //звук будет на зону киллера
                          WorldPacket data(SMSG_PLAY_SOUND, 4);
                          data << uint32(Id_sound) << killer->GetGUID();
                          sWorld->SendZoneMessage(Id_zone, &data); //звук будет на всю зону
                        }                        
                   }                 
};                 

void AddSC_PvpZoneKills(){
                  new pvp_sound_Player_Scripts();
}


Добавлено (06.11.2012, 04:27)
---------------------------------------------
Вариант №2 на карту.:
№2
Сообщение # 4 отредактировано C3mak - Вторник, 06.11.2012, 04:32
Funtomas
Рыцарь
C3mak, попробую
Сообщение # 5 написано 06.11.2012 в 18:47
C3mak
Dev
Quote (Funtomas)
C3mak, попробую

тут пробовать не нужно, тут уже все сделано), вам только скомпилить и проверить, если ошибки при компиле, скопировать сюда.
Сообщение # 6 написано 07.11.2012 в 23:27
Прадмур
~
Quote (C3mak)
if(killer->InBattleground() || dier->InBattleground()) //чек на бг.
return;

if(killer->InArena() || dier->InArena()) //чек на арену
return;
/* тоесть на бг или арене - эта система работать не будет, чтобы заработало, нужно закомментировать эти строчки, включая return; */
uint64 kGUID;
uint64 dGUID;
kGUID = killer->GetGUID();
dGUID = dier->GetGUID();
if(kGUID == dGUID){
return; //если игрок разбился на смерть, звука не будет
}


Ужимается до:
Code
if (killer->InBattleground() || killer->InArena() || killer == dier)
     return;

Достаточно проверить убившего, а убитый и так будет находится рядом. По тем же причинам и проверка на зону не нужна. А для сравнения убившего с убитым достаточно сравнить их объекты. И зачем столько лишних переменных?

Зачем грузить скрипты лишним кодом?)
Сообщение # 7 написано 08.11.2012 в 04:14
Funtomas
Рыцарь
чет не работает скрипт, компилится он без ошибок, но звука нету... мб я не указал зоны бг или ненадо?
Сообщение # 8 написано 09.11.2012 в 18:16
Прадмур
~
Quote (Funtomas)
чет не работает скрипт, компилится он без ошибок, но звука нету... мб я не указал зоны бг или ненадо?

Ты когда был на бг пытался слушать звук? Здесь есть проверка, чтобы на бг он не воспроизводился. Или слушал вне бг, но звука не было? Опиши как именно ты проводил проверку.
Сообщение # 9 отредактировано Прадмур - Пятница, 09.11.2012, 21:24
Funtomas
Рыцарь
Прадмур, да где угодно я пытался, звука нету вообще
Сообщение # 10 написано 09.11.2012 в 21:38
Прадмур
~
Quote (Funtomas)
Прадмур, да где угодно я пытался, звука нету вообще

Ну тогда увы. Написал себе примерно такой же код, но по короче оставив только часть с воспроизведением звука и звук есть.
Так как ты не описал своих действий подключения скрипта и того, что дописал в код скрипта (там как минимум пред компилированный заголовок подключить нужно), то я ничем не могу помочь.
Сообщение # 11 написано 09.11.2012 в 22:00
Funtomas
Рыцарь
Прадмур, в "ШАПКЕ" написал
Code
#include "ScriptPCH.h"
, объявил скрипт ясное дело, а дальше сделал что предлагал C3mak

Добавлено (09.11.2012, 22:30)
---------------------------------------------
Прадмур, я дно, haha я не в те исходники объявлял скрипт

Добавлено (09.11.2012, 22:35)
---------------------------------------------
щас объявлю скрипт и проверю

Добавлено (09.11.2012, 23:18)
---------------------------------------------
Все работает, только я хотел другой звук, там играет "Пришел Конец!" а я хотел чтоб он кричал "КОНЕЦ СВЕТА"

Добавлено (09.11.2012, 23:30)
---------------------------------------------
Все мужики спасибо всем за данный скрипт за помощь, а звук я нашел) "КОНЕЦ СВЕТА" айди

Code
17371
Сообщение # 12 отредактировано Funtomas - Пятница, 09.11.2012, 22:26
Dimitro
Praise the sun!
Данная тема была перемещена из раздела [TrinityCore] Help.
Причина перемещения: Решено.

Переместил: Dimitro.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 13 написано 10.11.2012 в 00:15
  • Страница 1 из 1
  • 1
Поиск: