NioNko 1 Опубликовано 16 ноября, 2017 (изменено) Взял скрипт с pwsoft для покупки хиро,переписал импорты под фрозен,добавил в бд базу лога покупок хиро(как в пв) Покупаю хиро,делаю релог перса,захожу хиро нету подскажите как исправить?? То что добавил в бд DROP TABLE IF EXISTS `zz_donate_log`; CREATE TABLE `zz_donate_log` ( `id` bigint(9) NOT NULL auto_increment, `date` date NOT NULL, `time` time NOT NULL, `login` varchar(50) NOT NULL, `name` varchar(50) NOT NULL, `action` varchar(50) NOT NULL, `payment` decimal(9,2) unsigned NOT NULL default '0.00', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=199 DEFAULT CHARSET=utf8; Скрипт import sys from time import gmtime, strftime from com.l2jfrozen.util.database import L2DatabaseFactory from com.l2jfrozen.gameserver.model.quest import State from com.l2jfrozen.gameserver.model.quest import QuestState from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest qn = "q8019_SetHero" NPC = 300300 ITEM = 5962 # итем необходимый для обмена COST = 3 # стоимость за 1 день INAME = "Gold Golem" # название итема class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onAdvEvent (self,event,npc,player): st = player.getQuestState(qn) if event.startswith("hero"): days = event.replace("hero", "") if days == " ": htmltext = "<html><body>Вы не ввели количество дней.</body></html>" return htmltext if player.isHero(): htmltext = "<html><body>Вы уже герой..)</body></html>" return htmltext days = days.replace(" ", "") if not days.isdigit(): htmltext = "<html><body>Вы не ввели количество дней.</body></html>" return htmltext days = int(days) if days < 1: htmltext = "<html><body>Вы не ввели количество дней.</body></html>" return htmltext payment = COST * days if st.getQuestItemsCount(ITEM) < payment: htmltext = "<html><body>Статус хиро за "+str(days)+" дней: <font color=74bff5>"+str(payment)+" "+INAME+"</font></body></html>" return htmltext htmltext = "<html><body>Теперь вы Герой!<br><br>" #< st.takeItems(ITEM,payment) player.setHero(days) #< login = str(player.getAccountName()) name = str(player.getName()) date = str(strftime("%Y-%m-%d", gmtime())) time = str(strftime("%H:%M:%S", gmtime())) writelog=L2DatabaseFactory.getInstance().getConnection() write=writelog.prepareStatement("INSERT INTO zz_donate_log (date,time,login,name,action,payment) VALUES (?,?,?,?,?,?)") write.setString(1, date) write.setString(2, time) write.setString(3, login) write.setString(4, name) write.setString(5, "Hero Status, "+str(days)+" days.") write.setInt(6, payment) try : write.executeUpdate() write.close() writelog.close() except : try : writelog.close() except : pass #< htmltext += "<font color=bef574>Спасибо за поддержку!</font><br></body></html>" else: htmltext = "<html><body>Статус хиро:<br>Oops!</body></html>" return htmltext def onTalk (self,npc,player): htmltext = "<html><body>Для вас в данный момент ничего нет.</body></html>" st = player.getQuestState(qn) npcId = npc.getNpcId() if npcId == NPC: htmltext = "privetstvie.htm" return htmltext QUEST = Quest(8019,qn,"custom") CREATED = State('Start', QUEST) QUEST.setInitialState(CREATED) QUEST.addStartNpc(NPC) QUEST.addTalkId(NPC) Изменено 16 ноября, 2017 пользователем NioNko Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 16 ноября, 2017 скорее всего в ядре править метод sethero или добавить в твой скрипт UPDATE на таблицу characters стобец hero (но не факт что поможет) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 16 ноября, 2017 Так Вы просто добавляете запись в таблицу. А при заходе в игру нужно выполнять проверку на наличии чара в этой таблицы, если он там есть, то выдавать хиро. (Добавить SELECT запрос в EnterWorld.java) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
NioNko 1 Опубликовано 16 ноября, 2017 Так Вы просто добавляете запись в таблицу. А при заходе в игру нужно выполнять проверку на наличии чара в этой таблицы, если он там есть, то выдавать хиро. (Добавить SELECT запрос в EnterWorld.java) в таблице бд той он есть Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 16 ноября, 2017 в таблице бд той он есть Ну а проверки при входе в игру нету. Добавьте проверку в EnterWorld.java на наличии этого чара в таблицы. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Edgar 356 Опубликовано 16 ноября, 2017 (изменено) в таблице бд той он есть Название таблици не о чем не говорит вам? в которую идет запрос запрос в крипте? Изменено 16 ноября, 2017 пользователем Solution Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
emc2 13 Опубликовано 17 ноября, 2017 Проще байпас добавить через который будет выдаваться хиро. Не? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 17 ноября, 2017 Проще байпас добавить через который будет выдаваться хиро. Не? Может хотели сказать - метод? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
emc2 13 Опубликовано 17 ноября, 2017 Может хотели сказать - метод? И как же метод вызвать из HTML без bypass? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты