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

Покупают Пустые Ники.

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

Где поправить чтоб нельзя было покупать "пустые" ники.. А то бегают без ников..

 

import sys
from net.sf.l2j import L2DatabaseFactory
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
from net.sf.l2j.gameserver.util import Util
from time import gmtime, strftime
qn = "q8018_CngNick"
NPC = 99999
ITEM = 10851 # итем необходимый для обмена
COST = 10 # стоимость
INAME = "WmZ Coin" # название итема
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def closeStat(self,st):
  if st != None:
 st.close()
  return 

def closeRes(self,rs):
  if rs != None:
 rs.close()
  return 

def closeCon(self,con):
  if con != None:
 con.close()
  return 

def error(self,action, text):
  return "<html><body> " + action + ": <br> " + text + "</body></html>"

def existsNick(self,nick):
  try:
 con=L2DatabaseFactory.getInstance().getConnection()
 st=con.prepareStatement("SELECT COUNT(char_name) FROM characters WHERE char_name=? LIMIT 1")
 st.setString(1,nick)
 rs=st.executeQuery()
 if (rs.next()):
   if rs.getInt(1) == 1:
	 return True
  except:
 return True
  finally:
 self.closeRes(rs)
 self.closeStat(st)
 self.closeCon(con)
  return False
def onAdvEvent (self,event,npc,player):
  st = player.getQuestState(qn)
  if event.startswith("step2_"):
 nick = str(event.replace("step2_", ""))
 nick = str(nick.replace(" ", ""))
 htmltext = "<html><body>Смена ника:<br>Проверка...<br><br>"
 if nick == "":
   return self.error("Шаг 2","Вы не ввели желаемый ник!")
 if not Util.isValidName(player, nick):
   return self.error("Шаг 2","Данный ник не может быть использован.")
   #<
 if self.existsNick(nick):
   return self.error("Шаг 2","Данный ник уже занят.")
   #<
 htmltext += "<font color=66CC33>Ник "+nick+" свободен.</font><br>"
 htmltext += "<a action=\"bypass -h Quest q8018_CngNick step3_"+nick+"\" msg=\"Новый ник "+nick+". Уверены?\">Продолжить.</a></body></html>"
  elif event.startswith("step3"):
 nick = str(event.replace("step3_", ""))
 if st.getQuestItemsCount(ITEM) < COST:
   return self.error("Шаг 3","Смена ника: <font color=74bff5>"+str(COST)+" "+INAME+"")
   #<
 if self.existsNick(nick):
   return self.error("Шаг 2","Данный ник уже занят.")
   #<
 login = str(player.getAccountName())
 name = str(player.getName())
 date = str(strftime("%Y-%m-%d", gmtime()))
 time = str(strftime("%H:%M:%S", gmtime()))
 try:
   con=L2DatabaseFactory.getInstance().getConnection()
   st=con.prepareStatement("INSERT INTO zz_donate_log (date,time,login,name,action,payment) VALUES (?,?,?,?,?,?)")
   st.setString(1, date)
   st.setString(2, time)
   st.setString(3, login)
   st.setString(4, name)
   st.setString(5, "Nick: "+nick+"")
   st.setInt(6, COST)
   st.executeUpdate()
 except:
   return self.error("Шаг 3","Ошибка базы данных")
 finally:
   self.closeStat(st)
   self.closeCon(con)
   #<
 player.destroyItemByItemId("q8018_CngNick", ITEM, COST, player, True)
 player.changeName(nick)
   #st.takeItems(ITEM,COST)
 htmltext =  "<html><body>Смена ника:<br>Готово!<br>Надеемся вы довольны новым ником.</body></html>"
  else:
 htmltext = "<html><body>Смена ника:<br>Oops!</body></html>"
  return htmltext
def onTalk (self,npc,player):
  st = player.getQuestState(qn)
  npcId = npc.getNpcId()
  if npcId == NPC:
 if st.getQuestItemsCount(ITEM) < COST:
   return self.error("Шаг 1","Смена ника: <font color=74bff5>"+str(COST)+" "+INAME+"")
 htmltext = "<html><body><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br><img src=\"L2UI.SquareBlank\" width=260 height=2><br1>"	  
 htmltext += "Введите желаемый ник:"
 htmltext += "<edit var=\"nick\" width=200 length=\"16\"><br>"
 htmltext += "<button value=\"Проверить\" action=\"bypass -h Quest q8018_CngNick step2_ $nick\" width=80 height=15 back=\"sek.cbui94\" fore=\"sek.cbui92\"><br><br>"
 htmltext += "Смена ника: <font color=74bff5>"+str(COST)+" "+INAME+"</font><br>"
 htmltext += "<img src=\"L2UI_CH3.herotower_deco\" width=256 height=32></body></html>"
 return htmltext
  return
QUEST	   = Quest(8018,qn,"custom")
CREATED	 = State('Start', QUEST)
QUEST.setInitialState(CREATED)
QUEST.addStartNpc(NPC)
QUEST.addTalkId(NPC)

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


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

if nick == "":

return self.error("Шаг 2","Вы не ввели желаемый ник!")

 

Добавить рег. выражение на длину ника

  • Upvote 1

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


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

if nick == "":

return self.error("Шаг 2","Вы не ввели желаемый ник!")

 

Добавить рег. выражение на длину ника

 

как добавить?:)

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


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

if nick.length() <= 1

...

что то типа

  • Upvote 1

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


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

у них не пустые ники, просто клиент эти спец символы не видит

  • Upvote 1

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


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

Pattern.matches("[A-Za-z0-9\`\~\!\@\#\$\%\^\*\(\)\_\-\=\[\]\'\.\,\:\;]*", event)

разрешенные символы

Изменено пользователем Demoncool
  • Upvote 1

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


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

Pattern.matches("[A-Za-z0-9\`\~\!\@\#\$\%\^\*\(\)\_\-\=\[\]\'\.\,\:\;]*", event)

разрешенные символы

где эти впихнуть?))

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


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

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

 

P.s Не проверял. На скорую руку настрогал.

badsymbols = ["©", "®"];
i = 0;

while (i != badsymbols.count()):
  if (nick.find(badsymbols[i])):
     error = "Ник содержит запрещенные символы";

if (error.lenght()):
  return self.error("Шаг 2", error);

 

Вставьте в лист (массив) запрещенные символы и радуйтесь (в ASCII есс-но)

 

 

--- UPDATE

Проверил все, криво сделал. Вот так работает:

badsymbols = ["q", "w"];
i = 0;

while (i < len(badsymbols)):
  if (nick.find(badsymbols[i]) != -1):
     error = "Ник содержит запрещенные символы";
     break;

  i = i + 1;

try:
  error
except NameError:
  error = "";

if (len(error)):
  return self.error("Шаг 2", error);

 

Готовый код: http://pastebin.com/9QcPPM2j

Изменено пользователем Twinker
  • Upvote 1

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


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

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

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

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

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

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

Войти

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

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

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

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

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