Jump to content

Search the Community

Showing results for tags 'c++/python' in content posted in C++ / Python / Server.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Forum board
    • M2Zone.tech
  • Strefa gracza
    • Server presentations
    • Discussions, Questions and Problems
  • Create private server
    • Pytania i Problemy - bez logowania
    • Problems and Questions
    • Cooperation
    • Tutorials / Video
    • C++ / Python / Server
    • Sources / Serverfiles / Clients
    • Homepage / Board
    • Quests
    • 2D Graphics
    • 3D Graphics
    • Recycling
  • Marketplace
    • Rynek - (Kupię, Sprzedam, Zamienię i Zlecę)
    • Archiwum
  • Hydepark
    • About all
    • Introduce yourself
    • My Creativity / Media
  • Others
    • Blokady i Ostrzeżenia
    • Trash

Categories

  • Programs
  • Plechito.com
    • Events
    • Maps
    • Mounts
    • Equipments
    • Monsters
    • NPC

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Sex


Country


Facebook


Discord


Telegram


Gadu-Gadu

Found 160 results

  1. Siema macie tu wiki dropu tą lepszą wiki dropu v2.rar
  2. Cześć, dodatek umożliwia zmianę pola widzenia kamery w opcjach gry. Wygląda to następująco: Download: [Hidden Content] Skan: [Hidden Content] Poradnik nie jest mój.
  3. 1.mp4 2.mp4 3.mp4 dde8c534af176f3cd347d830a3654fb9.mp4 Battle_Royale.7z
  4. Hej chciałbym z wami się podzielić slot effectem Testowane działa [Hidden Content]
  5. Dali Offline shop & Search shop.mp4 Offline_Shop.rar
  6. Skoro i tak już wypłynął na Turka, a brudasy mają tendencję upłynniania nam zawartości forum to trzymajcie. Own window and slots Items are placed in a new window_type just for switchbot Items can be moved from slot to slot Right click on Items in switchbot are putting it back to inventory ALT + LMOUSE is pasting the item-string to chat Changer or Yang Easy to configure if Changer-Items or Yang should be used for each change Amount of Changer or Yang configurable easily Able to use more than one vnum as changer Attribute-Table and Selection Server is sending all Attribute-Sets to the client While selection of an attribute the maximum value is already preselected The list of attributes is filtered for the selected item-type. it’s only possible to select attributes you can get Double selection of attributes isn’t possible Inserting value of attribute can’t exceed it’s max value and will be reset to its max value while typing Searchbar for quick search of desired attribute Searching can be directly accepted by pressing Enter-key when result is one attribute Alternative-Attributes Each slot has multiple alternatives configurable Amount of alternatives easily configurable (Enum: SWITCHBOT_ALTERNATIVE_COUNT) UI is auto adapting itself to specified amount in source Notifications Silent – No ChatPackets are send! If the process if finished successfully it’s sending a private message to the player Networking- & Refresh-Optimizations Own UpdateItem-Packet Only containing needed informations (Slot, Vnum, Attributes, Sockets) Directly passed to switchbot window, when it’s open. ChangeAttribute-Methode optimized: CItem.ChangeAttribute was executing “SetAttribute” for each attribute the item contains. That was always sending an UpdatePacket, which results into about 7 refreshes per single change process. If ChangeAttribute is executed now and the item is placed in window_type “SWITCHBOT” the original update packet is blocked/not send. Switchbot is now setting all attributes and sending ONE packet afterwards to refresh/update the item informations. Tooltip is not shrinking/growing while the process because the amount of attributes will always stay the same. (Much smoother behaviour) Speed-Configuration Since the new update packet is much lighter , only sending once per process and it’s checked serverside it can reach much faster speed configurations. The delays between each change-process can be adjusted in a constant value on top of the new switchbot-class in server source. P2P When warping to another core the switchbot informations are transfered to your target core and will always continue changing even when warping. (Logout clears those informations and stops the bot!) C_Sanii_Switchbot (1).rar
  7. Zdecydowanie za dobry dla was jestem ? NIE POMAGAM Z SYSTEMEM NA PW, PROSZĘ PISAĆ POD TEMATEM. DL: (link) HP_GaugeBar affects V2.3.rar Skan: (link) [Hidden Content] changelog: v2.3 [25.04.2020] (uitaskbar.py) - removed one not necessary TAB - added missing condition - replaced wrong RecoveryGaugeBar.hide() with good one v2.2 [22.04.2020] - small animation fix after change target (ui.py) - disabled effects on metin stones (PythonCharacterManagerModule.cpp) @ Tatsumaru pozdrawiam
  8. Jak wyglada ten 'blad': A po naprawieniu: BINKA ~Wchodzimy do PythonSlotWindow.h // Szukamy: typedef TSlotList::iterator TSlotListIterator; // Pod dodajemy: typedef struct SStoreCoolDown { float fCoolTime; float fElapsedTime; bool bActive; }; // Szukamy: void SetSlotCoolTime(DWORD dwIndex, float fCoolTime, float fElapsedTime = 0.0f); // Pod dodajemy: void StoreSlotCoolTime(DWORD dwKey, DWORD dwSlotIndex, float fCoolTime, float fElapsedTime = .0f); void RestoreSlotCoolTime(DWORD dwKey); void TransferSlotCoolTime(DWORD dwIndex1, DWORD dwIndex2); // Szukamy: DWORD m_dwToolTipSlotNumber; // Pod dodajemy std::map<DWORD, std::map<DWORD, SStoreCoolDown>> m_CoolDownStore; ~Wchodzimy do PythonSlotWindow.cpp // Szukamy: void CSlotWindow::SetSlotCoolTime(DWORD dwIndex, float fCoolTime, float fElapsedTime) { ... } // Pod Dodajemy: void CSlotWindow::StoreSlotCoolTime(DWORD dwKey, DWORD dwSlotIndex, float fCoolTime, float fElapsedTime) { std::map<DWORD, SStoreCoolDown>::iterator it = m_CoolDownStore[dwKey].find(dwSlotIndex); if (it != m_CoolDownStore[dwKey].end()) { it->second.fCoolTime = fCoolTime; it->second.fElapsedTime = CTimer::Instance().GetCurrentSecond() - fElapsedTime; it->second.bActive = false; } else { SStoreCoolDown m_storeCoolDown; m_storeCoolDown.fCoolTime = fCoolTime; m_storeCoolDown.fElapsedTime = CTimer::Instance().GetCurrentSecond() - fElapsedTime; m_storeCoolDown.bActive = false; m_CoolDownStore[dwKey].insert(std::map<DWORD, SStoreCoolDown>::value_type(dwSlotIndex, m_storeCoolDown)); } } void CSlotWindow::RestoreSlotCoolTime(DWORD dwKey) { for (std::map<DWORD, SStoreCoolDown>::iterator it = m_CoolDownStore[dwKey].begin(); it != m_CoolDownStore[dwKey].end(); it++) { TSlot * pSlot; if (!GetSlotPointer(it->first, &pSlot)) return; pSlot->fCoolTime = it->second.fCoolTime; pSlot->fStartCoolTime = it->second.fElapsedTime; if (it->second.bActive) ActivateSlot(it->first); else DeactivateSlot(it->first); } } void CSlotWindow::TransferSlotCoolTime(DWORD dwIndex1, DWORD dwIndex2) { std::map<DWORD, SStoreCoolDown>::iterator it = m_CoolDownStore[CPythonSkill::SKILL_TYPE_ACTIVE].find(dwIndex1); if (it != m_CoolDownStore[CPythonSkill::SKILL_TYPE_ACTIVE].end()) { TSlot* pSlot1; if (!GetSlotPointer(dwIndex1, &pSlot1)) return; TSlot* pSlot2; if (!GetSlotPointer(dwIndex2, &pSlot2)) return; // Replacing the cooldown from slot 1 to slot 2 and removing the slot 1 from the map. SStoreCoolDown slotCooldown = it->second; m_CoolDownStore[CPythonSkill::SKILL_TYPE_ACTIVE][dwIndex2] = slotCooldown; m_CoolDownStore[CPythonSkill::SKILL_TYPE_ACTIVE].erase(dwIndex1); // Removing the cooldown from the slot 1. pSlot1->fCoolTime = 0; pSlot1->fStartCoolTime = 0; // Setting the cooldown from slot 1 to slot 2. pSlot2->fCoolTime = slotCooldown.fCoolTime; pSlot2->fStartCoolTime = slotCooldown.fElapsedTime; } } // Szukamy: __CreateSlotEnableEffect(); } // Pod Dodajemy: std::map<DWORD, SStoreCoolDown>::iterator it = m_CoolDownStore[1].find(dwIndex); if (it != m_CoolDownStore[1].end()) it->second.bActive = true; // Szukamy: void CSlotWindow::DeactivateSlot(DWORD dwIndex) { TSlot * pSlot; if (!GetSlotPointer(dwIndex, &pSlot)) return; pSlot->bActive = FALSE; // Pod Dodajemy: std::map<DWORD, SStoreCoolDown>::iterator it = m_CoolDownStore[1].find(dwIndex); if (it != m_CoolDownStore[1].end()) it->second.bActive = false; // Szukamy W void CSlotWindow::__Initialize(): m_dwToolTipSlotNumber = SLOT_NUMBER_NONE; // Pod dodajemy: m_CoolDownStore.clear(); ~Wchodzimy do PythonWindowManagerModule.cpp // Szukamy: PyObject * wndMgrSetSlotCoolTime(PyObject * poSelf, PyObject * poArgs) { ... } // Pod dodajemy: PyObject * wndMgrStoreSlotCoolTime(PyObject * poSelf, PyObject * poArgs) { UI::CWindow * pWin; if (!PyTuple_GetWindow(poArgs, 0, &pWin)) return Py_BuildException(); int iKey; if (!PyTuple_GetInteger(poArgs, 1, &iKey)) return Py_BuildException(); int iSlotIndex; if (!PyTuple_GetInteger(poArgs, 2, &iSlotIndex)) return Py_BuildException(); float fCoolTime; if (!PyTuple_GetFloat(poArgs, 3, &fCoolTime)) return Py_BuildException(); float fElapsedTime = 0.0f; PyTuple_GetFloat(poArgs, 4, &fElapsedTime); if (!pWin->IsType(UI::CSlotWindow::Type())) return Py_BuildException(); UI::CSlotWindow * pSlotWin = (UI::CSlotWindow *)pWin; pSlotWin->StoreSlotCoolTime(iKey, iSlotIndex, fCoolTime, fElapsedTime); return Py_BuildNone(); } PyObject * wndMgrRestoreSlotCoolTime(PyObject * poSelf, PyObject * poArgs) { UI::CWindow * pWin; if (!PyTuple_GetWindow(poArgs, 0, &pWin)) return Py_BuildException(); int iKey; if (!PyTuple_GetInteger(poArgs, 1, &iKey)) return Py_BuildException(); if (!pWin->IsType(UI::CSlotWindow::Type())) return Py_BuildException(); UI::CSlotWindow * pSlotWin = (UI::CSlotWindow *)pWin; pSlotWin->RestoreSlotCoolTime(iKey); return Py_BuildNone(); } PyObject* wndMgrTransferSlotCoolTime(PyObject* poSelf, PyObject* poArgs) { UI::CWindow* pWin; if (!PyTuple_GetWindow(poArgs, 0, &pWin)) return Py_BuildException(); int iIndex1; if (!PyTuple_GetInteger(poArgs, 1, &iIndex1)) return Py_BuildException(); int iIndex2; if (!PyTuple_GetInteger(poArgs, 2, &iIndex2)) return Py_BuildException(); if (!pWin->IsType(UI::CSlotWindow::Type())) return Py_BuildException(); UI::CSlotWindow* pSlotWin = (UI::CSlotWindow*)pWin; pSlotWin->TransferSlotCoolTime(iIndex1, iIndex2); return Py_BuildNone(); } // Szukamy: { "SetSlotCoolTime", wndMgrSetSlotCoolTime, METH_VARARGS }, // Pod dodajemy: { "StoreSlotCoolTime", wndMgrStoreSlotCoolTime, METH_VARARGS }, { "RestoreSlotCoolTime", wndMgrRestoreSlotCoolTime, METH_VARARGS }, { "TransferSlotCoolTime", wndMgrTransferSlotCoolTime, METH_VARARGS }, CLIENT ~Wchodzimy do root/ui.py ## Szukamy: def SetSlotCoolTime(self, slotIndex, coolTime, elapsedTime = 0.0): wndMgr.SetSlotCoolTime(self.hWnd, slotIndex, coolTime, elapsedTime) ## Nie Znalazłeś? ## Szukamy: def SetSlotCoolTime(self, slotIndex, coolTime, elapsedTime = 0.0): wndMgr.SetSlotCoolTime(self.hWnd, slotIndex, coolTime, elapsedTime) ## Pod dodajemy: def StoreSlotCoolTime(self, key, slotIndex, coolTime, elapsedTime = 0.0): wndMgr.StoreSlotCoolTime(self.hWnd, key, slotIndex, coolTime, elapsedTime) def RestoreSlotCoolTime(self, key): wndMgr.RestoreSlotCoolTime(self.hWnd, key) def TransferSlotCoolTime(self, slotIndex1, slotIndex2): wndMgr.TransferSlotCoolTime(self.hWnd, slotIndex1, slotIndex2) ~Wchodzimy do root/uicharacter.py ## Szukamy: skillPage.RefreshSlot() ## Pod dodajemy: self.__RestoreSlotCoolTime(skillPage) ## Szukamy: def RefreshSkill(self): if self.isLoaded==0: return ... ## Nad Dodajemy: def __RestoreSlotCoolTime(self, skillPage): restoreType = skill.SKILL_TYPE_NONE if self.PAGE_HORSE == self.curSelectedSkillGroup: restoreType = skill.SKILL_TYPE_HORSE else: restoreType = skill.SKILL_TYPE_ACTIVE skillPage.RestoreSlotCoolTime(restoreType) ## Szukamy: slotWindow.SetSlotCoolTime(slotIndex, coolTime) ## Zmieniamy na: slotWindow.StoreSlotCoolTime(skillType, slotIndex, coolTime) self.__RestoreSlotCoolTime(slotWindow) ## Szukamy: elif skill.SKILL_TYPE_ACTIVE == skillType: ## Całego elifa podmieniamy na: elif skill.SKILL_TYPE_ACTIVE == skillType: for j in xrange(skill.SKILL_GRADE_COUNT): realSlotIndex = self.__GetRealSkillSlot(j, slotIndex) skillPage.SetSkillSlotNew(realSlotIndex, skillIndex, j, skillLevel) skillPage.SetCoverButton(realSlotIndex) if (skillGrade == skill.SKILL_GRADE_COUNT) and j == (skill.SKILL_GRADE_COUNT-1): skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel) elif (not self.__CanUseSkillNow()) or (skillGrade != j): skillPage.SetSlotCount(realSlotIndex, 0) skillPage.DisableCoverButton(realSlotIndex) skillPage.DeactivateSlot(realSlotIndex) else: skillPage.SetSlotCountNew(realSlotIndex, skillGrade, skillLevel) if player.IsSkillActive(slotIndex) and (skillGrade == j or (skillGrade >= skill.SKILL_GRADE_COUNT) and j == (skill.SKILL_GRADE_COUNT - 1)): skillPage.ActivateSlot(realSlotIndex) if player.IsSkillCoolTime(slotIndex) and skillGrade != j: skillPage.TransferSlotCoolTime(realSlotIndex, self.__GetRealSkillSlot(skillGrade, i)) Credits: @Shang Mały fix odemnie na: 8cc03926b7dc04ceb3d8d0cc48ca39dc.mp4 ~Wchodzimy do root/uitaskbar.py ## Szukamy: slotNumber = i+startNumber ## Pod dodajemy: slot.DeactivateSlot(slotNumber) Credits: @Jxxkub
  9. Elo widziałem ostatnio że jakiś Polak się tym podniecał a że polskie społeczeństwo Metin2 jest zacofane i żyje w średniowieczu to wrzucam wam tutaj za darmo Kekw Podgląd Systemu: hyhy.mp4 Download: [Hidden Content] Virustotal: [Hidden Content]
  10. Poprawiłem co się dało, testowane - działa. 1. Otwórz client/UserInterface/Locale_inc.h i dodaj w nim: #define ENABLE_CUBE_RENEWAL 2. Otwórz client/UserInterface/packet.h i znajdź w nim: HEADER_CG_KEY_AGREEMENT = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_ HEADER_CG_TIME_SYNC = 0xfc, HEADER_CG_CLIENT_VERSION = 0xfd, HEADER_CG_CLIENT_VERSION2 = 0xf1, HEADER_CG_PONG = 0xfe, HEADER_CG_HANDSHAKE = 0xff, Dodaj nad: #ifdef ENABLE_CUBE_RENEWAL HEADER_CG_CUBE_RENEWAL = 215, #endif Znajdź: HEADER_GC_KEY_AGREEMENT_COMPLETED = 0xfa, // _IMPROVED_PACKET_ENCRYPTION_ HEADER_GC_KEY_AGREEMENT = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_ HEADER_GC_HANDSHAKE_OK = 0xfc, // 252 HEADER_GC_PHASE = 0xfd, // 253 HEADER_GC_BINDUDP = 0xfe, // 254 HEADER_GC_HANDSHAKE = 0xff, // 255 Dodaj nad: #ifdef ENABLE_CUBE_RENEWAL HEADER_GC_CUBE_RENEWAL = 217, #endif Znajdź: #pragma pack(pop) Dodaj nad: #ifdef ENABLE_CUBE_RENEWAL enum { CUBE_RENEWAL_SUB_HEADER_OPEN_RECEIVE, CUBE_RENEWAL_SUB_HEADER_CLEAR_DATES_RECEIVE, CUBE_RENEWAL_SUB_HEADER_DATES_RECEIVE, CUBE_RENEWAL_SUB_HEADER_DATES_LOADING, CUBE_RENEWAL_SUB_HEADER_MAKE_ITEM, CUBE_RENEWAL_SUB_HEADER_CLOSE, }; typedef struct packet_send_cube_renewal { BYTE header; BYTE subheader; DWORD index_item; DWORD count_item; DWORD index_item_improve; } TPacketCGCubeRenewalSend; typedef struct dates_cube_renewal { DWORD npc_vnum; DWORD index; DWORD vnum_reward; int count_reward; bool item_reward_stackable; DWORD vnum_material_1; int count_material_1; DWORD vnum_material_2; int count_material_2; DWORD vnum_material_3; int count_material_3; DWORD vnum_material_4; int count_material_4; DWORD vnum_material_5; int count_material_5; int gold; int percent; char category[100]; } TInfoDateCubeRenewal; typedef struct packet_receive_cube_renewal { packet_receive_cube_renewal(): header(HEADER_GC_CUBE_RENEWAL) {} BYTE header; BYTE subheader; TInfoDateCubeRenewal date_cube_renewal; } TPacketGCCubeRenewalReceive; #endif 3. Otwórz client/UserInterface/PythonApplication.h i znajdź w nim: #include "PythonExchange.h" #include "PythonChat.h" Dodaj pod: #ifdef ENABLE_CUBE_RENEWAL #include "PythonCubeRenewal.h" #endif Znajdź: CGraphicDevice m_grpDevice; CNetworkDevice m_netDevice; CPythonSystem m_pySystem; Dodaj pod: #ifdef ENABLE_CUBE_RENEWAL CPythonCubeRenewal m_pyCubeRenewal; #endif 4. Otwórz client/UserInterface/PythonApplicationModule.cpp i znajdź w nim: #ifdef ENABLE_COSTUME_SYSTEM PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM", 1); #else PyModule_AddIntConstant(poModule, "ENABLE_COSTUME_SYSTEM", 0); #endif Dodaj nad: #ifdef ENABLE_CUBE_RENEWAL PyModule_AddIntConstant(poModule, "ENABLE_CUBE_RENEWAL", 1); #else PyModule_AddIntConstant(poModule, "ENABLE_CUBE_RENEWAL", 0); #endif 5. Otwórz client/UserInterface/PythonNetworkStream.cpp i znajdź w nim: Set(HEADER_GC_DRAGON_SOUL_REFINE, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCDragonSoulRefine), STATIC_SIZE_PACKET)); Dodaj pod: #ifdef ENABLE_CUBE_RENEWAL Set(HEADER_GC_CUBE_RENEWAL, CNetworkPacketHeaderMap::TPacketType(sizeof(TPacketGCCubeRenewalReceive), STATIC_SIZE_PACKET)); #endif 6. Otwórz client/UserInterface/PythonNetworkStream.h i znajdź w nim: // ETC DWORD GetMainActorVID(); DWORD GetMainActorRace(); DWORD GetMainActorEmpire(); DWORD GetMainActorSkillGroup(); void SetEmpireID(DWORD dwEmpireID); DWORD GetEmpireID(); void __TEST_SetSkillGroupFake(int iIndex); Dodaj nad: #ifdef ENABLE_CUBE_RENEWAL bool CubeRenewalMakeItem(int index_item, int count_item, int index_item_improve); bool CubeRenewalClose(); bool RecvCubeRenewalPacket(); #endif 7. Otwórz client/UserInterface/PythonNetworkStreamPhaseGame.cpp i znajdź w nim: #include "PythonTextTail.h" #include "PythonItem.h" #include "PythonChat.h" Dodaj pod: #ifdef ENABLE_CUBE_RENEWAL #include "PythonCubeRenewal.h" #endif Znajdź: case HEADER_GC_DRAGON_SOUL_REFINE: ret = RecvDragonSoulRefine(); break; Dodaj pod: #ifdef ENABLE_CUBE_RENEWAL case HEADER_GC_CUBE_RENEWAL: ret = RecvCubeRenewalPacket(); break; #endif Znajdź: bool CPythonNetworkStream::SendDragonSoulRefinePacket(BYTE bRefineType, TItemPos* pos) { TPacketCGDragonSoulRefine pk; pk.header = HEADER_CG_DRAGON_SOUL_REFINE; pk.bSubType = bRefineType; memcpy (pk.ItemGrid, pos, sizeof (TItemPos) * DS_REFINE_WINDOW_MAX_NUM); if (!Send(sizeof (pk), &pk)) { return false; } return true; } Dodaj pod: #ifdef ENABLE_CUBE_RENEWAL bool CPythonNetworkStream::CubeRenewalMakeItem(int index_item, int count_item, int index_item_improve) { if (!__CanActMainInstance()) return true; TPacketCGCubeRenewalSend packet; packet.header = HEADER_CG_CUBE_RENEWAL; packet.subheader = CUBE_RENEWAL_SUB_HEADER_MAKE_ITEM; packet.index_item = index_item; packet.count_item = count_item; packet.index_item_improve = index_item_improve; if (!Send(sizeof(TPacketCGCubeRenewalSend), &packet)) { Tracef("CPythonNetworkStream::CubeRenewalMakeItem Error\n"); return false; } return SendSequence(); } bool CPythonNetworkStream::CubeRenewalClose() { if (!__CanActMainInstance()) return true; TPacketCGCubeRenewalSend packet; packet.header = HEADER_CG_CUBE_RENEWAL; packet.subheader = CUBE_RENEWAL_SUB_HEADER_CLOSE; if (!Send(sizeof(TPacketCGCubeRenewalSend), &packet)) { Tracef("CPythonNetworkStream::CubeRenewalClose Error\n"); return false; } return SendSequence(); } bool CPythonNetworkStream::RecvCubeRenewalPacket() { TPacketGCCubeRenewalReceive CubeRenewalPacket; if (!Recv(sizeof(CubeRenewalPacket), &CubeRenewalPacket)) return false; switch (CubeRenewalPacket.subheader) { case CUBE_RENEWAL_SUB_HEADER_OPEN_RECEIVE: { PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_CUBE_RENEWAL_OPEN", Py_BuildValue("()")); } break; case CUBE_RENEWAL_SUB_HEADER_DATES_RECEIVE: { CPythonCubeRenewal::Instance().ReceiveList(CubeRenewalPacket.date_cube_renewal); } break; case CUBE_RENEWAL_SUB_HEADER_DATES_LOADING: { CPythonCubeRenewal::Instance().LoadingList(); } break; case CUBE_RENEWAL_SUB_HEADER_CLEAR_DATES_RECEIVE: { CPythonCubeRenewal::Instance().ClearList(); } break; } return true; } #endif 8. Otwórz client/UserInterface/StdAfx.h i znajdź w nim: void initsafebox(); void initguild(); void initMessenger(); Dodaj pod: #ifdef ENABLE_CUBE_RENEWAL void intcuberenewal(); #endif 9. Otwórz client/UserInterface/UserInterface.cpp i znajdź w nim: initsafebox(); initguild(); initServerStateChecker(); Dodaj pod: #ifdef ENABLE_CUBE_RENEWAL intcuberenewal(); #endif 10. Dodaj do UserInterface i projektu: PythonCubeRenewal.cpp PythonCubeRenewal.h 11. Otwórz game/service.h i dodaj w nim: #define ENABLE_CUBE_RENEWAL 12. Otwórz game/char.h i znajdź w nim: #include "cube.h" Dodaj pod: #include "cube_renewal.h" 13. Otwórz game/cmd_general.cpp i znajdź w nim: ACMD(do_cube) Zamień całość na: ACMD(do_cube) { const char *line; char arg1[256], arg2[256], arg3[256]; line = two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2)); one_argument(line, arg3, sizeof(arg3)); if (0 == arg1[0]) { return; } switch (LOWER(arg1[0])) { case 'o': // open Cube_open(ch); break; default: return; } } 14. Otwórz game/input.h i znajdź w nim: void Refine(LPCHARACTER ch, const char* c_pData); Dodaj nad: #ifdef ENABLE_CUBE_RENEWAL void CubeRenewalSend(LPCHARACTER ch, const char* data); #endif 15. Otwórz game/input_main.cpp i znajdź w nim: case HEADER_CG_DRAGON_SOUL_REFINE: { TPacketCGDragonSoulRefine* p = reinterpret_cast <TPacketCGDragonSoulRefine*>((void*)c_pData); switch(p->bSubType) { case DS_SUB_HEADER_CLOSE: ch->DragonSoul_RefineWindow_Close(); break; case DS_SUB_HEADER_DO_REFINE_GRADE: { DSManager::instance().DoRefineGrade(ch, p->ItemGrid); } break; case DS_SUB_HEADER_DO_REFINE_STEP: { DSManager::instance().DoRefineStep(ch, p->ItemGrid); } break; case DS_SUB_HEADER_DO_REFINE_STRENGTH: { DSManager::instance().DoRefineStrength(ch, p->ItemGrid); } break; } } break; Dodaj pod: #ifdef ENABLE_CUBE_RENEWAL case HEADER_CG_CUBE_RENEWAL: CubeRenewalSend(ch, c_pData); break; #endif Na końcu pliku dodaj: #ifdef ENABLE_CUBE_RENEWAL void CInputMain::CubeRenewalSend(LPCHARACTER ch, const char* data) { struct packet_send_cube_renewal * pinfo = (struct packet_send_cube_renewal *) data; switch (pinfo->subheader) { case CUBE_RENEWAL_SUB_HEADER_MAKE_ITEM: { int index_item = pinfo->index_item; int count_item = pinfo->count_item; int index_item_improve = pinfo->index_item_improve; Cube_Make(ch,index_item,count_item,index_item_improve); } break; case CUBE_RENEWAL_SUB_HEADER_CLOSE: { Cube_close(ch); } break; } } #endif 16. Otwórz game/item_manager.cpp i znajdź w nim: #include "cube.h" Dodaj pod: #include "cube_renewal.h" 17. Otwórz game/packet.h i znajdź w nim: HEADER_CG_CLIENT_VERSION = 0xfd, HEADER_CG_CLIENT_VERSION2 = 0xf1, /********************************************************/ HEADER_GC_KEY_AGREEMENT_COMPLETED = 0xfa, // _IMPROVED_PACKET_ENCRYPTION_ HEADER_GC_KEY_AGREEMENT = 0xfb, // _IMPROVED_PACKET_ENCRYPTION_ HEADER_GC_TIME_SYNC = 0xfc, HEADER_GC_PHASE = 0xfd, HEADER_GC_BINDUDP = 0xfe, HEADER_GC_HANDSHAKE = 0xff, Dodaj nad: #ifdef ENABLE_CUBE_RENEWAL HEADER_CG_CUBE_RENEWAL = 215, #endif Znajdź: HEADER_GC_DRAGON_SOUL_REFINE = 209, HEADER_GC_RESPOND_CHANNELSTATUS = 210, Dodaj pod: #ifdef ENABLE_CUBE_RENEWAL HEADER_GC_CUBE_RENEWAL = 217, #endif Znajdź: #pragma pack() #endif Dodaj nad: #ifdef ENABLE_CUBE_RENEWAL enum { CUBE_RENEWAL_SUB_HEADER_OPEN_RECEIVE, CUBE_RENEWAL_SUB_HEADER_CLEAR_DATES_RECEIVE, CUBE_RENEWAL_SUB_HEADER_DATES_RECEIVE, CUBE_RENEWAL_SUB_HEADER_DATES_LOADING, CUBE_RENEWAL_SUB_HEADER_MAKE_ITEM, CUBE_RENEWAL_SUB_HEADER_CLOSE, }; typedef struct packet_send_cube_renewal { BYTE header; BYTE subheader; DWORD index_item; DWORD count_item; DWORD index_item_improve; } TPacketCGCubeRenewalSend; typedef struct dates_cube_renewal { DWORD npc_vnum; DWORD index; DWORD vnum_reward; int count_reward; bool item_reward_stackable; DWORD vnum_material_1; int count_material_1; DWORD vnum_material_2; int count_material_2; DWORD vnum_material_3; int count_material_3; DWORD vnum_material_4; int count_material_4; DWORD vnum_material_5; int count_material_5; int gold; int percent; char category[100]; } TInfoDateCubeRenewal; typedef struct packet_receive_cube_renewal { packet_receive_cube_renewal(): header(HEADER_GC_CUBE_RENEWAL) {} BYTE header; BYTE subheader; TInfoDateCubeRenewal date_cube_renewal; } TPacketGCCubeRenewalReceive; #endif 18. Otwórz game/packet_info.cpp i znajdź w nim: Set(HEADER_CG_STATE_CHECKER, sizeof(BYTE), "ServerStateCheck", false); Dodaj pod: #ifdef ENABLE_CUBE_RENEWAL Set(HEADER_CG_CUBE_RENEWAL, sizeof(TPacketCGCubeRenewalSend), "CubeRenewalSend", true); #endif 19. Dopisz do game/Makefile: cube_renewal.cpp 20. Dodaj do swojego cube.cpp/cube.h #ifndef ENABLE_CUBE_RENEWAL na początku i #endif na końcu. 21. Dodaj do game: cube_renewal.cpp cube_renewal.h 22. Otwórz root/game.py i znajdź w nim: def BINARY_DragonSoulGiveQuilification(self): self.interface.DragonSoulGiveQuilification() Dodaj nad: if app.ENABLE_CUBE_RENEWAL: def BINARY_CUBE_RENEWAL_OPEN(self): if self.interface: self.interface.BINARY_CUBE_RENEWAL_OPEN() 23. Otwórz root/interfaceModule.py i znajdź w nim: self.wndDragonSoulRefine = None self.wndChat = None Dodaj pod: if app.ENABLE_CUBE_RENEWAL: self.wndCubeRenewal = None Znajdź: def __MakeCubeResultWindow(self): self.wndCubeResult = uiCube.CubeResultWindow() self.wndCubeResult.LoadWindow() self.wndCubeResult.Hide() Dodaj pod: if app.ENABLE_CUBE_RENEWAL: def __MakeCubeRenewal(self): import uicuberenewal self.wndCubeRenewal = uicuberenewal.CubeRenewalWindows() self.wndCubeRenewal.Hide() Znajdź: self.__MakeCubeWindow() self.__MakeCubeResultWindow() Dodaj pod: if app.ENABLE_CUBE_RENEWAL: self.__MakeCubeRenewal() Znajdź: # ACCESSORY_REFINE_ADD_METIN_STONE if self.wndItemSelect: self.wndItemSelect.Destroy() # END_OF_ACCESSORY_REFINE_ADD_METIN_STONE Dodaj pod: if app.ENABLE_CUBE_RENEWAL: if self.wndCubeRenewal: self.wndCubeRenewal.Destroy() self.wndCubeRenewal.Close() Znajdź: del self.wndUICurtain del self.wndChat Dodaj pod: if app.ENABLE_CUBE_RENEWAL: del self.wndCubeRenewal Znajdź: def SucceedCubeWork(self, itemVnum, count): self.wndCube.Clear() print "큐브 제작 성공! [%d:%d]" % (itemVnum, count) if 0: # 결과 메시지 출력은 생략 한다 self.wndCubeResult.SetPosition(*self.wndCube.GetGlobalPosition()) self.wndCubeResult.SetCubeResultItem(itemVnum, count) self.wndCubeResult.Open() self.wndCubeResult.SetTop() Dodaj pod: if app.ENABLE_CUBE_RENEWAL: def BINARY_CUBE_RENEWAL_OPEN(self): self.wndCubeRenewal.Show() 24. Dodaj do root: uicuberenewal.py 25. Dodaj do uiscript: cuberenewalwindow.py 26. Tłumaczenie locale_interface.txt: CUBE_RENEWAL_TITLE Okienko uszlachetniania CUBE_RENEWAL_BELT_IMPROVE Podwyższ Szansę
  11. Official_Aura_System.rar
  12. Tak jak w temacie runy.mp4 Również działa z tym globalnym! system run.rar
  13. Siemanko. Wrzucam wam kolejny, głupi ale cieszący oko dodatek. Dodaje to w skrócie wyświetlanie nazwy mapy na której aktualnie się znajdujemy, obok nazwy serwera. Wszystko zrozumiecie na poniższym screenie. Mam nadzieję, że komuś się przyda. Oto jaki efekt uzyskamy: 1. Otwieramy Userinterface/Locale_inc.h i dodajemy: #define ENABLE_MAP_NAME_ON_APP_TITLE 2. Teraz przechodzimy do pliku UserInterface/PythonApplicationModule.cpp i pod funkcją: PyObject* appLoop(PyObject* poSelf, PyObject* poArgs) 3. Dodajemy: #if defined(ENABLE_MAP_NAME_ON_APP_TITLE) PyObject* appSetText(PyObject* poSelf, PyObject* poArgs) { char* szName; if (!PyTuple_GetString(poArgs, 0, &szName)) return Py_BuildException(); CPythonApplication& rkApp = CPythonApplication::Instance(); rkApp.SetText(szName); return Py_BuildNone(); } #endif Szukamy: { "Loop", appLoop, METH_VARARGS }, Dodajemy: #if defined(ENABLE_MAP_NAME_ON_APP_TITLE) { "SetText", appSetText, METH_VARARGS }, #endif Gdzieś pod: PyModule_AddIntConstant(poModule, "CAMERA_STOP", CPythonApplication::CAMERA_STOP); Dodajemy: #if defined(ENABLE_MAP_NAME_ON_APP_TITLE) PyModule_AddIntConstant(poModule, "ENABLE_MAP_NAME_ON_APP_TITLE", 1); #else PyModule_AddIntConstant(poModule, "ENABLE_MAP_NAME_ON_APP_TITLE", 0); #endif Następnie otwieramy plik UserInterface/PythonNetworkStream.cpp i szukamy w funkcji bool CPythonNetworkStream::RecvPhasePacket() tego: case PHASE_GAME: SetGamePhase(); break; Zamieniamy na to: case PHASE_GAME: SetGamePhase(); #if defined(ENABLE_MAP_NAME_ON_APP_TITLE) PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetApplicationText", Py_BuildValue("()")); #endif break; Przechodzimy do klienta gry, plik game.py w root i pod tą funkcją: def StartGame(self): self.RefreshInventory() self.RefreshEquipment() self.RefreshCharacter() self.RefreshSkill() To: if app.ENABLE_MAP_NAME_ON_APP_TITLE: def SetApplicationText(self): mapName = background.GetCurrentMapName() if mapName in localeInfo.MINIMAP_ZONE_NAME_DICT: app.SetText(localeInfo.APP_TITLE + " - " + localeInfo.MINIMAP_ZONE_NAME_DICT[mapName]) DODATKOWA INFORMACJA: Gotowe!
  14. Siemanko. Krótki i jakże prosty FIX, nikomu raczej nie trzeba opisywać na czym polega błąd. Jeśli było to można usunąć. 1. Przechodzimy do game/char_skill.cpp, funkcja: int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel): Pod: CSkillProto* pkSk = CSkillManager::instance().Get(dwVnum); if (!pkSk) return BATTLE_NONE; 2. Dodajemy: #ifdef __SKILL_MUYEONG_DAMAGE_WHILE_RIDING__ if (bCanUseHorseSkill && pkSk->dwType != SKILL_TYPE_HORSE && pkSk->dwVnum != SKILL_MUYEONG) #else if (bCanUseHorseSkill && pkSk->dwType != SKILL_TYPE_HORSE) #endif 3. Otwieramy plik common/service.h i dodajemy: #define __SKILL_MUYEONG_DAMAGE_WHILE_RIDING__ Gotowe!
  15. char_item.cpp i szukamy for (int i = 0; i < prt->material_count; ++i) RemoveSpecifyItem(prt->materials[i].vnum, prt->materials[i].count); int prob = number(1, 100); int success_prob = prt->prob Zamieniamy na : for (int i = 0; i < prt->material_count; ++i) RemoveSpecifyItem(prt->materials[i].vnum, prt->materials[i].count); int prob = number(1, 100); int success_prob = (prt->prob + GetSkillLevel(133)); Szukamy : p.prob = prt->prob; if (bType == REFINE_TYPE_MONEY_ONLY) { p.material_count = 0; memset(p.materials, 0, sizeof(p.materials)); Zamieniamy na : p.prob = (prt->prob + GetSkillLevel(133)); if (bType == REFINE_TYPE_MONEY_ONLY) { p.material_count = 0; memset(p.materials, 0, sizeof(p.materials)); Dodajemy sobie jako szkolenie przez ksiązki wzorując się na tutoriale od paszki id skila to 133 [Hidden Content] Lub robimy przykładowy quest u kowala quest kowal_nauka_kowalstwa begin state start begin when login begin for del_cegi = 1, 9 do pc.remove_item(100100+(del_cegi-1), pc.countitem(100100+(del_cegi-1))) end end when 20016.chat."Nauka Kowalstwa" begin snn() say() if pc.get_skill_level(133) >= 10 then say("Posiadasz już maksymalny poziom!") elseif pc.getqf("kowalstwo_time") > get_time() then say("Nie minęło jeszcze 6 godzin") say("od poprzedniego Twojego szkolenia.") elseif pc.countitem(71025) < 3 then say("Nie posiadasz przy sobie wymaganych przedmiotów.") say("Aby przeprowadzić z Tobą szkolenie") say("potrzebuję 3x Kamień Kowala") say_item_vnum2(71025, "Wymagane Przedmioty") else local kTable = { ['count'] = {3, 3, 2, 2, 3, 3, 2, 2, 1, 2}, ['item1'] = {100100, 100101, 100102, 100103, 100104, 100105, 100106, 100107, 100108, 100108}, ['item2'] = {100101, 100102, 100103, 100104, 100105, 100106, 100107, 100108, 100109, 100109}, } say("Za chwile otrzymasz ode mnie specjalne przedmioty,") say("które będziesz musiał ulepszyć u mnie.") say("Aby wyszkolić swoją umiejętność na Poziom wyżej,") say("musisz pomyślnie ulepszyć je na wyższy poziom.") say("W przypadku, gdy ulepszanie jakiegokolwiek z nich") say("się nie uda, misja zostanie zakończona niepowodzeniem.") say() say_reward("Twoim zadaniem na tym będzie ulepszenie "..kTable['count'][pc.get_skill_level(133)+1].." przedmiotów z +"..pc.get_skill_level(133).." na +"..(pc.get_skill_level(133)+1)..".") local s = select("Zaczynajmy!", "Wrócę później...") if s == 1 then if pc.countitem(71025) < 3 then snn() say() say("Nie posiadasz przy sobie wymaganych przedmiotów.") say("Aby przeprowadzić z Tobą szkolenie") say("potrzebuję 3x Kamień Kowala") say_item_vnum2(71025, "Wymagane Przedmioty") else pc.remove_item(71025, 3) pc.delqf("kowalstwo_items_count") pc.setqf("kowalstwo_items_count_up", kTable['count'][pc.get_skill_level(133)+1]) pc.setqf("kowalstwo_to_upgrade", kTable['item1'][pc.get_skill_level(133)+1]) pc.setqf("kowalstwo_time", get_time()+60*60*6) for del = 0, 9 do pc.remove_item(100100+del, pc.countitem(100100+del)) end for i = 1, kTable['count'][pc.get_skill_level(133)+1] do pc.give_item2(kTable['item1'][pc.get_skill_level(133)+1], 1) end end end end end end end
  16. [Hidden Content] [Hidden Content]
  17. Wraz z przebudową naszej pobieralni, niektóre wstawki przechodzą do działu. Advanced Control Protection [New Version 10.0 - 26/06/2020] Damage Hack; Hack Damage; Fix WallHack Fix SpeedHack Block File .mix, .asi, .m3d, .py, .dll. Change Key Extraction Change Obfuscation Method Python module load block Change root name Block multithread, process, watcher and scanner Change Index name Change Extensions Fix .dll injection; Fix .py injection; Fix Universal Decrypter Folder integrity check Create thread control RMP / WMP Security [KGO]Advanced Control Protection V.10.7z
  18. Kolejny System kupiony dawno temu od Shanga testowane na moich udostępnionych pliczkach Download: [Hidden Content] Skan: Spolszczenie uiitemshop.py [Hidden Content] Spolszczenie itemshopwindow.py [Hidden Content] spolszczenie itemshop_discountcategorybox [Hidden Content] spolszczenie itemshop_discountitembox [Hidden Content] Spolszczenie ITEMSHOP_CONFIG [Hidden Content] To chyba wszystko jak coś przeoczyłem to pisac
  19. Cześć, zapłaciłem pieniążki oszustowi Ikarusowi. Wysłałem autorowi obejście, tłumacząc by sobie zabezpieczył to zamiast mi podziękować mnie zbanował xD Straciłem support, możliwe że te sklepy mają kopiowanie itemów. SKLEPY OFFLINE.rar Obejście licencji #include "stdafx.h" #include "Offlineshop2.h" bool Offlineshop_InitializeLibrary(const char * szUser, const char* szPassword) { return true; }; void Offlineshop_CleanUpLibrary() { return; }; bool TestLibrary() { return true; }; size_t Offlineshop_GetMapCount() { return 1; }; //1 void Offlineshop_GetNewPos(size_t index, size_t ent_count, long* x, long* y) { //todo *x = rand() % (83100 - 76400) + 76400; *y = rand() % (328400 - 320200) + 320200; // 76400 320200 // 83100 328400 //*x = 78800; //*y = 323900; }; // 0 0 -26472 -26468 void Offlineshop_GetMapIndex(size_t index, int* map_index) { *map_index = 2; }; // 0 2 bool Offlineshop_CheckPositionDistance(long x1, long y1, long x2, long y2) { //todo return true; }; // 80029 324042 79408 323601 Na 99% czegoś brakuje, dajcie mi znać to na bieżąco będę Wam wyciągał. Publikuje te sklepy tylko i wyłącznie dlatego że zostałem oszukany, w innym przypadku nie publikuje innych prac. Doceniam kogoś pracę.
  20. Łapcie cały tutorial dot. Multilanga Podgląd: Download: [Hidden Content] Virustotal: [Hidden Content]
  21. Nie testowane. LWT - Buffi System.rar [Hidden Content]
  22. Tym razem tak bez żadnej okazji. Loteria.7z metin2zone.pl
  23. Elo polaki łapcie system Download: [Hidden Content] Skan: [Hidden Content]
×
×
  • Create New...