Classement
Contenu populaire
Affichage du contenu avec la meilleure réputation le 10/18/23 dans toutes les zones
-
Centre de Téléchargement Télécharger ( Interne ) Bonjour, voici le switchbot développé par Sanii, l'archive est complète, bon jeu. L'archive contient : - Les modification coté client - Les modifications coté base de donée - Mes modification coté source client et serveur1 point
-
1 point
-
1 point
-
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.1 point
-
Centre de Téléchargement Télécharger ( Interne ) Carquois de flèche. 1) Qu'est-ce que c'est? 2) Les prérequis. 3) Les téléchargements. 1) Qu'est-ce que c'est? Il existe 4 type de carquois qui ont chacun un temps différent. Durée de 24 Heures. Durée de 7 Jours. Durée de 15 Jours. Durée de 30 Jours. Une carquois c'est un stock de flèche illimité sauf en temps comme indiqué ci-dessus, Les dégâts infligés ne sont pas réduit par la distances. 2) Les prérequis. Sources Client / Server. Un Client. Files. Les fichiers en téléchargement. Votre tête qui encore une fois vous sera utile. 3) Les téléchargements. Cliquez ici Sources : Board-Legend LeNn't. Traduction : Moi. Bonne installation. Cordialement, History.1 point
-
Centre de Téléchargement Télécharger ( Interne ) Salut à la communauté, Je viens vous partagez un module du nom de "CFG" qui vous servira pour beaucoup de chose, notamment la sauvegarde ou la génération de fichier .cfg, ça peut servir pour énormément de chose. Un petit exemple du principe, imaginons que vous ayez ajouté une option vous permettant de basculer entre le jour et la nuit, grâce au module "cfg", vous aurez alors la possibilité d'enregistrer l'environnement (jour / nuit ) en cour d'utilisation via un fichier cfg Pré-requis : Source client, et un client. Source de la création du module : LegendOfMetin - SRC1 point
-
Required Level : Beginner Estimated Time : Between 5 & 10 minutes Hello everyone, The configuration of your client is a crucial step to the creation of a private server Metin2, it should be known for example that we do not yet have solutions to run the 2013+ files under no-ip and Hamachi publicly. (with players) About : You will need to bring of Notepadd++, and Eternexus (Files 2013-). or EterManager (Files 2013+). Notepad++ : Download EterManager : Download Eternexus : Download Configure your client To get started please depack your root file located in your client's pack folder. After that, open the serverinfo.py file with Notepadd ++ and let's analyze the lines a bit. import app app.ServerName = None STATE_NONE = '...' STATE_DICT = { 0 : '....', 1 : 'NORM', 2 : 'BUSY', 3 : 'FULL' } SERVER1_CHANNEL_DICT = { 1:{'key':11,'name':'CH1 ','ip':'YOUR-IP','tcp_port':13001,'udp_port':13001,'state':STATE_NONE,}, 2:{'key':12,'name':'CH2 ','ip':'YOUR-IP','tcp_port':62210,'udp_port':62210,'state':STATE_NONE,}, 4:{'key':14,'name':'CH3 ','ip':'YOUR-IP','tcp_port':62310,'udp_port':62310,'state':STATE_NONE,}, } REGION_NAME_DICT = { 0 : 'TAIWAN', } REGION_AUTH_SERVER_DICT = { 0 : { 1 : { 'ip':'YOUR-IP', 'port':11002, }, } } REGION_DICT = { 0 : { 1 : { 'name' : 'SERVERNAME', 'channel' : SERVER1_CHANNEL_DICT, }, }, } MARKADDR_DICT = { 10 : { 'ip' : 'YOUR-IP', 'tcp_port' : 13001, 'mark' : '10.tga', 'symbol_path' : '10', }, } TESTADDR = { 'ip' : 'YOUR-IP', 'tcp_port' : 50000, 'udp_port' : 50000, } STATE_NONE = The status of your Server when it is closed (Default ... which you can change to Closed) STATE_DICT = The different status of your server writes ( ... = Reboot, NORM = Open, BUSY = BUSY, Full = FULL) Let's go to the most important, the lines below. First of all did not put the same figure for two CH. CH1,CH2 = The names of the channels that you can modify (Example: Channel, Channel, World, Dimension etc ...) YOUR-IP = This is important because it's the first thing to change ! Local: You will need to set your IP address from 192.168, (it is the IP that you return the console when you run the ifconfig command). Hamachi: For you and only you (admin) you have to put your ip hamachi ending with .100 (Example your ip is 23.65.124.27 you will have to put 23.65.124.100) If you have players (2013- files) put your normal ip hamachi (using the example before 23.65.124.27) NoIP: For you and for you alone (admin), you must place your ip router (192.168.X.X) and for your players, you must put the no-ip domain which provides you no-ip.org. (Example: exemplemt2.no-ip.org) Dedicated: Just put the IP that gives you your host, whether it's for you or your players. tcp_port & udp_port = This must correspond to the port used by the channel (take the port of core2 if you are under 2013+) the port is available in the CONFIG files of your channel HOSTNAME: channel1_core2 CHANNEL: 1 PORT: 13001 P2P_PORT: 14001 DB_PORT: 15000 DB_ADDR: localhost MAP_ALLOW: 21 22 23 24 25 26 Go down a little further, you will find YOUR-IP replace them as explained above. Also check the auth port at this code: REGION_AUTH_SERVER_DICT = { 0 : { 1 : { 'ip':'YOUR-IP', 'port':11002, }, } Check if the port is the same as the one declared in the CONFIG file of your auth. HOSTNAME: auth CHANNEL: 1 PORT: 11002 P2P_PORT: 12000 DB_PORT: 15000 So, if you go down, you will find YOUR-IP replace again depending on your type of server ! At this code, you can add the name of your server: REGION_DICT = { 0 : { 1 : { 'name' : 'SERVERNAME', 'channel' : SERVER1_CHANNEL_DICT, }, }, Once this done all your serverinfo is configured! In this case save your work and repack it ! End of the tutorial ! If you have any problem with this topic, I invite you to create a help request in the support section. This tutorial is based on that of Calypso with some additions1 point
-
Centre de Téléchargement Télécharger ( Interne ) Bonjour, Je viens vous faire un recensement des diffs pour le game 40250, il faut savoir que si vous appliquez une diff, vous ne pouvez pas compiler un game, tout du moins vos diffs seront perdues. Pré-requis : Appliquer une DIFF sur un Game I. Recensement Pour continuer : Si vous avez un problème n'hésitez pas à le poster dans la section A/Q/S.1 point
-
Centre de Téléchargement Télécharger ( Interne ) Bonjour, Voici un petit changeur d'environnement, vous pouvez le modifier à votre guise. Résultat : [Hidden Content] 1) Ouvrir uigameoption.py (-> dépack root) 2) Ouvrir constInfo.py (-> dépack root) 3) Ouvrir gameoptiondialog.py (-> dépack uiscript) PS : ATTENTION AU TAB ! *** Ce tutoriel a été réédité pour la V6.***1 point
-
Centre de Téléchargement Télécharger ( Interne ) Salut tout le monde ! Je me suis permit de faire une mise à jour concernant les commandes GM de Metin2. Elle n'est surement pas complète, donc si vous avez des améliorations à proposer, n'hésitez pas ! Merci à metin2 referata pour m'avoir aidé à compléter la liste, à Emulateur aussi et aux sources pour certaines commandes. Le reste, j'ai tout organisé dans un fichier texte. Good Luck ! ?0 point
