Jump to content
M2Tec Community

Leaderboard


Popular Content

Showing content with the highest reputation since 07/23/19 in all areas

  1. 37 points
    Hallöchen, Da ich Heute die 2k Likes erreicht habe, will ich mich für den guten Support bedanken. Armor-Shining Wings Download Passwort
  2. 37 points
    Hi From time to time, some of the makers of the hacker Lalaker1 developed a publication on Facebook explaining the solution to the problem of the black screen after playing for a long time in servers Matin2 Look at this picture and you will understand everything [Hidden Content] I wanted to share with you the solution Search for this sheet UserInterface\PythonCharacterManager.cpp Open and search for if (pkInstEach->IsForceVisible()) { dwForceVisibleInstCount++; continue; } Replace with /*if (pkInstEach->IsForceVisible()) { dwForceVisibleInstCount++; continue; }*/ Best regards I apologize for the bad English language
  3. 30 points
    Hi, Here i publish my edit of the public Render Target System. I hate it, when people earn money with public systems. [Hidden Content] Original Thread [Hidden Content] [Hidden Content] have a look at my comments at UiToolTip.py Bug-Fix: UiToolTip-Fix.txt
  4. 20 points
    Heyho hiermit Release ich nochmal das Target Render viel spaß damit. Download: [Hidden Content]: [Hidden Content] Bild: [Hidden Content]
  5. 20 points
    Hey da ich neben Skype auch hier in der SB gesehen habe das es gesucht wird Release ich es hier mal! Hatte das mal aus einem Rumänem Forum runter geladen Credits gehen daher an die weis bloß den Namen nicht mehr!
  6. 19 points
    Link: [Hidden Content]
  7. 18 points
    [Hidden Content] [Hidden Content]
  8. 17 points
    // #uitooltip.py #Search: elif item.LIMIT_TIMER_BASED_ON_WEAR == limitType: self.AppendTimerBasedOnWearLastTime(metinSlot) #dbg.TraceError("1) REAL_TIME flag On ") self.ShowToolTip() def __DragonSoulInfoString (self, dwVnum): #edit like: elif item.LIMIT_TIMER_BASED_ON_WEAR == limitType: self.AppendTimerBasedOnWearLastTime(metinSlot) #dbg.TraceError("1) REAL_TIME flag On ") self.ShowToolTip() if chr.IsGameMaster(player.GetMainCharacterIndex()): self.AppendTextLine(localeInfo.ITEM_VNUM_TOOLTIP % (int(itemVnum)), self.ITEM_VNUM_COLOR) def __DragonSoulInfoString (self, dwVnum): // # Search NEED_SKILL_POINT_COLOR = 0xff9A9CDB #add after ITEM_VNUM_COLOR = 0xffFFFF00 #add in locale_game.txt ITEM_VNUM_TOOLTIP item_vnum: [%d]
  9. 17 points
    Hi to the community, I just share a module named "CFG" that will serve you for a lot of things, including backup or generation of .cfg file. It can also be used for a lot of things. Suppose you have added an option to switch between day and night, with the module "cfg", you will then be able to save the environment (day / night) in use by a cfg file. Download: I had already done the tutorial before, here is the link: HERE
  10. 17 points
    SKILL COLOR SYSTEM: SHAMAN SYSTEM:
  11. 17 points
    Description: [Hidden Content] Download: [Hidden Content] Pickup.cpp
  12. 16 points
    Hi guys ! I want to share the new set of weapons from Metin2 (I don't know the name in english maybe Dark Dragon Set ?) whose i changed their gloss. The folder has : Icons Textures Models Before : After : Download link : HERE Xayah,
  13. 14 points
    Dies hier ist das Schulterband-System das wunderbar Funktioniert.! Es ist definiert mit ENABLE_SASH_SYSTEM nicht mit ENABLE_ACCE_SYSTEM und es war überall nicht mehr verfügbar deswegen der reupload hier - [Hidden Content] bitte mit 7zip entpacken da .lzma archiv have fun - Kein Passwort vorhanden !
  14. 13 points
    SYSTEM ADAPTED COSTUME ARMOR, ARMOR, WEAPON, HAIR PETS AND MOUNT in CRenderTarget.h search void RenderModel() const; after: void SetArmor(DWORD vnum); void ChangeHair(DWORD vnum); void ChangeWeapon(DWORD vnum); void ChangeSetSash(DWORD vnum); in CRenderTarget.cpp search void CRenderTarget::SetVisibility(bool isShow) { m_visible = isShow; } after void CRenderTarget::SetArmor(DWORD vnum) { if (!m_visible || !m_pModel) return; m_pModel->SetArmor(1); m_pModel->ChangeArmor(vnum); m_pModel->SetHair(0); m_pModel->GetGraphicThingInstancePtr()->ClearAttachingEffect(); m_modelRotation = 0.0f; m_pModel->Refresh(CRaceMotionData::NAME_WAIT, true); m_pModel->SetLoopMotion(CRaceMotionData::NAME_WAIT); m_pModel->SetAlwaysRender(true); m_pModel->SetRotation(0.0f); auto& camera_manager = CCameraManager::instance(); camera_manager.SetCurrentCamera(CCameraManager::SHOPDECO_CAMERA); camera_manager.GetCurrentCamera()->SetTargetHeight(110.0); camera_manager.ResetToPreviousCamera(); } void CRenderTarget::ChangeHair(DWORD vnum) { if (!m_visible || !m_pModel) return; m_pModel->SetArmor(1); m_pModel->SetHair(vnum); m_pModel->GetGraphicThingInstancePtr()->ClearAttachingEffect(); m_modelRotation = 0.0f; m_pModel->Refresh(CRaceMotionData::NAME_WAIT, true); m_pModel->SetLoopMotion(CRaceMotionData::NAME_WAIT); m_pModel->SetAlwaysRender(true); m_pModel->SetRotation(0.0f); auto& camera_manager = CCameraManager::instance(); camera_manager.SetCurrentCamera(CCameraManager::SHOPDECO_CAMERA); camera_manager.GetCurrentCamera()->SetTargetHeight(110.0); camera_manager.ResetToPreviousCamera(); } void CRenderTarget::ChangeWeapon(DWORD vnum) { if (!m_visible || !m_pModel) return; m_pModel->SetArmor(1); m_pModel->SetWeapon(vnum); m_pModel->GetGraphicThingInstancePtr()->ClearAttachingEffect(); m_modelRotation = 0.0f; m_pModel->Refresh(CRaceMotionData::NAME_WAIT, true); m_pModel->SetLoopMotion(CRaceMotionData::NAME_WAIT); m_pModel->SetAlwaysRender(true); m_pModel->SetRotation(0.0f); auto& camera_manager = CCameraManager::instance(); camera_manager.SetCurrentCamera(CCameraManager::SHOPDECO_CAMERA); camera_manager.GetCurrentCamera()->SetTargetHeight(110.0); camera_manager.ResetToPreviousCamera(); } void CRenderTarget::ChangeSetSash(DWORD vnum) { if (!m_visible || !m_pModel) return; m_pModel->SetArmor(1); m_pModel->SetSash(vnum); m_pModel->GetGraphicThingInstancePtr()->ClearAttachingEffect(); m_modelRotation = 0.0f; m_pModel->Refresh(CRaceMotionData::NAME_WAIT, true); m_pModel->SetLoopMotion(CRaceMotionData::NAME_WAIT); m_pModel->SetAlwaysRender(true); m_pModel->SetRotation(0.0f); auto& camera_manager = CCameraManager::instance(); camera_manager.SetCurrentCamera(CCameraManager::SHOPDECO_CAMERA); camera_manager.GetCurrentCamera()->SetTargetHeight(110.0); camera_manager.ResetToPreviousCamera(); } search void CRenderTarget::SelectModel(const DWORD index) reemplace void CRenderTarget::SelectModel(const DWORD index) { // if (index == 0) // { //delete m_pModel; // m_pModel.reset(); // return; // } CInstanceBase::SCreateData kCreateData{}; kCreateData.m_bType = CActorInstance::TYPE_PC; // Dynamic Type kCreateData.m_dwRace = index; auto model = std::make_unique<CInstanceBase>(); if (!model->Create(kCreateData)) { if (m_pModel) { m_pModel.reset(); } return; } m_pModel = std::move(model); m_pModel->NEW_SetPixelPosition(TPixelPosition(0,0,0)); m_pModel->GetGraphicThingInstancePtr()->ClearAttachingEffect(); m_modelRotation = 0.0f; m_pModel->Refresh(CRaceMotionData::NAME_WAIT, true); m_pModel->SetLoopMotion(CRaceMotionData::NAME_WAIT); m_pModel->SetAlwaysRender(true); m_pModel->SetRotation(0.0f); auto& camera_manager = CCameraManager::instance(); camera_manager.SetCurrentCamera(CCameraManager::SHOPDECO_CAMERA); camera_manager.GetCurrentCamera()->SetTargetHeight(110.0); camera_manager.ResetToPreviousCamera(); } search in CPythonRenderTargetModule.cpp PyObject* renderTargetSelectModel(PyObject* poSelf, PyObject* poArgs) { BYTE index = 0; if (!PyTuple_GetByte(poArgs, 0, &index)) return Py_BadArgument(); int modelIndex = 0; if (!PyTuple_GetInteger(poArgs, 1, &modelIndex)) return Py_BadArgument(); CRenderTargetManager::Instance().GetRenderTarget(index)->SelectModel(modelIndex); return Py_BuildNone(); } after PyObject* renderTargetSetArmor(PyObject* poSelf, PyObject* poArgs) { BYTE index = 0; if (!PyTuple_GetByte(poArgs, 0, &index)) return Py_BadArgument(); int modelIndex = 0; if (!PyTuple_GetInteger(poArgs, 1, &modelIndex)) return Py_BadArgument(); CRenderTargetManager::Instance().GetRenderTarget(index)->SetArmor(modelIndex); return Py_BuildNone(); } PyObject* renderTargetSetWeapon(PyObject* poSelf, PyObject* poArgs) { BYTE index = 0; if (!PyTuple_GetByte(poArgs, 0, &index)) return Py_BadArgument(); int modelIndex = 0; if (!PyTuple_GetInteger(poArgs, 1, &modelIndex)) return Py_BadArgument(); CRenderTargetManager::Instance().GetRenderTarget(index)->ChangeWeapon(modelIndex); return Py_BuildNone(); } PyObject* renderTargetSetHair(PyObject* poSelf, PyObject* poArgs) { BYTE index = 0; if (!PyTuple_GetByte(poArgs, 0, &index)) return Py_BadArgument(); int modelIndex = 0; if (!PyTuple_GetInteger(poArgs, 1, &modelIndex)) return Py_BadArgument(); CRenderTargetManager::Instance().GetRenderTarget(index)->ChangeHair(modelIndex); return Py_BuildNone(); } PyObject* renderTargetSetSash(PyObject* poSelf, PyObject* poArgs) { BYTE index = 0; if (!PyTuple_GetByte(poArgs, 0, &index)) return Py_BadArgument(); int modelIndex = 0; if (!PyTuple_GetInteger(poArgs, 1, &modelIndex)) return Py_BadArgument(); CRenderTargetManager::Instance().GetRenderTarget(index)->ChangeSetSash(modelIndex); return Py_BuildNone(); } search { "SetBackground", renderTargetSetBackground, METH_VARARGS }, after { "SetArmor", renderTargetSetArmor, METH_VARARGS }, { "SetHair", renderTargetSetHair, METH_VARARGS }, { "SetWeapon", renderTargetSetWeapon, METH_VARARGS }, { "SetSash", renderTargetSetSash, METH_VARARGS }, now uitoolip.py search class ItemToolTip(ToolTip): after add ModelPreviewBoardPets = None ModelPreviewPets = None ModelPreviewTextPets = None ModelPreviewEquipoBoardEquipo = None ModelPreviewEquipo = None ModelPreviewEquipoTextEquipo = None search def AddItemData(self, itemVnum, metinSlot ....... add if itemVnum >= 53001 and itemVnum <= 53251: pets = { 53001 : 34001, 53002 : 34002, 53003 : 34003, 53005 : 34004, 53006 : 34009, 53007 : 34010, 53008 : 34011, 53009 : 34012, 53010 : 34008, 53011 : 34007, 53012 : 34005, 53013 : 34006, 53014 : 34013, 53015 : 34014, 53016 : 34015, 53017 : 34016, 53018 : 34020, 53019 : 34019, 53020 : 34017, 53021 : 34018, 53022 : 34021, 53023 : 34022, 53024 : 34023, 53025 : 34024, 53026 : 34001, 53218 : 34023, 53219 : 34023, 53220 : 34024, 53221 : 34024, 53222 : 34026, 53223 : 34027, 53224 : 34028, 53225 : 34029, 53226 : 34030, 53227 : 34031, 53228 : 34033, 53229 : 34032, 53230 : 34034, 53231 : 34035, 53232 : 34039, 53233 : 34055, 53234 : 34056, 53235 : 34057, 53236 : 34058, 53237 : 34059, 53238 : 34058, 53239 : 34059, 53240 : 34063, 53241 : 34062, 53242 : 34066, 53244 : 34067, 53245 : 34068, 53246 : 34069, 53247 : 34070, 53248 : 34071, 53249 : 34072, 53250 : 34084, 53251 : 34085, 53027 : 34106, 53028 : 34107, 53029 : 34084, 53030 : 34030, 53031 : 34031, 53032 : 34034, 53033 : 34035, 53034 : 34039, 53035 : 34056, 53036 : 34066, 53037 : 34069, 53038 : 34096, 53039 : 34085, 53040 : 34099, 53041 : 34103, 53042 : 34104, } self.__ModelPreview(pets[itemVnum]) elif itemType == item.ITEM_TYPE_COSTUME and itemSubType == item.COSTUME_TYPE_MOUNT: MountVnum = item.GetValue(1) if MountVnum != 0: self.__ModelPreview(MountVnum) self.__ModelPreviewEquipoCloseEquipo() else: self.__ModelPreviewClose() self.__ModelPreviewEquipoCloseEquipo() elif itemType == item.ITEM_TYPE_ARMOR and itemSubType == item.ARMOR_BODY or itemType == item.ITEM_TYPE_COSTUME and itemSubType == item.COSTUME_TYPE_BODY: self.__ModelPreviewEquipo(itemVnum, 2, self.__ItemGetRace()) self.__ModelPreviewClose() elif itemType == item.ITEM_TYPE_COSTUME and itemSubType == item.COSTUME_TYPE_HAIR: HairVnum = item.GetValue(3) if HairVnum != 0: self.__ModelPreviewEquipo(HairVnum, 1, self.__ItemGetRace()) self.__ModelPreviewClose() else: self.__ModelPreviewClose() self.__ModelPreviewEquipoCloseEquipo() elif itemType == item.ITEM_TYPE_WEAPON: self.__ModelPreviewEquipo(itemVnum, 3, self.__ItemGetRace()) self.__ModelPreviewClose() else: self.__ModelPreviewClose() self.__ModelPreviewEquipoCloseEquipo() search def __AdjustMaxWidth(self, attrSlot, desc): add after def __ModelPreview(self, Vnum): RENDER_TARGET_INDEX = 2 self.ModelPreviewBoardPets = ui.ThinBoard() self.ModelPreviewBoardPets.SetParent(self) self.ModelPreviewBoardPets.SetSize(190+10, 210+30) self.ModelPreviewBoardPets.SetPosition(-202, 0) self.ModelPreviewBoardPets.Show() self.ModelPreviewPets = ui.RenderTarget() self.ModelPreviewPets.SetParent(self.ModelPreviewBoardPets) self.ModelPreviewPets.SetSize(190, 210) self.ModelPreviewPets.SetPosition(5, 22) self.ModelPreviewPets.SetRenderTarget(RENDER_TARGET_INDEX) self.ModelPreviewPets.Show() self.ModelPreviewTextPets = ui.TextLine() self.ModelPreviewTextPets.SetParent(self.ModelPreviewBoardPets) self.ModelPreviewTextPets.SetFontName(self.defFontName) self.ModelPreviewTextPets.SetPackedFontColor(grp.GenerateColor(0.8824, 0.9804, 0.8824, 1.0)) self.ModelPreviewTextPets.SetPosition(0, 5) self.ModelPreviewTextPets.SetText("Visualizador") self.ModelPreviewTextPets.SetOutline() self.ModelPreviewTextPets.SetFeather(False) self.ModelPreviewTextPets.SetWindowHorizontalAlignCenter() self.ModelPreviewTextPets.SetHorizontalAlignCenter() self.ModelPreviewTextPets.Show() renderTarget.SetBackground(RENDER_TARGET_INDEX, "d:/ymir work/ui/game/myshop_deco/model_view_bg.sub") renderTarget.SetVisibility(RENDER_TARGET_INDEX, True) renderTarget.SelectModel(RENDER_TARGET_INDEX, Vnum) def __ModelPreviewClose(self): RENDER_TARGET_INDEX = 2 if self.ModelPreviewBoardPets: self.ModelPreviewBoardPets.Hide() self.ModelPreviewPets.Hide() self.ModelPreviewTextPets.Hide() self.ModelPreviewBoardPets = None self.ModelPreviewPets = None self.ModelPreviewTextPets = None renderTarget.SetVisibility(RENDER_TARGET_INDEX, False) def __ModelPreviewEquipo(self, Vnum, test, model): RENDER_TARGET_INDEX = 1 self.ModelPreviewEquipoBoardEquipo = ui.ThinBoard() self.ModelPreviewEquipoBoardEquipo.SetParent(self) self.ModelPreviewEquipoBoardEquipo.SetSize(190+10, 210+30) self.ModelPreviewEquipoBoardEquipo.SetPosition(-202, 0) self.ModelPreviewEquipoBoardEquipo.Show() self.ModelPreviewEquipo = ui.RenderTarget() self.ModelPreviewEquipo.SetParent(self.ModelPreviewEquipoBoardEquipo) self.ModelPreviewEquipo.SetSize(190, 210) self.ModelPreviewEquipo.SetPosition(5, 22) self.ModelPreviewEquipo.SetRenderTarget(RENDER_TARGET_INDEX) self.ModelPreviewEquipo.Show() self.ModelPreviewEquipoTextEquipo = ui.TextLine() self.ModelPreviewEquipoTextEquipo.SetParent(self.ModelPreviewEquipoBoardEquipo) self.ModelPreviewEquipoTextEquipo.SetFontName(self.defFontName) self.ModelPreviewEquipoTextEquipo.SetPackedFontColor(grp.GenerateColor(0.8824, 0.9804, 0.8824, 1.0)) self.ModelPreviewEquipoTextEquipo.SetPosition(0, 5) self.ModelPreviewEquipoTextEquipo.SetText("Visualizador") self.ModelPreviewEquipoTextEquipo.SetOutline() self.ModelPreviewEquipoTextEquipo.SetFeather(False) self.ModelPreviewEquipoTextEquipo.SetWindowHorizontalAlignCenter() self.ModelPreviewEquipoTextEquipo.SetHorizontalAlignCenter() self.ModelPreviewEquipoTextEquipo.Show() renderTarget.SetBackground(RENDER_TARGET_INDEX, "d:/ymir work/ui/game/myshop_deco/model_view_bg.sub") renderTarget.SetVisibility(RENDER_TARGET_INDEX, True) renderTarget.SelectModel(RENDER_TARGET_INDEX, model) if test == 2: renderTarget.SetArmor(RENDER_TARGET_INDEX, Vnum) elif test == 3: renderTarget.SetWeapon(RENDER_TARGET_INDEX, Vnum) elif test == 4: renderTarget.SetSash(RENDER_TARGET_INDEX, Vnum) else: renderTarget.SetHair(RENDER_TARGET_INDEX, Vnum) def __ModelPreviewEquipoCloseEquipo(self): RENDER_TARGET_INDEX = 1 if self.ModelPreviewEquipoBoardEquipo: self.ModelPreviewEquipoBoardEquipo.Hide() self.ModelPreviewEquipo.Hide() self.ModelPreviewEquipoTextEquipo.Hide() self.ModelPreviewEquipoBoardEquipo = None self.ModelPreviewEquipo = None self.ModelPreviewEquipoTextEquipo = None renderTarget.SetVisibility(RENDER_TARGET_INDEX, False) def __ItemGetRace(self): race = 0 if item.IsAntiFlag(item.ITEM_ANTIFLAG_ASSASSIN) and item.IsAntiFlag(item.ITEM_ANTIFLAG_SURA) and item.IsAntiFlag(item.ITEM_ANTIFLAG_SHAMAN) and item.IsAntiFlag(item.ITEM_ANTIFLAG_WOLFMAN): race = 9 elif item.IsAntiFlag(item.ITEM_ANTIFLAG_WARRIOR) and item.IsAntiFlag(item.ITEM_ANTIFLAG_SURA) and item.IsAntiFlag(item.ITEM_ANTIFLAG_SHAMAN) and item.IsAntiFlag(item.ITEM_ANTIFLAG_WOLFMAN): race = 1 elif item.IsAntiFlag(item.ITEM_ANTIFLAG_WARRIOR) and item.IsAntiFlag(item.ITEM_ANTIFLAG_ASSASSIN) and item.IsAntiFlag(item.ITEM_ANTIFLAG_SHAMAN) and item.IsAntiFlag(item.ITEM_ANTIFLAG_WOLFMAN): race = 2 elif item.IsAntiFlag(item.ITEM_ANTIFLAG_WARRIOR) and item.IsAntiFlag(item.ITEM_ANTIFLAG_ASSASSIN) and item.IsAntiFlag(item.ITEM_ANTIFLAG_SURA) and item.IsAntiFlag(item.ITEM_ANTIFLAG_WOLFMAN): race = 3 sex = chr.RaceToSex(player.GetRace()) MALE = 1 FEMALE = 0 if item.IsAntiFlag(item.ITEM_ANTIFLAG_MALE) and sex == MALE: race = player.GetRace() + 4 if item.IsAntiFlag(item.ITEM_ANTIFLAG_FEMALE) and sex == FEMALE: race = player.GetRace() if race == 0: race = player.GetRace() if race == 9: race = 0 return race search def __del__(self): ToolTip.__del__(self) after def CanViewRendering(self): race = player.GetRace() job = chr.RaceToJob(race) if not self.ANTI_FLAG_DICT.has_key(job): return False if item.IsAntiFlag(self.ANTI_FLAG_DICT[job]): return False sex = chr.RaceToSex(race) MALE = 1 FEMALE = 0 if item.IsAntiFlag(item.ITEM_ANTIFLAG_MALE) and sex == MALE: return False if item.IsAntiFlag(item.ITEM_ANTIFLAG_FEMALE) and sex == FEMALE: return False return True def CanViewRenderingSex(self): race = player.GetRace() sex = chr.RaceToSex(race) MALE = 1 FEMALE = 0 if item.IsAntiFlag(item.ITEM_ANTIFLAG_MALE) and sex == MALE: return False if item.IsAntiFlag(item.ITEM_ANTIFLAG_FEMALE) and sex == FEMALE: return False return True
  15. 12 points
    Hello i will share someone eng quests ! Quests
  16. 12 points
    Männliche Alpha Channels (AZRAEL) habe keine Screens mehr dazu auf meinen Rechner. Creator:Alphachannel .Ace ALPHACOSTUME-AZRAEL
  17. 12 points
    Hello everyone This is the flag system for chat,name,whisper etc.. Download Link [Hidden Content] Cheers
  18. 11 points
    hello. recently a friend asked me to decrypt the international server foxfs"ed" files to get some of their personalized costumes. here i'm going to share them with you. [Hidden Content] in the archives you will find full locale msm files pc pc2 and so on. icons are not included. enjoy. ^ dSSxq2
  19. 11 points
    Hello, I dont like official run animation for warrior m and w and i create new run animations i hope like you. Look İngame [Hidden Content] Download VirusTotal
  20. 11 points
    Hi New mount And Pet from the official update 19.4 [Hidden Content] Best regards
  21. 11 points
    Hi guys ! I want to share a set of weapons whose i changed their gloss. The folder has : Icons Textures Models Item list before : After : Download link : Here Xayah,
  22. 11 points
    Description: [Hidden Content] Download: [Hidden Content] Refine
  23. 11 points
    Link: [Hidden Content]
  24. 11 points
    // #uitooltip.py #Search: elif item.LIMIT_TIMER_BASED_ON_WEAR == limitType: self.AppendTimerBasedOnWearLastTime(metinSlot) #dbg.TraceError("1) REAL_TIME flag On ") self.ShowToolTip() def __DragonSoulInfoString (self, dwVnum): #edit like: elif item.LIMIT_TIMER_BASED_ON_WEAR == limitType: self.AppendTimerBasedOnWearLastTime(metinSlot) #dbg.TraceError("1) REAL_TIME flag On ") self.ShowToolTip() if chr.IsGameMaster(player.GetMainCharacterIndex()): self.AppendTextLine(localeInfo.ITEM_VNUM_TOOLTIP % (int(itemVnum)), self.ITEM_VNUM_COLOR) def __DragonSoulInfoString (self, dwVnum): // # Search NEED_SKILL_POINT_COLOR = 0xff9A9CDB #add after ITEM_VNUM_COLOR = 0xffFFFF00 #add in locale_game.txt ITEM_VNUM_TOOLTIP item_vnum: [%d]
  25. 10 points
    heyho sollte jeder kennen, [Hidden Content] Bild: [Hidden Content]
  26. 10 points
    hiermit Release ich das TargetRender um sich die Pets im Siegel anzeigen zu lassen. BTW ihr müsst die Funktion etwas ändern damit es klappt. Download: [Hidden Content] VT: [Hidden Content] Video: [Hidden Content]
  27. 10 points
    Hello i wanna share this item (not mine) Tutorial in file Link: Effect icon
  28. 9 points
    Description: Download: [Hidden Content] Change Channel
  29. 9 points
    Hallöchen, Heute zeige ich euch wie ihr das System "Icon on item +0-+9" verbaut. System RLS: [Hidden Content] ################################# eterPythonLib/PythonSlotWindow.h ################################# suchen: CGraphicImageInstance * pInstance; darunter: CGraphicImageInstance * pInstanceLevel; ============================================================================= suchen: void Destroy(); darunter: void SetSlotLevelImage(DWORD dwIndex, CGraphicImage * levelImage); ################################# eterPythonLib/PythonSlotWindow.cpp ################################# suchen: Slot.pFinishCoolTimeEffect = NULL; darunter: Slot.pInstanceLevel = NULL; ============================================================================= suchen: void CSlotWindow::SetSlotCount(DWORD dwIndex, DWORD dwCount) darunter: void CSlotWindow::SetSlotLevelImage(DWORD dwIndex, CGraphicImage * levelImage) { TSlot * pSlot; if (!GetSlotPointer(dwIndex, &pSlot) || !levelImage) return; assert(NULL == pSlot->pInstanceLevel); pSlot->pInstanceLevel = CGraphicImageInstance::New(); pSlot->pInstanceLevel->SetDiffuseColor(1.0, 1.0, 1.0, 1.0); pSlot->pInstanceLevel->SetImagePointer(levelImage); } ============================================================================= suchen: pSlot->dwCenterSlotNumber = 0xffffffff; darunter: if (pSlot->pInstanceLevel) { CGraphicImageInstance::Delete(pSlot->pInstanceLevel); pSlot->pInstanceLevel = NULL; } ============================================================================= suchen: if (rSlot.bActive) darüber: if (rSlot.pInstanceLevel) { rSlot.pInstanceLevel->SetPosition(m_rect.left + rSlot.ixPosition, (m_rect.top + rSlot.iyPosition + rSlot.byyPlacedItemSize*ITEM_HEIGHT) - 32); rSlot.pInstanceLevel->Render(); } ###################################### eterPythonLib/PythonWindowManagerModule.cpp ###################################### suchen: void initwndMgr() darüber: PyObject * wndMgrSetSlotImage(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(); char * szImagePath; if (!PyTuple_GetString(poArgs, 2, &szImagePath)) return Py_BuildException(); if (!pWin->IsType(UI::CSlotWindow::Type())) return Py_BuildException(); UI::CSlotWindow * pSlotWin = (UI::CSlotWindow *)pWin; CGraphicImage * pImage = (CGraphicImage *)CResourceManager::Instance().GetResourcePointer(szImagePath); if (!pImage) return Py_BuildException(); pSlotWin->SetSlotLevelImage(iSlotIndex, pImage); return Py_BuildNone(); } ============================================================================= suchen: { "ShowOverInWindowName", wndMgrShowOverInWindowName, METH_VARARGS }, darunter: { "SetSlotLevelImage", wndMgrSetSlotImage, METH_VARARGS }, ################ root/ui.py ################ suchen: wndMgr.SetSlotCount(self.hWnd, renderingSlotNumber, ItemCount) darunter: itemName=item.GetItemName().strip() itemNameP=item.GetItemName().rfind('+') if itemNameP>0 and len(itemName)>itemNameP+1: level=itemName[itemNameP+1:] if level.isdigit(): wndMgr.SetSlotLevelImage(self.hWnd, renderingSlotNumber, ("icon/level/%d.tga"%int(level))) Der Ordner "level" muss in Pfad ("icon/") gelegt werden. Gruß, ĸαlιвor
  30. 8 points
    [Hidden Content] Nicht getestet kann ich nichts sagen
  31. 8 points
    Quest part: function GetPartyMapIndex() return party.getf("map_index"); end -- function function IsPartyInDungeon() return d.find(quest.GetPartyMapIndex()); end -- function function GetPartyDungeonFloor() return d.getf_from_map_index("dungeon_floor", quest.GetPartyMapIndex()); end -- function function IsSamePartyLeaderDungeon() return d.getf_from_map_index("party_leader_pid", quest.GetPartyMapIndex()) == party.get_leader_pid(); end -- function when NPC.chat."I want to go back into the dungeon" with party.is_party() and quest.IsPartyInDungeon() and quest.IsSamePartyLeaderDungeon() begin local dungeon_floor = quest.GetPartyDungeonFloor(); local spawn_coordinates = Dungeon.GetData()[dungeon_floor]; pc.warp(spawn_coordinates["x"] * 100, spawn_coordinates["y"] * 100, quest.GetPartyMapIndex()); --[[ my settings use coordinates based on floors and keys. Like this function GetData() local array = { [1] = {["x"] = 19850, ["y"] = 98254}, -- Floor 1 spawn coordinates. [2] = {["x"] = 19850, ["y"] = 98254}, -- Floor 2 spawn coordinates. ..etc. }; return array; end -- function ]] end -- when That's how I do in my quests. Please do not CopyPaste without knowing what you're doing because I do not offer any kind of support for this. Useful functions: function SetPartyMapIndex(index) party.setf("map_index", index); -- Call quest.SetPartyMapIndex(d.get_map_index()) upon entering the dungeon with the party leader. (Doing it once is enough). end -- function function IncreaseDungeonFloor() d.setf("dungeon_floor", d.getf("dungeon_floor")+1); -- Call it everytime the group gets to a new floor of the dungeon. end -- function function SetPartyLeaderPid() d.setf("party_leader_pid", party.get_leader_pid()); -- Call it upon entering the dungeon with the party leader. end -- function
  32. 8 points
    quest wartung begin state start begin when 40003.use with pc.is_gm() begin say_title("Wartungssystem") say("Was möchtest du tun?") say("") local s = select ("Wartungssystem Starten", "Wartungssystem beenden", "Abbrechen") if s == 1 then mysql_query("UPDATE account.account SET account.status = 'SHUTDOWN' WHERE status = 'OK' and account.login NOT IN (SELECT mAccount FROM common.gmlist);") command("shutdown") end if s == 2 then mysql_query("UPDATE account.account SET account.status = 'OK' WHERE status = 'SHUTDOWN' and account.login NOT IN (SELECT mAccount FROM common.gmlist);") end if s == 3 then return end end end end
  33. 8 points
  34. 8 points
    [Hidden Content] V2:
  35. 8 points
    Description: [Hidden Content] Download: [Hidden Content]
  36. 8 points
    New pet, mount and new aura system parts: [Hidden Content] [Hidden Content] Thanks to xP3NG3Rx
  37. 8 points
    Gaya System sollte auch jeder kennen. Download: [Hidden Content] VT: [Hidden Content] Bild: [Hidden Content]
  38. 8 points
    Hier in diesen Thread werden voll Funktionsfähige Systeme erscheinen in jeden Bereich Python, Quest, C++ [ ] - New Yang Chat [ ] - Shining System Tamashi [ ] - WISPER WARNUNG [ ] ________________________________________________________________________________________________ New Yang Chat WISPER WARNUNG ________________________________________________________________________________________________ ________________________________________________________________________________________________ ________________________________________________________________________________________________ ________________________________________________________________________________________________ Hier kommen Systeme rein wo ich Persönlich getestet habe!
  39. 8 points
    minIni.h /* minIni - Multi-Platform INI file parser, suitable for embedded systems * * Copyright (c) CompuPhase, 2008-2012 * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy * of the License at * * [Hidden Content] * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * * Version: $Id: minIni.h 44 2012-01-04 15:52:56Z thiadmer.riemersma@gmail.com $ */ #ifndef MININI_H #define MININI_H #include "minGlue.h"  #if (defined _UNICODE || defined __UNICODE__ || defined UNICODE) && !defined MININI_ANSI #include <tchar.h> #define mTCHAR TCHAR #else /* force TCHAR to be "char", but only for minIni */ #define mTCHAR char #endif #if !defined INI_BUFFERSIZE #define INI_BUFFERSIZE 512 #endif #if defined __cplusplus extern "C" { #endif int ini_getbool(const mTCHAR *Section, const mTCHAR *Key, int DefValue, const mTCHAR *Filename); long ini_getl(const mTCHAR *Section, const mTCHAR *Key, long DefValue, const mTCHAR *Filename); int ini_gets(const mTCHAR *Section, const mTCHAR *Key, const mTCHAR *DefValue, mTCHAR *Buffer, int BufferSize, const mTCHAR *Filename); int ini_getsection(int idx, mTCHAR *Buffer, int BufferSize, const mTCHAR *Filename); int ini_getkey(const mTCHAR *Section, int idx, mTCHAR *Buffer, int BufferSize, const mTCHAR *Filename); #if defined INI_REAL INI_REAL ini_getf(const mTCHAR *Section, const mTCHAR *Key, INI_REAL DefValue, const mTCHAR *Filename); #endif #if !defined INI_READONLY int ini_putl(const mTCHAR *Section, const mTCHAR *Key, long Value, const mTCHAR *Filename); int ini_puts(const mTCHAR *Section, const mTCHAR *Key, const mTCHAR *Value, const mTCHAR *Filename); #if defined INI_REAL int ini_putf(const mTCHAR *Section, const mTCHAR *Key, INI_REAL Value, const mTCHAR *Filename); #endif #endif /* INI_READONLY */ #if !defined INI_NOBROWSE typedef int (*INI_CALLBACK)(const mTCHAR *Section, const mTCHAR *Key, const mTCHAR *Value, const void *UserData); int ini_browse(INI_CALLBACK Callback, const void *UserData, const mTCHAR *Filename); #endif /* INI_NOBROWSE */ #if defined __cplusplus } #endif #if defined __cplusplus #if defined __WXWINDOWS__ #include "wxMinIni.h" #else #include <string> /* The C++ class in minIni.h was contributed by Steven Van Ingelgem. */ class minIni { public: minIni(const std::string& filename) : iniFilename(filename) { }  bool getbool(const std::string& Section, const std::string& Key, bool DefValue=false) const { return ini_getbool(Section.c_str(), Key.c_str(), int(DefValue), iniFilename.c_str()) != 0; } long getl(const std::string& Section, const std::string& Key, long DefValue=0) const { return ini_getl(Section.c_str(), Key.c_str(), DefValue, iniFilename.c_str()); } int geti(const std::string& Section, const std::string& Key, int DefValue=0) const { return static_cast<int>(this->getl(Section, Key, long(DefValue))); } std::string gets(const std::string& Section, const std::string& Key, const std::string& DefValue="") const { char buffer[INI_BUFFERSIZE]; ini_gets(Section.c_str(), Key.c_str(), DefValue.c_str(), buffer, INI_BUFFERSIZE, iniFilename.c_str()); return buffer; } std::string getsection(int idx) const { char buffer[INI_BUFFERSIZE]; ini_getsection(idx, buffer, INI_BUFFERSIZE, iniFilename.c_str()); return buffer; } std::string getkey(const std::string& Section, int idx) const { char buffer[INI_BUFFERSIZE]; ini_getkey(Section.c_str(), idx, buffer, INI_BUFFERSIZE, iniFilename.c_str()); return buffer; } #if defined INI_REAL INI_REAL getf(const std::string& Section, const std::string& Key, INI_REAL DefValue=0) const { return ini_getf(Section.c_str(), Key.c_str(), DefValue, iniFilename.c_str()); } #endif #if ! defined INI_READONLY bool put(const std::string& Section, const std::string& Key, long Value) const { return ini_putl(Section.c_str(), Key.c_str(), Value, iniFilename.c_str()) != 0; } bool put(const std::string& Section, const std::string& Key, int Value) const { return ini_putl(Section.c_str(), Key.c_str(), (long)Value, iniFilename.c_str()) != 0; } bool put(const std::string& Section, const std::string& Key, bool Value) const { return ini_putl(Section.c_str(), Key.c_str(), (long)Value, iniFilename.c_str()) != 0; } bool put(const std::string& Section, const std::string& Key, const std::string& Value) const { return ini_puts(Section.c_str(), Key.c_str(), Value.c_str(), iniFilename.c_str()) != 0; } bool put(const std::string& Section, const std::string& Key, const char* Value) const { return ini_puts(Section.c_str(), Key.c_str(), Value, iniFilename.c_str()) != 0; } #if defined INI_REAL bool put(const std::string& Section, const std::string& Key, INI_REAL Value) const { return ini_putf(Section.c_str(), Key.c_str(), Value, iniFilename.c_str()) != 0; } #endif bool del(const std::string& Section, const std::string& Key) const { return ini_puts(Section.c_str(), Key.c_str(), 0, iniFilename.c_str()) != 0; } bool del(const std::string& Section) const { return ini_puts(Section.c_str(), 0, 0, iniFilename.c_str()) != 0; } #endif private: std::string iniFilename; }; #endif /* __WXWINDOWS__ */ #endif /* __cplusplus */ #endif /* MININI_H */
  40. 8 points
    Link: [Hidden Content]
  41. 7 points
  42. 7 points
    Hi guys ! I want to share 2 set of weapons whose i changed their gloss. The folder has : Textures Models Set 1 : Before : After : DOWNLOAD : HERE Set 2 : Before : After : DOWNLOAD : HERE Xayah,
  43. 7 points
    Patch v19.3.9 Contains: Thanks to xP3NG3Rx Download
  44. 7 points
  45. 7 points
    quest ingamebann2 begin state start begin when 30220.use with pc.is_gm() begin say("Was möchtest du tun?") local s = select('Bannen','Entbannen',"Nichts") if s == 3 then return end local ban,bantxt,bantxt2 = "BLOCK","bannen","gebannt" if s == 2 then ban,bantxt,bantxt2 = "OK","entbannen","entbannt" end say(col.blue('Spieler '..bantxt)); say('[ENTER]Gib den Spielernamen ein.[ENTER](ein Teil reicht auch)') local inp = input(); inp = mysql_escape(inp) if inp == "" or inp == pc.get_name() then say(col.red('Ungültige Eingabe.[ENTER]Abbruch!')) return end local q = mysql_query('select * from player.player WHERE name LIKE \\"%'..inp..'%\\" AND name NOT like \\"%[%\\"') if q == "ERROR" then say(col.red('Fehler beim Lesen der Daten oder es existiert niemand mit diesem Namen.')) return end say('Wähle den User, der '..bantxt2..' werden soll:') local wahl = q.name; table.insert(wahl,"-Abbruch-") table.insert(wahl,1,6) -- 6 ist die Anzahl der Maximalen User auf einer Seite. local auswahl = select2(wahl) if wahl[auswahl] == "-Abbruch-" then return end say('Den Spieler \\"'..q.name[auswahl]..'\\" wirklich '..bantxt..'?') if select("Ja","Nein") == 2 then return end mysql_query('UPDATE account.account SET status = \\"'..ban..'\\" WHERE id = '..q.account_id[auswahl]..' LIMIT 1') say('Der Spieler wurde gebannt.') end end end
  46. 7 points
    Hello, I come to share my knowledge on what I discovered recently on the encryption of packets. Some may tell me, but this has already been shared by MartySama. In reality, this one is not complete, it has forgotten a very important factor which I will present to you subsequently. But suddenly, you have to wonder what is happening if we disable the encryption of packets, by the way he shared it? Well, we may have an overload at the buffers, which may cause crashes game without error, or rather strange bugs. I could see different strange bugs. The most common was the fact that we can no longer perform an action that requires an agreement with the game. Example, after 15 minutes of play with a few connected players, some can no longer click on an item, or others will not be able to talk, etc ... There was a lot of debate about this, I took advice left and right and I pulled a problem. Why these bugs were not present before the encryption of packets? Simply because the structure was edited. Indeed, we can see that in the protocol.h Game, the function buffer_adjust_size was commented. Also, in the desc.cpp, they completely removed the condition in the function: void DESC::Packet But why ? Simply because it is no longer useful, the new system no longer requires a size adjuster for buffers (it seems to me) Or, they coded something else that automatically adjusts the size of the buffers but I have not watched yet. Why would I disable this system? Connection time LARGELY decreased (as we no longer use Cipher) Loading time also decreased Better fluidity (personal opinion) Size of the game enormously diminished as well as that of the launcher Here is a small preview video: Server side changes: A. Service.h file (Common) Look for this line: #define _IMPROVED_PACKET_ENCRYPTION_ And comment or delete the line like this: //#define _IMPROVED_PACKET_ENCRYPTION_ B. Protocol.h file (Game) Look for this line: //buffer_adjust_size(pbuf, length); Uncomment it like this: buffer_adjust_size(pbuf, length); C. desc.cpp file (Game) Look for this line: void DESC::Packet(const void * c_pvData, int iSize) Replace the entire function with this: void DESC::Packet(const void * c_pvData, int iSize) { assert(iSize > 0); if (m_iPhase == PHASE_CLOSE) // 끊는 상태면 보내지 않는다. return; if (m_stRelayName.length() != 0) { // Relay 패킷은 암호화하지 않는다. TPacketGGRelay p; p.bHeader = HEADER_GG_RELAY; strlcpy(p.szName, m_stRelayName.c_str(), sizeof(p.szName)); p.lSize = iSize; if (!packet_encode(m_lpOutputBuffer, &p, sizeof(p))) { m_iPhase = PHASE_CLOSE; return; } m_stRelayName.clear(); if (!packet_encode(m_lpOutputBuffer, c_pvData, iSize)) {  m_iPhase = PHASE_CLOSE; return; } } else { if (m_lpBufferedOutputBuffer) { buffer_write(m_lpBufferedOutputBuffer, c_pvData, iSize); c_pvData = buffer_read_peek(m_lpBufferedOutputBuffer); iSize = buffer_size(m_lpBufferedOutputBuffer); } // TRAFFIC_PROFILE if (g_bTrafficProfileOn) TrafficProfiler::instance().Report(TrafficProfiler::IODIR_OUTPUT, *(BYTE *) c_pvData, iSize); // END_OF_TRAFFIC_PROFILER #ifdef _IMPROVED_PACKET_ENCRYPTION_ void* buf = buffer_write_peek(m_lpOutputBuffer); if (packet_encode(m_lpOutputBuffer, c_pvData, iSize)) {  if (cipher_.activated()) { cipher_.Encrypt(buf, iSize); } } else { m_iPhase = PHASE_CLOSE; } #else if (!m_bEncrypted) { if (!packet_encode(m_lpOutputBuffer, c_pvData, iSize)) {  m_iPhase = PHASE_CLOSE; } } else { if (buffer_has_space(m_lpOutputBuffer) < iSize + 8) { buffer_adjust_size(m_lpOutputBuffer, iSize); if (buffer_has_space(m_lpOutputBuffer) < iSize + 8) { sys_err( "desc buffer mem_size overflow : ", " memsize(%u) ",  " write_pos(%u)", " iSize(%d)", m_lpOutputBuffer->mem_size, m_lpOutputBuffer->write_point_pos, iSize); m_iPhase = PHASE_CLOSE; } } else { // 암호화에 필요한 충분한 버퍼 크기를 확보한다. /* buffer_adjust_size(m_lpOutputBuffer, iSize + 8); */ DWORD * pdwWritePoint = (DWORD *) buffer_write_peek(m_lpOutputBuffer); if (packet_encode(m_lpOutputBuffer, c_pvData, iSize)) { int iSize2 = TEA_Encrypt(pdwWritePoint, pdwWritePoint, GetEncryptionKey(), iSize); if (iSize2 > iSize) buffer_write_proceed(m_lpOutputBuffer, iSize2 - iSize); } } } #endif // _IMPROVED_PACKET_ENCRYPTION_ SAFE_BUFFER_DELETE(m_lpBufferedOutputBuffer); } //sys_log(0, "%d bytes written (first byte %d)", iSize, *(BYTE *) c_pvData); if (m_iPhase != PHASE_CLOSE) fdwatch_add_fd(m_lpFdw, m_sock, this, FDW_WRITE, true); } Warning ! Do not forget to compile your Game & your DB Client side change: D. ServiceDefs file (Eterpack) Look for this line: #define _IMPROVED_PACKET_ENCRYPTION_ Comment or delete like this: //#define _IMPROVED_PACKET_ENCRYPTION_ E. Locale.cpp file (Userinterface) Look for this line: #define LSS_SECURITY_KEY "testtesttesttest" Edit like this: #define LSS_SECURITY_KEY "1234abcd5678efgh" If you want to share this tutorial elsewhere, please quote the source. Kuroro
  47. 7 points
    Hello everyone, I have found a dito system in a other board [Hidden Content] [Hidden Content]
  48. 7 points
    SHIRO2-HOMEPAGE-BOARD Habe ich nicht getestet hier der link für euch SHIROHP-BOARD
  49. 6 points
    Hello guys, I want to show you my next work. Its blue dragon mount. If you have any questions, you can contact me on skype: oncemoron, or FB: [Hidden Content] There is a preview from game. Price: 5 eur Best Regards meisterViper
  50. 6 points
    edit: [Hidden Content] Hi there, i was looking for some nice anti-bot capcha... i didn't find any, so i make one. Maybe it's not the best, but do his job. "Kick bots from the game." game source: cmd_general: find: edit like: battle.cpp find: edit like: quest:

Announcements

×
×
  • Create New...