Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Нужна помощь
#1
Скачал 'вент Sweet Box Lottery
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 открывается окошко эвента.
Как можно сделать, чтобы сразу открывалось это окошко?
Ответ
#2
Можно
QUEST.addFirstTalkId(SWEETMANAGER)
Ответ
#3
Azagthtot Написал:Можно
QUEST.addFirstTalkId(SWEETMANAGER)

заменил
QUEST.addTalkId(SWEETMANAGER)
на
QUEST.addFirstTalkId(SWEETMANAGER)

и писал так

QUEST.addStartNpc(SWEETMANAGER)
QUEST.addTalkId(SWEETMANAGER)
QUEST.addFirstTalkId(SWEETMANAGER)

стандартный диалог вообще не открывается Sad
Ответ
#4
Я написал "менять"? Smile
Я сказал "добваить". И естественно обработчик onFirstTalk
Ответ
#5
Azagthtot Написал:Я написал "менять"? Smile
Я сказал "добваить". И естественно обработчик onFirstTalk

Вобщем разобраслся на вторые сутки блин.. Smile
Ответ
#6
С одной проблемой разделался.

Появился вопрос, как сделать проверку лвла игрока перед использованием эвента??
Пытался вставлять разные комбинации с кодом if st.getPlayer.getLevel() >= 60,
но все время ругается, то на htmltext, то на эту строку, то на ELSE
Ответ
#7
if (st.getPlayer.getLevel() >= 60)
Web программист\разработчик

— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Ответ
#8
[STIGMATED];147573 Написал:if (st.getPlayer.getLevel() >= 60)

if st.getPlayer().getLevel() >= 60
Ответ
#9
Вот так выглядит код

PHP код:
<?php 
if npcId == SWEETMANAGER:
if
cond == 0 and onlyone == 0 :
if (
st.getPlayer.getLevel() >= 60) : # Ограничение по уровню игроков. Т.е. не ниже 60 лвл
dsp = Display()
htmltext = dsp.MainWindow(self.Exchange,CHANCE,RATIO) # Если с уровнем все впорядке - можно проджолжать квест
else :
htmltext = "No lvl" # Если игрок слишком "молод"
st.exitQuest(1) # Выход из состояния квеста с удалением всех данных о нем из таблицы `character_quests`


и вот ошибка

PHP код:
<?php 
File
"__init__.py", line 141, in onFirstTalk
NameError
: npcId

at org
.python.core.Py.NameError(Unknown Source)
at org.python.core.PyFrame.getglobal(Unknown Source)
at org.python.pycode.serializable._pyx1321020596917.onFirstTalk$14(__init__.py:141)
at org.python.pycode.serializable._pyx1321020596917.call_function(__init__.py)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyObject._jcallexc(Unknown Source)
at org.python.core.PyObject._jcall(Unknown Source)
at org.python.proxies.main$Quest$387.onFirstTalk(Unknown Source)
at com.l2jserver.gameserver.model.quest.Quest.notifyFirstTalk(Quest.java:523)
at handlers.actionhandlers.L2NpcAction.action(L2NpcAction.java:140)
at com.l2jserver.gameserver.model.L2Object.onAction(L2Object.java:277)
at com.l2jserver.gameserver.model.L2Object.onAction(L2Object.java:270)
at com.l2jserver.gameserver.network.clientpackets.Action.runImpl(Action.java:122)
at com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:62)
at com.l2jserver.gameserver.network.L2GameClient.run(L2GameClient.java:1097)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Ответ
#10
Код:
if [B][color=Red]npc.getNpcId() [/color][/B]== SWEETMANAGER:
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Нужна помощь с ошибкой Dominion_KillSpecialUnitQuest RuSmith 1 2,230 10-12-2020, 12:36 PM
Последний пост: DOBA
  Срочно нужна помощь "Платно" SiniyVov4 8 2,683 04-04-2018, 09:30 AM
Последний пост: SiniyVov4
  Нужна помощь с крафтом Mouzes 0 973 12-22-2015, 07:20 AM
Последний пост: Mouzes
  нид помощь MaxLindvior 8 2,147 12-12-2015, 07:19 PM
Последний пост: Gaikotsu
  BufferHolder от Ro0TT нужна помощь Masone 6 2,271 01-28-2015, 06:12 PM
Последний пост: Masone
  Нужна Помощь RekpyT 5 1,702 09-13-2014, 03:04 PM
Последний пост: Donatte
  Нужна помощь по бафферу Lordy 6 1,834 09-23-2013, 06:47 PM
Последний пост: ExLite
  Нужна помощь не сохраняются бафы Imp. Gadzhishka 6 1,837 08-17-2013, 10:47 AM
Последний пост: DiagoD
  Помощь с скриптами Jigulixa 9 2,223 05-06-2013, 08:25 PM
Последний пост: SoniPro
  PTS Нужна помощь с skilldata DeMor 9 3,008 03-24-2013, 05:28 PM
Последний пост: Zubastic

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)