BUG NEGOCIAZA METIN2

Totalitatea subiectelor care nu respectă regulamentul impus in sectiunea "Probleme şi Întrebări" vor fi stocate aici.
Închis
Avatar utilizator
synthax2789
Nou Venit

Nou Venit
Mesaje: 5
Membru din: 07 Aug 2022, 15:52
Server: Metin2Super
Regat: Jinno
Aprecieri: 8  
Mulţumiri: 0
Discord: Copiază ID
Medalii

Salut , J4M .
Am o problema la negociere.
Merge sa dau negociaza, se deschide fereastra , merge sa pun yang , merge sa dau accept , numai ca nu merge sa pun iteme in casute.
Merge sa dau doar 1 item , adica daca pun item-ul pe caracter-ul respectiv se pune in slot , dar daca pun orice item pe casute nu merge.
Syserr-ul nu da nicio eroare.
Aveti vreo idee de la ce poate fi?

Am mai vazut un topic pe aici unde un baiat zicea ca a rezolvat de la uiexchange.py aceeasi problema si cred ca si la mine este tot de acolo , ma poate ajuta cineva va rog ?
Avatar utilizator
Fubuki.Atsuya
Nivel 9

Nivel 9
Mesaje: 1968
Membru din: 22 Iun 2015, 21:13
Server: OldLegion2
Regat: Shinsoo
Aprecieri: 455  
Mulţumiri: 815  
  Rezolvări prob.: 2
Discord: Copiază ID
Medalii

Ai implementat un sistem nou ceva? Aşa îţi face de când lucrezi pe svf? Ia şi fă un compare la uiexchange.py din clientul tău cu un uiexchange.py din alt client
https://text-compare.com/
Avatar utilizator
synthax2789
Nou Venit

Nou Venit
Mesaje: 5
Membru din: 07 Aug 2022, 15:52
Server: Metin2Super
Regat: Jinno
Aprecieri: 8  
Mulţumiri: 0
Discord: Copiază ID
Medalii

Nu am implementat nimic , asa face de cand lucrez pe el , e svf by athero cumparat de pe https://- cuvant ascuns - putin modificat , cel care l-a vandut a zis ca momentan nu ma poate ajuta ca nu e acasa si am nevoie de o rezolvare cat mai rapida , am comparat sunt diferite probabil din cauza sistemelor .
Avatar utilizator
Yanni
Nivel 1

Nivel 1
Mesaje: 55
Membru din: 28 Aug 2020, 18:43
Server: Propriu
Regat: Chunjo
Aprecieri: 164  
Mulţumiri: 0
Discord: Copiază ID
Medalii

Nu am eu multa experienta in domeniu, dar daca imi amintesc bine problema ta seamana cu una veche legata de alchimie, la fel si alchimia se putea muta cate 1 cristal de aceasi categorie odata. Dar nu am inteles exact daca poti pune mai multe iteme si nu se realizeaza negotul sau poti pune doar 1 singur item in inventar, o poză ceva nu strică. Incearca să vezi problema dacă e aceaşi cu aia de o are si alchimia sau dacă ai negoţul clasic bagă pe cel cu dublu slots. Daca nu te ajuta cu nimic imi pare rau atata pot sa fac si eu :)
Avatar utilizator
Yanni
Nivel 1

Nivel 1
Mesaje: 55
Membru din: 28 Aug 2020, 18:43
Server: Propriu
Regat: Chunjo
Aprecieri: 164  
Mulţumiri: 0
Discord: Copiază ID
Medalii

