[HF]White scrie: ↑
Adrian16hz scrie: ↑ 25 Mar 2026, 22: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 :
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...
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.
Show Spoiler
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()