Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

Kuroko

Membre
  • Compteur de contenus

    82
  • Inscription

  • Dernière visite

  • Jours gagnés

    57

Kuroko a gagné pour la dernière fois le 19 avril

Kuroko a eu le contenu le plus aimé !

3 abonnés

À propos de Kuroko

  • Date de naissance 01/12/2001

Visiteurs récents du profil

9524 visualisations du profil

Kuroko's Achievements

Community Regular

Community Regular (8/14)

  • Dedicated Rare
  • Reacting Well
  • First Post
  • Collaborator
  • Very Popular Rare

Recent Badges

1.6 k

Réputation sur la communauté

  1. Kuroko

    METIN2Project

    Yo, de retour après de longue années.. Je refais des files je ne vais pas donner beaucoup de détails ici sur les files sinon je vais jamais en finir, rejoignez le Discord [Hidden Content] pour plus d'informations. J'essaye de reproduire des files à l'Officiel sans trop ajouter des systèmes "cassés" ou "leak" sans trop sortir de l'original. Je suis sur le Projet depuis début de l'année 2023 après 1ans de pause je reprends le développement des files. Sur ce on se retrouve sur mon Discord pour plus d'explication & informations !
  2. Kuroko

    2.1.0.0 | M2KSF Project

    Salut, elle sont dans les sources du client.
  3. Kuroko

    KraizyReworked

    Bonjour, Bonsoir Je partage la version de TMP4 que j'ai retapé un peu j'ai simplement ranger le client ( le dossier pack) puis ajouter quelque petit système comme les 4Pages d'inventaire, l'interface de caractéristique de l'officiel avec le tooltips qui va avec. J'ai ensuite désactivé l'encryptage des paquets puis corriger quelque sysser lié à la SEQUENCE. Le page de quête comme l'officiel. Je tiens à préciser que la suite de cette version sortira plus tard avec les systèmes proposés sur certain forum. Voilà ce n'est pas grand-chose mais on ma demandé de partager c'est files comme ça pour une base bonne pour tout le monde. Previews : Official character windows with tooltips [Hidden Content] MouseWheel [Hidden Content] 4 Pages inventory [Hidden Content] Changelog : Liens de téléchargement
  4. Kuroko

    Kraizy 2014 - Reworked

    Bonjour, Bonsoir à tous est à toutes. Cela fait longtemps que j'ai étais viré de FE pour certaine raisons, pour mon retour je voulais re faire un projet avec les systèmes qui sont proposés dans les forums. Je tiens à préciser que les systèmes qui seront dans ses fichiers sont complètement gratuite aucun système payant sera ajouté. Enfin bon venant aux principales, je reprends le "développement" de metin2 petit à petit et j'aime bien partager ce que je fais donc pourquoi ne pas faire un deuxième "M2KSF" comme je les précisais plus haut, oublions les systèmes leak comme l'offline shop ou le niveau conqueror etc etc... Je n'ai pas d'image encore les fichiers sont tout neuf pour l'instant je me base sur la propreté des fichiers c'est-à-dire virés le XTrap, Hackshield, Auction.. les choses inutiles en bref. L'encryption des packet sera désactivé pour une meilleurs fluidité du serveur ( Je ne sais pas pour vous mais je vire tout le temps cette "protection" ) Voilà voilà c'était court mais je compte mettre à jour ce projet souvent je ne sais pas quand sortira la première version des files, je vais mettre en place un Discord pour ce projet comme j'avais fait auparavant cela avait bien marché pourquoi ne pas refaire pareil. Mon Discord pour le projet ( Cliquer ici ) Kuroko#9845
  5. Bonsoir All, Je partage une petite correction concernant les montures, quand vous êtes sur une monture est que vous mourrez dessus celui-ci ce duplique ce qui crée deux montures. Vous aurez besoin de vos sources serveur. Commençons. char_battle.cpp, Chercher : void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead) { Ajouter en dessous après le { : if (IsHorseRiding()) { StopRiding(); } if (GetMountVnum()) { RemoveAffect(AFFECT_MOUNT_BONUS); m_dwMountVnum = 0; UnEquipSpecialRideUniqueItem(); UpdatePacket(); } N'oubliez pas de recompiler vos sources serveur & de remplacer le nouveau game par l'ancien.
  6. Centre de Téléchargement Télécharger ( Interne ) Bonjour, Je vous partage aujourd'hui quelque choses de simple, c'est tout simplement importer les slots ring de l'inventaire à la fenêtre de costume. Aperçu : Commençons le tutoriel. Client root/uiinventory.py Chercher : def RefreshCostumeSlot(self): getItemVNum = player.GetItemIndex for i in xrange(item.COSTUME_SLOT_COUNT): slotNumber = item.COSTUME_SLOT_START + i self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0) Ajouter en dessous : for i in xrange(2): slotNumber = player.NEW_EQUIPMENT_SLOT_START + i self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0) uiscript/costumewindow.py Changer complètement votre costumewindow ( Faite attention ici au slot de vos item c'est possible que ce ne soit pas le même ) : import uiScriptLocale import item import app COSTUME_START_INDEX = item.COSTUME_SLOT_START window = { "name" : "CostumeWindow", "x" : SCREEN_WIDTH - 180 - 140, "y" : SCREEN_HEIGHT - 40 - 565, "style" : ("movable", "float",), "width" : 140, "height" : (180 + 47 + 32), "children" : ( { "name" : "board", "type" : "board", "style" : ("attach",), "x" : 0, "y" : 0, "width" : 140, "height" : (180 + 47 + 32), "children" : ( ## Title { "name" : "TitleBar", "type" : "titlebar", "style" : ("attach",), "x" : 6, "y" : 6, "width" : 126, "color" : "yellow", "children" : ( { "name":"TitleName", "type":"text", "x":60, "y":3, "text":uiScriptLocale.COSTUME_WINDOW_TITLE, "text_horizontal_align":"center" }, ), }, ## Equipment Slot { "name" : "Costume_Base", "type" : "image", "x" : 13, "y" : 38, "image" : uiScriptLocale.LOCALE_UISCRIPT_PATH + "costume/new_costume_bg_with_ring.jpg", "children" : ( { "name" : "CostumeSlot", "type" : "slot", "x" : 3, "y" : 3, "width" : 127, "height" : 188, "slot" : ( {"index":COSTUME_START_INDEX+0, "x":62, "y":45, "width":32, "height":64}, # Costume {"index":COSTUME_START_INDEX+1, "x":62, "y": 9, "width":32, "height":32}, # Hair {"index":COSTUME_START_INDEX+2, "x":5, "y":127, "width":32, "height":32}, # Mount {"index":COSTUME_START_INDEX+3, "x":70, "y":127, "width":32, "height":32}, # Acce {"index":COSTUME_START_INDEX+4, "x":13, "y":13, "width":32, "height":96}, # Weapon {"index":item.EQUIPMENT_RING1, "x":12, "y":167, "width":32, "height":32}, {"index":item.EQUIPMENT_RING2, "x":63, "y":167, "width":32, "height":32}, ), }, ), }, ), }, ), } Pour terminer, ouvrer votre item_proto.txt changer c'est item part le Type "ITEM_RING" comme ceci : 71136 Sucette de la force ITEM_RING 0 71136 Sucette de la force ITEM_RING 0 71143 Anneau de la joie ITEM_RING 0 71148 Anneau de Volonté ITEM_RING 0 71149 Anneau de Force mortelle ITEM_RING 0 71158 Médaille de héros ITEM_RING 0 71188 Sucette magique ITEM_RING 0 71199 Choco-amulette ITEM_RING 0 71202 Amulette de Nazar ITEM_RING 0 Je vous met pas toute la ligne ça ne sert à rien, changer simplement le type de votre item comme ça. Télécharger ensuite l'image .tga remplacer le par le votre. TÉLÉCHARGEMENT Succès ! Le tutoriel prend fin ici, n'hésitez pas à me contacter si vous avez une erreur. Enjoy.
  7. Centre de Téléchargement Télécharger ( Interne ) Bonjour, ce partage consiste à enlever la collision entre joueurs, pnj, pet, monture, magasin ainsi que pendant les OX event. Commençons le tutoriel. Source client UserInterface/Locale_inc.h Ajouter à l'intérieur : #define REMOVE_MOUNTS_COLLISION // Remove mounts collision #define REMOVE_PETS_COLLISION // Remove pets collision #define REMOVE_SHOPS_COLLISION // Remove shops collision #define REMOVE_SAFEZONE_COLLISION // Remove safezone collision #define REMOVE_OX_PLAYER_COLLISION // Remove ox player collision Source client GameLib/ActorInstanceCollisionDetection.cpp Ajouter tout en haut : #include "../UserInterface/PythonBackground.h" Checher : BOOL CActorInstance::TestActorCollision(CActorInstance & rVictim) Ajouter au dessus : BOOL CActorInstance::IsInSafeZone(CActorInstance& ptr) { const TPixelPosition& c_rkPPosCur = ptr.NEW_GetCurPixelPositionRef(); if (CPythonBackground::Instance().isAttrOn(c_rkPPosCur.x, c_rkPPosCur.y, (1 << 2))) return true; return false; } Checher : BOOL CActorInstance::TestActorCollision(CActorInstance & rVictim) { if (rVictim.IsDead()) return false; Ajouter en dessous : #ifdef REMOVE_SAFEZONE_COLLISION if (IsInSafeZone(rVictim)) return false; #endif #ifdef REMOVE_PETS_COLLISION if (rVictim.GetRace()>=34001 && rVictim.GetRace()<=34099) // Mob Vnum return false; #endif #ifdef REMOVE_SHOPS_COLLISION if (rVictim.GetRace()>=30000 && rVictim.GetRace()<=30001) // Mob Vnum return false; #endif #ifdef REMOVE_MOUNTS_COLLISION if (rVictim.GetRace()>=20101 && rVictim.GetRace()<=20299) // Mob Vnum return false; #endif #ifdef REMOVE_OX_PLAYER_COLLISION const char* strMapEventOx = "metin2_map_oxevent"; std::string stringName = CPythonBackground::Instance().GetWarpMapName(); if (strMapEventOx == stringName) { #ifdef ENABLE_WOLFMAN_CHARACTER if (0 <= rVictim.GetRace() && rVictim.GetRace() <= 8) #else if (0 <= rVictim.GetRace() && rVictim.GetRace() <= 7) #endif return false; } #endif Source client GameLib/ActorInstance.h Chercher : public: BOOL TestActorCollision(CActorInstance & rVictim ); BOOL TestPhysicsBlendingCollision(CActorInstance & rVictim); Ajouter en dessous : BOOL IsInSafeZone(CActorInstance& ptr); Succès ! Le tutoriel prend fin ici, n'oubliez pas de recompiler vos source client, Enjoy.
  8. Centre de Téléchargement Télécharger ( Interne ) Bonjour, c'est un petit partage mais qui rendra votre personnage plus brillant avec des costumes. Aperçu de la modification : [Hidden Content] Commençons le tutoriel. Source client UserInterface/Locale_inc.h Trouver ceci dans votre Locale_inc.h : ( Le define peut varier selon l'installation du système en question ) #define ENABLE_WEAPON_COSTUME_SYSTEM Ajouter en dessous de ce define : ( Vous n'êtes pas obliger de l'ajouter juste en dessous ) #ifdef ENABLE_WEAPON_COSTUME_SYSTEM #define USE_WEAPON_COSTUME_WITH_EFFECT // Weapon costume with effect +9 #endif #define USE_BODY_COSTUME_WITH_EFFECT // Body costume with effect Source client UserInterface/InstanceBase.cpp Chercher : case CItemData::ITEM_TYPE_COSTUME: if (pItem->GetSubType() == CItemData::COSTUME_WEAPON) { __ClearWeaponRefineEffect(); Changer complètement la fonction de "case CItemData::ITEM_TYPE_COSTUME:" jusqu'à la fermeture de la fonction comme ceci : case CItemData::ITEM_TYPE_COSTUME: #ifdef ENABLE_WEAPON_COSTUME_SYSTEM if (pItem->GetSubType() == CItemData::COSTUME_WEAPON) { __ClearWeaponRefineEffect(); #ifdef USE_WEAPON_COSTUME_WITH_EFFECT switch(pItem->GetValue(3)) { case CItemData::WEAPON_DAGGER: m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_REFINED9; m_swordRefineEffectLeft = EFFECT_REFINED+EFFECT_SMALLSWORD_REFINED9_LEFT; break; case CItemData::WEAPON_FAN: m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_FANBELL_REFINED9; break; case CItemData::WEAPON_ARROW: case CItemData::WEAPON_BELL: m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SMALLSWORD_REFINED9; break; case CItemData::WEAPON_BOW: m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_BOW_REFINED9; break; #ifdef ENABLE_WOLFMAN_CHARACTER case CItemData::WEAPON_CLAW: m_swordRefineEffectRight = EFFECT_REFINED + EFFECT_SMALLSWORD_REFINED9; m_swordRefineEffectLeft = EFFECT_REFINED + EFFECT_SMALLSWORD_REFINED9_LEFT; break; #endif default: m_swordRefineEffectRight = EFFECT_REFINED+EFFECT_SWORD_REFINED9; } if (m_swordRefineEffectRight) m_swordRefineEffectRight = __AttachEffect(m_swordRefineEffectRight); if (m_swordRefineEffectLeft) m_swordRefineEffectLeft = __AttachEffect(m_swordRefineEffectLeft); #endif //USE_WEAPON_COSTUME_WITH_EFFECT break; } #endif #ifdef USE_BODY_COSTUME_WITH_EFFECT if (pItem->GetSubType() == CItemData::COSTUME_BODY) { __ClearArmorRefineEffect(); m_armorRefineEffect = EFFECT_REFINED+EFFECT_BODYARMOR_REFINED9; __AttachEffect(m_armorRefineEffect); break; } #endif //USE_BODY_COSTUME_WITH_EFFECT break; } return 0; } Succès ! Le tutoriel prend fin ici, n'oubliez pas de recompiler vos source client, Enjoy.
  9. Centre de Téléchargement Télécharger ( Interne ) Bonjour, je vous partage le MouseWheel qui fonctionne avec la molette de votre souris. Aperçu : [Hidden Content] [Hidden Content] [Hidden Content] Voici les 3 aperçu ( Peut importe la fenêtre temps que y'a un ScrollBar cela marchera avec tout ) Commençons le tutoriel Côté source client : EterPythonLib/PythonWindow.cpp Chercher : BOOL CWindow::OnMouseMiddleButtonUp() { long lValue; if (PyCallClassMemberFunc(m_poHandler, "OnMouseMiddleButtonUp", BuildEmptyTuple(), &lValue)) if (0 != lValue) return TRUE; return FALSE; } Ajouté en dessous : BOOL CWindow::RunMouseWheelEvent(long nLen) { bool bValue = false; if (PyCallClassMemberFunc(m_poHandler, "OnRunMouseWheel", Py_BuildValue("(l)", nLen), &bValue)) return bValue; return bValue; } EterPythonLib/PythonWindow.h Chercher : virtual BOOL OnMouseMiddleButtonUp(); Ajouté en dessous : virtual BOOL RunMouseWheelEvent(long nLen); EterPythonLib/PythonWindowManager.cpp Chercher : // IME void CWindowManager::RunIMEUpdate() { if (m_pLockWindow) { m_pLockWindow->OnIMEUpdate(); return; } if (!m_pActiveWindow) return; if (!m_pActiveWindow->IsRendering()) return; m_pActiveWindow->OnIMEUpdate(); } Ajouté au dessus : bool CWindowManager::RunMouseWheelEvent(long nLen) { CWindow* pWin; if (pWin = GetPointWindow()) { if (pWin->IsRendering() || pWin->IsShow()) { if (pWin->RunMouseWheelEvent(nLen)) return true; else if (pWin->GetRoot()->RunMouseWheelEvent(nLen)) return true; } } return false; } EterPythonLib/PythonWindowManager.h Chercher : void RunMouseMiddleButtonUp(long x, long y); Ajouté en dessous : bool RunMouseWheelEvent(long nLen); UserInterface/PythonApplicationEvent.cpp Chercher : void CPythonApplication::OnMouseMiddleButtonUp(int x, int y) { CCameraManager& rkCmrMgr=CCameraManager::Instance(); CCamera* pkCmrCur=rkCmrMgr.GetCurrentCamera(); if (pkCmrCur) pkCmrCur->EndDrag(); if ( !m_pyBackground.IsMapReady() ) return; SetCursorNum(NORMAL); if ( CURSOR_MODE_HARDWARE == GetCursorMode()) SetCursorVisible(TRUE); } Ajouté en dessous : Attention ! Certaine personne peuvent avoir la fonction à ajouté, regarder bien avant d'ajouter la fonction void CPythonApplication::OnMouseWheel(int nLen) si vous ne la posséder pas déjà, si c'est le cas remplacer là complètement. void CPythonApplication::OnMouseWheel(int nLen) { if (!(UI::CWindowManager::Instance().RunMouseWheelEvent(nLen))) { CCameraManager& rkCmrMgr = CCameraManager::Instance(); CCamera* pkCmrCur = rkCmrMgr.GetCurrentCamera(); if (pkCmrCur) pkCmrCur->Wheel(nLen); } } Succès ! Terminer pour le côté source client. Côté client : root/ui.py Chercher dans la classe Window : self.onMouseLeftButtonUpEvent = None Ajouté en dessous : self.onRunMouseWheelEvent = None Ajouté tout en bas de la class Window : def SetOnRunMouseWheelEvent(self, event): self.onRunMouseWheelEvent = event def OnRunMouseWheel(self, nLen): if self.onRunMouseWheelEvent: apply(self.onRunMouseWheelEvent, (bool(nLen < 0), )) return True return False Pour les personnes ayant ce système [Hidden Content] : root/uiTarget.py : Chercher : def AppendWindow(self, wnd, x = 0, width = 0, height = 0): if width == 0: width = wnd.GetWidth() if height == 0: height = wnd.GetHeight() wnd.SetParent(self) if x == 0: wnd.SetPosition((self.GetWidth() - width) / 2, self.yPos) else: wnd.SetPosition(x, self.yPos) wnd.Show() self.children.append(wnd) self.yPos += height + 5 Ajouté en dessous : def OnRunMouseWheel(self, nLen): if self.itemScrollBar.IsShow(): if nLen > 0: self.itemScrollBar.OnUp() else: self.itemScrollBar.OnDown() root/uiCharacter.py : Chercher : def __UpdateQuestClock(self): Ajouté au dessus de cette fonction : def OnRunMouseWheel(self, nLen): if self.questScrollBar.IsShow(): if nLen > 0: self.questScrollBar.OnUp() else: self.questScrollBar.OnDown() Pour les personnes ayant ce système [Hidden Content] : root/uiCharacterDetails.py : Chercher : def OnScroll(self): self.RefreshLabel() Ajouté en dessous : def OnRunMouseWheel(self, nLen): if self.ScrollBar.IsShow(): if nLen > 0: self.ScrollBar.OnUp() else: self.ScrollBar.OnDown() root/uiChat.py : Chercher : def OnScroll(self): self.scrollBarPos = self.scrollBar.GetPos() lineCount = chat.GetLineCount(self.chatID) visibleLineCount = chat.GetVisibleLineCount(self.chatID) endLine = visibleLineCount + int(float(lineCount - visibleLineCount) * self.scrollBarPos) chat.SetEndPos(self.chatID, self.scrollBarPos) Ajouté en dessous : def OnRunMouseWheel(self, nLen): if self.scrollBar.IsShow(): if nLen > 0: self.scrollBar.OnUp() else: self.scrollBar.OnDown() root/uiCube.py : Chercher : def OnScrollResultList(self): count = self.GetResultCount() scrollLineCount = max(0, count - self.RESULT_SLOT_COUNT) startIndex = int(scrollLineCount * self.contentScrollbar.GetPos()) if startIndex != self.firstSlotIndex: self.firstSlotIndex = startIndex self.Refresh() Ajouté en dessous : def OnRunMouseWheel(self, nLen): if self.contentScrollbar.IsShow(): if nLen > 0: self.contentScrollbar.OnUp() else: self.contentScrollbar.OnDown() root/uiMessenger.py : Chercher : def OnScroll(self): scrollLineCount = len(self.showingItemList) - (self.showingPageSize/20) startLine = int(scrollLineCount * self.scrollBar.GetPos()) if startLine != self.startLine: self.startLine = startLine self.__LocateMember() Ajouté en dessous : def OnRunMouseWheel(self, nLen): if self.scrollBar.IsShow(): if nLen > 0: self.scrollBar.OnUp() else: self.scrollBar.OnDown() root/uiWhisper.py : Chercher : def OnScroll(self): chat.SetWhisperPosition(self.targetName, self.scrollBar.GetPos()) Ajouté en dessous : def OnRunMouseWheel(self, nLen): if self.scrollBar.IsShow(): if nLen > 0: self.scrollBar.OnUp() else: self.scrollBar.OnDown() Succès ! Le tutoriel prend fin ici, n'oubliez pas de recompiler vos source client & de tout repack côté client, Enjoy. Certaine fonction on était récupérer des source d'owsap, la parti client j'ai du la retaper pour qu'elle fonctionne, bonne utilisation.
  10. Centre de Téléchargement Télécharger ( Interne ) M2KSF Project Bonjour tout le monde, après plusieurs semaines de travail sur mon projet ci-dessous V2.1.0.0 - Télécharger Offline Shop & Search shop Version ----------------------------------------------------------------------------------------------------- V2.0.0.0 - Télécharger New Version ----------------------------------------------------------------------------------------------------- V1.4.6.0 - Télécharger Old Version Discord M2KSF Mon discord : Kuroko#9845
  11. Centre de Téléchargement Télécharger ( Interne ) Salut tout le monde, Je vous partage mon release du système hide costume récupéré des files à owsap. Petit oublie, n'oubliez pas de rajouter ceci dans votre locale_interface & locale_game de votre dossier locale. SHOW_COSTUME Afficher HIDE_COSTUME Cacher Ouvez votre fichier ui.py cherché puis remplacer cette fonction part le vôtre. Aperçu du système :
  12. Salut tout le monde, La version 1.0.2 avec la corrections du skill Sura arrive le 11/01/2020. Cordialement Team Miaw.

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.