Yanni scrie: ↑14 Aug 2022, 21:52 Nu am eu multa experienta in domeniu, dar daca imi amintesc bine problema ta seamana cu una veche legata de alchimie, la fel si alchimia se putea muta cate 1 cristal de aceasi categorie odata. Dar nu am inteles exact daca poti pune mai multe iteme si nu se realizeaza negotul sau poti pune doar 1 singur item in inventar, o poză ceva nu strică. Incearca să vezi problema dacă e aceaşi cu aia de o are si alchimia sau dacă ai negoţul clasic bagă pe cel cu dublu slots. Daca nu te ajuta cu nimic imi pare rau atata pot sa fac si eu :)
Revin cu un edit, ai ceva probleme in uiexchange.py 100%, incearca sa pui mai multe iteme neg chiar daca nu apar ele dai accept si vezi daca s-au mutat sau nu, daca e asa problema e in uiexchange.py.
Avatar utilizator
synthax2789
Nou Venit

Nou Venit
Mesaje: 5
Membru din: 07 Aug 2022, 15:52
Server: Metin2Super
Regat: Jinno
Aprecieri: 8  
Mulţumiri: 0
Discord: Copiază ID
Medalii

Pai pot pune un item pe negociaza doar daca iau item-ul si il pun pe caracter , insa daca dau negociaza si incerc sa pun item-ul slot-ul nu functioneaza , o sa las mai jos si ce e in uiexchange.py in caz ca se pricepe cineva , si itemele se accepta intre ele fara probleme .













aici este uiexchange.py :
import player
import exchange
import net
import localeInfo
import chat
import item
import app
import ui
import mouseModule
import uiPickMoney
import wndMgr

###################################################################################################
## Exchange
class ExchangeDialog(ui.ScriptWindow):

def __init__(self):
ui.ScriptWindow.__init__(self)
self.TitleName = 0
self.tooltipItem = 0
self.xStart = 0
self.yStart = 0

def __del__(self):
ui.ScriptWindow.__del__(self)

def LoadDialog(self):
PythonScriptLoader = ui.PythonScriptLoader()
PythonScriptLoader.LoadScriptFile(self, "UIScript/exchangedialog.py")

## Owner
self.OwnerSlot = self.GetChild("Owner_Slot")
self.OwnerSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.SelectOwnerEmptySlot))
self.OwnerSlot.SetSelectItemSlotEvent(ui.__mem_func__(self.SelectOwnerItemSlot))
self.OwnerSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInOwnerItem))
self.OwnerSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
self.OwnerMoney = self.GetChild("Owner_Money_Value")
self.OwnerAcceptLight = self.GetChild("Owner_Accept_Light")
self.OwnerAcceptLight.Disable()
self.OwnerMoneyButton = self.GetChild("Owner_Money")
self.OwnerMoneyButton.SetEvent(ui.__mem_func__(self.OpenPickMoneyDialog))

## Target
self.TargetSlot = self.GetChild("Target_Slot")
self.TargetSlot.SetOverInItemEvent(ui.__mem_func__(self.OverInTargetItem))
self.TargetSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
self.TargetMoney = self.GetChild("Target_Money_Value")
self.TargetAcceptLight = self.GetChild("Target_Accept_Light")
self.TargetAcceptLight.Disable()

## PickMoneyDialog
dlgPickMoney = uiPickMoney.PickMoneyDialog()
dlgPickMoney.LoadDialog()
dlgPickMoney.SetAcceptEvent(ui.__mem_func__(self.OnPickMoney))
dlgPickMoney.SetTitleName(localeInfo.EXCHANGE_MONEY)
dlgPickMoney.SetMax(9)
dlgPickMoney.Hide()
self.dlgPickMoney = dlgPickMoney

## Button
self.AcceptButton = self.GetChild("Owner_Accept_Button")
self.AcceptButton.SetToggleDownEvent(ui.__mem_func__(self.AcceptExchange))

self.TitleName = self.GetChild("TitleName")
self.GetChild("TitleBar").SetCloseEvent(net.SendExchangeExitPacket)

def Destroy(self):
print "---------------------------------------------------------------------------- DESTROY EXCHANGE"
self.ClearDictionary()
self.dlgPickMoney.Destroy()
self.dlgPickMoney = 0
self.OwnerSlot = 0
self.OwnerMoney = 0
self.OwnerAcceptLight = 0
self.OwnerMoneyButton = 0
self.TargetSlot = 0
self.TargetMoney = 0
self.TargetAcceptLight = 0
self.TitleName = 0
self.AcceptButton = 0
self.tooltipItem = 0

def OpenDialog(self):
self.TitleName.SetText(localeInfo.EXCHANGE_TITLE % (exchange.GetNameFromTarget()))
self.AcceptButton.Enable()
self.AcceptButton.SetUp()
self.Show()

(self.xStart, self.yStart, z) = player.GetMainCharacterPosition()

def CloseDialog(self):
wndMgr.OnceIgnoreMouseLeftButtonUpEvent()

if 0 != self.tooltipItem:
self.tooltipItem.HideToolTip()

self.dlgPickMoney.Close()
self.Hide()

def SetItemToolTip(self, tooltipItem):
self.tooltipItem = tooltipItem

def OpenPickMoneyDialog(self):

if exchange.GetElkFromSelf() > 0:
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANT_EDIT_MONEY)
return

self.dlgPickMoney.Open(player.GetElk())

def OnPickMoney(self, money):
net.SendExchangeElkAddPacket(money)

def AcceptExchange(self):
net.SendExchangeAcceptPacket()
self.AcceptButton.Disable()

def SelectOwnerEmptySlot(self, SlotIndex):

if FALSE == mouseModule.mouseController.isAttached():
return

if mouseModule.mouseController.IsAttachedMoney():
net.SendExchangeElkAddPacket(mouseModule.mouseController.GetAttachedMoneyAmount())
else:
if app.ENABLE_SPECIAL_STORAGE:
if player.SLOT_TYPE_UPGRADE_INVENTORY == attachedSlotType or\
player.SLOT_TYPE_BOOK_INVENTORY == attachedSlotType or\
player.SLOT_TYPE_STONE_INVENTORY == attachedSlotType or\
player.SLOT_TYPE_CHEST_INVENTORY == attachedSlotType:
attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)

SrcSlotNumber = mouseModule.mouseController.GetAttachedSlotNumber()
DstSlotNumber = SlotIndex

itemID = player.GetItemIndex(attachedInvenType, SrcSlotNumber)
item.SelectItem(itemID)

if item.IsAntiFlag(item.ANTIFLAG_GIVE):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE)
mouseModule.mouseController.DeattachObject()
return

net.SendExchangeItemAddPacket(attachedInvenType, SrcSlotNumber, DstSlotNumber)

mouseModule.mouseController.DeattachObject()

def SelectOwnerItemSlot(self, SlotIndex):

if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():

money = mouseModule.mouseController.GetAttachedItemCount()
net.SendExchangeElkAddPacket(money)

def RefreshOwnerSlot(self):
for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
itemIndex = exchange.GetItemVnumFromSelf(i)
itemCount = exchange.GetItemCountFromSelf(i)
if 1 == itemCount:
itemCount = 0
self.OwnerSlot.SetItemSlot(i, itemIndex, itemCount)

if app.ENABLE_CHANGELOOK_SYSTEM:
itemTransmutedVnum = exchange.GetItemTransmutation(i, True)
if itemTransmutedVnum:
self.OwnerSlot.DisableCoverButton(i)
else:
self.OwnerSlot.EnableCoverButton(i)


self.OwnerSlot.RefreshSlot()

def RefreshTargetSlot(self):
for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
itemIndex = exchange.GetItemVnumFromTarget(i)
itemCount = exchange.GetItemCountFromTarget(i)
if 1 == itemCount:
itemCount = 0
self.TargetSlot.SetItemSlot(i, itemIndex, itemCount)

if app.ENABLE_CHANGELOOK_SYSTEM:
itemTransmutedVnum = exchange.GetItemTransmutation(i, False)
if itemTransmutedVnum:
self.TargetSlot.DisableCoverButton(i)
else:
self.TargetSlot.EnableCoverButton(i)

self.TargetSlot.RefreshSlot()

def Refresh(self):

self.RefreshOwnerSlot()
self.RefreshTargetSlot()

self.OwnerMoney.SetText(str(exchange.GetElkFromSelf()))
self.TargetMoney.SetText(str(exchange.GetElkFromTarget()))

if TRUE == exchange.GetAcceptFromSelf():
self.OwnerAcceptLight.Down()
else:
self.AcceptButton.Enable()
self.AcceptButton.SetUp()
self.OwnerAcceptLight.SetUp()

if TRUE == exchange.GetAcceptFromTarget():
self.TargetAcceptLight.Down()
else:
self.TargetAcceptLight.SetUp()

def OverInOwnerItem(self, slotIndex):

if 0 != self.tooltipItem:
self.tooltipItem.SetExchangeOwnerItem(slotIndex)

def OverInTargetItem(self, slotIndex):

if 0 != self.tooltipItem:
self.tooltipItem.SetExchangeTargetItem(slotIndex)

def OverOutItem(self):

if 0 != self.tooltipItem:
self.tooltipItem.HideToolTip()

def OnTop(self):
self.tooltipItem.SetTop()

def OnUpdate(self):

USE_EXCHANGE_LIMIT_RANGE = 1000

(x, y, z) = player.GetMainCharacterPosition()
if abs(x - self.xStart) > USE_EXCHANGE_LIMIT_RANGE or abs(y - self.yStart) > USE_EXCHANGE_LIMIT_RANGE:
(self.xStart, self.yStart, z) = player.GetMainCharacterPosition()
net.SendExchangeExitPacket()
Avatar utilizator
Yanni
Nivel 1

Nivel 1
Mesaje: 55
Membru din: 28 Aug 2020, 18:43
Server: Propriu
Regat: Chunjo
Aprecieri: 164  
Mulţumiri: 0
Discord: Copiază ID
Medalii

Pai si ai incercat ce am spus?, tu incearca sa bagi in negot chiar daca nu se vad itemele dai accept si vezi daca se muta mai multe iteme sau doar 1 care se vede.
Avatar utilizator
synthax2789
Nou Venit

Nou Venit
Mesaje: 5
Membru din: 07 Aug 2022, 15:52
Server: Metin2Super
Regat: Jinno
Aprecieri: 8  
Mulţumiri: 0
Discord: Copiază ID
Medalii

pai pot pune maxim 1 item pe negot ca efectiv trebuie sa iau sabia din inventar si sa o pun pe un alt player , asta e singuru mod in care pot pune obiecte la negot , si daca iau si o sabie si o armura nu ma lasa sa le pun pe amandoua pe rand , de exemplu pun sabia si ramane pusa apoi incerc sa pun armura si nu merge pusa armura , doar 1 item pus si asta ca il asez eu direct pe caracter , daca dau negociaza cuiva si incerc sa ii pun sabia pur si simplu nu merge nu o pune , itemele se vad toate , doar ca sabia imi ramane ca si cum as incerca sa o pun cand dau negociaza nu dispare ,nu se pune la negociaza dar nici nu dispare cand incerc sa o atasez pe acele sloturi pur si simplu ramane ca si cum n ai fi pus o doar ai fi dat click pe ea si atat !
Avatar utilizator
Yanni
Nivel 1

Nivel 1
Mesaje: 55
Membru din: 28 Aug 2020, 18:43
Server: Propriu
Regat: Chunjo
Aprecieri: 164  
Mulţumiri: 0
Discord: Copiază ID
Medalii

Iti recomand sa faci o copie la uiexchange.py inainte sa modifici ceva.
uite mai bine un link sa nu-ti dea mult de lucru cu tabu https://files.fm/f/nxwkvg4zh

#CAUTA IN UIEXCHANGE.PY def SelectOwnerEmptySlot(self, SlotIndex): INLOCUIESTE FUNCTIA CU URMATOAREA

def SelectOwnerEmptySlot(self, SlotIndex):

if False == mouseModule.mouseController.isAttached():
return

if mouseModule.mouseController.IsAttachedMoney():
net.SendExchangeElkAddPacket(mouseModule.mouseController.GetAttachedMoneyAmount())
else:
attachedSlotType = mouseModule.mouseController.GetAttachedType()
if (player.SLOT_TYPE_INVENTORY == attachedSlotType
or player.SLOT_TYPE_DRAGON_SOUL_INVENTORY == attachedSlotType):

attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
SrcSlotNumber = mouseModule.mouseController.GetAttachedSlotNumber()
DstSlotNumber = SlotIndex

itemID = player.GetItemIndex(attachedInvenType, SrcSlotNumber)
item.SelectItem(itemID)

if item.IsAntiFlag(item.ANTIFLAG_GIVE):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE)
mouseModule.mouseController.DeattachObject()
return

net.SendExchangeItemAddPacket(attachedInvenType, SrcSlotNumber, DstSlotNumber)

if app.ENABLE_SPECIAL_STORAGE:
if player.SLOT_TYPE_UPGRADE_INVENTORY == attachedSlotType or\
player.SLOT_TYPE_BOOK_INVENTORY == attachedSlotType or\
player.SLOT_TYPE_STONE_INVENTORY == attachedSlotType or\
player.SLOT_TYPE_CHEST_INVENTORY == attachedSlotType:
attachedInvenType = player.SlotTypeToInvenType(attachedSlotType)
SrcSlotNumber = mouseModule.mouseController.GetAttachedSlotNumber()
DstSlotNumber = SlotIndex

itemID = player.GetItemIndex(attachedSlotType, SrcSlotNumber)
item.SelectItem(itemID)

if item.IsAntiFlag(item.ANTIFLAG_GIVE):
chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.EXCHANGE_CANNOT_GIVE)
mouseModule.mouseController.DeattachObject()
return

net.SendExchangeItemAddPacket(attachedInvenType, SrcSlotNumber, DstSlotNumber)

mouseModule.mouseController.DeattachObject()

def SelectOwnerItemSlot(self, SlotIndex):

if player.ITEM_MONEY == mouseModule.mouseController.GetAttachedItemIndex():

money = mouseModule.mouseController.GetAttachedItemCount()
net.SendExchangeElkAddPacket(money)

#CAUTA def RefreshOwnerSlot(self): INLOCUIESTE TOATA FUNCTIA CU URMATOAREA

def RefreshOwnerSlot(self):
for i in xrange(exchange.EXCHANGE_ITEM_MAX_NUM):
itemIndex = exchange.GetItemVnumFromSelf(i)
itemCount = exchange.GetItemCountFromSelf(i)
if 1 == itemCount:
itemCount = 0
self.OwnerSlot.SetItemSlot(i, itemIndex, itemCount)
if app.ENABLE_CHANGELOOK_SYSTEM:
itemTransmutedVnum = exchange.GetItemTransmutation(i, True)
if itemTransmutedVnum:
self.OwnerSlot.DisableCoverButton(i)
else:
self.OwnerSlot.EnableCoverButton(i)
self.OwnerSlot.RefreshSlot()

#AI GRIJA LA TAB-URI VERIFICĂ BINE ÎN NOTEPAD++
Avatar utilizator
synthax2789
Nou Venit

Nou Venit
Mesaje: 5
Membru din: 07 Aug 2022, 15:52
Server: Metin2Super
Regat: Jinno
Aprecieri: 8  
Mulţumiri: 0
Discord: Copiază ID
Medalii

Am incercat , insa nu a functionat , nu mai porneste clientul
Ultima oară modificat 15 Aug 2022, 01:40 de către FRANCIS, modificat 1 dată în total.
Motiv: Suportul se oferă doar pe forum
Închis
Răspunsuri
3
Vizualizări
348
Răspunsuri
7
Vizualizări
460
Răspunsuri
2
Vizualizări
221
Răspunsuri
1
Vizualizări
222

Înapoi la “Arhivă Probleme şi Întrebări”

  • Informaţie