Veandil Posted October 4, 2009 Posted October 4, 2009 hi all, i have a little problem with make a __init__.py to npc which will be show html when acclvl=<1 my code looks like this import sys 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 import L2DatabaseFactory QUEST_ID = 5999 QUEST_NAME = "vip" QUEST_DESCRIPTION = "custom" QUEST_LOADING_INFO = str(QUEST_ID)+"_"+QUEST_NAME NPC_ID = 5999 def enable (vip) : # check if vip is enabled val = "0" conn=L2DatabaseFactory.getInstance().getConnection() act = conn.prepareStatement("SELECT accesslevel FROM characters WHERE accesslevel<=1 ") act.setInt(1, int(vip)) rs=act.executeQuery() if rs : rs.next() try : val = rs.getString("canUse") conn.close() except : val = "0" try : conn.close() except: pass else : val = "0" if val == "1" : val = "True" if val == "0" : val = "False" return val class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onEvent(self,event,st,player,vip): st = player.getQuestState(QUEST_LOADING_INFO) htmltext = event VIP_ENABLED = getVar("vip") if event == "1": if enable(vip) == "true" : html.showhtml("5999-2.htm") elseif html.showhtml("5999-1.htm") def ontalk(self,event,st,player,vip): st = player.getQuestState(QUEST_LOADING_INFO) htmltext = event VIP_ENABLED = getVar("vip") if enable(vip) =="true" : html.showhtml("5999-2.htm") elseif htmltext = "<html><body>you are not vip! get lost!</body></html>" QUEST = Quest(QUEST_ID,QUEST_LOADING_INFO,QUEST_DESCRIPTION) QUEST.addStartNpc(NPC_ID) QUEST.addFirstTalkId(NPC_ID) QUEST.addTalkId(NPC_ID) but it still dont show me html in game. l2j rev 3599 DB rev 6691
0 Emrys Posted October 4, 2009 Posted October 4, 2009 hi all, i have a little problem with make a __init__.py to npc which will be show html when acclvl=<1 my code looks like this import sys 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 import L2DatabaseFactory QUEST_ID = 5999 QUEST_NAME = "vip" QUEST_DESCRIPTION = "custom" QUEST_LOADING_INFO = str(QUEST_ID)+"_"+QUEST_NAME NPC_ID = 5999 def enable (vip) : # check if vip is enabled val = "0" conn=L2DatabaseFactory.getInstance().getConnection() act = conn.prepareStatement("SELECT accesslevel FROM characters WHERE accesslevel<=1 ") act.setInt(1, int(vip)) rs=act.executeQuery() if rs : rs.next() try : val = rs.getString("canUse") conn.close() except : val = "0" try : conn.close() except: pass else : val = "0" if val == "1" : val = "True" if val == "0" : val = "False" return val class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onEvent(self,event,st,player,vip): st = player.getQuestState(QUEST_LOADING_INFO) htmltext = event VIP_ENABLED = getVar("vip") if event == "1": if enable(vip) == "true" : html.showhtml("5999-2.htm") elseif html.showhtml("5999-1.htm") def ontalk(self,event,st,player,vip): st = player.getQuestState(QUEST_LOADING_INFO) htmltext = event VIP_ENABLED = getVar("vip") if enable(vip) =="true" : html.showhtml("5999-2.htm") elseif htmltext = "<html><body>you are not vip! get lost!</body></html>" QUEST = Quest(QUEST_ID,QUEST_LOADING_INFO,QUEST_DESCRIPTION) QUEST.addStartNpc(NPC_ID) QUEST.addFirstTalkId(NPC_ID) QUEST.addTalkId(NPC_ID) but it still dont show me html in game. l2j rev 3599 DB rev 6691 Why not to try to make it in Java?? Better Like: Create a VIP in PC instance and in DB, check how nombless is registered, Then you can make it Like a command, or make it in java.... Example: if (activeChar.isVIP() && activeChar.isGM()) showHtmlMessage etc ..... Myh opinion as java is better from jython...
0 Intrepid Posted October 4, 2009 Posted October 4, 2009 thats only work if you have vip variable in java easier to create a new npc type in java only for vips
0 Veandil Posted October 4, 2009 Author Posted October 4, 2009 1st reason :i don't make this in java 'couse i want to share this with peoples who don't change core :P and this can e added to almoste all pack's(with little chnage) 2nd reason : i try to learn jython 3rd reason i dont know how to add class to java(never do this :P) 4th reason : if i will learn how to do this ill be able to make npc only for hero, top pvp'ers,pk'ers and other... very usefull for pvp servers //edit few minutes ago i found npc for showing pvp/pk count.. now i must just change few part of script(its for l2free)so... if i make it ill share it here :P
0 Nik Posted October 5, 2009 Posted October 5, 2009 conn=L2DatabaseFactory.getInstance().getConnection() act = conn.prepareStatement("SELECT accesslevel FROM characters WHERE accesslevel<=1 ") act.setInt(1, int(vip)) rs=act.executeQuery() ofc it wont work... you are setting an int instead of getting one
0 Veandil Posted October 6, 2009 Author Posted October 6, 2009 so what in your opinion i should put here? every ideas are good and can give something. on l2j forum jiv told i should use something like that public class GmNPc extends Npc { public onAction(player) { if !player.isGm() return; super.onAction(player); } } but i dont know how and where... can someone try explain that i dont want correct code but only way. import sys 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 import L2DatabaseFactory print "importing custom: 50300_PKlist" NPC_ID = 5999 QUEST_ID = 5999 QUEST_NAME = "vip" QUEST_DESCRIPTION = "custom" InitialHtml = "1.htm" # ************************ # Creando la Clase Quest * # ************************ class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onTalk (self,npc,player): return InitialHtml def onEvent(self,event,st): htmltext = event # ********* # vip # ********* if event == "1" and cantidad_pago >= 3000 : con = L2DatabaseFactory.getInstance().getConnection(None) pks = con.prepareStatement("SELECT accesslevel FROM characters WHERE acceslevel>0") rs = pks.executeQuery() while (rs.next()) : acclvl= rs.getString("accesslevel") htmltext = "<html><body>blah!</body></html>" ## pos = pos + 1 ## posstr = str(pos) ## if color == 1: ## color_text = "<font color =\"00FFFF\">" ## color = 2 ## htmltext_info = htmltext_info + "<tr><td><center><font color =\"FF00FF\">" + posstr + "</td><td><center>" + color_text + char_name +"</center></td><td><center>" + char_pkkills + "</center></td></tr>" ## elif color == 2: ## color_text = "<font color =\"FF0000\">" ## color = 1 ## htmltext_info = htmltext_info + "<tr><td><center><font color =\"FF00FF\">" + posstr + "</td><td><center>" + color_text + char_name +"</center></td><td><center>" + char_pkkills + "</center></td></tr>" ## htmltext_end = "</table><center><font color=\"FFFFFF\">" + "A Total of " + str(total_asesinados) + " Pk's.</center></body></html>" ## htmltext_pklist = htmltext_ini + htmltext_info + htmltext_end ## con.close() return htmltext_pklist elif event == "1" and cantidad_pago < 3000 : htmltext = "<html><head><title>PK info Online</title></head><body><font color =\"FF0000\">Primero pagame...!! son 3000 adenas.</body></html>" return htmltext QUEST.addStartNpc(NPC_ID) QUEST.addFirstTalkId(NPC_ID) QUEST.addTalkId(NPC_ID) this is 2nd code from remaked pvp/pk npc, error log : Traceback (innermost last): File "__init__.py", line 71, in ? NameError: QUEST
Question
Veandil
hi all, i have a little problem with make a __init__.py to npc which will be show html when acclvl=<1
my code looks like this
import sys 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 import L2DatabaseFactory QUEST_ID = 5999 QUEST_NAME = "vip" QUEST_DESCRIPTION = "custom" QUEST_LOADING_INFO = str(QUEST_ID)+"_"+QUEST_NAME NPC_ID = 5999 def enable (vip) : # check if vip is enabled val = "0" conn=L2DatabaseFactory.getInstance().getConnection() act = conn.prepareStatement("SELECT accesslevel FROM characters WHERE accesslevel<=1 ") act.setInt(1, int(vip)) rs=act.executeQuery() if rs : rs.next() try : val = rs.getString("canUse") conn.close() except : val = "0" try : conn.close() except: pass else : val = "0" if val == "1" : val = "True" if val == "0" : val = "False" return val class Quest (JQuest) : def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) def onEvent(self,event,st,player,vip): st = player.getQuestState(QUEST_LOADING_INFO) htmltext = event VIP_ENABLED = getVar("vip") if event == "1": if enable(vip) == "true" : html.showhtml("5999-2.htm") elseif html.showhtml("5999-1.htm") def ontalk(self,event,st,player,vip): st = player.getQuestState(QUEST_LOADING_INFO) htmltext = event VIP_ENABLED = getVar("vip") if enable(vip) =="true" : html.showhtml("5999-2.htm") elseif htmltext = "<html><body>you are not vip! get lost!</body></html>" QUEST = Quest(QUEST_ID,QUEST_LOADING_INFO,QUEST_DESCRIPTION) QUEST.addStartNpc(NPC_ID) QUEST.addFirstTalkId(NPC_ID) QUEST.addTalkId(NPC_ID)but it still dont show me html in game.
l2j rev 3599
DB rev 6691
5 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now