Honorable Member Mali 41867 Posted September 5, 2020 Honorable Member Share Posted September 5, 2020 M2 Download Center This is the hidden content, please Sign In or Sign Up ( Internal ) This is the hidden content, please Sign In or Sign Up ( GitHub ) Here is the old german version: This is the hidden content, please Sign In or Sign Up I revised it. Maybe someone would like to use it. Sorry for py and gui 86 2 2 2 1 1 24 3 42 Link to comment Share on other sites More sharing options...
TonisBoss 16 Posted January 10, 2023 Share Posted January 10, 2023 Is it possible to get the wheel spin when you give item instead of yang? Link to comment Share on other sites More sharing options...
salih 0 Posted May 24 Share Posted May 24 #include "stdafx.h" #include "wheel_of_destiny.h" #include "char.h" #if defined(WHEEL_OF_DESTINY) static constexpr auto WheelItemMax = 16; // vnum, count(max 255), chance(max 255) static constexpr std::tuple<DWORD, std::uint8_t, std::uint8_t> m_Data[WheelItemMax] = { { 11209, 1, 0 }, { 11219, 1, 0 }, { 11229, 1, 0 }, { 11239, 1, 0 }, { 11249, 1, 0 }, { 11259, 1, 0 }, { 11269, 1, 0 }, { 11279, 1, 0 }, { 11289, 1, 0 }, { 11299, 1, 0 }, { 19, 1, 100 }, { 279, 1, 0 }, { 299, 1, 0 }, { 29, 1, 0 }, { 39, 1, 0 }, { 49, 1, 0 }, }; static constexpr auto ItemVnum = 5000; // item static constexpr auto ItemCount = 1; // Gerekli miktar CWheelDestiny::CWheelDestiny(LPCHARACTER m_ch) : ch(m_ch), gift_vnum(0), gift_count(1), turn_count(0) { for (auto i = 0; i < WheelItemMax; i++) ch->ChatPacket(CHAT_TYPE_COMMAND, "BINARY_WHEEL_ICON %lu %d %d", std::get<0>(m_Data[i]), std::get<1>(m_Data[i]), i); ch->ChatPacket(CHAT_TYPE_COMMAND, "BINARY_WHEEL_OPEN %d %d", ItemVnum, ch->GetWheelFreeCount()); } CWheelDestiny::~CWheelDestiny() { if (GetGiftVnum()) sys_log(0, "<CWheelDestiny> player(%s) didn't get his gift(vnum: %lu(%d.x))!!", ch->GetName(), GetGiftVnum(), GetGiftCount()); } template <typename T> std::string NumberToMoneyString(T val) { constexpr int comma = 3; auto str = std::to_string(val); auto pos = static_cast<int>(str.length()) - comma; while (pos > 0) { str.insert(pos, "."); pos -= comma; } return str; } void CWheelDestiny::TurnWheel() { if (GetGiftVnum()) { ch->ChatPacket(CHAT_TYPE_INFO, "Wait motherfucker!"); return; } const auto WheelFreeCount = ch->GetWheelFreeCount(); const auto ItemCountPlayer = ch->CountSpecifyItem(ItemVnum); if (WheelFreeCount < 1 && ItemCountPlayer < ItemCount) { ch->ChatPacket(CHAT_TYPE_INFO, "You need %d of item %d for <Turning Wheel>", ItemCount, ItemVnum); return; } auto Rand = PickAGift(); if (Rand == -1) { sys_err("CWheelDestiny::TurnWheel() Error Pick Gift (%s)", ch->GetName()); return; } if (WheelFreeCount > 0) { ch->SetWheelFreeCount(-1); ch->ChatPacket(CHAT_TYPE_INFO, "FREE"); } else { ch->RemoveSpecifyItem(ItemVnum, ItemCount); } // vnum, count, spin count, pos ch->ChatPacket(CHAT_TYPE_COMMAND, "BINARY_WHEEL_TURN %lu %d %d %d", GetGiftVnum(), GetGiftCount(), number(1, 8), Rand); turn_count++; } std::uint8_t CWheelDestiny::GetChance() const { #undef max const auto TurnCount = GetTurnCount(); if (TurnCount >= 10 && TurnCount < 25) return 25; if (TurnCount >= 25 && TurnCount < 40) return 50; if (TurnCount >= 40) return std::numeric_limits<std::uint8_t>::max(); // 255 return 0; } int CWheelDestiny::PickAGift() { const auto Chance = GetChance(); while (true) { const auto rand_pos = number(0, WheelItemMax - 1); const auto& [item, count, m_chance] = m_Data[rand_pos]; if (Chance >= m_chance) { SetGift(item, count); return rand_pos; } } return -1; // error } void CWheelDestiny::SetGift(const DWORD vnum, const std::uint8_t count) { gift_vnum = vnum; gift_count = count; } void CWheelDestiny::GiveMyFuckingGift() { const auto GiftVnum = GetGiftVnum(); if (GiftVnum) { ch->AutoGiveItem(GiftVnum, GetGiftCount()); SetGift(0, 1); // reset } else sys_err("Dude, where is the gift_vnum? <player: %s>", ch->GetName()); } DWORD CWheelDestiny::GetGiftVnum() const { return gift_vnum; } std::uint8_t CWheelDestiny::GetGiftCount() const { return gift_count; } std::uint16_t CWheelDestiny::GetTurnCount() const { return turn_count; } #endif Link to comment Share on other sites More sharing options...
Recommended Posts