Перейти к содержанию
Авторизация  
Gatsby

Подправить Бафера

Рекомендуемые сообщения

В общем имеется бафер с профилями на питоне.

 

 

import sys
from ru.catssoftware.sql import DatabaseFactory
from ru.catssoftware.gameserver.model.quest import State
from ru.catssoftware.gameserver.model.quest import QuestState
from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest
from ru.catssoftware.gameserver.model.actor.instance import L2PcInstance
from ru.catssoftware.gameserver.model import L2Skill
from java.util import Iterator
from ru.catssoftware.gameserver.datatables import SkillTable
qn = "1247_buffer"
NPC = [40002]
ACCEPT_BUFF = [1040, 1068, 1035, 1043, 1044, 1397, 1303,
1257, 1304, 1077, 1078, 1085, 1311, 1032,
1036, 1045, 1048, 4352, 4357, 4391, 4403, 4405,
1243, 1388, 1389, 1087, 1259, 1059, 1268, 1062, 1242, 1240, 1086, 1204, 1363]
ACCEPT_DANCES = [271, 272, 273, 274, 275, 276, 277, 307, 309,
310, 311, 365]
ACCEPT_SONGS = [364, 264, 306, 269, 270, 265, 363, 349, 308,
305, 304, 267, 266, 268]
ACCEPT_CHANTS = [1251, 1252, 1253, 1284, 1006, 1007, 1009, 1362,
1310, 1309, 1308, 1391, 1390]
ACCEPT_SPECIAL = [1364, 1356, 1355, 1357, 1413, 4702, 4703, 4700,
4699, 1323]
ACCEPT_RESISTS = [1393, 1392, 1182, 1189, 1191, 1352, 1353, 1073, 1354, 1033]
QuestId = -1
QuestName = "Buffer"
QuestDesc = "custom"
print qn + "Buffer 1247 Loaded..."
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent(self, event, st):
htmltext = "Sory, failed Event"
ownerid = st.getPlayer().getObjectId()
effects = st.getPlayer().getAllEffects()
if event.startswith("page_") :
page = int(event.replace("page_", ""))
htmltext = str(page) + ".htm"
elif event == "cancel" :
st.getPlayer().stopAllEffects()
htmltext = "1.htm"
activePage = 1
elif event == "heal":
st.playSound("ItemSound.quest_middle")
st.getPlayer().getStatus().setCurrentHp(st.getPlayer().getMaxHp())
st.getPlayer().getStatus().setCurrentMp(st.getPlayer().getMaxMp())
st.getPlayer().getStatus().setCurrentCp(st.getPlayer().getMaxCp())
return "1.htm"
st.setState(State.COMPLETED)
elif event == "fulmage":
st.playSound("ItemSound.quest_middle")
SkillTable.getInstance().getInfo(1085,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1059,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1078,6).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1204,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1048,6).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1397,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1303,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1040,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1035,4).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1062,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(273,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(276,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(4703,13).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(349,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(268,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(363,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(365,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1413,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1036,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1389,3).getEffects(st.getPlayer(),st.getPlayer())
return "1.htm"
st.setState(State.COMPLETED)
elif event == "fulvoin":
st.playSound("ItemSound.quest_middle")
SkillTable.getInstance().getInfo(1068,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1040,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1086,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1204,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1077,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1242,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1268,4).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1035,4).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1036,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1045,6).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1388,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1363,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(271,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(275,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(274,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(269,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(264,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(268,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(304,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(364,1).getEffects(st.getPlayer(),st.getPlayer())
return "1.htm"
st.setState(State.COMPLETED)
elif event == "alldance":
SkillTable.getInstance().getInfo(274,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(277,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(272,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(273,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(276,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(271,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(275,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(309,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(311,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(307,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(310,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(365,1).getEffects(st.getPlayer(),st.getPlayer())
return "1.htm"
st.setState(State.COMPLETED)
elif event == "flu":
SkillTable.getInstance().getInfo(4553,4).getEffects(st.getPlayer(),st.getPlayer())
return "1.htm"
st.setState(State.COMPLETED)
elif event == "malaria":
SkillTable.getInstance().getInfo(4554,4).getEffects(st.getPlayer(),st.getPlayer())
return "1.htm"
st.setState(State.COMPLETED)

elif event == "allsong":
SkillTable.getInstance().getInfo(267,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(270,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(268,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(269,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(265,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(264,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(266,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(306,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(304,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(308,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(305,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(363,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(349,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(364,1).getEffects(st.getPlayer(),st.getPlayer())
return "1.htm"
st.setState(State.COMPLETED)

elif event.startswith("buff_") :
id_lvl = event.replace("buff_", "")
id_lvl = id_lvl.split("_")
SkillTable.getInstance().getInfo(int(id_lvl[0]), int(id_lvl[1])).getEffects(st.getPlayer(), st.getPlayer())
htmltext = str(int(id_lvl[2])) + ".htm"
elif event.startswith("profile_") :
act = event.replace("profile_", "")
con = DatabaseFactory.getInstance().getConnection()
if act.startswith("buff_") :
act = str(int(act.replace("buff_", "")))
sql = con.prepareStatement("SELECT * FROM profile_buff WHERE char_id = ? AND pindex = ?")
sql.setInt(1, int(ownerid))
sql.setInt(2, int(act))
rs = sql.executeQuery()
rs.next()
full_buffs = rs.getString("skills").split(";")
sql.close()
rs.close()
for buff in full_buffs :
if buff != "" :
buff = buff.split(",")
SkillTable.getInstance().getInfo(int(buff[0]), int(buff[1])).getEffects(st.getPlayer(), st.getPlayer())

htmltext = "1.htm"
elif act.startswith("save_") :
act = str(int(act.replace("save_", "")))
sqll = con.prepareStatement("DELETE FROM profile_buff WHERE char_id = ? AND pindex = ?")
sqll.setInt(1, int(ownerid))
sqll.setInt(2, int(act))
sqll.execute()
sqll.close()
saving = "++"
for eff in effects :
eff_id = eff.getSkill().getId()
eff_level = eff.getSkill().getLevel()
if saving == "++" :
if (eff_id in ACCEPT_BUFF or eff_id in ACCEPT_DANCES or eff_id in ACCEPT_SONGS or eff_id in ACCEPT_CHANTS or eff_id in ACCEPT_SPECIAL or eff_id in ACCEPT_RESISTS) :
saving = str(eff_id) + "," + str(eff_level) + ";"
else :
if (eff_id in ACCEPT_BUFF or eff_id in ACCEPT_DANCES or eff_id in ACCEPT_SONGS or eff_id in ACCEPT_CHANTS or eff_id in ACCEPT_SPECIAL or eff_id in ACCEPT_RESISTS) :
saving += str(eff_id) + "," + str(eff_level) + ";"
sql = con.prepareStatement("INSERT INTO profile_buff (char_id, pindex, skills) VALUES ('" + str(ownerid) + "', '" + str(act) + "', '" + saving + "')")
sql.execute()
sql.close()
htmltext = "1.htm"
con.close()
return htmltext
def onTalk (self, npc, player):
htmltext = "1.htm"
st = player.getQuestState(qn)
if not st : return htmltext
npcId = npc.getNpcId()
return htmltext

QUEST = Quest(1247,qn,"custom")
QUEST.addStartNpc(40002)
QUEST.addTalkId(40002)

 

При нажатии на профиль, на который предварительно не сохранили баф. ГС выдает это.

 

[29.11.14 03:07:06] C:\SERVERL2\game\data\scripts\custom\1247_buffer\__init__.py
Traceback (innermost last):
(no code object) at line 0
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1086)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)

at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:851)

at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5769)

at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5689)

at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5729)

at com.zaxxer.hikari.proxy.ResultSetJavassistProxy.getString(ResultSetJavassistProxy.java)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)


java.sql.SQLException: java.sql.SQLException: Illegal operation on empty result set.

at org.python.core.Py.JavaError(Unknown Source)
at org.python.core.PyObject._jthrow(Unknown Source)
at org.python.core.PyObject._jcall(Unknown Source)
at org.python.proxies.main$Quest$13.onEvent(Unknown Source)
at ru.catssoftware.gameserver.model.quest.Quest.onAdvEvent(Quest.java:667)
at ru.catssoftware.gameserver.model.quest.Quest.notifyEvent(Quest.java:490)
at ru.catssoftware.gameserver.model.actor.instance.L2PcInstance.processQuestEvent(L2PcInstance.java:1164)
at ru.catssoftware.gameserver.network.clientpackets.RequestBypassToServer.runImpl(RequestBypassToServer.java:225)
at ru.catssoftware.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:69)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

 

Нужно реализовать вывод ошибки html в игре что мол профиль пустой, сначала сохраните баф.

Подскажите как это сделать, или сделайте, дам на пиво.

Код бафера с подсветкой синтаксиса

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуй добавить проверку на сохраненный набор.

Знал бы как добавил бы...

Ну судя по всему так

if not rs.next():
rs.close()
sql.close()
return "<html><body>sohrani profil shletcik</body></html>"

Как посоветовал капитошка, но не черта не выходит, с этими отступами хрен*выми. Я хз где их ставить.

Изменено пользователем Gatsby

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...