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

Messages posté(e)s par Kuroko

  1. 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 https://discord.gg/F3ukEs4Pnd 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 !

    • Eyes 1
    • Good 1
  2. 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

      Give reaction to this post to see the hidden content.

    MouseWheel

    Hidden Content

      Give reaction to this post to see the hidden content.
     

    4 Pages inventory

    Hidden Content

      Give reaction to this post to see the hidden content.

     

    Changelog :

    Révélation

    11.02.2022: - __AUCTION__ deleted from client source

                        - Xtrap deleted from client source

                        - Hackshield deleted from client source

                        - GameGuard deleted from client source

     

    12.02.2022: - Fixed Process SEQUENCE 29606000 mismatch 0xaf != 0x64 header 254.

                         - Disable __IMPROVED_PACKET_ENCRYPTION__.

                         - Cleaning the pack folder.

                         - Official character windows with tooltips.

                         - Quest renewal like official.

                         - New design inventory like official.

                         - Fix Reading d:/ymir work, FPS Drops, Slow Loading Time. /// < Speachless

                         - 4 Page inventory.

                         - Fix - Crash core regarding bonuses 6/7. /// < Gurgarath

                         - Added VNUM & SKILLS VNUM on tooltips.

                         - GAIDEN define deleted - 0 Yang = Free tooltips

     

     

    Hidden Content

      Give reaction to this post to see the hidden content.

    • Metin2 Dev 26
    • Dislove 1
    • Scream 1
    • Lmao 1
    • Good 12
    • Love 21
  3. 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

    • Lmao 1
    • Good 1
    • Love 2
  4. 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.
    • Metin2 Dev 2
    • Good 3
    • Love 2
  5. Centre de Téléchargement

    Hidden Content

      Give reaction to this post to see the hidden content.
    ( 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 :

    215733Capture.JPG

    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.

    Hidden Content

      Give reaction to this post to see the hidden content.

    Succès ! Le tutoriel prend fin ici, n'hésitez pas à me contacter si vous avez une erreur.

     

    Enjoy.

     

    • Metin2 Dev 5
    • Good 1
    • Love 13
  6. Centre de Téléchargement

    Hidden Content

      Give reaction to this post to see the hidden content.
    ( 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.
    • Metin2 Dev 7
    • Good 3
    • Love 2
  7. Centre de Téléchargement

    Hidden Content

      Give reaction to this post to see the hidden content.
    ( Interne )

    Bonjour, c'est un petit partage mais qui rendra votre personnage plus brillant avec des costumes.

    Aperçu de la modification :

    Hidden Content

      Give reaction to this post to see the 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.

     

    • Metin2 Dev 28
    • Good 1
    • Love 15
  8. Centre de Téléchargement

    Hidden Content

      Give reaction to this post to see the hidden content.
    ( Interne )

    Bonjour, je vous partage le MouseWheel qui fonctionne avec la molette de votre souris.

    Aperçu :

    Hidden Content

      Give reaction to this post to see the hidden content.

    Hidden Content

      Give reaction to this post to see the hidden content.

    Hidden Content

      Give reaction to this post to see the 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

      Give reaction to this post to see the 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

      Give reaction to this post to see the 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.

    • Metin2 Dev 39
    • Good 3
    • Love 21
  9. Centre de Téléchargement

    Hidden Content

      Give reaction to this post to see the hidden content.
    ( Interne )

    M2KSF Project

    Bonjour tout le monde, après plusieurs semaines de travail sur mon projet ci-dessous

     

     

    V2.1.0.0 - 

    Hidden Content

      Give reaction to this post to see the hidden content.
     Offline Shop & Search shop Version

    -----------------------------------------------------------------------------------------------------

    V2.0.0.0 - 

    Hidden Content

      Give reaction to this post to see the hidden content.
     New Version

    -----------------------------------------------------------------------------------------------------

    V1.4.6.0 - 

    Hidden Content

      Give reaction to this post to see the hidden content.
     Old Version

     

     

    Discord M2KSF

    Mon discord : Kuroko#9845

     

    • Metin2 Dev 81
    • Eyes 1
    • Dislove 1
    • Sad 1
    • Think 4
    • Confused 1
    • Scream 5
    • Good 27
    • Love 3
    • Love 136
  10. Centre de Téléchargement

    Hidden Content

      Give reaction to this post to see the hidden content.
    ( 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.

    Révélation
    class ToggleButton(Button):
    	def __init__(self):
    		Button.__init__(self)
    
    		self.eventUp = None
    		self.eventDown = None
    
    		self.eventUpArgs = None
    		self.eventDownArgs = None
    
    	def __del__(self):
    		Button.__del__(self)
    
    		self.eventUp = None
    		self.eventDown = None
    
    	def SetToggleUpEvent(self, event, *args):
    		self.eventUp = event
    		self.eventUpArgs = args
    
    	def SetToggleDownEvent(self, event, *args):
    		self.eventDown = event
    		self.eventDownArgs = args
    
    	def RegisterWindow(self, layer):
    		self.hWnd = wndMgr.RegisterToggleButton(self, layer)
    
    	def OnToggleUp(self):
    		if self.eventUp:
    			if self.eventUpArgs:
    				apply(self.eventUp, self.eventUpArgs)
    			else:
    				self.eventUp()
    
    	def OnToggleDown(self):
    		if self.eventDown:
    			if self.eventDownArgs:
    				apply(self.eventDown, self.eventDownArgs)
    			else:
    				self.eventDown()

     

     

    Révélation

    Hidden Content

      Give reaction to this post to see the hidden content.

     

    Aperçu du système :

    050236c1bfdd133f09e7968df735a5cd3d2942.g

     

     

    • Metin2 Dev 37
    • Sad 1
    • Scream 4
    • Good 10
    • Love 40
  11.  

    Bonjour,

     

    Après plusieurs années passées dans le développement de Metin2, j'ai beaucoup appris à gérer le code de mieux en mieux, c'est pourquoi donc j'avais ouvert mes deux serveurs, pour ceux qu'ils ne le savent pas "Rimoria & Rebirths" je ne le vous cachent pas que ce n'était pas une réussite.

    Enfin bref j'ai ouvert ce sujet pour vous présenter mon projet M2KSF celui-ci consiste à regrouper tous les systèmes de l'officiel ainsi que des systèmes tel que comme l'inventaire spéciales etc.

    Avec mon projet je vais essayer de vous fournir des files propres avec le moins de bug possible ( ce n'est pas possible d'avoir des files sans aucun bug ) mais je vais essayer de faire de mon mieux pour que ces files vous servent à ouvrir votre projet Metin2.

    Cela fait déjà 2 semaines que je travaille dessus, j'avance tout doucement mais sûrement, la base de ces files c'est les Marty la version qui a fuité et partager sur ce forum même, beaucoup d'entre vous déconseille l'utilisation de ses files certes ils contiennent beaucoup de bug mais j'ai fait en sorte que ce "bug" soit corrigé.

     

     

    Mon discord Kuroko#6709

    Cordialement Kuroko, M2KSF Project

     

    • Metin2 Dev 2
    • Good 4
    • Love 3
  12. Centre de Téléchargement

    Hidden Content

      Give reaction to this post to see the hidden content.
    ( Interne )

    Coucou

    Je viens vous partager le système de MailBox que j'ai du récupérer des files à Owsap v4.9.6.9.

    Seul soucis rencontrer avec ce système un sysser qui pop à l'ouverture du client.

    Je n'est pas vraiment chercher d'où ce sysser pouvait apparaître mais il ne pose aucun soucis à l'utilisation du système.

     

    0303 21:58:16931 :: Unknown window flag a
    0303 21:58:16931 :: Unknown window flag t
    0303 21:58:16931 :: Unknown window flag t
    0303 21:58:16931 :: Unknown window flag a
    0303 21:58:16931 :: Unknown window flag c
    0303 21:58:16931 :: Unknown window flag h

    Hidden Content

      Give reaction to this post to see the hidden content.
      

    Hidden Content

      Give reaction to this post to see the hidden content.

     

    C'est encore moi avec une nouvelle version plus de sysser à la connexion quelque petit bug corrigé.
    C'est seulement la parti Python qui à étais modifier, je remercie @Takumade m'avoir aider.

    Enjoy.

     

    Aperçu du système 

     

    0503501dc51a550f5a0a6766ebd241dc100414.g
    050350c1bfdd133f09e7968df735a5cd3d2942.g

     

    Merci de me signaler si y'a un oublie dans le Tutoriel ou bien un bug j'essayerai de le résoudre.
    Attention : Suivez bien le Tutoriel à la lettre si vous ne voulez pas que votre serveur plante !

     

    • Metin2 Dev 15
    • Good 2
    • Love 6
  13. Centre de Téléchargement

    Hidden Content

      Give reaction to this post to see the hidden content.
    ( Interne )

    Bonjour, Bonsoir

    Je partage une petite modification de ce partage 

    Avant :

    080807045312Sans-titre-1.png

    Après :

    7a2924c2720f4863465f6ed5722c6287.gif

     

    Que j'ai re touché un tout petit peu ( C'est seulement du pur esthétique visuel  )

    Révélation

    Hidden Content

      Give reaction to this post to see the hidden content.

     

    Enjoy.

    • Metin2 Dev 14
    • Lmao 1
    • Good 3
    • Love 13
  14. F Download Center

    Hidden Content

      Give reaction to this post to see the hidden content.
    ( Interne )

    ( GitHub )

    Hidden Content

      Give reaction to this post to see the hidden content.

    Bonjour,

     

    Pour ce qui ne l'a pas vu, ce partage vient de M2dev.

    Ce sont les 9ème skills officiel avec les manuels et la nouvelle interface y comprit.

     

    Aperçu :

    Hidden Content

      Give reaction to this post to see the hidden content.

    Hidden Content

      Give reaction to this post to see the hidden content.

    Hidden Content

      Give reaction to this post to see the hidden content.

     

     

    Source, Rakancito - Metin2dev

    • Metin2 Dev 22
    • Sad 1
    • Think 2
    • Confused 1
    • Good 6
    • Love 42
  15. Il y a 5 heures, Alan a dit :

    Oui je trouve ça étrange également. J'ai donc prit l'item 40002 (anneau de levi) et ça fonctionne parfaitement :) 

     

    C'est tout à fait normal que ça ne marche pas avec l'item 70058 car elle est configurée pour être un anneau de TP de base mais il manque du code côté LUA si je ne dis pas de bêtise ainsi que C++, l'anneau 40002 ou 40008 ou bien 40001 peu importe marche car elles sont "useless" donc tu peux configurer une quête via c'est item pour les faire fonctionner.

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.