Forum pour réunir les administrateurs de serveur L2
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  

Partagez | 
 

 Petit problème avec le cron

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Robin06



Nombre de messages : 14
Age : 32
Localisation : Cannes
Date d'inscription : 28/06/2007

MessageSujet: Petit problème avec le cron   Dim 20 Juil 2008, 21:18

Voilà j'ai essayé de créer une quête via un cron, j'ai pris exemple sur le mode de fonctionnement de l'auto announce, cependant ça ne marche pas, je m'en remets donc à votre savoir-faire pour m'aider à résoudre ce problème.

Voici ma démarche :

J'ai ajouté dans gameserver/data/scripts/__init.py

import cron

Ensuite j'ai mis dans gameserver/data/scripts/cron/__init__.py

Code:
__all__ = ['Event1']
print ""
print "importing cron ..."
for name in __all__ :
    try :
        __import__('data.jscript.cron.'+name,globals(), locals(), ['__init__'], -1)
    except:
        print "failed to import cron : ",name
print "... done"
print ""

Puis j'ai crée le script gameserver/data/scripts/cron/Event1.py qui contient :
Code:

print "Chargement d'event chrono..."
import sys
from net.sf.l2j.gameserver import Announcements
from net.sf.l2j.gameserver import ThreadPoolManager
from net.sf.l2j.gameserver.instancemanager import ZoneManager
from net.sf.l2j.gameserver.model.zone import L2Zone
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from net.sf.l2j.gameserver.model import L2World
from java.lang import Runnable

INTERVAL = 120 # Intervalle de repetition de l'event en minutes
DUREE = 40 # duree de l'event en minutes

class myTask( Runnable ):
    def __init__( self ):
        self.name = "Event_Test"
    def run( self ):
        #Annonce de depart
                                                                                                            Announcements.getInstance().announceToAll("------------EVENT-------------")
        Announcements.getInstance().announceToAll("Attention les zones PEACE...")
        Announcements.getInstance().announceToAll("deviennent zones PVP !!!")
        Announcements.getInstance().announceToAll("Tuez un max de monde !!!")
        Announcements.getInstance().announceToAll("PEACE zones are now PVP zones !")
        Announcements.getInstance().announceToAll("KILL KILL KILL!")
        Announcements.getInstance().announceToAll("-----------BY FAWN------------")
        #Gestion des zones
        toutes_zones = ZoneManager.getZones()
        zones_peace = toutes_zones.isPeace(True)
        zones_peace.isPeace(False)
        #Systeme Hero
        joueurs = L2World.getInstance().getAllPlayers()
        for i in joueurs :
            nb_kill = joueurs[i].getPvpKills()
        if nb_kill = nb_kill+10:
            joueurs[i].setHero(True)
        if joueurs[i].isDead()== True:
            joueurs[i].setHero(False)

startInstance = myTask()
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(startInstance,INTERVAL*60000,DUREE*60000)
print "Event charge..."

Mais ça ne marche pas...S'agit-il d'une erreur d'import ou peut être d'utilisation d'une fonction. Je me suis référer à la javadoc de L2Jfree mais je pense que les fonctions sont les memes...Toujours est-il que je n'ai même pas l'affichage de l'annonce, qui elle, je pense est bonne au niveau du code.

Merci d'avance pour vos réponses cheers

PS: Je n'ai pas fais d'erreur d'indentation, c'est le copier/coller du code qui a ici decallé la première fonction "Announcements.getInstance().announceToAll"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://angel-wings.sup.fr/
Divinity



Nombre de messages : 1282
Age : 27
Localisation : Yvelines
Date d'inscription : 24/05/2006

MessageSujet: Re: Petit problème avec le cron   Dim 20 Juil 2008, 22:27

Hello,

Tu dis avoir L2JFree, alors normalement les import se font avec : com.l2jfree.gameserver et non net.sf.l2j.gameserver, ça doit être pareil pour les cron.

Ensuite, tu as un message d'erreur dans le GS disant que le fichier n'a pas été chargé ou autre ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Robin06



Nombre de messages : 14
Age : 32
Localisation : Cannes
Date d'inscription : 28/06/2007

MessageSujet: Re: Petit problème avec le cron   Dim 20 Juil 2008, 23:08

Je me suis renseigné sur les fonctions via la javadoc de L2Jfree, car je pense que les fonctions utilisées en java sont les mêmes, mais je suis sur L2J Very Happy

Pour le GS je vais regarder les logs...Non aucune erreur générée...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://angel-wings.sup.fr/
Respawner



Nombre de messages : 1622
Age : 28
Date d'inscription : 20/04/2006

MessageSujet: Re: Petit problème avec le cron   Dim 20 Juil 2008, 23:15

Le système de zones est différent vu que tu l'utilises je parirais la dessus.
Heu question bête, t'as paramétré la table global_tasks pour lancer ton script là ?

_________________
~$ cat new_server > /dev/null

Tout n'est qu'une question de point de vue.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.respawner.fr/
Robin06



Nombre de messages : 14
Age : 32
Localisation : Cannes
Date d'inscription : 28/06/2007

MessageSujet: Re: Petit problème avec le cron   Dim 20 Juil 2008, 23:17

Je vais faire un test en ne laissant que les annonces pour vérifier...

PS: Quelqu'un aurait-il une javadoc L2J ? Je n'en ai pas trouvé...

Ah on m'a parlé de ça, et j'avoue que du coté SQL je sais pas trop y faire Laughing

Je dois faire quoi ? Ajouter une table Event1.py, ou un truc du genre ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://angel-wings.sup.fr/
Divinity



Nombre de messages : 1282
Age : 27
Localisation : Yvelines
Date d'inscription : 24/05/2006

MessageSujet: Re: Petit problème avec le cron   Dim 20 Juil 2008, 23:33

Regarde dans la table "global_task".
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jules



Nombre de messages : 385
Localisation : Rome
Date d'inscription : 11/04/2008

MessageSujet: Re: Petit problème avec le cron   Lun 21 Juil 2008, 08:30

Search
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://l2jfr.jeun.fr/search.forum
Robin06



Nombre de messages : 14
Age : 32
Localisation : Cannes
Date d'inscription : 28/06/2007

MessageSujet: Re: Petit problème avec le cron   Sam 26 Juil 2008, 19:27

Je dois faire quoi dans la table global_task ?? Razz
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://angel-wings.sup.fr/
Robin06



Nombre de messages : 14
Age : 32
Localisation : Cannes
Date d'inscription : 28/06/2007

MessageSujet: Re: Petit problème avec le cron   Mar 05 Aoû 2008, 00:42

ok tout est maintenant bon dans la table Global_Tasks, cependant un problème subsiste, voici l'avancée actuelle du code :

Code:

# -*- coding: cp1252 -*-
print "Chargement d'event chrono..."
import sys
from net.sf.l2j.gameserver import Announcements
from net.sf.l2j.gameserver import ThreadPoolManager
from net.sf.l2j.gameserver.model.zone.type import L2TownZone as Zone
from net.sf.l2j.gameserver.model import L2Character as Char #Pour isFlying()(bool)
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance as Instance
from net.sf.l2j.gameserver.model import L2World
from java.lang import Runnable

INTERVAL = 120 # Intervalle de repetition de l'event en minutes
DUREE = 45 # duree de l'event en minutes

class myTask( Runnable ):
    def __init__( self ):
        self.name = "Event1"
    def run( self ):
        #Annonce de depart => Ok !
        Announcements.getInstance().announceToAll("------------EVENT-------------")
        Announcements.getInstance().announceToAll("Attention les zones PEACE...")
        Announcements.getInstance().announceToAll("deviennent zones PVP !!!")
        Announcements.getInstance().announceToAll("Tuez un max de monde !!!")
        Announcements.getInstance().announceToAll("PEACE zones are now PVP zones !")
        Announcements.getInstance().announceToAll("KILL KILL KILL!")
        Announcements.getInstance().announceToAll("-----------BY FAWN------------")
        #Gestion des zones 1
        for i in range(1,23):#Pour les ID des villes, elles vont de 1 à 22
            Zone(i).getInstance().isPeaceZone(False)#Rend toutes les villes PVP => Ok !
        #Recupération du nombre de joueurs 1
        instance_joueurs = L2World.getInstance().getAllPlayers()#Retourne les joueurs online(tableau?) => Ok !
        nombre_joueurs = L2World.getInstance().getAllPlayersCount()#Retourne le nombre de joueurs online(int) => Ok !
        #Récupération du nombre de Kills en PVP
        for i in instance_joueurs:
            kills_max = []#Tableau vide
            nb_kill_1 = instance_joueurs[i].getPvpKills()#Retourne les kills PvP(int)
            nb_kill_2 = instance_joueurs[i].getPkKills()#Retourne les kills PK(int)
            nb_kill = nb_kill_1+nb_kill_2# Fais le total des kills(int)
            if ((nb_kill == nb_kill+10)and(instance_joueurs[i].isDead()== False):#Si le nombre de kills augmente de 10 sans mourrir.
                instance_joueurs[i].isHero(True)#Mets l'aura Hero sans les skills ???
            if (instance_joueurs[i].isDead()== True):#Si le joueur meurt
                instance_joueurs[i].isHero(False)#Enleve l'aura Hero
        #Système des titres 1
            ancien_titre = instance_joueurs[i].getTitle()#Met le titre du joueur en mémoire
            if (nb_kill+=1):
                instance_joueurs[i].setTitle(str(nb_kill)+" joueurs OWNED !")#Attribut un nouveau titre affichant le nombre de kills
        #Annonce Meilleur Killer de l'Event 1
            kills_max.append(nb_kill)#On remplit le tableau avec les valeurs de nb_kill de chaque joueur
            kills_max.sort()#On les trie par ordre croissant
            valeur_max = kills_max[len(kills_max)-1]#Retourne le plus grand nombre de kills
            if (nb_kill_1) == (Valeur_max - nb_kill2):#Trouve le meilleur killer
                nom_du_joueur = instance_joueurs[i].getName()#Met le nom du joueur en mémoire
        #Marque la fin de l'event ???           
        if (ThreadPoolManager.getInstance().isShutDown()==True):
            #Gestion des zones 2
            for i in range(1,23):#Pour les ID des villes, elles vont de 1 à 22
                Zone(i).getInstance().isPeaceZone(True)#Rend toutes les villes PEACE => Ok !
            #Système des titres 2
            #Recupération du nombre de joueurs 2
            instance_joueurs_2 = L2World.getInstance().getAllPlayers()#Retourne les joueurs online(tableau?) => Ok !
            for i in instance_joueurs_2:                                         
                instance_joueurs[i].setTitle(ancien_titre)#Remet l'ancien titre
            #Annonce Meilleur Killer de l'Event 2
            Announcements.getInstance().announceToAll("Le Meilleur Killer est"+" "+nom_du_joueur+" "+"Avec"+" "+str(valeur_max)+" "+"Kills !"
            Announcements.getInstance().announceToAll("Les villes redeviennent PEACE...Soufflez un peu ;)")
                                                       
startInstance = myTask()
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(startInstance,INTERVAL*60000,DUREE*60000)


Maintenant j'aimerais pouvoir ensuite tout remettre en ordre une fois la durée dépassée(remettre les villes en peace zone et les anciens titres des joueurs ainsi qu'une annonce pour dire qui est le vainqueur et son nombre de kills), j'ai regardé dans le java du ThreadPoolManager et je ne trouve aucune fonction définissant une "fin"...J'ai donc essayé if (ThreadPoolManager.getInstance().isShutDown()==True): Si quelqu'un a une meilleure idée...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://angel-wings.sup.fr/
Contenu sponsorisé




MessageSujet: Re: Petit problème avec le cron   Aujourd'hui à 17:41

Revenir en haut Aller en bas
 
Petit problème avec le cron
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» petit problème avec ce Java Script
» petit problème avec la gestion d'une taille
» Petit problème avec des liens
» Petit problème avec ma barre de navigation permanente
» Petit Problème avec les descriptions.. T.T"

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
L2J-FR :: Général :: Aides et Conseils-
Sauter vers: