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

Покупка хиро

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

Взял скрипт с 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)

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

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


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

скорее всего в ядре править метод sethero

или добавить в твой скрипт UPDATE на таблицу characters стобец hero (но не факт что поможет)

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


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

Так Вы просто добавляете запись в таблицу. А при заходе в игру нужно выполнять проверку на наличии чара в этой таблицы, если он там есть, то выдавать хиро. (Добавить SELECT запрос в EnterWorld.java)

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


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

Так Вы просто добавляете запись в таблицу. А при заходе в игру нужно выполнять проверку на наличии чара в этой таблицы, если он там есть, то выдавать хиро. (Добавить SELECT запрос в EnterWorld.java)

в таблице бд той он есть

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


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

в таблице бд той он есть

Ну а проверки при входе в игру нету.

Добавьте проверку в EnterWorld.java на наличии этого чара в таблицы.

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


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

в таблице бд той он есть

Название таблици не о чем не говорит вам? в которую идет запрос запрос в крипте?

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

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


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

Проще байпас добавить через который будет выдаваться хиро. Не?

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


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

Проще байпас добавить через который будет выдаваться хиро. Не?

Может хотели сказать - метод?

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


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

Может хотели сказать - метод?

И как же метод вызвать из HTML без bypass?

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


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

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

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

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

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

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

Войти

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

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

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

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

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