Guest User

Untitled

a guest
Mar 10th, 2014
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.96 KB | None | 0 0
  1. import sys
  2. from net.sf.l2j import L2DatabaseFactory
  3. from net.sf.l2j.gameserver.model.quest import State
  4. from net.sf.l2j.gameserver.model.quest import QuestState
  5. from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
  6. from net.sf.l2j.gameserver.util import Util
  7. from time import gmtime, strftime
  8. qn = "q8018_CngNick"
  9. NPC = 99999
  10. ITEM = 10851 # итем необходимый для обмена
  11. COST = 10 # стоимость
  12. INAME = "WmZ Coin" # название итема
  13. class Quest (JQuest) :
  14. def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
  15.  
  16. def closeStat(self,st):
  17. if st != None:
  18. st.close()
  19. return
  20.  
  21. def closeRes(self,rs):
  22. if rs != None:
  23. rs.close()
  24. return
  25.  
  26. def closeCon(self,con):
  27. if con != None:
  28. con.close()
  29. return
  30.  
  31. def error(self,action, text):
  32. return "<html><body> " + action + ": <br> " + text + "</body></html>"
  33.  
  34. def existsNick(self,nick):
  35. try:
  36. con=L2DatabaseFactory.getInstance().getConnection()
  37. st=con.prepareStatement("SELECT COUNT(char_name) FROM characters WHERE char_name=? LIMIT 1")
  38. st.setString(1,nick)
  39. rs=st.executeQuery()
  40. if (rs.next()):
  41. if rs.getInt(1) == 1:
  42. return True
  43. except:
  44. return True
  45. finally:
  46. self.closeRes(rs)
  47. self.closeStat(st)
  48. self.closeCon(con)
  49. return False
  50. def onAdvEvent (self,event,npc,player):
  51. st = player.getQuestState(qn)
  52. if event.startswith("step2_"):
  53. nick = str(event.replace("step2_", ""))
  54. nick = str(nick.replace(" ", ""))
  55. htmltext = "<html><body>Смена ника:<br>Проверка...<br><br>"
  56. if nick == "":
  57. return self.error("Шаг 2","Вы не ввели желаемый ник!")
  58. if not Util.isValidName(player, nick):
  59. return self.error("Шаг 2","Данный ник не может быть использован.")
  60. #<
  61. if self.existsNick(nick):
  62. return self.error("Шаг 2","Данный ник уже занят.")
  63. #<
  64.  
  65. badsymbols = ["q", "w"];
  66. i = 0;
  67.  
  68. while (i < len(badsymbols)):
  69. if (nick.find(badsymbols[i]) != -1):
  70. error = "Ник содержит запрещенные символы";
  71. break;
  72.  
  73. i = i + 1;
  74.  
  75. try:
  76. error
  77. except NameError:
  78. error = "";
  79.  
  80. if (len(error)):
  81. return self.error("Шаг 2", error);
  82.  
  83. htmltext += "<font color=66CC33>Ник "+nick+" свободен.</font><br>"
  84. htmltext += "<a action=\"bypass -h Quest q8018_CngNick step3_"+nick+"\" msg=\"Новый ник "+nick+". Уверены?\">Продолжить.</a></body></html>"
  85. elif event.startswith("step3"):
  86. nick = str(event.replace("step3_", ""))
  87. if st.getQuestItemsCount(ITEM) < COST:
  88. return self.error("Шаг 3","Смена ника: <font color=74bff5>"+str(COST)+" "+INAME+"")
  89. #<
  90. if self.existsNick(nick):
  91. return self.error("Шаг 2","Данный ник уже занят.")
  92. #<
  93. login = str(player.getAccountName())
  94. name = str(player.getName())
  95. date = str(strftime("%Y-%m-%d", gmtime()))
  96. time = str(strftime("%H:%M:%S", gmtime()))
  97. try:
  98. con=L2DatabaseFactory.getInstance().getConnection()
  99. st=con.prepareStatement("INSERT INTO zz_donate_log (date,time,login,name,action,payment) VALUES (?,?,?,?,?,?)")
  100. st.setString(1, date)
  101. st.setString(2, time)
  102. st.setString(3, login)
  103. st.setString(4, name)
  104. st.setString(5, "Nick: "+nick+"")
  105. st.setInt(6, COST)
  106. st.executeUpdate()
  107. except:
  108. return self.error("Шаг 3","Ошибка базы данных")
  109. finally:
  110. self.closeStat(st)
  111. self.closeCon(con)
  112. #<
  113. player.destroyItemByItemId("q8018_CngNick", ITEM, COST, player, True)
  114. player.changeName(nick)
  115. #st.takeItems(ITEM,COST)
  116. htmltext = "<html><body>Смена ника:<br>Готово!<br>Надеемся вы довольны новым ником.</body></html>"
  117. else:
  118. htmltext = "<html><body>Смена ника:<br>Oops!</body></html>"
  119. return htmltext
  120. def onTalk (self,npc,player):
  121. st = player.getQuestState(qn)
  122. npcId = npc.getNpcId()
  123. if npcId == NPC:
  124. if st.getQuestItemsCount(ITEM) < COST:
  125. return self.error("Шаг 1","Смена ника: <font color=74bff5>"+str(COST)+" "+INAME+"")
  126. htmltext = "<html><body><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><img src=\"L2UI.SquareBlank\" width=260 height=2><br1>"
  127. htmltext += "Введите желаемый ник:"
  128. htmltext += "<edit var=\"nick\" width=200 length=\"16\"><br>"
  129. htmltext += "<button value=\"Проверить\" action=\"bypass -h Quest q8018_CngNick step2_ $nick\" width=80 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"><br><br>"
  130. htmltext += "Смена ника: <font color=74bff5>"+str(COST)+" "+INAME+"</font><br>"
  131. htmltext += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32></body></html>"
  132. return htmltext
  133. return
  134. QUEST = Quest(8018,qn,"custom")
  135. CREATED = State('Start', QUEST)
  136. QUEST.setInitialState(CREATED)
  137. QUEST.addStartNpc(NPC)
  138. QUEST.addTalkId(NPC)
Advertisement
Add Comment
Please, Sign In to add comment