Administrator
Administrator
  • Mesaje: 4988
    Membru din: 07 Aug 2024, 18:53
  • Reacții: 126045
  • Mesaje utile: 47
  • Status: Pe aici.. 🤠
    Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • *Descriere:

    Un sistem pentru drop la bossi Metin2:

    - Atunci cand omori un boss iti va aparea fereastra de mai jos de unde poti alege un premiu
    - Vei primi un premiu aleatoriu, in functie de ce alegere ai facut.

    Testat - Perfect functional. Am adaugat mai jos ce lipseste din tutorial:

    In ItemManager.h cauta:

    Cod: Selectaţi tot

    		bool			ReadSpecialDropItemFile(const char * c_pszFileName, bool isReloading = false);
    Adauga:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    Structura special_card_reward.txt (Exemplu):
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    *Poze / Video (obligatoriu):
    [C++/Py] System Alege Premiu (Boss Card Reward) - Mesaj 1 - Imagine 1
    02-11-2026, 18-01-20.png (583.73 KiB) Vizualizat de 1862 ori
    *Link download:
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.

    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.
    Fii primul care reacționează

    Nou Cum descarc de pe TeraBox?

    Afișează detalii Ascunde detalii
    • 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)
    • Nou Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele rapid & simplu.

    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
    See full signature
    Membru Începător
    Membru Începător
    Mesaje: 5
    Membru din: 09 Feb 2026, 14:42
  • Reacții: 17
  • Mesaje utile: 0
  • Medalii

    Avatar utilizator - Adrian16hz
    Membru Începător
    Membru Începător

    Mesaj

    ce structura trebuie sa contina fisierul .txt?

    edit: testat si functional!

    [C++/Py] System Alege Premiu (Boss Card Reward) - Mesaj 2 - Imagine 1
    [C++/Py] System Alege Premiu (Boss Card Reward) - Mesaj 2 - Imagine 2
    Fii primul care reacționează
    Administrator
    Administrator
  • Mesaje: 4988
    Membru din: 07 Aug 2024, 18:53
  • Reacții: 126045
  • Mesaje utile: 47
  • Status: Pe aici.. 🤠
    Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Avatar utilizator - SCOOB
    Administrator
    Administrator

    Mesaj

    Adrian16hz scrie: ↑25 Mar 2026, 20:06 ce structura trebuie sa contina fisierul .txt?
    Cum ai facut pana la urma structura?

    Edit: Am adaugat si eu sistemul - este perfect functional.
    [C++/Py] System Alege Premiu (Boss Card Reward) - Mesaj 3 - Imagine 1
    03-27-2026, 15-05-15.png (387.29 KiB) Vizualizat de 1433 ori

    Am adaugat in topic ce lipseste + structura de la special_card_reward.txt:

    Cod: Selectaţi tot

    goblin
    {
        mob    101
    
        1      30001 1
        2      30002 2
        3      30003 5
        4      19     1
    }
    
    orc_general
    {
        mob    115
    
        1      30010 1
        2      30011 1
        3      30012 3
    }
    
    devil_boss
    {
        mob    2493
    
        1      50001 1
        2      50002 2
        3      50003 3
        4      50004 1
        5      50005 1
    }
    Fii primul care reacționează
    See full signature
    Membru Începător
    Membru Începător
    Mesaje: 5
    Membru din: 09 Feb 2026, 14:42
  • Reacții: 17
  • Mesaje utile: 0
  • Medalii

    Avatar utilizator - Adrian16hz
    Membru Începător
    Membru Începător

    Mesaj

    [HF]White scrie: ↑
    Adrian16hz scrie: ↑25 Mar 2026, 20:06 ce structura trebuie sa contina fisierul .txt?
    Cum ai facut pana la urma structura?

    Edit: Am adaugat si eu sistemul - este perfect functional.

    03-27-2026, 15-05-15.png


    Am adaugat in topic ce lipseste + structura de la special_card_reward.txt:

    Cod: Selectaţi tot

    goblin
    {
        mob    101
    
        1      30001 1
        2      30002 2
        3      30003 5
        4      19     1
    }
    
    orc_general
    {
        mob    115
    
        1      30010 1
        2      30011 1
        3      30012 3
    }
    
    devil_boss
    {
        mob    2493
    
        1      50001 1
        2      50002 2
        3      50003 3
        4      50004 1
        5      50005 1
    }
    am copiat structura de la special_item_group si am inlocuit Vnum cu mob. Tot odata am adaptat in sursa game sa fie functional indiferent daca este mob sau Mob cu litera mare. in python, am rectificat ca avea indexarea incorecta. Adica Codul încerca să calculeze poziția sloturilor de recompense folosind un multiplicator gresit. In loc sa folosească un index simplu, el făcea un calcul de tipul i * slot_width, dar variabila i nu era resetata...


    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.


    asta-i fisierul modificat de catre mine. Am pus pentru mine, un mesaj tip debug pentru a vedea daca sunt probleme la afisarea itemelor si am scos de asemenea si acel text de deasupra cartilor. Am considerat ca devenea repetitiv si enervant in timp. Si de asemenea am adaugat fisierele .tga in etc. am considerat ca este mai bine sa le am acolo decat sa umplu constant root cu tot felul de lucruri.

    Cod: Selectaţi tot

    import ui
    import net
    import grp
    import wndMgr
    import item
    import uiToolTip
    import dbg
    
    COLOR_BG = grp.GenerateColor(0.0, 0.0, 0.0, 0.0)
    POSITIONS = [-200, 0, 200]
    
    PHASE_OPENING = 1
    PHASE_OPEN = 2
    PHASE_CLOSE = 3
    
    TEST_IMAGES = [0, 0, 0]
    
    class SpecialImage(ui.Window):
    	def __init__(self):
    		ui.Window.__init__(self)
    		self.SetSize(32, 96)
    		self.itemImage = ui.ImageBox()
    		self.itemImage.SetParent(self)
    		self.itemImage.Show()
    		self.itemToolTip = uiToolTip.ItemToolTip()
    		self.Show()
    
    	def __del__(self):
    		ui.Window.__del__(self)
    
    	def LoadItem(self, itemVnum):
    		try:
    			item.SelectItem(int(itemVnum))
    			self.itemToolTip.ClearToolTip()
    			self.itemToolTip.SetItemToolTip(int(itemVnum))
    			self.itemToolTip.HideToolTip()
    			self.itemImage.LoadImage(item.GetIconImageFileName())
    			self.SetSize(self.itemImage.GetWidth(), self.itemImage.GetHeight())
    		except:
    			dbg.TraceError("SpecialCard: Eroare la incarcarea itemului %d" % itemVnum)
    
    	def OnUpdate(self):
    		if self.itemImage.IsIn():
    			self.itemToolTip.ShowToolTip()
    		else:
    			self.itemToolTip.HideToolTip()
    
    class SpecialCardReward(ui.Bar):
    	def __init__(self):
    		ui.Bar.__init__(self, "TOP_MOST")
    		self.WindowPhase = 0
    		self.BackgroundAlpha = 0.0
    		self.ImagesAlpha = 0.0
    		self.CoverAlpha = [1.0, 1.0, 1.0]
    		self.BackgroundCards = []
    		self.CoverCards = []
    		self.CardButtons = []
    		self.ItemImages = []
    		self.ItemIndex = 0
    		self.Selected = False
    		self.SelectedID = 0
    		self.ShowOther = False
    		self.BuildWindow()
    
    	def __del__(self):
    		ui.Bar.__del__(self)
    
    	def BuildWindow(self):
    		self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())
    		self.SetColor(COLOR_BG)
    
    		for x in xrange(3):
    			bgCard = ui.ExpandedImageBox()
    			bgCard.SetParent(self)
    			try:
    				bgCard.LoadImage("d:/ymir work/ui/new_gui/special_cards/background_card.tga")
    			except:
    				dbg.TraceError("SpecialCard: Lipseste background_card.tga")
    			bgCard.SetWindowHorizontalAlignCenter()
    			bgCard.SetWindowVerticalAlignCenter()
    			bgCard.SetPosition(POSITIONS[x], 20)
    			bgCard.Hide()
    			self.BackgroundCards.append(bgCard)
    
    			coverCard = ui.ExpandedImageBox()
    			coverCard.SetParent(self)
    			try:
    				coverCard.LoadImage("d:/ymir work/ui/new_gui/special_cards/card_01.tga")
    			except:
    				pass
    			coverCard.SetWindowHorizontalAlignCenter()
    			coverCard.SetWindowVerticalAlignCenter()
    			coverCard.SetPosition(POSITIONS[x], 20)
    			coverCard.SetAlpha(0.0)
    			coverCard.Show()
    			self.CoverCards.append(coverCard)
    
    			cardButton = ui.Button()
    			cardButton.SetParent(self)
    			cardButton.SetUpVisual("d:/ymir work/ui/new_gui/special_cards/card_01.tga")
    			cardButton.SetOverVisual("d:/ymir work/ui/new_gui/special_cards/card_02.tga")
    			cardButton.SetDownVisual("d:/ymir work/ui/new_gui/special_cards/card_02.tga")
    			cardButton.SetWindowHorizontalAlignCenter()
    			cardButton.SetWindowVerticalAlignCenter()
    			cardButton.SetPosition(POSITIONS[x], 20)
    			cardButton.SetEvent(ui.__mem_func__(self.SelectReward), x)
    			cardButton.Hide()
    			self.CardButtons.append(cardButton)
    
    			itemImage = SpecialImage()
    			itemImage.SetParent(bgCard)
    			itemImage.LoadItem(TEST_IMAGES[x])
    			itemImage.SetWindowHorizontalAlignCenter()
    			itemImage.SetWindowVerticalAlignCenter()
    			itemImage.Show()
    			self.ItemImages.append(itemImage)
    
    		self.ShowOtherButton = ui.Button()
    		self.ShowOtherButton.SetParent(self)
    		self.ShowOtherButton.SetUpVisual("d:/ymir work/ui/public/xlarge_button_01.sub")
    		self.ShowOtherButton.SetOverVisual("d:/ymir work/ui/public/xlarge_button_02.sub")
    		self.ShowOtherButton.SetDownVisual("d:/ymir work/ui/public/xlarge_button_03.sub")
    		self.ShowOtherButton.SetWindowHorizontalAlignCenter()
    		self.ShowOtherButton.SetWindowVerticalAlignCenter()
    		self.ShowOtherButton.SetPosition(0, 160)
    		self.ShowOtherButton.SetText("Afisare Carti")
    		self.ShowOtherButton.SetEvent(ui.__mem_func__(self.OtherRewards))
    		self.ShowOtherButton.Hide()
    
    		self.CloseButton = ui.Button()
    		self.CloseButton.SetParent(self)
    		self.CloseButton.SetUpVisual("d:/ymir work/ui/public/xlarge_button_01.sub")
    		self.CloseButton.SetOverVisual("d:/ymir work/ui/public/xlarge_button_02.sub")
    		self.CloseButton.SetDownVisual("d:/ymir work/ui/public/xlarge_button_03.sub")
    		self.CloseButton.SetWindowHorizontalAlignCenter()
    		self.CloseButton.SetWindowVerticalAlignCenter()
    		self.CloseButton.SetPosition(0, 190)
    		self.CloseButton.SetText("Inchide")
    		self.CloseButton.SetEvent(ui.__mem_func__(self.Close))
    		self.CloseButton.Hide()
    
    	def SelectReward(self, index):
    		for x in xrange(3):
    			self.CardButtons[x].Hide()
    		self.SelectedID = index
    		self.Selected = True
    		self.ShowOtherButton.Show()
    		self.CloseButton.Show()
    		net.SendChatPacket("/get_card_reward " + str(index))
    
    	def ShowElements(self):
    		for x in xrange(3):
    			self.BackgroundCards[x].Show()
    			self.CardButtons[x].Show()
    
    	def AddItem(self, itemVnum):
    		if self.ItemIndex < 3:
    			self.ItemImages[self.ItemIndex].LoadItem(int(itemVnum))
    			self.ItemIndex += 1
    
    	def OtherRewards(self):
    		self.ShowOther = True
    
    	def ResetWindow(self):
    		self.WindowPhase = 0
    		self.BackgroundAlpha = 0.0
    		self.ImagesAlpha = 0.0
    		self.CoverAlpha = [1.0, 1.0, 1.0]
    		self.Selected = False
    		self.SelectedID = 0
    		self.ItemIndex = 0
    		self.ShowOther = False
    		self.ShowOtherButton.Hide()
    		self.CloseButton.Hide()
    		self.SetColor(grp.GenerateColor(0.0, 0.0, 0.0, self.BackgroundAlpha))
    		for x in xrange(3):
    			self.BackgroundCards[x].Hide()
    			self.CoverCards[x].SetAlpha(0.0)
    			self.CardButtons[x].Hide()
    			self.CoverCards[x].Show()
    
    	def OnUpdate(self):
    		if self.WindowPhase == PHASE_OPENING:
    			if self.BackgroundAlpha < 0.6:
    				self.BackgroundAlpha += 0.03
    				self.SetColor(grp.GenerateColor(0.0, 0.0, 0.0, self.BackgroundAlpha))
    
    			if self.ImagesAlpha < 1.0:
    				self.ImagesAlpha += 0.04
    				for x in xrange(3):
    					self.CoverCards[x].SetAlpha(self.ImagesAlpha)
    			else:
    				self.WindowPhase = PHASE_OPEN
    				self.ShowElements()
    
    		if self.ShowOther:
    			for x in xrange(3):
    				if self.CoverAlpha[x] > 0.0:
    					self.CoverAlpha[x] -= 0.05
    					self.CoverCards[x].SetAlpha(self.CoverAlpha[x])
    				else:
    					self.CoverCards[x].Hide()
    
    		if self.Selected:
    			if self.CoverAlpha[self.SelectedID] > 0.0:
    				self.CoverAlpha[self.SelectedID] -= 0.05
    				self.CoverCards[self.SelectedID].SetAlpha(self.CoverAlpha[self.SelectedID])
    			else:
    				self.CoverCards[self.SelectedID].Hide()
    
    	def Open(self):
    		self.ResetWindow()
    		self.WindowPhase = PHASE_OPENING
    		self.Show()
    
    	def Close(self):
    		self.ResetWindow()
    		self.Hide()
    Fii primul care reacționează
    Membru Avansat
    Membru Avansat
  • Mesaje: 127
    Membru din: 13 Ian 2025, 18:17
  • Reacții: 570
  • Mesaje utile: 2
  • Status: // Coding: 1% writing, 99% fixing typos.
  • Regat: Jinno
  • [ID Discord]
  • Medalii

    Avatar utilizator - thewolf98
    Membru Avansat
    Membru Avansat

    Mesaj

    Testat, functioneaza perfect, Multumim @[HF]White
    Am ajustat la el doar doua lucruri
    1. l-am pus pe define in ambele surse ca sa fie usor de controlat in caz ca e nevoie de disable sau modificat ceva
    2. am fixat un mic warning la compilare

    Preview cu testul :


    Un mic fix.
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.
    Fii primul care reacționează
    Membru Avansat
    Membru Avansat
  • Mesaje: 53
    Membru din: 01 Noi 2024, 20:40
  • Reacții: 127
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Chunjo
  • Medalii

    Avatar utilizator - petrica5287
    Membru Avansat
    Membru Avansat

    Mesaj

    https://prnt.sc/GDrI-If8KfQF

    asta unde mai exact se baga ?
    Fii primul care reacționează
    Premium
    Premium
  • Mesaje: 92
    Membru din: 30 Sep 2024, 19:01
  • Reacții: 744
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Chunjo
  • [ID Discord]
  • Avatar utilizator - suntGMaster
    Premium
    Premium

    Mesaj

    petrica5287 scrie: ↑ https://prnt.sc/GDrI-If8KfQF

    asta unde mai exact se baga ?
    winscp -> unde e si special_group_item.txt si restu in folderu romania
    Fii primul care reacționează
    Hai noroc! :ymdevil:
    See full signature
    Membru Avansat
    Membru Avansat
  • Mesaje: 53
    Membru din: 01 Noi 2024, 20:40
  • Reacții: 127
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Chunjo
  • Medalii

    Avatar utilizator - petrica5287
    Membru Avansat
    Membru Avansat

    Mesaj

    la mine nu merge nu se deschid cartiile ,nici erori n-am xD
    Fii primul care reacționează
    Membru Avansat
    Membru Avansat
  • Mesaje: 53
    Membru din: 01 Noi 2024, 20:40
  • Reacții: 127
  • Mesaje utile: 0
  • Status: Pierd vremea ^.^
  • Regat: Chunjo
  • Medalii

    Avatar utilizator - petrica5287
    Membru Avansat
    Membru Avansat

    Mesaj

    thewolf98 scrie: ↑ Testat, functioneaza perfect, Multumim @[HF]White
    Am ajustat la el doar doua lucruri
    1. l-am pus pe define in ambele surse ca sa fie usor de controlat in caz ca e nevoie de disable sau modificat ceva
    2. am fixat un mic warning la compilare

    Preview cu testul :


    Un mic fix.
    Conținut: Ascuns
    Reacționează ❤️ la acest mesaj și conținutul se va afișa automat.

    sa inteleg ca nu e full ?

    https://prnt.sc/X0jkOQBCBYXQ
    Fii primul care reacționează
    Administrator
    Administrator
  • Mesaje: 4988
    Membru din: 07 Aug 2024, 18:53
  • Reacții: 126045
  • Mesaje utile: 47
  • Status: Pe aici.. 🤠
    Server: Saga2 - Soon
  • Regat: Jinno
  • [ID Discord]
  • Avatar utilizator - SCOOB
    Administrator
    Administrator

    Mesaj

    petrica5287 scrie: ↑
    thewolf98 scrie: ↑ Testat, functioneaza perfect, Multumim @[HF]White
    Am ajustat la el doar doua lucruri
    1. l-am pus pe define in ambele surse ca sa fie usor de controlat in caz ca e nevoie de disable sau modificat ceva
    2. am fixat un mic warning la compilare

    Preview cu testul :


    Un mic fix.
    [Continutul ascuns nu poate fi citat]

    sa inteleg ca nu e full ?

    https://prnt.sc/X0jkOQBCBYXQ
    e 100% full
    Fii primul care reacționează
    See full signature
    • Subiecte similare

    Înapoi la “Sisteme Metin2”

    Informații

    Utilizatori ce navighează pe acest forum: Maestro, nevermindz, osuas, umut și 10 vizitatori

    Discord ID copiat: