Ir para conteúdo
  • Cadastre-se
  • 0

NPC DANDO ERRO COMO ADAPTAR OS SCRIPTS ?


Mr.Killer

Pergunta

Consegui arrumar , os npcs comos buffs , monumento , mais os npc que tem na jfrozen que migrei pra j knight n tem como comparar porq na jknight não tem tipo :

 

NPC RANKING DA JFROZEN :

[/b]

import sys

from com.l2jfrozen.gameserver.model.actor.instance import L2PcInstance

from java.util import Iterator

from com.l2jfrozen.gameserver.datatables import SkillTable

from com.l2jfrozen.util.database import L2DatabaseFactory

from com.l2jfrozen.gameserver.model.actor.appearance import PcAppearance

from com.l2jfrozen.gameserver.model.quest import State

from com.l2jfrozen.gameserver.model.actor.appearance import PcAppearance

from com.l2jfrozen.gameserver.model.quest import QuestState

from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest

qn = "20707_Ranking"

NPC=[20707]

Precio_ID = 57

QuestId = 20707

QuestName = "Ranking"

QuestDesc = "custom"

InitialHtml = "1.htm"

print "============> Ranking: LOADED"

class Quest (JQuest) :

def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

# ***********************

# Si hablas con el NPC: *

# ***********************

def onTalk (self,npc,player):

return InitialHtml

# ***********************

# *****************************************************

# Ahora gobernamos los eventos que vienen desde el HTML

# *****************************************************

def onEvent(self,event,st):

htmltext = event

cantidad_pago = st.getQuestItemsCount(Precio_ID)

 

# *********

# PK info *

# *********

 

if event == "1" and cantidad_pago >= 3000 :

st.takeItems(Precio_ID,3000)

total_asesinados = 0

htmltext_ini = "<html><head><title>Pk Info Online</title></head><body><table width=300><tr><td><font color =\"FF00FF\">Pos.</td><td><center><font color =\"FFFF00\">*** Player ***</color></center></td><td><center>*** Kills ***</center></td></tr>"

htmltext_info =""

color = 1

pos = 0

con = L2DatabaseFactory.getInstance().getConnection()

pks = con.prepareStatement("SELECT char_name,pkkills FROM characters WHERE pkkills>0 and accesslevel=0 order by pkkills desc limit 30")

rs = pks.executeQuery()

while (rs.next()) :

char_name = rs.getString("char_name")

char_pkkills = rs.getString("pkkills")

total_asesinados = total_asesinados + int(char_pkkills)

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

 

# **********

# PvP info *

# **********

if event == "2" and cantidad_pago >= 3000 :

st.takeItems(Precio_ID,3000)

total_asesinados = 0

htmltext_ini = "<html><head><title>PvP info Online</title></head><body><table width=300><tr><td><font color =\"FF00FF\">Pos.</td><td><center><font color =\"FFFF00\">*** Player ***</color></center></td><td><center>*** Kills ***</center></td></tr>"

htmltext_info =""

color = 1

pos = 0

con = L2DatabaseFactory.getInstance().getConnection()

pks = con.prepareStatement("SELECT char_name,pvpkills FROM characters WHERE pvpkills>0 and accesslevel=0 order by pvpkills desc limit 30")

rs = pks.executeQuery()

while (rs.next()) :

char_name = rs.getString("char_name")

char_pkkills = rs.getString("pvpkills")

total_asesinados = total_asesinados + int(char_pkkills)

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) + " Kills.</center></body></html>"

htmltext_pklist = htmltext_ini + htmltext_info + htmltext_end

con.close()

return htmltext_pklist

elif event == "2" 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[/b]

# *************

# Medal Of Victory info *

# *************

 

if event == "3" and cantidad_pago >= 100000 :

st.takeItems(Precio_ID,100000)

total_cantidad = 0

htmltext_ini = "<html><head><title>Medal Of Victory info Online</title></head><body><table width=300><tr><td><font color =\"FF00FF\">Pos.</td><td><center><font color =\"FFFF00\">*** Name ***</color></center></td><td><center>*** Adenas ***</center></td></tr>"

htmltext_info =""

color = 1

pos = 0

con = L2DatabaseFactory.getInstance().getConnection()

pks = con.prepareStatement("SELECT count,owner_id FROM items WHERE item_id=57 order by count desc limit 50")

rs = pks.executeQuery()

while (rs.next()) :

cantidad = rs.getString("count")

pj_id = rs.getString("owner_id")

total_cantidad = total_cantidad + long(cantidad)

pos = pos + 1

posstr = str(pos)

charname = con.prepareStatement("SELECT char_name FROM characters WHERE charId=" + pj_id)

rs2 = charname.executeQuery()

while (rs2.next()) :

char_name = rs2.getString("char_name")

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>" + cantidad + "</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>" + cantidad + "</center></td></tr>"

htmltext_end = "</table><center><font color=\"FFFFFF\">" + "Los TOPS suman " + str(total_cantidad) + " adenas.</center></body></html>"

htmltext_pklist = htmltext_ini + htmltext_info + htmltext_end

con.close()

return htmltext_pklist

elif event == "3" and cantidad_pago < 3000 :

htmltext = "<html><head><title>Adenas info Online</title></head><body><font color =\"FF0000\">Primero pagame...!! son 100k adenas.</body></html>"

return htmltext[/b][/color]

[color=#ff0000]QUEST = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)

CREATED=State('Start',QUEST)

STARTED=State('Started',QUEST)

COMPLETED=State('Completed',QUEST)[/b][/color]

[color=#ff0000]QUEST.setInitialState(CREATED)

[color=#ff0000]for npcId in NPC:

QUEST.addStartNpc(npcId)

QUEST.addTalkId(npcId)[/color]

 

 

AI PRA COLOCAR ELE NO JKNOGHT COMO FASSO ?

 

NPC CLAN MANAGER JFRONZE :

 

 

import sys

from com.l2jfrozen.gameserver.model.actor.instance import L2PcInstance

from com.l2jfrozen.gameserver.model.actor.instance import L2NpcInstance

from java.util import Iterator

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[/b]

qn = "6667_ClanManager"

NPC=[66667]

REQUESTED_ITEM=3470

REQUESTED_AMOUNT=2

NEW_REP_SCORE=3000000

QuestId = 6667

QuestName = "ClanManager"

QuestDesc = "custom"

InitialHtml = "66667-1.htm"

print "Clan Manager (66667) Enabled..."

class Quest (JQuest) :

def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def onEvent(self,event,st):

htmltext = "<html><head><body>I have nothing to say you</body></html>"

count=st.getQuestItemsCount(REQUESTED_ITEM)

if event == "66667-clanOk.htm" :

if st.getPlayer().isClanLeader() and st.getPlayer().getClan().getLevel()<8:

if st.getPlayer().isNoble() and count >= REQUESTED_AMOUNT:

htmltext=event

st.getPlayer().getClan().changeLevel(8)

st.playSound("ItemSound.quest_finish")

st.takeItems(REQUESTED_ITEM,REQUESTED_AMOUNT)

else :

htmltext="66667-no_clan.htm"

st.exitQuest(1)

else :

htmltext="66667-no_clan.htm"

st.exitQuest(1)

elif event == "66667-repOk.htm" :

if st.getPlayer().isClanLeader() and st.getPlayer().getClan().getLevel() >= 5 and st.getPlayer().getClan().getRep***tionScore() < NEW_REP_SCORE :

if st.getPlayer().isNoble() and count > REQUESTED_AMOUNT:

htmltext=event

st.getPlayer().getClan().setRep***tionScore(NEW_REP_SCORE, 1);

st.playSound("ItemSound.quest_finish")

st.takeItems(REQUESTED_ITEM,REQUESTED_AMOUNT)

else :

htmltext="66667-no_points.htm"

st.exitQuest(1)

else :

htmltext="66667-no_points.htm"

st.exitQuest(1)

return htmltext

def onTalk (self,npc,player):

htmltext = "<html><head><body>I have nothing to say you</body></html>"

st = player.getQuestState(qn)

if not st : return htmltext

npcId = npc.getNpcId()

id = st.getState()

if id == CREATED :

htmltext="66667-1.htm"

elif id == COMPLETED :

htmltext = "<html><head><body>This quest have already been completed.</body></html>"

else :

st.exitQuest(1)

return htmltext

 

QUEST = Quest(6667,qn,"custom")

CREATED = State('Start', QUEST)

STARTING = State('Starting', QUEST)

STARTED = State('Started', QUEST)

COMPLETED = State('Completed', QUEST)

QUEST.setInitialState(CREATED)

for npcId in NPC:

QUEST.addStartNpc(npcId)

QUEST.addTalkId(npcId)

 

 

NPC ENCHANT ITENS JFROZEN :

 

 

import sys

from com.l2jfrozen.gameserver.model.actor.instance import L2PcInstance

from java.util import Iterator

from com.l2jfrozen.gameserver.datatables import SkillTable

from com.l2jfrozen.util.database import L2DatabaseFactory

from com.l2jfrozen.gameserver.model.actor.appearance import PcAppearance

from com.l2jfrozen.gameserver.model.quest import State

from com.l2jfrozen.gameserver.model.actor.appearance import PcAppearance

from com.l2jfrozen.gameserver.model.quest import QuestState

from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest[/b]

qn = "99940_SafeEnchant"

print "Importing Custom: Auto-Enchant L2JDot "

QuestId = 99940

QuestName = "SafeEnchant"

QuestDesc = "custom"

ENCHANT_CHECK = 1

AMOUNT_OF_ENCHANT = 10

PAYMENT_ITEM_ID = 57

PAYMENT_AMOUNT = 10000

 

ENCHANT_NPC = 40009

weapons = ['Sword','Blunt','Dagger','Bow','Pole','Etc','Fist','Dual Sword','Dual Fist','Big Sword','Big Blunt','Ancient','Crossbow','Rapier','Dual Dagger']

armors = ['Light','Heavy','Magic','Shield','Sigil']

jewels = ['None']

acceptableItemTypes = weapons+armors+jewels

class Quest (JQuest) :

def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def onEvent (self,event,st) :

if event == "choose_item" :

htmltext = ""

for Item in st.getPlayer().getInventory().getItems():

# given an item instance, get the item template to check what type it is

itemType = Item.getItem().getItemType().toString()

itemGrade = Item.getItem().getCrystalType()

if itemType in acceptableItemTypes and itemGrade > 0 :

htmltext += "<a action=\"bypass -h Quest 99940_SafeEnchant enchantItem_" + str(Item.getObjectId()) +"\">" + Item.getItem().getName() + "+" + str(Item.getEnchantLevel()) + "</a><br>"

if htmltext == "":

htmltext = "You have no enchantable items equiped or in your inventory."

htmltext = "<html><title>Auto-Enchanter</title><body>Seu Item para ser Enchantado Precisa estar +10.<br>Por Favor Selecione Um Item a ser Enchantado na Lista Abaixo:<br><br>" + htmltext + "</body></html>"

elif event.startswith("enchantItem_"):

# get the object id out of the event string

objId = int(event.replace("enchantItem_", ""))

# to avoid exploitation, check if the stored objectId still corresponds to an existing item

Item = st.getPlayer().getInventory().getItemByObjectId(objId )

if Item :

itemType = Item.getItem().getItemType().toString()

itemEnchant = Item.getEnchantLevel()

if st.getQuestItemsCount(PAYMENT_ITEM_ID) >= PAYMENT_AMOUNT :

if (itemType in weapons and itemEnchant >= ENCHANT_CHECK) or (itemType in armors and itemEnchant >= ENCHANT_CHECK) or (itemType in jewels and itemEnchant >= ENCHANT_CHECK) :

htmltext = "notPlusZero.htm"

else :

Item.setEnchantLevel(itemEnchant+AMOUNT_OF_ENCHANT)

st.takeItems(PAYMENT_ITEM_ID, PAYMENT_AMOUNT)

htmltext = "Congratulations.htm"

else :

htmltext = "notEnoughItems.htm"

else :

htmltext = "Error.htm"

return htmltext

def onTalk (self,npc,player):

htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>"

st = player.getQuestState(qn)

if not st : return htmltext

if npc.getNpcId() == ENCHANT_NPC :

htmltext = "Start.htm"

return htmltext

QUEST = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)

QUEST.addStartNpc(ENCHANT_NPC)

QUEST.addTalkId(ENCHANT_NPC)

 

 

ENTRE OUTROS AI NÃO SEI COMO ADAPTALO PARA A JKNIGHT !

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts recomendados


Quando adicionar um npc, com script. Faça isso. no script do npc altere as linhas com.l2jfrozen para com.l2jknight

completando a resposta: o com.l2jfrozen e com.l2jknight é o core do servidor

é colocado nos scripts com o nome de import para importar um lugar

 

from com.l2jknight.gameserver.model.actor.instance import L2PcInstance

from java.util import Iterator

from com.l2jknight.gameserver.datatables import SkillTable

from com.l2jknight.util.database import L2DatabaseFactory

from com.l2jknight.gameserver.model.actor.appearance import PcAppearance

from com.l2jknight.gameserver.model.quest import State

from com.l2jknight.gameserver.model.actor.appearance import PcAppearance

from com.l2jknight.gameserver.model.quest import QuestState

from com.l2jknight.gameserver.model.quest.jython import QuestJython as JQuest

 

as vezes o codigo é imcompativel a outra versão dai teria que baixar outro proprio pra jknight

Editado por Falcon/Dev
Link para o comentário
Compartilhar em outros sites

l2jknight e a frozen tem bases parecida entao fica assim:

 

Npc Ranking

 

O conteúdo está oculto, favor efetuar login ou se cadastrar!

 

 

Npc clan manage:

 

O conteúdo está oculto, favor efetuar login ou se cadastrar!

 

Editado por Rafael-.-Korn
29bnb15.jpg

Link para o comentário
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...



×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.