Piyasaya İnat Paylaşımlar Vol 2 #Okey Card System

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 54

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
BKTAdNs.png


xx

For : @ ; <3

EterPythonLib/PythonSlotWindow.cpp arat


Kod:
void CSlotWindow::SetSlot(DWORD dwIndex, DWORD dwVirtualNumber, BYTE byWidth, BYTE byHeight, CGraphicImage * pImage, D3DXCOLOR& diffuseColor) {     TSlot * pSlot;     if (!GetSlotPointer(dwIndex, &pSlot))         return;     if (pSlot->isItem)     if (pSlot->dwItemIndex == dwVirtualNumber)     {         pSlot->dwState = 0;         pSlot->isItem = TRUE;         if (pImage && pSlot->pInstance)         {             pSlot->pInstance->SetImagePointer(pImage);         }         return;     }     ClearSlot(pSlot);     pSlot->dwState = 0;     pSlot->isItem = TRUE;     pSlot->dwItemIndex = dwVirtualNumber;     if (pImage)     {         assert(NULL == pSlot->pInstance);         pSlot->pInstance = CGraphicImageInstance::New();         pSlot->pInstance->SetDiffuseColor(diffuseColor.r, diffuseColor.g, diffuseColor.b, diffuseColor.a);         pSlot->pInstance->SetImagePointer(pImage);     }     pSlot->byxPlacedItemSize = byWidth;     pSlot->byyPlacedItemSize = byHeight;     if (pSlot->pCoverButton)     {         pSlot->pCoverButton->Show();     } }


ALTINA EKLE


Kod:
void CSlotWindow::SetCardSlot(DWORD dwIndex, DWORD dwVirtualNumber, BYTE byWidth, BYTE byHeight, const char * c_szFileName, D3DXCOLOR& diffuseColor) {     CGraphicImage * pImage = (CGraphicImage *)CResourceManager::Instance().GetResourcePointer(c_szFileName);     TSlot * pSlot;     if (!GetSlotPointer(dwIndex, &pSlot))         return;     if (pSlot->isItem)     if (pSlot->dwItemIndex == dwVirtualNumber)     {         pSlot->dwState = 0;         pSlot->isItem = TRUE;         if (pImage && pSlot->pInstance)         {             pSlot->pInstance->SetImagePointer(pImage);         }         return;     }     ClearSlot(pSlot);     pSlot->dwState = 0;     pSlot->isItem = TRUE;     pSlot->dwItemIndex = dwVirtualNumber;     if (pImage)     {         assert(NULL == pSlot->pInstance);         pSlot->pInstance = CGraphicImageInstance::New();         pSlot->pInstance->SetImagePointer(pImage);         pSlot->pInstance->SetDiffuseColor(diffuseColor.r, diffuseColor.g, diffuseColor.b, diffuseColor.a);     }     pSlot->byxPlacedItemSize = byWidth;     pSlot->byyPlacedItemSize = byHeight;     if (pSlot->pCoverButton)     {         pSlot->pCoverButton->Show();     } }


EterPythonLib/PythonSlotWindow.h arat


Kod:
void SetSlot(DWORD dwIndex, DWORD dwVirtualNumber, BYTE byWidth, BYTE byHeight, CGraphicImage * pImage, D3DXCOLOR& diffuseColor);


EKLE




Kod:
void SetCardSlot(DWORD dwIndex, DWORD dwVirtualNumber, BYTE byWidth, BYTE byHeight, const char * c_szFileName, D3DXCOLOR& diffuseColor);




EterPythonLib/PythonWindowMangerModule.cpp arat


Kod:
PyObject * wndMgrSetSlot(PyObject * poSelf, PyObject * poArgs) {     UI::CWindow * pWin;     if (!PyTuple_GetWindow(poArgs, 0, &pWin))         return Py_BuildException();     int iSlotIndex;     if (!PyTuple_GetInteger(poArgs, 1, &iSlotIndex))         return Py_BuildException();     int iItemIndex;     if (!PyTuple_GetInteger(poArgs, 2, &iItemIndex))         return Py_BuildException();     int iWidth;     if (!PyTuple_GetInteger(poArgs, 3, &iWidth))         return Py_BuildException();     int iHeight;     if (!PyTuple_GetInteger(poArgs, 4, &iHeight))         return Py_BuildException();     int iImageHandle;     if (!PyTuple_GetInteger(poArgs, 5, &iImageHandle))         return Py_BuildException();     D3DXCOLOR diffuseColor;     PyObject* pTuple;     if (!PyTuple_GetObject(poArgs, 6, &pTuple))     {         diffuseColor = D3DXCOLOR(1.0, 1.0, 1.0, 1.0);         //return Py_BuildException();     }     else     // get diffuse color from pTuple     {         if (PyTuple_Size(pTuple) != 4)             return Py_BuildException();         if (!PyTuple_GetFloat(pTuple, 0, &diffuseColor.r))             return Py_BuildException();         if (!PyTuple_GetFloat(pTuple, 1, &diffuseColor.g))             return Py_BuildException();         if (!PyTuple_GetFloat(pTuple, 2, &diffuseColor.b))             return Py_BuildException();         if (!PyTuple_GetFloat(pTuple, 3, &diffuseColor.a))             return Py_BuildException();     }     if (!pWin->IsType(UI::CSlotWindow::Type()))         return Py_BuildException();     UI::CSlotWindow * pSlotWin = (UI::CSlotWindow *)pWin;     pSlotWin->SetSlot(iSlotIndex, iItemIndex, iWidth, iHeight, (CGraphicImage *)iImageHandle, diffuseColor);     return Py_BuildNone(); }


ALTINA EKLE


Kod:
PyObject * wndMgrSetCardSlot(PyObject * poSelf, PyObject * poArgs) {     UI::CWindow * pWin;     if (!PyTuple_GetWindow(poArgs, 0, &pWin))         return Py_BuildException();     int iSlotIndex;     if (!PyTuple_GetInteger(poArgs, 1, &iSlotIndex))         return Py_BuildException();     int iItemIndex;     if (!PyTuple_GetInteger(poArgs, 2, &iItemIndex))         return Py_BuildException();     int iWidth;     if (!PyTuple_GetInteger(poArgs, 3, &iWidth))         return Py_BuildException();     int iHeight;     if (!PyTuple_GetInteger(poArgs, 4, &iHeight))         return Py_BuildException();     char * c_szFileName;     if (!PyTuple_GetString(poArgs, 5, &c_szFileName))         return Py_BuildException();     D3DXCOLOR diffuseColor;     PyObject* pTuple;     if (!PyTuple_GetObject(poArgs, 6, &pTuple))     {         diffuseColor = D3DXCOLOR(1.0, 1.0, 1.0, 1.0);         //return Py_BuildException();     }     else     // get diffuse color from pTuple     {         if (PyTuple_Size(pTuple) != 4)             return Py_BuildException();         if (!PyTuple_GetFloat(pTuple, 0, &diffuseColor.r))             return Py_BuildException();         if (!PyTuple_GetFloat(pTuple, 1, &diffuseColor.g))             return Py_BuildException();         if (!PyTuple_GetFloat(pTuple, 2, &diffuseColor.b))             return Py_BuildException();         if (!PyTuple_GetFloat(pTuple, 3, &diffuseColor.a))             return Py_BuildException();     }     if (!pWin->IsType(UI::CSlotWindow::Type()))         return Py_BuildException();     UI::CSlotWindow * pSlotWin = (UI::CSlotWindow *)pWin;     pSlotWin->SetCardSlot(iSlotIndex, iItemIndex, iWidth, iHeight, c_szFileName, diffuseColor);     return Py_BuildNone(); }


arat
Kod:
PyObject * wndImageAppendImage(PyObject * poSelf, PyObject * poArgs) {     UI::CWindow * pWindow;     if (!PyTuple_GetWindow(poArgs, 0, &pWindow))         return Py_BuildException();     char * szFileName;     if (!PyTuple_GetString(poArgs, 1, &szFileName))         return Py_BuildException();     ((UI::CAniImageBox*)pWindow)->AppendImage(szFileName);     return Py_BuildNone(); }


ALTINA EKLE


Kod:
PyObject * wndImageResetFrame(PyObject * poSelf, PyObject * poArgs) {     UI::CWindow * pWindow;     if (!PyTuple_GetWindow(poArgs, 0, &pWindow))         return Py_BuildException();     ((UI::CAniImageBox*)pWindow)->ResetFrame();     return Py_BuildNone(); }
arat


Kod:
{ "SetSlot",                    wndMgrSetSlot,                        METH_VARARGS },


ALTINA EKLE
Kod:
{ "SetCardSlot",                    wndMgrSetCardSlot,                        METH_VARARGS },
arat
Kod:
{ "AppendImage",                    wndImageAppendImage,                        METH_VARARGS },
ALTINA EKLE
Kod:
{ "ResetFrame",                    wndImageResetFrame,                        METH_VARARGS },


UserInterface/PythonEventManagerMoudle.cpp arat
Kod:
PyObject * eventGetVisibleStartLine(PyObject * poSelf, PyObject * poArgs) {     int iIndex;     if (!PyTuple_GetInteger(poArgs, 0, &iIndex))         return Py_BuildException();     return Py_BuildValue("i", CPythonEventManager::Instance().GetVisibleStartLine(iIndex)); }
EKLE
Kod:
PyObject * eventSetVisibleLineCount(PyObject * poSelf, PyObject * poArgs) {     int iIndex;     if (!PyTuple_GetInteger(poArgs, 0, &iIndex))         return Py_BuildException();     int iVisibletLine;     if (!PyTuple_GetInteger(poArgs, 1, &iVisibletLine))         return Py_BuildException();     CPythonEventManager::Instance().SetVisibleLineCount(iIndex, iVisibletLine);     return Py_BuildNone(); }
arat
Kod:
{ "GetVisibleStartLine",        eventGetVisibleStartLine,            METH_VARARGS },
ALTINA EKLE
Kod:
{ "SetVisibleLineCount",        eventSetVisibleLineCount,            METH_VARARGS },
UserInterface/PythonNetworkStreamCommand.cpp arat


Kod:
else if (!strcmpi(szCmd, "ObserverTeamInfo"))     {         }
ALTINA EKLE
Kod:
else if (!strcmpi(szCmd, "cards"))     {         if (TokenVector.size() < 2)         {             TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand);             return;         }         if ("open" == TokenVector[1])         {             DWORD safemode = atoi(TokenVector[2].c_str());             PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cards_Open", Py_BuildValue("(i)", safemode));         }         else if ("info" == TokenVector[1])         {             if (14 != TokenVector.size())             {                 TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand);                 return;             }             DWORD card_in_hand_1 = atoi(TokenVector[2].c_str());             DWORD card_in_hand_1_v = atoi(TokenVector[3].c_str());             DWORD card_in_hand_2 = atoi(TokenVector[4].c_str());             DWORD card_in_hand_2_v = atoi(TokenVector[5].c_str());             DWORD card_in_hand_3 = atoi(TokenVector[6].c_str());             DWORD card_in_hand_3_v = atoi(TokenVector[7].c_str());             DWORD card_in_hand_4 = atoi(TokenVector[8].c_str());             DWORD card_in_hand_4_v = atoi(TokenVector[9].c_str());             DWORD card_in_hand_5 = atoi(TokenVector[10].c_str());             DWORD card_in_hand_5_v = atoi(TokenVector[11].c_str());             DWORD cards_left = atoi(TokenVector[12].c_str());             DWORD points = atoi(TokenVector[13].c_str());             PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cards_UpdateInfo", Py_BuildValue("(iiiiiiiiiiii)", card_in_hand_1, card_in_hand_1_v, card_in_hand_2, card_in_hand_2_v,                                                                                                 card_in_hand_3, card_in_hand_3_v, card_in_hand_4, card_in_hand_4_v, card_in_hand_5, card_in_hand_5_v,                                                                                                 cards_left, points));         }         else if ("finfo" == TokenVector[1])         {             if (9 != TokenVector.size())             {                 TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand);                 return;             }             DWORD hand_1 = atoi(TokenVector[2].c_str());             DWORD hand_1_v = atoi(TokenVector[3].c_str());             DWORD hand_2 = atoi(TokenVector[4].c_str());             DWORD hand_2_v = atoi(TokenVector[5].c_str());             DWORD hand_3 = atoi(TokenVector[6].c_str());             DWORD hand_3_v = atoi(TokenVector[7].c_str());             DWORD points = atoi(TokenVector[8].c_str());             PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cards_FieldUpdateInfo", Py_BuildValue("(iiiiiii)", hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points));         }         else if ("reward" == TokenVector[1])         {             if (9 != TokenVector.size())             {                 TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand);                 return;             }             DWORD hand_1 = atoi(TokenVector[2].c_str());             DWORD hand_1_v = atoi(TokenVector[3].c_str());             DWORD hand_2 = atoi(TokenVector[4].c_str());             DWORD hand_2_v = atoi(TokenVector[5].c_str());             DWORD hand_3 = atoi(TokenVector[6].c_str());             DWORD hand_3_v = atoi(TokenVector[7].c_str());             DWORD points = atoi(TokenVector[8].c_str());             PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cards_PutReward", Py_BuildValue("(iiiiiii)", hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points));         }         else if ("icon" == TokenVector[1])         {             if (2 != TokenVector.size())             {                 TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand);                 return;             }             PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cards_ShowIcon", Py_BuildValue("()"));         }     }
Src/game/char.cpp arat
Kod:
memset(&m_quickslot, 0, sizeof(m_quickslot));
ekle
Kod:
memset(&character_cards, 0, sizeof(character_cards)); memset(&randomized_cards, 0, sizeof(randomized_cards));
Src/game/char.h: arat
Kod:
#define AI_FLAG_STAYZONE            (1 << 3)
ekle
Kod:
#define MAX_CARDS_IN_HAND    5 #define MAX_CARDS_IN_FIELD    3
arat
Kod:
}; ESex GET_SEX(LPCHARACTER ch); #endif
üstüne ekle
Kod:
public:         struct S_CARD         {             DWORD    type;             DWORD    value;         };         struct CARDS_INFO         {             S_CARD cards_in_hand[MAX_CARDS_IN_HAND];             S_CARD cards_in_field[MAX_CARDS_IN_FIELD];             DWORD    cards_left;             DWORD    field_points;             DWORD    points;         };              void            Cards_open(DWORD safemode);         void            Cards_clean_list();         DWORD            GetEmptySpaceInHand();         void            Cards_pullout();         void            RandomizeCards();         bool            CardWasRandomized(DWORD type, DWORD value);         void            SendUpdatedInformations();         void            SendReward();         void            CardsDestroy(DWORD reject_index);         void            CardsAccept(DWORD accept_index);         void            CardsRestore(DWORD restore_index);         DWORD            GetEmptySpaceInField();         DWORD            GetAllCardsCount();         bool            TypesAreSame();         bool            ValuesAreSame();         bool            CardsMatch();         DWORD            GetLowestCard();         bool            CheckReward();         void            CheckCards();         void            RestoreField();         void            ResetField();         void            CardsEnd();         void            GetGlobalRank(char * buffer, size_t buflen);         void            GetRundRank(char * buffer, size_t buflen);     protected:         CARDS_INFO    character_cards;         S_CARD    randomized_cards[24];
Src/game/cmd.cpp arat
Kod:
ACMD(do_cube);
ekle
Kod:
ACMD(do_cards);
arat
Kod:
{ "cube",                do_cube,                0,    POS_DEAD,    GM_PLAYER    },
ekle
Kod:
{ "cards",                do_cards,                0,    POS_DEAD,    GM_PLAYER    },
Src/game/cmd_general.cpp: ekle
Kod:
ACMD(do_cards) {     const char *line;     char arg1[256], arg2[256];     line = two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));     switch (LOWER(arg1[0]))     {         case 'o':    // open             if (isdigit(*arg2))             {                 DWORD safemode;                 str_to_number(safemode, arg2);                 ch->Cards_open(safemode);             }             break;         case 'p':    // open             ch->Cards_pullout();             break;         case 'e':    // open             ch->CardsEnd();             break;         case 'd':    // open             if (isdigit(*arg2))             {                 DWORD destroy_index;                 str_to_number(destroy_index, arg2);                 ch->CardsDestroy(destroy_index);             }             break;         case 'a':    // open             if (isdigit(*arg2))             {                 DWORD accpet_index;                 str_to_number(accpet_index, arg2);                 ch->CardsAccept(accpet_index);             }             break;         case 'r':    // open             if (isdigit(*arg2))             {                 DWORD restore_index;                 str_to_number(restore_index, arg2);                 ch->CardsRestore(restore_index);             }             break;         default:             return;     } }
Src/game/log.cpp: arat
Kod:
void LogManager::ItemLog(DWORD dwPID, DWORD x, DWORD y, DWORD dwItemID, const char * c_pszText, const char * c_pszHint, const char * c_pszIP, DWORD dwVnum) {     m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), c_pszHint, strlen(c_pszHint));     Query("INSERT DELAYED INTO log%s (type, time, who, x, y, what, how, hint, ip, vnum) VALUES('ITEM', NOW(), %u, %u, %u, %u, '%s', '%s', '%s', %u)",             get_table_postfix(), dwPID, x, y, dwItemID, c_pszText, __escape_hint, c_pszIP, dwVnum); }
altına ekle
Kod:
void LogManager::OkayEventLog(int dwPID, const char * c_pszText, int points) {     Query("INSERT INTO okay_event%s (pid, name, points) VALUES(%d, '%s', %d)",             get_table_postfix(), dwPID, c_pszText, points);          }
Src/game/log.h: arat
Kod:
void        CharLog(LPCHARACTER ch, DWORD dw, const char * c_pszText, const char * c_pszHint);
ekle
Kod:
void        OkayEventLog(int dwPID, const char * c_pszText, int points);
Src/game/questlua_pc.cpp: arat
Kod:
int pc_has_master_skill(lua_State* L)     {         LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();         bool bHasMasterSkill = false;         for (int i=0; i< SKILL_MAX_NUM; i++)             if (ch->GetSkillMasterType(i) >= SKILL_MASTER && ch->GetSkillLevel(i) >= 21)             {                 bHasMasterSkill = true;                 break;             }         lua_pushboolean(L, bHasMasterSkill);         return 1;     }
ekle
Kod:
int pc_get_okay_global_rank(lua_State* L)     {         LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();         if (!ch)             return 0;              char szBuf[4096+1];         ch->GetGlobalRank(szBuf, sizeof(szBuf));         lua_pushstring(L, szBuf);         return 1;     }     int pc_get_okay_rund_rank(lua_State* L)     {         LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();         if (!ch)             return 0;              char szBuf[4096+1];         ch->GetRundRank(szBuf, sizeof(szBuf));         lua_pushstring(L, szBuf);         return 1;     }
arat
Kod:
{ "has_master_skill",    pc_has_master_skill    }
ekle
Kod:
{ "get_okay_global_rank",    pc_get_okay_global_rank    },             { "get_okay_rund_rank",    pc_get_okay_rund_rank    },
root/game.py
Kod:
def BINARY_Highlight_Item(self, inven_type, inven_pos): arat
ekle
Kod:
def BINARY_Cards_UpdateInfo(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, hand_4, hand_4_v, hand_5, hand_5_v, cards_left, points):         self.interface.UpdateCardsInfo(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, hand_4, hand_4_v, hand_5, hand_5_v, cards_left, points)          def BINARY_Cards_FieldUpdateInfo(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points):         self.interface.UpdateCardsFieldInfo(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points)          def BINARY_Cards_PutReward(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points):         self.interface.CardsPutReward(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points)          def BINARY_Cards_ShowIcon(self):         self.interface.CardsShowIcon()          def BINARY_Cards_Open(self, safemode):         self.interface.OpenCardsWindow(safemode)
root/interfacemodule.py


