Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Quest button usuwanie przedmiotu oraz bonusy


Rekomendowane odpowiedzi

Opublikowano

Witam, zrobiłem sobie boczny panel i opcję usuwania przedmiotu. Tylko, że to nie działa. Quest zadziała bo gdy przeciągne item na handlarkę to jest ok ale w przypadku buttona to nie działa. Prośże o poprawę tego questa albo napisanie nowego pod button. Oto ten quest:

 

http://wklej.to/TfQiX

 

 

A druga sprawa dotyczy bonusów. Mam tabelkę z bonusami pod przyciskiem x i chciałbym, aby po kliknięciu buttona wyświetlała mi się ta tabelka. Czy ktoś wie jak napisać takiego questa?

Opublikowano

Aby usunąć przedmiot po przeciągnięciu go na button musisz pobrać jego slot z eq a potem wskazać z któego slotu chcesz usuwać.

 

@Edit np. cos takiego:

 

  when button or info begin
   cmdchat("GetInputStart")
   local slot = tonumber(input(cmdchat("GetInput")))
   cmdchat("GetInputStop")
   local y = item.select_cell(slot)
   if y != 0 then
    item.remove()
   end
  end
Opublikowano

Tak tylko jeszcze musisz w cliencie pobrać id slotu w sumie to masz cały kod:

(tak na szybko pisane)

constinfo:

KoszItem = 0

game:

"KoszQuest"    : self.kosz_quest,
 
 
 def kosz_quest(self, qid):
  constInfo.KoszItem = int(qid)[/code]

uiinventory:

self.SwitchKoszButton = self.GetChild2("koszbutton")
   self.KoszSlot = ui.GridSlotWindow()
   self.KoszSlot.SetParent(self.SwitchKoszButton)
   self.KoszSlot.SetSize(32, 32)
   self.KoszSlot.SetPosition(0, 0)
   self.KoszSlot.SetOverInItemEvent(ui.__mem_func__(self.OverKoszIn))
   self.KoszSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverKoszOut))
   self.KoszSlot.SetSelectEmptySlotEvent(ui.__mem_func__(self.AddKoszItem))
   self.KoszSlot.Show()
   self.KoszSlot.ArrangeSlot(0, 1, 1, 32, 32, 0, 0)
 
 
   self.RemoveQuestion = uiCommon.QuestionDialog()
   self.RemoveQuestion.SetAcceptEvent(lambda arg = TRUE: self.UsunItem(arg))
   self.RemoveQuestion.SetCancelEvent(lambda arg = FALSE: self.UsunItem(arg))
   self.RemoveQuestion.Close()
 def OverKoszIn(self):
  self.ShowToolTip(0)

 def OverKoszOut(self):
  self.tooltipItem.HideToolTip()

 def AddKoszItem(self):
  if mouseModule.mouseController.isAttached():
   attachedSlotType = mouseModule.mouseController.GetAttachedType()
   attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
   attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex()
   if player.SLOT_TYPE_INVENTORY == attachedSlotType:
    item.SelectItem(attachedSlotVnum)
    self.RemoveQuestion.SetText("Czy chcesz usun?? "+str(item.GetItemName())+"?")
    self.RemoveQuestion.Open()
    ##zapisujemy slot przedmiotu
    constInfo.KoszItem = attachedSlotPos
   mouseModule.mouseController.DeattachObject()
 
 def UsunItem(self, arg):
  if arg:
   event.QuestButtonClick(constInfo.KoszGuiQuest)
   net.SendQuestInputStringPacket(str(constInfo.KoszItem))
  self.RemoveQuestion.Close()

locale inventorywindow

 

    {
     "name" : "koszbutton",
     "type" : "image",
     "x" : 11,
     "y" : 402,
     
     #"tooltip_text" : "Usuń przedmiot",
     
     #"tooltip_x" : -45,
     #"tooltip_y" : 6,
     "image" : "d:/ymir work/ui/public/Slot_Base.sub",
    },

 

Dało by się to lepiej napisać no ale jak pisałem tak na szybko.

Opublikowano

Bez tego co teraz napisałes działa mi to na tej zasadzie że: klikam button wyświetla mi się okienko, wpisuje na przykład 7 i usuwa mi item który lezy na siódmym polu w eq. Czy tak to ma działać czy jak dodam to co teraz napisałeś to bedzie to inaczej działało?

Opublikowano

Bez tego co teraz napisałes działa mi to na tej zasadzie że: klikam button wyświetla mi się okienko, wpisuje na przykład 7 i usuwa mi item który lezy na siódmym polu w eq. Czy tak to ma działać czy jak dodam to co teraz napisałeś to bedzie to inaczej działało?

Jak dodasz to co teraz napisałem to po przeciągnięciu przedmiotu na button będzie pytało czy chcesz go usunąć.

 

Pamiętaj o TAB'ach.

Opublikowano

Nie odpala mi się klient, taki błąd w syserr:
 
networkModule.SetSelectCharacterPhase - <type 'exceptions.IndentationError'>:unindent does not match any outer indentation level (uiInventory.py, line 1325)

 

 

def OverKoszIn(self):
self.ShowToolTip(0)

def OverKoszOut(self):
self.tooltipItem.HideToolTip()

def AddKoszItem(self):
if mouseModule.mouseController.isAttached():
attachedSlotType = mouseModule.mouseController.GetAttachedType()
attachedSlotPos = mouseModule.mouseController.GetAttachedSlotNumber()
attachedSlotVnum = mouseModule.mouseController.GetAttachedItemIndex()
if player.SLOT_TYPE_INVENTORY == attachedSlotType:
item.SelectItem(attachedSlotVnum)
self.RemoveQuestion.SetText("Czy chcesz usun?? "+str(item.GetItemName())+"?")
self.RemoveQuestion.Open()
##zapisujemy slot przedmiotu
constInfo.KoszItem = attachedSlotPos
mouseModule.mouseController.DeattachObject()

def UsunItem(self, arg):
if arg:
event.QuestButtonClick(constInfo.KoszGuiQuest)
net.SendQuestInputStringPacket(str(constInfo.KoszItem))

self.RemoveQuestion.Close()

 

Opublikowano

Mam teraz taki problem ze gdy przeciągam na button przedmiot to pisze mi czy chce usunac przedmiot i nie moge kliknąć tak, poprostu klikam ale nic sie nie dzieje.

 

 

0325 20:08:43264 :: File "ui.py", line 1020, in CallEvent

0325 20:08:43264 :: File "uiInventory.py", line 332, in

0325 20:08:43264 :: File "uiInventory.py", line 1347, in UsunItem

0325 20:08:43264 :: AttributeError
0325 20:08:43264 :: :
0325 20:08:43264 :: 'module' object has no attribute 'KoszGuiQuest'
0325 20:08:43264 ::

0325 20:08:44073 :: Traceback (most recent call last):

0325 20:08:44073 :: File "ui.py", line 1020, in CallEvent

0325 20:08:44073 :: File "uiInventory.py", line 332, in

 

0325 20:08:44073 :: File "uiInventory.py", line 1347, in UsunItem

 

Opublikowano

constifno dodaj jeszcze

KoszItemQuest = 0

game:

zmień na

def kosz_quest(self, qid):
  constInfo.KoszItemQuest = int(qid)

uiinventory:

def UsunItem(self, arg):
  if arg:
   event.QuestButtonClick(constInfo.KoszItemQuest)
   net.SendQuestInputStringPacket(str(constInfo.KoszItem))
  self.RemoveQuestion.Close()
Opublikowano

 

quest koszbutton begin
 state start begin
  when login begin
   cmdchat("KoszQuest "..q.getcurrentquestindex())
  end
  when button or info begin
   cmdchat("GetInputStart")
   local slot = tonumber(input(cmdchat("GetInput")))
   cmdchat("GetInputStop")
   local y = item.select_cell(slot)
   if y != 0 then
    item.remove()
   end
  end
 end
end

Wgraj, zresetuj serwer.

Opublikowano

Dzięki działa. Tylko jest jeszcze taki jeden mały problem. Klikam "tak" item się usuwa ale zaraz po tym pojawia mi się to okienko gdzie wpisuję numer pola. Pozostałość po tym poprzednim queście? Użyłem komendy /qc i potem wgrałem na nowo tego questa, ale dalej to samo.

Opublikowano

game:

szukasz

def OpenQuestWindow(self, skin, idx):

zmieniasz na:

http://wklej.to/KeyIX

potem dodajesz to:

http://wklej.to/ecDcb

interfacemodule:

http://wklej.to/GOkiY

no i oczywiście constinfo:

INPUT_IGNORE = 0
INPUT_DATA = ""

oraz sprawdz czy masz import constInfo

 

@Edit jeśli nie masz to dodaj jeszcze to:

quest_functions

 

get_input

questlib.lua

 

http://wklej.to/GHZVQ
Opublikowano

Taki bład teraz mi się pojawia:

 

 

0326 11:54:17287 :: File "
0326 11:54:17287 :: game.py
0326 11:54:17287 :: ", line
0326 11:54:17287 :: 705
0326 11:54:17287 ::

0326 11:54:17287 ::
0326 11:54:17287 :: "GetInputStart" : self.__GetInputStart,

0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 ::
0326 11:54:17287 :: ^

0326 11:54:17287 :: SyntaxError
0326 11:54:17287 :: :
0326 11:54:17287 :: invalid syntax
0326 11:54:17287 ::

 

 

Tak wygląda ten fragment kodu:

http://wklej.to/bnJSr

Opublikowano

Bo źle dodałeś:

 

   "GetInputStart"   : self.__GetInputStart,
   "GetInputStop"   : self.__GetInputStop,
   "GetInput"    : self.__GetInput,

 

dodajesz w :

 

 def __ServerCommand_Build(self):
  serverCommandList={
Opublikowano

No to dziękuje ci bardzo. Wszystko działa. A wiesz jak podpiąć pod button tabelke z bonusami która mam pod klawiszem x ?

Edit: Jeszcze jak sobie najeżdżam na ten button to nie wyświetla mi się napis: "Usuwanie przedmiotu"

Opublikowano

No to dziękuje ci bardzo. Wszystko działa. A wiesz jak podpiąć pod button tabelke z bonusami która mam pod klawiszem x ?

Edit: Jeszcze jak sobie najeżdżam na ten button to nie wyświetla mi się napis: "Usuwanie przedmiotu"

Masz w inventorywindow w buttonie krzaczek na poczatku a dokladnie tu #"tooltip_text" : "Usuń przedmiot",

Zrob aby bylo tak

"tooltip_text" : "Usuń przedmiot",

Opublikowano

Cały czas tak jest. Bo tych aktualizacjach od kolegi, który mi bardzo pomógł nie wyświetla się ten tekst bo zasłania go niewidoczne pole na które trzeba wrzucić przedmiot aby go usunąć.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...