Searching for this files ...
Similar Content
-
Activity
-
3
Wheel Of Destiny System
#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 -
125
-
27
Experimental Renderer
Implemented multithreaded shadow map generation. The entire render process was single-threaded, now shadow map generation uses D3D11 multithreading (command lists). To test it, I used the same scenario I have been using, but now there are 4 lights generating shadows (white directional light, red point light, green spotlight and a blue spotlight). This setup uses all available shadow mapping capacity (4 shadow maps for directional/sun light and 8 shadow maps for point/spot lights). The single-threaded method renders the scene in 13ms, while the multithreaded method renders in 8ms. That is a substantial improvement. The drawback of D3D11 multithreading is that only nvidia supports it (as far as I know), so other hardware may not benefit as much.- 4
-
34
-
-
15
-
143
-
2
Player name color
yes you can! // TUTORIAL FOR NAME CHANGE ABOVE PC In InstanceBaseEffect.cpp find: UINT CInstanceBase::GetNameColorIndex() below this: if (m_isKiller) { return NAMECOLOR_PK; } add: std::string stringMapName = CPythonBackground::Instance().GetWarpMapName(); if (stringMapName == "season1/metin2_map_oxevent") { return NAMECOLOR_PK; } change NAMECOLOR_PK with other NAMECOLOR or make your own. import this at the top: #include "PythonBackground.h" // TUTORIAL FOR NAME COLOR IN CHAT: in input_main.cpp find: int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes) below find: len = snprintf(chatbuf, sizeof(chatbuf), "%s : %s", ch->GetName(), buf); (this line might be different if you have global chat/multi language or other systems, but it's pretty much the same principle) and modify the function like this: if (ch->GetMapIndex() == 113) { len = snprintf(chatbuf, sizeof(chatbuf), "|cFFffa200%s|h|r : %s", ch->GetName(), buf); } else { len = snprintf(chatbuf, sizeof(chatbuf), "%s : %s", ch->GetName(), buf); } now, config your line as you want: |cFFffa200 ffa200 --> change with another HEX Color from the internet. (Search for HEX color generator) if (ch->GetMapIndex() == 113) 113 --> change with your map index now you have to do the binary part so that the name above the character is the same. -
-
-
Recently Browsing
- No registered users viewing this page.
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now