• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Форум » TrinityCore » [TrinityCore] Help » Ошибка в скрипте!
Ошибка в скрипте!
dimakpro
Центурион
std::string getPlayerStatus(uint32 guid)
{
Player *player = sObjectAccessor->FindPlayer(guid); <------- Ошибка,не существует подходящего конструктора для преобразования из "uint32" в "ObjectGuid"
if(!player)
return "Offline";
if(player->isAFK())
return "Online, <AFK> " + player->isAFK;
if(player->isDND())
return "Online, <Busy> " + player->isDND;
return "Online";
}
Продажа сервера wow blood-fire (WoW 3.3.5a + Lua engine) 6500 руб
---->https://vk.com/jimteck<----
Сообщение # 1 написано 15.06.2015 в 00:32
r0m1ntik
Центурион
Это для топов арены как я понел,
У меня отлично прошло,
Цитата
std::string getPlayerStatus(uint32 guid) {
Player *player = sObjectAccessor->FindPlayer(guid);
if(!player)
return "Оффлайн";
if(player->isAFK())
return "Онлайн, <АФК> " + player->afkMsg;
if(player->isDND())
return "Онлайн, <Занят> " + player->dndMsg;
return "Онлайн";
}
Сообщение # 2 отредактировано r0m1ntik - Понедельник, 15.06.2015, 12:38
p620
Маршал
Потому что у r0m1ntik более старая версия ядра, где ObjectGuid еще не использовался.
Моя версия, к сожалению, тоже старее этого нововведения, так что, без знания того, чем ObjectGuid является, я не смогу сказать, какое преобразование (или получение) здесь необходимо выполнить.
Сообщение # 3 написано 15.06.2015 в 12:54
Malezha
Армия спасения
Исходя из описания изменений, uint полностью заменили, так передавать в функцию нужно именно ObjectGuid.
Сообщение # 4 отредактировано Malezha - Понедельник, 15.06.2015, 13:28
HollyMaN
Рыцарь
Malezha, так там же русским вроде написано что из uint64 сделали ObjectGuid но не как не из 32, 16, 8.
Сообщение # 5 написано 15.06.2015 в 13:30
Malezha
Армия спасения
HollyMaN, вот только от uint32 в качестве guid'а нет никакого, потому что
Код
explicit ObjectGuid(uint32 const&) = delete;                 // no implementation, used to catch wrong type assignment

dimakpro, выбирай понравившийся конструктор:
Код
explicit ObjectGuid(uint64 guid) : _guid(guid) { }
ObjectGuid(HighGuid hi, uint32 entry, LowType counter) : _guid(counter ? uint64(counter) | (uint64(entry) << 24) | (uint64(hi) << 48) : 0) { }
ObjectGuid(HighGuid hi, LowType counter) : _guid(counter ? uint64(counter) | (uint64(hi) << 48) : 0) { }
Сообщение # 6 написано 15.06.2015 в 14:39
Horon
Рыцарь
Код

Player *player = sObjectAccessor->FindPlayer(guid);     


Замените на:
Код

Player* player = ObjectAccessor::FindPlayer(guid);
Сообщение # 7 отредактировано Horon - Понедельник, 15.06.2015, 15:31
Malezha
Армия спасения
Horon, тадада
Код
static Player* FindPlayer(ObjectGuid const&);
Сообщение # 8 написано 15.06.2015 в 15:08
Horon
Рыцарь
И что вы мне этим хотите сказать?
Сообщение # 9 написано 15.06.2015 в 15:10
Malezha
Армия спасения
Horon, как бы заменив код на ваш ошибка никуда не денется, т.к. метод ожидает ObjectGuid, а мы ему суем uint32.
Сообщение # 10 написано 15.06.2015 в 15:12
Horon
Рыцарь
Та да, не смотрел на код...

Ну тогда
Код
std::string getPlayerStatus(uint32 guid)

на:
Код
std::string getPlayerStatus(ObjectGuid guid)


И собственно нужно будет еще поменять в неуказанном коде.
Сообщение # 11 отредактировано Horon - Понедельник, 15.06.2015, 15:21
Malezha
Армия спасения
Мне вообще кажется, что там из объекта Player получают гуид и передают его, что бы опять найти Player biggrin
Хотя вероятнее там ополчение из базы, так что:
Код
// где то там
uint64 guid = fields[n].GetUInt64();
// ..
ObjectGuid oGuid = new ObjectGuid(guid);
std:string status = getPlayerStatus(oGuid);
delete oGuid;
Сообщение # 12 отредактировано Malezha - Понедельник, 15.06.2015, 15:34
Форум » TrinityCore » [TrinityCore] Help » Ошибка в скрипте!
  • Страница 1 из 1
  • 1
Поиск: