Aller au contenu

C++/Py OnRunMouseWheel


Messages recommandés

  • Contributeur

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

Aperçu :

https://i.gyazo.com/393d34f42fa3c807f93f6b387a51301a.mp4

https://i.gyazo.com/ed1cf61ecb952e51e2b00b01f8acf7b4.mp4

https://i.gyazo.com/3d9709f5bbbaba86c77a7b1afbcfcb26.mp4

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 https://i.gyazo.com/65cf0434db906ce86134cce52a905f6b.mp4 :

 

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 https://i.gyazo.com/ed1cf61ecb952e51e2b00b01f8acf7b4.mp4 :

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.

Modifié par zKuroko
  • Funky Emulation 25
  • J'adore 13

M2KSF Project

Développement Metin2

Lien à poster

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


×
×
  • Créer...

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.