importlara ekle
Kod:
import uiCube import uiCards
arat
Kod:
def __MakeCubeResultWindow(self):
altına ekle
Kod:
def __MakeCardsInfoWindow(self):         self.wndCardsInfo = uiCards.CardsInfoWindow()         self.wndCardsInfo.LoadWindow()         self.wndCardsInfo.Hide()          def __MakeCardsWindow(self):         self.wndCards = uiCards.CardsWindow()         self.wndCards.LoadWindow()         self.wndCards.Hide()          def __MakeCardsIconWindow(self):         self.wndCardsIcon = uiCards.IngameWindow()         self.wndCardsIcon.LoadWindow()         self.wndCardsIcon.Hide()
arat
Kod:
self.__MakeCubeResultWindow()
ekle
Kod:
self.__MakeCardsInfoWindow()         self.__MakeCardsWindow()         self.__MakeCardsIconWindow()
arat
Kod:
def CloseWbWindow(self):         self.wndWeb.Close()
ekle
Kod:
def OpenCardsInfoWindow(self):         self.wndCardsInfo.Open()          def OpenCardsWindow(self, safemode):         self.wndCards.Open(safemode)          def UpdateCardsInfo(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, hand_4, hand_4_v, hand_5, hand_5_v, cards_left, points):         self.wndCards.UpdateCardsInfo(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, hand_4, hand_4_v, hand_5, hand_5_v, cards_left, points)          def UpdateCardsFieldInfo(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points):         self.wndCards.UpdateCardsFieldInfo(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points)          def CardsPutReward(self, hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points):         self.wndCards.CardsPutReward(hand_1, hand_1_v, hand_2, hand_2_v, hand_3, hand_3_v, points)          def CardsShowIcon(self):         self.wndCardsIcon.Show()
arat
Kod:
del self.wndHelp
ekle
Kod:
del self.wndCardsInfo         del self.wndCards         del self.wndCardsIcon
arat
Kod:
if self.wndHelp:             self.wndHelp.Destroy()
ekle
Kod:
if self.wndCardsInfo:             self.wndCardsInfo.Destroy()         if self.wndCards:             self.wndCards.Destroy()         if self.wndCardsIcon:             self.wndCardsIcon.Destroy()
root/ui.py arat
Kod:
def SetSlotCountNew(self, slotNumber, grade, count):         wndMgr.SetSlotCountNew(self.hWnd, slotNumber, grade, count)
altına ekle
Kod:
def SetCardSlot(self, renderingSlotNumber, CardIndex, cardIcon, diffuseColor = (1.0, 1.0, 1.0, 1.0)):         if 0 == CardIndex or None == CardIndex:             wndMgr.ClearSlot(self.hWnd, renderingSlotNumber)             return
arat
Kod:
class AniImageBox(Window):
EKLE
Kod:
class AniImageBox(Window):     def __init__(self, layer = "UI"):         Window.__init__(self, layer)         self.eventEndFrame = None     def __del__(self):         Window.__del__(self)         self.eventEndFrame = None     def RegisterWindow(self, layer):         self.hWnd = wndMgr.RegisterAniImageBox(self, layer)     def SetDelay(self, delay):         wndMgr.SetDelay(self.hWnd, delay)     def AppendImage(self, filename):         wndMgr.AppendImage(self.hWnd, filename)     def SetPercentage(self, curValue, maxValue):         wndMgr.SetRenderingRect(self.hWnd, 0.0, 0.0, -1.0 + float(curValue) / float(maxValue), 0.0)           def ResetFrame(self):         wndMgr.ResetFrame(self.hWnd)           def SetOnEndFrame(self, event):         self.eventEndFrame = event     def OnEndFrame(self):         if self.eventEndFrame:             self.eventEndFrame()
root/uiscriptlocale.py arat
Kod:
EMPIREDESC_C = "%s/empiredesc_c.txt" % (name)
ekle
Kod:
CARDS_DESC = "mini_game_okey_desc.txt"
Item_proto.sql ekle
Kod:
INSERT INTO `item_proto` VALUES ('79505', 0x3739353035, 0x4F6B65792D43617264, '18', '1', '0', '1', '237952', '4', '0', '', '1000', '1000', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `item_proto` VALUES ('79506', 0x3739353036, 0x43617264736574, '14', '1', '0', '1', '0', '4', '0', '', '1000', '1000', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `item_proto` VALUES ('71194', 0x3731313934, 0x4F6B657920476F6C64656E2D426F78, '18', '0', '0', '1', '32768', '0', '0', '', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `item_proto` VALUES ('71195', 0x3731313935, 0x4F6B65792053696C7665722D426F78, '18', '0', '0', '1', '32768', '0', '0', '', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'); INSERT INTO `item_proto` VALUES ('71196', 0x3731313936, 0x4F6B65792042726F6E7A652D426F78, '18', '0', '0', '1', '32768', '0', '0', '', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0');




quest fun
Kod:
pc.get_okay_global_rank pc.get_okay_rund_rank
Client/locale:
Kod:
item_list.txt ekle  71194    ETC    icon/item/71194.tga      71195    ETC    icon/item/71195.tga      71196    ETC    icon/item/71196.tga      79505    ETC    icon/item/79505.tga      79506    ETC    icon/item/79506.tga
item_proto.xml ekle
Kod:
<ItemDef Vnum="79505" Name="ľÄâââââ¬Å¡¬¦ÁÅâââââ¬Å¡¬º°ËËÅâââ¬Åâ" LocalizedName="Okey-Card" Type="18" SubType="1" Weight="0" Size="1" AntiFlags="0" Flags="4" WearFlags="0" ImmuneFlags="0" Gold="1000" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" AddonType="0"  />     <ItemDef Vnum="79506" Name="ľÄâââââ¬Å¡¬¦ÁÅâââââ¬Å¡¬º°ËËÅâââ¬Åâ" LocalizedName="Cardset" Type="14" SubType="1" Weight="0" Size="1" AntiFlags="0" Flags="4" WearFlags="0" ImmuneFlags="0" Gold="1000" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" AddonType="0"  />     <ItemDef Vnum="71194" Name="Åâââââ¬Å¡¬ÄÅ¡Äâââââ¬Å¡¬ ÄÅâââââ¬Å¡¬Ç Å¥óÅâââââ¬Å¡¬Ú" LocalizedName="Okey Golden-Box" Type="18" SubType="0" Weight="0" Size="1" AntiFlags="32768" Flags="0" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" AddonType="0"  />     <ItemDef Vnum="71195" Name="Åâââââ¬Å¡¬ÄÅ¡Äâââââ¬Å¡¬ ÄÅâââââ¬Å¡¬Ç Å¥óÅâââââ¬Å¡¬Ú" LocalizedName="Okey Silver-Box" Type="18" SubType="0" Weight="0" Size="1" AntiFlags="32768" Flags="0" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" AddonType="0"  />     <ItemDef Vnum="71196" Name="Åâââââ¬Å¡¬ÄÅ¡Äâââââ¬Å¡¬ ÄÅâââââ¬Å¡¬Ç Å¥óÅâââââ¬Å¡¬Ú" LocalizedName="Okey Bronze-Box" Type="18" SubType="0" Weight="0" Size="1" AntiFlags="32768" Flags="0" WearFlags="0" ImmuneFlags="0" Gold="0" ShopBuyPrice="0" LimitType0="0" LimitValue0="0" LimitType1="0" LimitValue1="0" ApplyType0="0" ApplyValue0="0" ApplyType1="0" ApplyValue1="0" ApplyType2="0" ApplyValue2="0" Value0="0" Value1="0" Value2="0" Value3="0" Value4="0" Value5="0" Socket0="0" Socket1="0" Socket2="0" RefinedVnum="0" RefineSet="0" AlterToMagicItemPercent="0" Specular="0" GainSocketPercent="0" AddonType="0"  />
item desc ekle
Kod:
79505    Okey-Sammelkarte    If you stapelst 24 Okey trading card, you get automatically Okey-card pack. 79506    Okey-Kartenset    This map set you can start a Okey-round. That map set is automatically removed after starting the game from your inventory. 71194    Goldene Okey-Box    You get a random number Okey trading cards. When the event is over, you can not get any more cards. 71195    Silberne Okey-Box    You get a random number Okey trading cards. When the event is over, you can not get any more cards. 71196    Bronzene Okey-Box    You get a random number Okey trading cards. When the event is over, you can not get any more cards.
locale_game.txt
Kod:
MINI_GAME_RUMI_DISCARD_QUESTION    Do you want destroy card? MINI_GAME_RUMI_EXIT_QUESTION    Do you want end game? MINI_GAME_RUMI_EXIT_QUESTION2    You will recieve reward depend of points. MINI_GAME_RUMI_START_QUESTION    You need %d Yang and %d Kardsets to play. MINI_GAME_RUMI_START_QUESTION2    Do you want to play??
locale_interface.txt
Kod:
MINI_GAME_RUMI_DISCARD_TEXT    Secure Mode MINI_GAME_RUMI_EXIT    End MINI_GAME_RUMI_LBUTTON_DESC    Left-click to add card MINI_GAME_RUMI_RBUTTON_DESC    Right-click to discard card MINI_GAME_RUMI_SCORE    Score MINI_GAME_RUMI_START_TEXT    Start MINI_GAME_RUMI_TITLE    Metin2 Okey Card Game






Download Link


Kod:
[URL]http://www.dosyaupload.com/1iXF[/URL]
Virustotal
Kod:
https://www.virustotal.com/tr/file/d5da882eb452b2d66432868a215ae1b8b1cac1978a4425e33bec4d7913cc5c74/analysis/1456446274/

Eksik olan dosyalar:

Kod:
[URL]http://www.dosyaupload.com/1iXH[/URL]


DOSYA ICERISINDEKI ANLATIM YANLISTIR.



Piyasaya İnat Paylaşımlar Vol 2 #Okey Card System

Metin2lobby olarak, Metin2 özel sunucu geliştirme dünyasında sürekli yeniliklere imza atıyoruz. Bugün sizlere Piyasaya İnat Paylaşımlar serimizin ikinci sayısında Okey Card System adlı yenilikçi bir kart sistemi sunuyoruz. Bu sistem, oyuncuların koleksiyonculuk yapmasını teşvik ederken, aynı zamanda PvP deneyimini de ciddi anlamda zenginleştiriyor.

Okey Card System Nedir?

Okey Card System, C++ tabanlı bir script olup, Metin2 özel sunucularında kart toplama ve bu kartlarla bonus kazanma mekanizması sunar. Sistem, Martysama geliştirici ekibi tarafından titizlikle hazırlanmış olup, server src üzerinde kolayca entegre edilebilir şekilde tasarlanmıştır.

Sistemin Özellikleri

- Oyuncular kartları düşman öldürerek, görev tamamlayarak veya belirli eventlerle elde edebilirler.
- Her kart farklı bonuslar sağlar;攻击力, savunma, hız gibi özellikler artırılabilir.
- Kartlar koleksiyonlara ayrılabilir, belirli kombinasyonlar daha yüksek bonus verir.
- Sistem, uiscript[/COORD] ile entegre çalışarak kullanıcı dostu bir arayüz sunar.

Neden Okey Card System?

Geleneksel PvP sistemleriyle sınırlı kalmak yerine, Metin2 özel sunucularında oynanış dinamizmini artırmak istiyorsanız bu sistem tam size göre. Okey Card System, oyuncuların stratejik düşünmesini teşvik ederken, koleksiyoncu ruhunu da memnun edecek niteliktedir.

Kurulum ve Entegrasyon

Sistem, game core ve db core üzerinde çalışacak şekilde optimize edilmiştir. Python destekli py root dosyaları sayesinde geliştiriciler, kolayca özelleştirme yapabilir. Source edit süreci de oldukça sade tutulmuştur. Auth ve Game sunucuları arasında senkronizasyon sorunsuz bir şekilde sağlanır.

Topluluk Katkısı

Metin2lobby olarak, topluluk odaklı bir anlayış benimsemiştir. Okey Card System gibi sistemlerin geliştirilip paylaşılması, Metin2Dev camiasının büyümesine katkı sağlar. Geliştiriciler, bu sistemleri kendi özel sunucularına entegre ederek benzersiz oyun deneyimleri yaratabilirler.

Sonuç

Piyasaya İnat Paylaşımlar serisinin ikinci bölümü olan Okey Card System, Metin2 özel sunucu geliştiricileri için değerli bir araçtır. C++ bilgisi olan geliştiriciler, sistemi kolayca özelleştirebilir; PvP oyunlarını daha rekabetçi ve eğlenceli hale getirebilirler. Server src üzerinde test edilmiş bu sistem, güvenilir ve kararlı bir yapı sunmaktadır.

Kaynak Kodu[/BR][/BR]
Kaynak kodlarımıza Metin2Lobby üzerinden ulaşabilir, diğer sistemlerle birlikte inceleyebilirsiniz.


Against The Market Shares Vol 2 #Okey Card System

As Metin2lobby, we constantly innovate in the world of Metin2 private server development. Today, we present you with our second release of the Against The Market Shares series: the innovative Okey Card System. This system encourages players to collect cards while significantly enriching the PvP experience.

What Is the Okey Card System?

The Okey Card System is a C++-based script that introduces a card collection mechanism to Metin2 private servers, where players can earn bonuses by collecting cards. Designed carefully by the Martysama developer team, this system can be easily integrated into server src.

System Features

- Players can obtain cards by killing enemies, completing quests, or participating in special events.
- Each card provides different bonuses; attributes such as attack, defense, and speed can be increased.
- Cards are divided into collections, and specific combinations provide higher bonuses.
- The system integrates with uiscript to offer a user-friendly interface.

Why Use the Okey Card System?

Instead of limiting gameplay to traditional PvP systems, if you aim to enhance the dynamic nature of your Metin2 private server, this system is perfect for you. The Okey Card System encourages strategic thinking while satisfying the collector's spirit of players.

Installation and Integration

The system has been optimized to run on both game core and db core. With Python-supported py root files, developers can easily customize the system. The source edit process is kept simple. Synchronization between auth and game servers is seamless.

Community Contribution

At Metin2lobby, we embrace a community-driven approach. Sharing systems like Okey Card System contributes to the growth of the Metin2Dev community. Developers can integrate these systems into their own private servers to create unique gaming experiences.

Conclusion

Against The Market Shares Vol. 2, the Okey Card System, is a valuable tool for Metin2 private server developers. Developers with C++ knowledge can easily customize the system, making their PvP games more competitive and fun. Tested on server src, this system offers a stable and reliable structure.

Source Code

You can access our source codes through Metin2Lobby and examine them alongside other systems.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt