Ayuda con python en l2j Frozen 5 5 1

Ayuda con python en l2j Frozen

Ver el tema anterior Ver el tema siguiente Ir abajo

Ayuda con python en l2j Frozen

Mensaje por niko001 el Miér Abr 13, 2011 4:25 am

Hola, tengo un buffer al cual quiero ponerle que los pj que esten flag y los pk no puedan utilizar el boton heal del buffer. He probado muchas veces y de diferentes maneras pero no logro dar con el codigo correcto para hacerlo andar :S

Dejo el codigo:
Spoiler:
import sys
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
from com.l2jfrozen.gameserver.datatables import SkillTable
from com.l2jfrozen.gameserver.model import L2Effect
from com.l2jfrozen.util.random import Rnd
from com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance import getKarma



qn = "912_buffer"

#Utliliza ON y OFF para permitir los buff

buff = "ON"
warcryer = "ON"
overlord = "ON"
song = "ON"
dance = "ON"
fullfighter = "ON"
fullmage = "ON"
#Configuracion del ID Item y NPC

NPC = [45872]
prise_ID = 57
QuestId = 912
QuestName = "buffer"
QuestDesc = "custom"
InitialHtml = "buff.htm"
#Configuracion del buff y precios

min_level = 1
max_level = 80
min_prise = 1
buff_prise = 1
Chant_prise = 1
song_prise = 1
Dance_prise = 1
Prophecy_prise = 1
cubic_prise = 1
Full_buff_f3_prise = 1
Full_buff_m3_prise = 1

print "importing custom: 912_buffer OK"

class Quest (JQuest) :

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


def onEvent(self,event,st):
htmltext = event
count=st.getQuestItemsCount(prise_ID)
if count < min_prise :
htmltext = "No tienes los items requeridos.."
if st.getPlayer().getLevel() < min_level :
htmltext = "Eres nivel muy bajo!."
if st.getPlayer().getLevel() < max_level :
htmltext = "No posees adena o eres nivel bajo, o muy alto!."
else:
st.takeItems(prise_ID,0)

#Full buff fighter
if event == "121":
if fullfighter == "ON":
st.takeItems(prise_ID,buff_prise)
SkillTable.getInstance().getInfo(1068,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1040,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1086,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1204,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1077,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1242,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1268,4).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1035,4).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1036,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1045,6).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1388,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1363,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(271,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(275,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(274,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(269,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(264,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(304,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(364,1).getEffects(st.getPlayer(),st.getPlayer())
return "buff.htm"
st.setState(COMPLETED)

#Full buff mage
if event == "120":
if fullmage == "ON":
st.takeItems(prise_ID,buff_prise)
SkillTable.getInstance().getInfo(1085,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1059,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1078,6).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1204,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1048,6).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1397,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1303,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1040,3).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1035,4).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1062,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(273,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(276,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(349,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(363,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(365,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1413,1).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1036,2).getEffects(st.getPlayer(),st.getPlayer())
SkillTable.getInstance().getInfo(1389,3).getEffects(st.getPlayer(),st.getPlayer())
return "buff.htm"
st.setState(COMPLETED)

#Cancel
if event == "666":
st.getMe.getPlayer().stopAllEffects()
return "Buff.htm"
st.setState(COMPLETED)


#Restore

if event == "665":
st.getPlayer().getKarma() == True:'))

htmltext = "No puedes curarte mientras estas en PVP"
else:

st.getPlayer().setCurrentHpMp(st.getPlayer().getMaxHp(), st.getPlayer().getMaxMp())
st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())
return "Buff.htm"
st.setState(COMPLETED)




Leyenda:
Rojo Código en el que trabajo.
Amarillo Código donde me da el error el log



muchas gracias desde ya!

niko001
Grado S
Grado S

Masculino
Mensajes: 222
Edad: 21
Serverpack: L2jServer
Revision: Propia..
Cronica: Freya
Sistema Operativo: Windows 7 x64 Bits
Fecha de inscripción: 21/03/2011
Reputación: 19
Adenas: 734

Volver arriba Ir abajo

Re: Ayuda con python en l2j Frozen

Mensaje por Tinieblas el Miér Abr 13, 2011 5:37 am

Esta linea esta de mas:
Código:
from com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance import getKarma

Y ademas esta mal, ya que el import se hace de una clase y ahi estas haciendo un import de un mensaje. El from es para indicar la carpeta y tu indicas una clase.

Ahora dejando de lado esa linea el mensaje getKarma() lo puedes usar sin hacer ningun import ya que este esta en la clase L2PcInstance y los pjs estan instanciados en esta clase por ende cualquier pj(en tu código el pj es "st.getPlayer()") puede usar ese mensaje.

Otra cosa que tines mal en el código es que el mensaje getKarma() no devuelve un booleano sino que devuelve un integer, así que si quieres saber si el pj tiene karma simplemente cambia el "== True" por "> 0"

Y otra cosa mas, por lo que veo en tu siguiente código:
Código:
#Restore

if event == "665":
st.getPlayer().getKarma() == True:'))

htmltext = "No puedes curarte mientras estas en PVP"
else:

st.getPlayer().setCurrentHpMp(st.getPlayer().getMaxHp(), st.getPlayer().getMaxMp())
st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())
return "Buff.htm"
st.setState(COMPLETED)

No quieres dejar curarse a los que estan en pvp, cosa que no tiene nada que ver con el karma, para ello tienes que usar el mensaje getPvpFlag() el cual devuelve un byte y cuando este byte que devuelve es 1 el pvp esta flageado sino devuelve 0.
Y me parece que se te olvido colocar un if ya que en la linea:
Código:
st.getPlayer().getKarma() == True:'))

No estas haciendo nada, ademas de estar mal escrito.
Dicha linea la tienes que remplazar por:
Código:
if (st.getPlayer().getPvpFlag() == 1):

Con eso te tendría que funcionar.

Y una recomendación, utiliza el BBCode code para colocar códigos que el quote es solo para texto:
Código:
[code]Tu código aquí.[/code]

Tinieblas
Heroe
Heroe

Masculino
Mensajes: 849
Edad: 24
Serverpack: L2JServer
Revision: Server: 4407 - DP:7664
Cronica: Gracia Epilogue
Sistema Operativo: Windows 7
Fecha de inscripción: 23/07/2007
Reputación: 268
Adenas: 2998

Volver arriba Ir abajo

Re: Ayuda con python en l2j Frozen

Mensaje por niko001 el Miér Abr 13, 2011 1:45 pm

Gracias pero no logro hacerlo andar Neutral Te dejo el link de descarga del custom del buffer para que me lo revises y le cambies lo que esta mal en el código...

Buffer

Gracias por contestarme =)

niko001
Grado S
Grado S

Masculino
Mensajes: 222
Edad: 21
Serverpack: L2jServer
Revision: Propia..
Cronica: Freya
Sistema Operativo: Windows 7 x64 Bits
Fecha de inscripción: 21/03/2011
Reputación: 19
Adenas: 734

Volver arriba Ir abajo

Re: Ayuda con python en l2j Frozen

Mensaje por Notorious el Miér Abr 13, 2011 3:12 pm

Entonces deberia quedar asi el import??
Código:
from com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance import getPvpFlag


y asi el event?:
Código:

#Restore
if event == "665":
if (st.getPlayer().getPvpFlag() == 1):
else:
htmltext = "No puedes curarte mientras estas en PVP"

st.getPlayer().setCurrentHpMp(st.getPlayer().getMaxHp(), st.getPlayer().getMaxMp())
st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())
return "Buff.htm"
st.setState(COMPLETED)


La verdad que con el phyton no me llevo muy bien Razz

Notorious
Lord
Lord

Masculino
Mensajes: 1441
Edad: 17
Serverpack: L2JPrivate
Revision: Zkikler
Cronica: Interlude
Sistema Operativo: WinXP
Fecha de inscripción: 30/11/2009
Reputación: 269
Adenas: 4214

Volver arriba Ir abajo

Re: Ayuda con python en l2j Frozen

Mensaje por Tinieblas el Miér Abr 13, 2011 6:13 pm

Notorious escribió:Entonces deberia quedar asi el import??
Código:
from com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance import getPvpFlag


y asi el event?:
Código:

#Restore
if event == "665":
if (st.getPlayer().getPvpFlag() == 1):
else:
htmltext = "No puedes curarte mientras estas en PVP"

st.getPlayer().setCurrentHpMp(st.getPlayer().getMaxHp(), st.getPlayer().getMaxMp())
st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())
return "Buff.htm"
st.setState(COMPLETED)


La verdad que con el phyton no me llevo muy bien Razz


Eso esta mal, el python necesita identación. Ademas de que como ya dije, el import ese no es necesario, el pj ya esta instanciado en la clase L2PcInstance por ende no es necesario, y no se importan mensajes(el getPvpFlag() es un mensaje que esta en la clase L2PcInstance) sino que clases. Otra cosa que estas colocando un If sin nada adentro e inmediatamente un else así que eso no hace nada, ademas de estar mal para este caso ya que la linea "htmltext = "No puedes curarte mientras estas en PVP"" tendría que estar antes del else.
Ahora el código identado y acomodando el error que comente es así:
Código:

#Restore
if event == "665":
   if (st.getPlayer().getPvpFlag() == 1):
      htmltext = "No puedes curarte mientras estas en PVP"
   else:
      st.getPlayer().setCurrentHpMp(st.getPlayer().getMaxHp(), st.getPlayer().getMaxMp())
      st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())
      return "Buff.htm"
      st.setState(COMPLETED)


niko001 te dejo el archivo editado pero has me el favor de leerlo(De la linea 121 a la 128, y también los import) así ves que es lo que te decía ya que sino vas a terminar cayendo en lo mismo.
Mediafire:
http://www.mediafire.com/?69aylduyd3k5d6e
Mirror:
multiupload.com multiupload.com4WLOF5Q8RT

El archivo lo probé con la rev de L2JFrezon 601 pero solo levantando el server, no logee porque no tengo interlude así que avisame si es que funciona o no.

Tinieblas
Heroe
Heroe

Masculino
Mensajes: 849
Edad: 24
Serverpack: L2JServer
Revision: Server: 4407 - DP:7664
Cronica: Gracia Epilogue
Sistema Operativo: Windows 7
Fecha de inscripción: 23/07/2007
Reputación: 268
Adenas: 2998

Volver arriba Ir abajo

Re: Ayuda con python en l2j Frozen

Mensaje por Notorious el Miér Abr 13, 2011 11:26 pm

Código:
#Restore
if event == "665":
if (st.getPlayer().getPvpFlag() == 1):
htmltext = "No puedes curarte mientras estas en PVP"
else:
st.getPlayer().setCurrentHpMp(st.getPlayer().getMaxHp(),st.getPlayer().getMaxMp())
st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())
return "Buff.htm"
st.setState(COMPLETED)

Asi deberia quedarme o asi?
Código:
#Restore
if event == "665":
if (st.getPlayer().getPvpFlag() == 1):
htmltext = "No puedes curarte mientras estas en PVP"
else:
st.getPlayer().setCurrentHpMp(st.getPlayer().getMaxHp(),
st.getPlayer().getMaxMp())
st.getPlayer().setCurrentCp(st.getPlayer().getMaxCp())
return "Buff.htm"
st.setState(COMPLETED)


Mas o menos segun te entendi, sin el L2PcInstance

Notorious
Lord
Lord

Masculino
Mensajes: 1441
Edad: 17
Serverpack: L2JPrivate
Revision: Zkikler
Cronica: Interlude
Sistema Operativo: WinXP
Fecha de inscripción: 30/11/2009
Reputación: 269
Adenas: 4214

Volver arriba Ir abajo

Re: Ayuda con python en l2j Frozen

Mensaje por Tinieblas el Jue Abr 14, 2011 12:27 am

Si, pero en ambos te olvidaste de identar el código, si lo colocas así en el archivo .py los if y el else no surgen efecto.
Y en el segundo código hay un salto de linea en los parámetros del mensaje setCurrentHpMp, no se si te lo tomara así pero supongo que no ya que si molesta con la identación lo hará también con eso.

Tinieblas
Heroe
Heroe

Masculino
Mensajes: 849
Edad: 24
Serverpack: L2JServer
Revision: Server: 4407 - DP:7664
Cronica: Gracia Epilogue
Sistema Operativo: Windows 7
Fecha de inscripción: 23/07/2007
Reputación: 268
Adenas: 2998

Volver arriba Ir abajo

Re: Ayuda con python en l2j Frozen

Mensaje por Notorious el Jue Abr 14, 2011 12:29 am

Sisi entendi como hacerlo, i ya se que el if y else no van a esa altura, gracias tinieblas te dejo un mas. Sigue asi.

Notorious
Lord
Lord

Masculino
Mensajes: 1441
Edad: 17
Serverpack: L2JPrivate
Revision: Zkikler
Cronica: Interlude
Sistema Operativo: WinXP
Fecha de inscripción: 30/11/2009
Reputación: 269
Adenas: 4214

Volver arriba Ir abajo

Re: Ayuda con python en l2j Frozen

Mensaje por Tinieblas el Jue Abr 14, 2011 12:36 am

Notorious escribió:Sisi entendi como hacerlo, i ya se que el if y else no van a esa altura, gracias tinieblas te dejo un mas. Sigue asi.

Supuse que se te paso pero lo aclare igual para los usuarios que comienzan.
Gracias por el mas.

Ahora resta esperar una respuesta por parte de niko001.

Tinieblas
Heroe
Heroe

Masculino
Mensajes: 849
Edad: 24
Serverpack: L2JServer
Revision: Server: 4407 - DP:7664
Cronica: Gracia Epilogue
Sistema Operativo: Windows 7
Fecha de inscripción: 23/07/2007
Reputación: 268
Adenas: 2998

Volver arriba Ir abajo

Re: Ayuda con python en l2j Frozen

Mensaje por niko001 el Jue Abr 14, 2011 2:11 am

Muchas gracias Tinieblas! Funciono a la perfección el script. Disculpa las molestias es que recien estoy iniciando con la programacion phyton ^^

niko001
Grado S
Grado S

Masculino
Mensajes: 222
Edad: 21
Serverpack: L2jServer
Revision: Propia..
Cronica: Freya
Sistema Operativo: Windows 7 x64 Bits
Fecha de inscripción: 21/03/2011
Reputación: 19
Adenas: 734

Volver arriba Ir abajo

Re: Ayuda con python en l2j Frozen

Mensaje por Tinieblas el Jue Abr 14, 2011 2:35 am

De nada. Ahora ya que se soluciono el tema agregalo al titulo de este [Solucionado].

Tinieblas
Heroe
Heroe

Masculino
Mensajes: 849
Edad: 24
Serverpack: L2JServer
Revision: Server: 4407 - DP:7664
Cronica: Gracia Epilogue
Sistema Operativo: Windows 7
Fecha de inscripción: 23/07/2007
Reputación: 268
Adenas: 2998

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

Permiso de este foro:
No puedes responder a temas en este foro.