Lucrăm la îmbunătățirea site-ului! Este posibil ca unele module să nu funcționeze corect!
3 mesaje
Avatar utilizator
Administrator
  • Administrator

    Autor subiect

  • Mesaje: 2,607
  • Reacții: 29032
  • Mesaje utile: 17
  • Status: Pierd vremea ^.^
  • Server: Saga2 - Soon
  • Regat: Jinno
  • Discord: [Vezi ID]
  • Contact:
    Avatar utilizator
    Administrator

    Autor subiect

    Administrator
    *Descriere:

    Salut Metin2 Forum :(|) . Va las si voua sistemul "Admin Chat Renewall" a lui dracarys, un sistem cu care poti trimite mesaje private la toti jucatorii de pe server.

    Ce face mai exact? Poti trimite PM / anunt / mesaj in mapa / mesaj in big notice la toti jucatorii online de pe server, deodata.
    - Poti alege culoarea textului.
    - Poti alege cine vede mesajul, bazat pe limba jucatorului (Exemplu: Doar la romani, turci, francezi)

    *Poze / Video (obligatoriu):
    [C++/Py] System Trimite Mesaj la tot Serverul - Mesaj 1 - Imagine 1
    *Link download:
    Conținut: Ascuns
    ⚠️ NU trebuie să răspunzi la subiect! Doar lasă un "Like" la acest post și conținutul se va afișa automat.

    Cum descarc de pe TeraBox?

    • Este asemănător cu Mega.nz
    • Instalați-vă clientul lor de Download de aici
    • Faceți-vă un cont (vă puteți loga cu Facebook / Google / etc)
    • Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele

    De ce folosim TeraBox?

    • Este gratuit
    • Primești 1TB de spațiu gratuit la orice cont creat!
    • Este ușor de folosit și varianta premium este foarte ieftină
    • Fișierele nu sunt șterse niciodată
    TeraBox logo
    Te asteptam si pe serverul de Discord :p - aici ne-am strans toata comunitatea de Metin2 din Romania.
    Link: https://discord.gg/Kr9nUpWa4X

    Suntem aproape 1000 membri! - Avem chat activ zilnic, support, cereri, resurse.



    See full signature

    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț
  • Mesaje: 5
  • Reacții: 12
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • Discord: [Vezi ID]
  • Contact:

    Medalii

    Adaptare pentru cei ce nu detin multilanguage


    game.py
    Cauta:
    Code:
    	if app.__RENEWAL_ADMIN_CHAT__:
    		def BINARY_OnRecvBulkWhisper(self, content):
    
    Modifica tot def-ul:
    Code:
    	if app.__RENEWAL_ADMIN_CHAT__:
    		def BINARY_OnRecvBulkWhisper(self, content):
    			content = content.replace("$", " ")
    			self.interface.RegisterGameMasterName("[SYSTEM]")
    
    			new_buf = content
    			chat.AppendWhisper(chat.WHISPER_TYPE_CHAT, "[SYSTEM]", new_buf)
    			self.interface.RecvWhisper("[SYSTEM]")
    

    interfacemodule.py:
    Cauta:
    Code:
    			if not player.GetName() in canOpenPlayerList or canOpenPlayerList.find("[") == -1:
    				return
    
    Modifica:
    Code:
    			if not player.GetName() in canOpenPlayerList or all("[" not in name for name in canOpenPlayerList):
    				return
    
    
    uiwhisperadmin.py
    Modifica tot continutul:
    Code:
    #author: dracaryS
    
    import ui
    import app
    import net
    import ime
    import chat
    
    class Manager(ui.BoardWithTitleBar):
    
    	def Destroy(self):
    		self.__children = {}
    
    	def __init__(self):
    		ui.BoardWithTitleBar.__init__(self)
    		self.Destroy()
    		self.__LoadWindow()
    
    	def __LoadWindow(self):
    		self.SetSize(500, 190)
    		self.SetCenterPosition()
    		self.AddFlag('movable')
    		self.AddFlag('float')
    		self.SetCloseEvent(self.Close)
    		self.SetTitleName("Admin Chat Panel")
    
    		colorTypes = [
    			["ffffff", 0xffffffff],
    			["ea150a", 0xffea150a],
    			["50b409", 0xff50b409],
    			["10cfcf", 0xff10cfcf],
    			["e5d500", 0xffe5d500],
    			["e05324", 0xffe05324],
    			["ff77aa", 0xffff77aa],
    		]
    		colorList = []
    		for idx, color in enumerate(colorTypes):
    			radioBtn = ui.RadioButton()
    			radioBtn.SetParent(self)
    			radioBtn.SetPosition(10 + idx * 45, 135)
    			radioBtn.SetUpVisual("d:/ymir work/ui/public/small_button_01.sub")
    			radioBtn.SetOverVisual("d:/ymir work/ui/public/small_button_02.sub")
    			radioBtn.SetDownVisual("d:/ymir work/ui/public/small_button_03.sub")
    			radioBtn.SetText("|cff{}{}".format(color[0], "Color"))
    			radioBtn.SetEvent(lambda x=idx: self.__SetColor(x))
    			radioBtn.Show()
    			colorList.append(radioBtn)
    		self.__children["colorList"] = colorList
    		self.__children["colorTypes"] = colorTypes
    
    		infoBtnDict = {
    			0: {"text": "Notice", "maxLength": 150, "chatIdx": chat.CHAT_TYPE_NOTICE},
    			1: {"text": "Big-Notice", "maxLength": 150, "chatIdx": chat.CHAT_TYPE_BIG_NOTICE},
    			2: {"text": "Map-Notice", "maxLength": 150, "chatIdx": 99},
    			3: {"text": "Whisper", "maxLength": 512, "chatIdx": chat.CHAT_TYPE_WHISPER},
    		}
    
    		btnList = []
    		for idx, data in infoBtnDict.items():
    			toggleBtn = ui.RadioButton()
    			toggleBtn.SetParent(self)
    			toggleBtn.SetPosition(10 + idx * 63, 160)
    			toggleBtn.SetUpVisual("d:/ymir work/ui/public/middle_button_01.sub")
    			toggleBtn.SetOverVisual("d:/ymir work/ui/public/middle_button_02.sub")
    			toggleBtn.SetDownVisual("d:/ymir work/ui/public/middle_button_03.sub")
    			toggleBtn.SetText(data["text"])
    			toggleBtn.SetEvent(lambda x=idx: self.__ClickChatTypeBtn(x))
    			toggleBtn.Show()
    			btnList.append(toggleBtn)
    
    		self.__children["btnList"] = btnList
    		self.__children["infoBtnDict"] = infoBtnDict
    
    		msgSlotBar = ui.SlotBar()
    		msgSlotBar.SetParent(self)
    		msgSlotBar.SetSize(478, 90)
    		msgSlotBar.SetPosition(10, 35)
    		msgSlotBar.Show()
    		self.__children["msgSlotBar"] = msgSlotBar
    
    		msgEditline = ui.EditLine()
    		msgEditline.SetParent(msgSlotBar)
    		msgEditline.SetSize(478, 90)
    		msgEditline.SetPosition(7, 3)
    		msgEditline.SetLimitWidth(469)
    		msgEditline.SetMultiLine()
    		msgEditline.SetText("")
    		msgEditline.Show()
    		msgEditline.OnIMEUpdate = ui.__mem_func__(self.__OnValueUpdate)
    		msgEditline.OnPressEscapeKey = ui.__mem_func__(self.Close)
    		self.__children["msgEditline"] = msgEditline
    
    		clearBtn = ui.Button()
    		clearBtn.SetParent(self)
    		clearBtn.SetPosition(self.GetWidth() - 50, 8)
    		clearBtn.SetUpVisual("d:/ymir work/ui/game/guild/Refresh_Button_01.sub")
    		clearBtn.SetOverVisual("d:/ymir work/ui/game/guild/Refresh_Button_02.sub")
    		clearBtn.SetDownVisual("d:/ymir work/ui/game/guild/Refresh_Button_03.sub")
    		clearBtn.SetToolTipText("Clear")
    		clearBtn.SetEvent(self.__RefreshFunc)
    		clearBtn.Show()
    		self.__children["clearBtn"] = clearBtn
    
    		sendBtn = ui.Button()
    		sendBtn.SetParent(self)
    		sendBtn.SetPosition(430, 135)
    		sendBtn.SetUpVisual('d:/ymir work/ui/public/middle_button_01.sub')
    		sendBtn.SetOverVisual('d:/ymir work/ui/public/middle_button_02.sub')
    		sendBtn.SetDownVisual('d:/ymir work/ui/public/middle_button_03.sub')
    		sendBtn.SetText("Send")
    		sendBtn.SetEvent(self.__SendFunc)
    		sendBtn.Show()
    		self.__children["sendBtn"] = sendBtn
    
    		msgInfo = ui.TextLine()
    		msgInfo.SetParent(self)
    		msgInfo.SetPosition(395, 137)
    		msgInfo.Show()
    		self.__children["msgInfo"] = msgInfo
    
    		self.__ClickChatTypeBtn(0)
    		self.__SetColor(0)
    		self.__RefreshFunc()
    
    	def ClickRadioButton(self, buttonList, buttonIndex):
    		try:
    			selButton = buttonList[buttonIndex]
    		except IndexError:
    			return
    		for eachButton in buttonList:
    			eachButton.SetUp()
    		selButton.Down()
    
    	def __SetColor(self, btnIndex):
    		self.ClickRadioButton(self.__children["colorList"], btnIndex)
    		msgEditline = self.__children["msgEditline"]
    		if msgEditline:
    			msgEditline.SetText("{}{}{}".format(
    				msgEditline.GetText(),
    				"|r" if "|cff" in msgEditline.GetText().lower() else "",
    				"|cff" + self.__children["colorTypes"][btnIndex][0] if btnIndex != 0 else ""
    			))
    			t = msgEditline.GetText()
    			msgEditline.SetText("")
    			ime.PasteString(t)
    		self.__OnValueUpdate()
    
    	def __ClickChatTypeBtn(self, chatIdx):
    		self.__children["chatIdx"] = chatIdx
    		self.ClickRadioButton(self.__children["btnList"], chatIdx)
    		self.__OnValueUpdate()
    
    	def __RefreshFunc(self):
    		self.__children["msgEditline"].SetText("")
    		self.__children["msgEditline"].SetMax(self.__children["infoBtnDict"][self.__children["chatIdx"]]["maxLength"])
    		self.__children["msgInfo"].SetText("0/{}".format(self.__children["infoBtnDict"][self.__children["chatIdx"]]["maxLength"]))
    
    	def __SendFunc(self):
    		text = self.__children["msgEditline"].GetText()
    		if not text or text.isspace():
    			return
    		net.SendAdminChat(self.__children["infoBtnDict"][self.__children["chatIdx"]]["chatIdx"], "RO", text)
    
    	def __OnValueUpdate(self):
    		ui.EditLine.OnIMEUpdate(self.__children["msgEditline"])
    		self.__children["msgInfo"].SetText("{}/{}".format(
    			len(self.__children["msgEditline"].GetText()),
    			self.__children["infoBtnDict"][self.__children["chatIdx"]]["maxLength"]
    		))
    
    	def Open(self):
    		self.__children["msgEditline"].SetFocus()
    		self.SetTop()
    		self.Show()
    
    	def Close(self):
    		self.__children["msgEditline"].KillFocus()
    		self.Hide()
    		return True
    
    	def OnPressEscape(self):
    		return self.Close()
    
    	def OnPressExitKey(self):
    		return self.Close()
    
    
  • Mesaje: 5
  • Reacții: 12
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Jinno
  • Discord: [Vezi ID]
  • Contact:

    Medalii

    Eroare compilare game source (SPLIT ARGUMENT)

    source/game/utils.cpp
    Cauta:
    Code:
    void skip_spaces(const char **string)
    {
    	for (; **string != '\0' && isnhspace(**string); ++(*string));
    }
    
    Adauga:
    Code:
    #include <boost/algorithm/string/classification.hpp> // Include boost::for is_any_of 
    #include <boost/algorithm/string/split.hpp>
    
    void split_argument(const char* argument, std::vector<std::string>& vecArgs, const char* arg)
    {
    	boost::split(vecArgs, argument, boost::is_any_of(arg), boost::token_compress_on);
    }
    

    source/game/utils.h
    Cauta:
    Code:
    extern void	skip_spaces(char **string);
    
    Adauga:
    Code:
    extern void split_argument(const char* argument, std::vector<std::string>& vecArgs, const char* arg = " ")
    

    📢 Resurse Metin2 Premium!

    Zeci de resurse Metin2 Premium - exclusive și 100% funcționale începând cu 15.99€!.

    Vezi resursele Cumpără premium
    Premium
    Premium
    Anunț
    Scrie răspuns

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Înregistrează-te și alătură-te comunității noastre

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra rapid utilizând contul tău de Discord sau Github

    Înregistrare

    Autentifică-te

    • Subiecte similare

      • de Tornado » » în Portofolii
        1
        Răspunsuri
        340
        Vizualizări
        de NoNNeX
      • de ZuZuR » » în Îmbunătățiri
        0
        Răspunsuri
        1085
        Vizualizări
        de ZuZuR
      • de Ene » » în Sisteme Metin2
        0
        Răspunsuri
        422
        Vizualizări
        de Ene
      • de [HF]White » » în Sisteme Metin2
        1
        Răspunsuri
        674
        Vizualizări
        de Kratos
      • de [HF]White » » în Quest-uri
        0
        Răspunsuri
        310
        Vizualizări
        de [HF]White

    Înapoi la “Sisteme Metin2”

    Informații

    Utilizatori ce navighează pe acest forum: blackorck1997, YTmaster și 8 vizitatori