11-08-2011, 05:52 PM
Скачал 'вент Sweet Box Lottery
http://la2-strike.ru/la2_interlude/la2_i...ttery.html
адаптировал под l2jserver, но есть небольшая проблема
http://la2-strike.ru/la2_interlude/la2_i...ttery.html
адаптировал под l2jserver, но есть небольшая проблема
PHP код:
<?php
# Config
SWEETMANAGER=10020
CHANCE=50.0 # Шанс успешного выигрыша в процентах.
ShowChance=0 # Показать(1)/Скрыть(0) шанс на экране.
RATIO=1.50 # Коэффициент выигрыша.
ShowRatio=0 # Показать(1)/Скрыть(0) коэффициент на экрае.
# ОСТОРОЖНО: не указывайте нестопковые предметы, т.к. при высоком коэффициенте
# вы "положете" свою базу данных.
MoneyTypes=[57,4037] # Список ID предметов меню. Не более 5-ти стопковых предметов.
# 57 - Adena
# 4037 - Coin of Luck
class Display :
def createItemList(self, exchangeData):
bypassText = ""
for i in exchangeData :
bypassText += i[1]+";"
return bypassText
def CheatMsg(self): return "wcheat.htm"
def EmptyCountMsg(self):
return u"\u0412\u044B \u043D\u0435 \u0432\u0432\u0435\u043B\u0438 \u0441\u0432\u043E\u044E \u0441\u0442\u0430\u0432\u043A\u0443. \u041F\u043E\u0436\u0430\u043B\
\u0443\u0439\u0441\u0442\u0430, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0441\u0442\u0430\u0432\u043A\u0443 (\u043A\u0430\u043F\u0438\u0442\u0430\u043B)."
def InvalidCountMsg(self) :
return u"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 \u0441\u0442\u0440\u043E\u043A\u0435. \
\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043B\u043E 1-900000000."
def InvalidInputMsg(self) :
return u"\u041D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0435 \u0441\u0438\u043C\u0432\u043E\u043B\u044B \u0432 \u0441\u0442\u0440\
\u043E\u043A\u0435, \u0432\u0432\u043E\u0434\u0438\u0442\u044C \u043C\u043E\u0436\u043D\u043E \u0442\u043E\u043B\u044C\u043A\u043E \u0446\u0438\u0444\u0440\u044B."
def WinningMsg(self) :
return "win.htm"
def LossMsg(self) :
return "loss.htm"
def NotEnoughItemsMsg(self, itemName) :
return u"\u0414\u043B\u044F \u0442\u0430\u043A\u043E\u0439 \u0441\u0442\u0430\u0432\u043A\u0438 \u0432 \u0432\u0430\u0448\u0435\u043C \u0440\u044E\u043A\u0437\u0430\u043A\u0435 \
\u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 "+itemName+"."
def MainWindow(self, exchangeData, chance, ratio):
textChance = textRatio = ""
ratio = "%2.2f" % ratio
chance = "%-.d" % chance
textHeader = u"<html><title>\u042D\u0432\u0435\u043D\u0442 Sweet Lottery</title><body><table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\
<tr><td width=32><img src=\"Icon.Item_CanUse04\" width=32 height=32></td><td width=206 align=\"center\"><font color=\"FF9966\">SWEET Lottery</font></td>\
<td width=32><img src=\"Icon.Item_CanUse04\" width=32 height=32></td></tr></table><br>\u0427\u0442\u043E\u0431\u044B \u0441\u044B\u0433\u0440\u0430\u0442\
\u044C \u0432 \u043B\u043E\u0442\u0435\u0440\u0435\u044E Sweet Box, \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u043B\u044E\u0442\u0443 \
\u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430 \u043D\u0438\u0436\u0435 \u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0435\u0435 \u043A\u043E\
\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E. \u0412\u0430\u0448 \u043A\u0430\u043F\u0438\u0442\u0430\u043B \u0432 \u0441\u043B\u0443\u0447\u0430\u0435 \
\u0432\u044B\u0438\u0433\u0440\u044B\u0448\u0430 \u043E\u043D \u0431\u0443\u0434\u0435\u0442 \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D.<br>\
<img src=\"L2UI.SquareWhite\" width=270 height=1><br><table cellpadding=\"8\" cellspacing=\"0\" border=\"0\">"
if ShowChance : textRatio = u"<tr><td width=150>\u041A\u043E\u044D\u0444\u0444\u0438\u0446\u0438\u0435\u043D\u0442 \u0432\u044B\u0438\u0433\u0440\u044B\u0448\u0430:\
</td><td width=100><font color=\"00CCCC\">"+ratio+u"</font></td></tr>"
if ShowRatio : textChance = u"<tr><td width=150>\u0428\u0430\u043D\u0441:</td><td width=100><font color=\"00CCCC\">"+chance+u"%</font></td></tr>"
textFooter = u"<tr><td width=150><font color=\"LEVEL\">\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0430\u043B\u044E\u0442\u0443:</font></td>\
<td width=100><combobox width=\"100\" var=\"cytype\" list="+self.createItemList(exchangeData)+u"></td></tr><tr><td width=150><font color=\"LEVEL\">\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \
\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E:</font></td><td width=100><edit var=\"count\" width=\"100\" length=\"10\"></td></tr></table><br><br>\
<center><button action=\"bypass -h Quest "+qn+u" $cytype $count\" value=\"\u0421\u044B\u0433\u0440\u0430\u0442\u044C\" width=76 height=21 back=\"L2UI_ch3.Btn1_normalOn\" \
fore=\"L2UI_ch3.Btn1_normal\"></center><br><br><table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr><td width=\"100\"></td><td width=\"170\">\
<img src=\"L2UI.SquareGray\" width=\"170\" height=\"1\"><br></td></tr><tr><td width=\"100\"></td><td width=\"170\" align=\"right\">\
<font color=\"3b3b3b\">Powered by Hlorka Dev. Group</font></td></tr></table></body></html>"
return textHeader+textRatio+textChance+textFooter
class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.Exchange = []
itemTable = ItemTable.getInstance()
for i in MoneyTypes :
ItemName=itemTable.getTemplate(i).getName()
tempItem = (i, ItemName.replace(" ","_"))
self.Exchange.append(tempItem)
def onEvent (self,event,st) :
disp = Display()
bypass = event.split(" ")
if len(bypass) != 2 :
st.playSound("ItemSound3.sys_shortage")
return disp.EmptyCountMsg()
if not Pattern.matches('^\d{1,10}$',bypass[1]) :
st.playSound("ItemSound3.sys_shortage")
return disp.InvalidInputMsg()
bypassItemName = bypass[0]
bypassItemCount = int(bypass[1])
if not (bypassItemCount > 0 and bypassItemCount < 900000000) :
st.playSound("ItemSound3.sys_shortage")
return disp.InvalidCountMsg()
htmltext = disp.CheatMsg()
for i in self.Exchange :
if bypassItemName == i[1] :
if st.getQuestItemsCount(i[0]) >= bypassItemCount :
if Rnd.get(1000) < CHANCE*10 :
st.giveItems(i[0],int(bypassItemCount*RATIO))
st.playSound("ItemSound3.sys_make_success")
htmltext = disp.WinningMsg()
break
else :
st.takeItems(i[0],bypassItemCount)
st.playSound("ItemSound3.sys_make_fail")
htmltext = disp.LossMsg()
break
st.playSound("ItemSound3.sys_shortage")
htmltext = disp.NotEnoughItemsMsg(i[1])
break
st.exitQuest(1)
return htmltext
def onTalk (self,npc,player):
st = player.getQuestState(qn)
htmltext = "Internal Error. Please Contact your admin."
if not st: return htmltext
dsp = Display()
htmltext = dsp.MainWindow(self.Exchange,CHANCE,RATIO)
return htmltext
QUEST = Quest(4090,qn,"custom")
QUEST.addStartNpc(SWEETMANAGER)
QUEST.addTalkId(SWEETMANAGER)
когда щелкаю по нпс, открывается стандартный диалог
Цитата:I have nothing to say to you
Quest
и только когда щелкаю по Quest открывается окошко эвента.
Как можно сделать, чтобы сразу открывалось это окошко?