Util pentru GM - pentru a testa dropuri.
Poti seta dintr-o fereastra drop custom.
De exemplu: Setez drop exp: 50%, drop yang: 235%, drop iteme: 93%
*Poze / Video:
*Link download / Code:
Deschidem cmd.cpp si cautam:
Code:
struct command_info cmd_info[] =Adaugam:
Cautam:
Code:
{ "\n", NULL, 0, POS_DEAD, GM_IMPLEMENTOR }Adaugam:
Deschidem cmd_gm.cpp si adaugam:
Deschidem priv_manager.cpp si cautam:
Code:
value = MINMAX(0, value, 100);Modificam:
Deschidem interfaceModule.py si adaugam sub imports:
Code:
import uiPersonalDropManagerCode:
self.wndGuildBuilding = NoneAdaugam:
Cautam:
Code:
self.wndChatLog = wndChatLogAdaugam:
Cautam:
Code:
if self.wndGuildBuilding:
self.wndGuildBuilding.Destroy()Adaugam:
Cautam:
Code:
del self.wndGuildBuildingAdaugam:
Cautam:
Code:
if self.wndExpandedTaskBar:
self.wndExpandedTaskBar.Hide()Adaugam:
Cautam:
Code:
def ShowGift(self):
self.wndTaskBar.ShowGift()Adaugam:
Deschidem game.py si cautam:
Code:
"mall" : self.__InGameShop_Show,Adaugam:
Adaugam:
Facem un fisier nou uiPersonalDropManager.py :
Code:
import app
import player
import net
import chat
import grp
import dbg
import ui
import localeInfo
import uiToolTip
import uiCommon
from _weakref import proxy
WINDOW_WIDTH = 305
WINDOW_HEIGHT = 185
SLIDER_LIMITS = (0, 250)
DEFAULT_SLIDER_VALUE = 100
class PersonalDropWindow(ui.ScriptWindow):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__children = {}
self.__BuildWindow()
def __del__(self):
ui.ScriptWindow.__del__(self)
def __ValueToSliderPos(self, value):
minValue, maxValue = SLIDER_LIMITS
if maxValue <= minValue:
return 0.0
if value < minValue: value = minValue
elif value > maxValue: value = maxValue
return float(value - minValue) / float(maxValue - minValue)
def __SliderPosToValue(self, pos):
minValue, maxValue = SLIDER_LIMITS
if pos < 0.0: pos = 0.0
elif pos > 1.0: pos = 1.0
value = minValue + (maxValue - minValue) * pos
return int(round(value))
# -------------------------------------------------------------------------
def __BuildWindow(self):
# Root window
self.SetWindowName("PersonalDropWindow")
self.SetSize(WINDOW_WIDTH, WINDOW_HEIGHT)
self.SetCenterPosition()
self.AddFlag("movable")
self.AddFlag("float")
# Main board
board = ui.BoardWithTitleBar()
board.SetParent(self)
board.SetSize(WINDOW_WIDTH, WINDOW_HEIGHT)
board.SetPosition(0, 0)
board.SetTitleName("PersonalDrop")
board.SetCloseEvent(self.Close)
board.AddFlag("attach")
board.Show()
self.__children["board"] = board
SLIDER_TYPES = ("exp", "gold", "item")
for i, sliderType in enumerate(SLIDER_TYPES):
sliderTitle = ui.TextLine()
sliderTitle.SetParent(board)
sliderTitle.SetText(sliderType + ":")
sliderTitle.SetPosition(30, 40 + (30 * i + 10))
sliderTitle.Show()
self.__children["{}_title".format(sliderType)] = sliderTitle
sliderSlider = ui.SliderBar()
sliderSlider.SetParent(board)
sliderSlider.SetSize(WINDOW_WIDTH, 10)
sliderSlider.SetPosition(30 + 35, 40 + (30 * i + 10))
sliderSlider.SetSliderPos(self.__ValueToSliderPos(DEFAULT_SLIDER_VALUE))
sliderSlider.SetEvent(lambda sliderType=sliderType: self.OnSliderChange(sliderType))
sliderSlider.Show()
self.__children["{}_slider".format(sliderType)] = sliderSlider
sliderValue = ui.TextLine()
sliderValue.SetParent(board)
sliderValue.SetText(str(DEFAULT_SLIDER_VALUE))
sliderValue.SetPosition(190 + 70, 40 + (30 * i + 10) - 2)
sliderValue.Show()
self.__children["{}_value".format(sliderType)] = sliderValue
confirmButton = ui.Button()
confirmButton.SetParent(board)
confirmButton.SetUpVisual("d:/ymir work/ui/public/large_button_01.sub")
confirmButton.SetOverVisual("d:/ymir work/ui/public/large_button_02.sub")
confirmButton.SetDownVisual("d:/ymir work/ui/public/large_button_03.sub")
confirmButton.SetText("Confirm")
confirmButton.SetPosition(100, 150)
confirmButton.SetEvent(ui.__mem_func__(self.OnConfirmButtonClick))
confirmButton.Show()
self.__children["confirm_button"] = confirmButton
def OnConfirmButtonClick(self):
expValue = self.__children["exp_value"].GetText()
goldValue = self.__children["gold_value"].GetText()
itemValue = self.__children["item_value"].GetText()
# dbg.TraceError("Confirm button clicked {} {} {}".format(expValue, goldValue, itemValue))
net.SendChatPacket("/personal_drop_mgr {} {} {}".format(expValue, goldValue, itemValue))
def OnSliderChange(self, sliderType):
pos = self.__children["{}_slider".format(sliderType)].GetSliderPos()
self.__children["{}_value".format(sliderType)].SetText(str(self.__SliderPosToValue(pos)))
# dbg.TraceError("Slider({}) changed: {}".format(sliderType, self.__SliderPosToValue(pos)))
def Open(self):
if self.IsShow():
return
self.Show()
self.SetTop()
def Close(self):
self.Hide()
def ToggleWindow(self):
if self.IsShow():
self.Close()
else:
self.Open()
def Destroy(self):
self.Close()
self.ClearDictionary()
def OnPressEscapeKey(self):
self.Close()
return True
def OnKeyDown(self, key):
if key == app.DIK_ESC:
self.OnPressEscapeKey()
return True
return False
# window = PersonalDropWindow()
# window.Open()
Code:
quest personal_drop_mgr begin
state start begin
when login with pc.is_gm() begin
set_state(run)
end
end
state run begin
when letter begin
send_letter("<GM> Personal Drop")
end
when button or info begin
cmdchat("open_personal_drop_mgr")
end
end
end

la acest mesaj și conținutul se va afișa automat.

