| | [Résolue](merci de votre aide)juste une question bete | |
|
+4Respawner Skatershi Grimly Spanky 8 participants | |
Auteur | Message |
---|
Spanky
Nombre de messages : 392 Age : 42 Localisation : Osaka, Japon Date d'inscription : 01/12/2007
| Sujet: [Résolue](merci de votre aide)juste une question bete 21/10/08, 04:15 pm | |
| je cherche a faire spawn un npc unique a des endroit different toute les 4h mais via du jython . ma question en utilisant le se code - Code:
-
self.spawnnpc = self.addSpawn(NPC,MBX1,MBY1,MBZ1,0,False,0) est ce que cela fonctionnera? exemple de code (non finie) - Code:
-
import math import sys from net.sf.l2j.gameserver import Announcements from net.sf.l2j.util import Rnd from java.lang import System 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.model.actor.instance import L2PcInstance from net.sf.l2j.gameserver.model.actor.instance import L2NpcInstance NPC = (ici le npc) #Npc loc MNPCX = 144291 MNPCY = 157446 MNPCZ = -466 eventInterval = 14400000 # 4 hours after the first event there is the second one and the others after are 4 hours too, change according to your needs FirstStart = 3000 #45 minutes after each restart there is the first event
Dernière édition par Spanky le 06/11/08, 01:42 pm, édité 3 fois | |
| | | Grimly
Nombre de messages : 601 Date d'inscription : 30/08/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 21/10/08, 05:59 pm | |
| | |
| | | Skatershi
Nombre de messages : 1305 Age : 35 Date d'inscription : 09/11/2006
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 21/10/08, 06:11 pm | |
| | |
| | | Spanky
Nombre de messages : 392 Age : 42 Localisation : Osaka, Japon Date d'inscription : 01/12/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 21/10/08, 06:30 pm | |
| c pas la réponse a ma question bande de javamaniacs j'ai essayer me suis cassez la tête et me suis résolue java c pas pour moi | |
| | | Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 21/10/08, 06:35 pm | |
| Evitons tout troll du genre "Jython ça pue, Java c'est bien" (même si il y a une part de vérité ). Regarde si la méthode addSpawn(....) existe tout simplement. Si oui, go | |
| | | Divinity
Nombre de messages : 1282 Age : 35 Localisation : Yvelines Date d'inscription : 24/05/2006
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 21/10/08, 09:47 pm | |
| Tu as la possibilité de le faire sous SQL, via la table random_spawn, il me semble. | |
| | | Grimly
Nombre de messages : 601 Date d'inscription : 30/08/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 21/10/08, 10:56 pm | |
| heh...
Ce sont de vieux souvenirs mais ...
addspawn() n'est pas pour un spawn permanent ?
Je veux dire par là que tu met en place une position de départ, ton mob apparait là où tu lui dit d'être, mais si qqn le tue, il va réapparaitre tôt ou tard au même endroit. | |
| | | Psychokiller1888
Nombre de messages : 114 Age : 40 Localisation : Suisse Date d'inscription : 24/02/2008
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 22/10/08, 04:56 pm | |
| Non pas si un despawn delay est specifié:
addSpawn(int npcId, L2Character cha, int despawnDelay) | |
| | | Spanky
Nombre de messages : 392 Age : 42 Localisation : Osaka, Japon Date d'inscription : 01/12/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 23/10/08, 02:27 pm | |
| on aller jai encore un petit bug dessus snif - Code:
-
#Smash The Pigs event #by TheOne, edit by spanky&seva
import math import sys from net.sf.l2j.gameserver import Announcements from net.sf.l2j.util import Rnd from java.lang import System 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.model.actor.instance import L2PcInstance from net.sf.l2j.gameserver.model.actor.instance import L2NpcInstance from net.sf.l2j.gameserver.network.serverpackets import PlaySound #Put the Id of the reward of your choice here Reward = 57 #Put the amount to give of this reward depending on the player level like this: [ level35amount,level65amount,level80amount ] Amount = [ 300000,1000000 ,5000000 ] #change the reward! :) MANAGER = 50026 #choose the NPC that you want (100500) ManagerLocX = [ 147453,82698,82753,16105,111257,-14403,147714,87354,-81085,116498,17471,43594,45854,11523,-83980,115170,-44534,-116065 ] ManagerLocY = [ 26917,148638,53578,143272,219998,123388,-56380,-142315,150613,76137,169987,-48161,49768,16835,242577,-179018,-112910,46172 ] ManagerLocZ = [ -2205,-3468,-1496,-2771,-3671,-3117,-2781,-1341,-3044,-2730,-3502,-797,-3060,-4662,-3730,-911,-240,504 ] #NPC coords in Giran MBX1 = 82698 MBY1 = 148638 MBZ1 = -3468
#addon added by sevas PigMaxPlayers = 30 # (max number of players, NOT TESTED YET) repeat = 3600000 # event repeat (Default 1 hour) unspawntime = 10000 # This remove pigs again 10 sec later when players are teleported (no change) teleportback = 605000 # Teleport player back to giran (5 sec more than duracion) duracion = 600000 # length of the event (Default 10min) finishtime = 600000 # Announcement in game when event finish FirstStart = 20000 # when server start/restart the event 'll load after this time Pigs = [ 100307,100308,100309,100310,100311,100312,100313,100314,100315 ] # 3 levels, 3 of each level in order - 35,65,80 SpawnXLowTown = [ 46264,12940,-84766,116618,-44567,-115572 ] SpawnYLowTown = [ 49679,16484,242338,-182496,-112683,46779 ] SpawnZLowTown = [ -3068,-4585,-3730,-1526,-240,501 ] SpawnXMidTown = [ -14403,-82335,116682,45375 ] SpawnYMidTown = [ 123631,150831,76407,-47863 ] SpawnZMidTown = [ -3117,-3129,-2730,-797 ] SpawnXHighTown = [ 148051,81348,82435,18809,111921,148416,88144 ] SpawnYHighTown = [ 28045,148238,53681,145310,219691,-55977,-142741 ] SpawnZHighTown = [ -2269,-3469,-1496,-3131,-3761,-2781,-1341 ] class pigsSmash (JQuest): def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr) self.startQuestTimer("PigsSpawn", FirstStart, None, None) self.EventManager1 = [] self.Registration = [] self.Pigs = [] def onTalk (self,npc,player) : npcId = npc.getNpcId() if not player.getQuestState("pigsSmash") : return if npcId == MANAGER : if not player in self.Registration: if len(self.Registration) < PigMaxPlayers: self.Registration.append(player) Reg = list(self.Registration) Id = [] for player in self.Registration: rr = player.getClient() if rr == None: for i in range(len(self.Registration)): if player == self.Registration[i]: Id.append[i] if len(Id) > 1: for i in range(len(Id)): self.Registration.pop(Id[i]) player.sendPacket(PlaySound("ItemSound.quest_accept")) return "<html><body>You are now participating in the event! Go and kill some Pigs!!</body></html>" else: self.Full = True return "<html><body>Event is full, try again next time ;)</body></html>" else: return "<html><body>You are already registered.</body></html>" def onAdvEvent (self,event,npc,player): if event == "PigsSpawn": StartAnnounce = "Some special pigs have been spawned in all towns and villages. Their levels should reflect the Town that they are in." StartAnnounce2 = "When killed, there is a chance that they will drop an event box." StartAnnounce3 = "If you are 10 or more levels higher than the Pig that you kill, you will not get any reward." StartAnnounce4 = "You need to register with the Event Manager in a town to participate!" Announcements.getInstance().announceToAll(StartAnnounce) Announcements.getInstance().announceToAll(StartAnnounce2) Announcements.getInstance().announceToAll(StartAnnounce3) Announcements.getInstance().announceToAll(StartAnnounce4) self.Registration = [] self.startQuestTimer("PigDespawn", duracion, None, None) #StartTimer de la Duracion self.startQuestTimer("finish", finishtime, None, None) #StartTimer del anuncio finish self.startQuestTimer("teleportback", teleportback, None, None) #StartTimer del teleportback for i in range(len(ManagerLocX)): manager1 = self.addSpawn(MANAGER,ManagerLocX[i],ManagerLocY[i],ManagerLocZ[i],0,False,0) self.EventManager1.append(manager1) for i in range(15): for i in range(len(SpawnXLowTown)): rr = Rnd.get(500) rr2 = Rnd.get(500) xx = SpawnXLowTown[i] + (rr - 250) yy = SpawnYLowTown[i] + (rr2 - 250) zz = SpawnZLowTown[i] luck = Rnd.get(3) pig = self.addSpawn(Pigs[luck],xx,yy,zz,0,False,0) self.Pigs.append(pig) for i in range(len(SpawnXMidTown)): rr = Rnd.get(500) rr2 = Rnd.get(500) xx = SpawnXMidTown[i] + (rr - 250) yy = SpawnYMidTown[i] + (rr2 - 250) zz = SpawnZMidTown[i] luck = Rnd.get(3) luck = luck + 3 pig = self.addSpawn(Pigs[luck],xx,yy,zz,0,False,0) self.Pigs.append(pig) for i in range(len(SpawnXHighTown)): rr = Rnd.get(500) rr2 = Rnd.get(500) xx = SpawnXHighTown[i] + (rr - 250) yy = SpawnYHighTown[i] + (rr2 - 250) zz = SpawnZHighTown[i] luck = Rnd.get(3) luck = luck + 6 pig = self.addSpawn(Pigs[luck],xx,yy,zz,0,False,0) self.Pigs.append(pig) if event == "finish": StartAnnounce5 = "Smash The Pigs Event Finished" StartAnnounce6 = "The next event is on X hour" Announcements.getInstance().announceToAll(StartAnnounce5) Announcements.getInstance().announceToAll(StartAnnounce6) if event == "PigDespawn": #First unspawn of npcs print "[Event] Smash The Pig Event Finished" for npc in self.Pigs: npc.deleteMe() for npc in self.EventManager1: npc.deleteMe() self.startQuestTimer("unspawntime", unspawntime, None, None) #StartTimer of second unspawn if event == "teleportback": #Teleport players back to giran print "[Event] Teleporting Players" for player in self.Registration: player.teleToLocation(82823,148605,-3469) if event == "unspawntime": #Second unspawn print "[Event] Removing Pigs" for npc in self.Pigs: npc.deleteMe() print "[Event] Pigs Removed" self.startQuestTimer("PigsSpawn", repeat, None, None) #StartTimer (old eventInterval) print "[Event] Next event is in X hour" def onKill(self,npc,player,isPet): npcId = npc.getNpcId() npcObjId = npc.getObjectId() if npc in self.Pigs: level = npc.getLevel() xx = npc.getX() yy = npc.getY() zz = npc.getZ() luck = Rnd.get(3) if level == 35: prize_amount = Amount[0] if level == 65: luck = luck + 3 prize_amount = Amount[1] if level == 80: luck = luck + 6 prize_amount = Amount[2] for i in range(len(self.Pigs)): if npcObjId == self.Pigs[i].getObjectId(): Id = i self.Pigs.pop(Id) pig = self.addSpawn(Pigs[luck],xx,yy,zz,0,False,0) self.Pigs.append(pig) if not player.getQuestState("pigsSmash"): return if player.getLevel() > (level + 9): player.teleToLocation(82823,148605,-3469) return if player in self.Registration: #If the player registered than he has the quest, no need to check if Rnd.get(101) <= 5: #5% chance that it will drop a reward, change if you need to player.getQuestState("pigsSmash").giveItems(Reward,prize_amount ) player.sendPacket(PlaySound("ItemSound.quest_itemget")) else: player.teleToLocation(82823,148605,-3469) return "<html><body>You are not allowed to hunt pigs! Go back and Register with the NPC Bonny and you will be allowed to participate in the event.</body></html>" QUEST = pigsSmash(-1, "pigsSmash", "ai") for i in Pigs: QUEST.addKillId(i) QUEST.addStartNpc(MANAGER) QUEST.addTalkId(MANAGER) print "Smash the pigs event loaded!!!" | |
| | | Spanky
Nombre de messages : 392 Age : 42 Localisation : Osaka, Japon Date d'inscription : 01/12/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 23/10/08, 02:55 pm | |
| | |
| | | Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 23/10/08, 02:58 pm | |
| T'essaie d'appliquer la méthode sur une variable sans valeur. Equivalent d'un NullPointerException en Java quoi ... (si mes souvenirs de Python sont encore corrects). | |
| | | Spanky
Nombre de messages : 392 Age : 42 Localisation : Osaka, Japon Date d'inscription : 01/12/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 23/10/08, 03:02 pm | |
| regarde - Code:
-
if event == "PigDespawn": #First unspawn of npcs print "[Event] Smash The Pig Event Finished" for npc in self.Pigs: npc.deleteMe() for npc in self.EventManager1: npc.deleteMe() self.startQuestTimer("unspawntime", unspawntime, None, None) #StartTimer of second unspawn | |
| | | Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 23/10/08, 03:20 pm | |
| Ce n'est qu'une liste d'ID de NPC ce n'est pas une liste de NPC "réels" c'est là qu'il est le problème à mon avis. Y'a pas de méthode deleteMe() pour un integer à ma connaissance. | |
| | | Spanky
Nombre de messages : 392 Age : 42 Localisation : Osaka, Japon Date d'inscription : 01/12/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 23/10/08, 05:03 pm | |
| donc maintenant que doije faire need help | |
| | | Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 23/10/08, 06:00 pm | |
| Choper le NPC correspondant grâce à son ID et lui appliquer le deleteMe(). | |
| | | Spanky
Nombre de messages : 392 Age : 42 Localisation : Osaka, Japon Date d'inscription : 01/12/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 23/10/08, 07:36 pm | |
| ok je pense avoir compris vais faire des testes et je te dit sa arigato | |
| | | Grimly
Nombre de messages : 601 Date d'inscription : 30/08/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 24/10/08, 01:00 am | |
| - Spanky a écrit:
- je pense avoir compris
J'ai toujours peur de cette expression. Bon, pour enlever ce "pense", un petit cours de java (ou plutôt de POO) ! Hein quoi ça parle de jython ? et alors ! C'est du java dégénéré ! En java, tout est objet ! Ça n'a l'air de rien, et pourtant c'est presque exclusivement sur ça que repose le java. Qu'est-ce que ça veux dire ... Et bien, un entier est un Entier, un homme est un Homme, un chat est un Chat, un chien est un Chien, une voiture est une Voiture .... Jusque là, on a l'impression de pas avancer, mais au contraire ! On as les instances "un homme ..." et les classes "... est un Homme" La classe, c'est comme un mode d'emploi ! Tu peux faire quelque choses avec ton objet (instance) mais pas d'autres. Ces choses sont les méthodes. Ensuite, un peu d'héritage ... Un Chat est un Animal, un Chien est un Animal ... Tous les Animaux vivent, meurent, mangent, dorment. L'Animal vas donc faire office de "super mode d'emploi" qui marche avec n'importe quel objet du type générique. En POO, on appelle ça les super-classes (c'est ça que le mot "super" veux dire dans les codes java) ou classes mères. Bon, l'héritage, on s'en fou limite un peu ici, mais j'étais lancé. Ici, le problème c'est que tu utilise le mode d'emploi d'un NPC sur un Entier ... Essaie donc de faire fonctionner un moteur avec le mode d'emploi de montage d'un meuble IKEA Si tu regarde dans les sources, tu verra que les SpawnTable peuvent donner un Spawn à partir d'une id (Entier) qui lui même peux donner un NPC. Et comme le NPC sais s'auto-détruire sur commande, commande ! | |
| | | Grimly
Nombre de messages : 601 Date d'inscription : 30/08/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 24/10/08, 01:02 am | |
| - Grimly a écrit:
- Spanky a écrit:
- je pense avoir compris
J'ai toujours peur de cette expression.
Bon, pour enlever ce "pense", un petit cours de java (ou plutôt de POO) ! Hein quoi ça parle de jython ? et alors ! C'est du java dégénéré !
En java, tout est objet ! Ça n'a l'air de rien, et pourtant c'est presque exclusivement sur ça que repose le java.
Qu'est-ce que ça veux dire ... Et bien, un entier est un Entier, un homme est un Homme, un chat est un Chat, un chien est un Chien, une voiture est une Voiture ....
Jusque là, on a l'impression de pas avancer, mais au contraire ! On as les instances "un homme ..." et les classes "... est un Homme"
La classe, c'est comme un mode d'emploi ! Tu peux faire quelque choses avec ton objet (instance) mais pas d'autres. Ces choses sont les méthodes.
Ensuite, un peu d'héritage ... Un Chat est un Animal, un Chien est un Animal ... Tous les Animaux vivent, meurent, mangent, dorment. L'Animal vas donc faire office de "super mode d'emploi" qui marche avec n'importe quel objet du type générique. En POO, on appelle ça les super-classes (c'est ça que le mot "super" veux dire dans les codes java) ou classes mères.
Bon, l'héritage, on s'en fou limite un peu ici, mais j'étais lancé. Ici, le problème c'est que tu utilise le mode d'emploi d'un NPC sur un Entier ... Essaie donc de faire fonctionner un moteur avec le mode d'emploi de montage d'un meuble IKEA
Si tu regarde dans les sources, tu verra que les SpawnTable peuvent donner un Spawn à partir d'une id (Entier) qui lui même peux donner un NPC. Et comme le NPC sais s'auto-détruire sur commande, commande ! | |
| | | promethium
Nombre de messages : 140 Age : 41 Localisation : Compiegne Date d'inscription : 06/09/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 24/10/08, 03:21 am | |
| - Grimly a écrit:
- En java, tout est objet ! Ça n'a l'air de rien, et pourtant c'est presque exclusivement sur ça que repose le java.
Cette remarque serait plutôt vrai pour le Smalltalk mais en java on peux déclarer a la fois des variables de type primitif et des variables de type objet (et pourtant ce dernier est plus vieux de 23 ans). | |
| | | Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 24/10/08, 03:47 am | |
| L'idée d'avoir un équivalent objet de chaque variable primitive est de permettre (entre autre) des méthodes de conversions faciles. Dans le genre Integer.parseInt(String machin); pour palier au problème du int truc = (int) machin; qui ne marchera pas si machin est un objet ... (tout le monde sait que les chaînes de caractères sont des objets hein). C'est quand même vachement plus pratique... | |
| | | Spanky
Nombre de messages : 392 Age : 42 Localisation : Osaka, Japon Date d'inscription : 01/12/2007
| | | | Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 24/10/08, 03:09 pm | |
| - Spanky a écrit:
- vous m'embrouiller la
J'espère que non car le Python c'est du langage objet ... si tu n'as pas de notions de POO ça va être balaise hein Alors je vais tenter d'expliquer un peu du moins de résumer. Un objet c'est une entité qui peut représenter aussi bien une entité physique réelle (voiture) ou une idée (le marxisme, ouai c'est le truc qui m'est venu à l'esprit, Java/marxisme, lutte des classes toussa xD). Dans ton scrypt Python (enfin Jython), l'objet à utiliser est un spawn de NPC. Ton erreur réside dans une chose, un NPC est différent d'un numéro (ID). Or toi tu as fait une liste d'ID puis tu parcours la liste en appliquant à chaque ID la méthode deleteMe(). Le problème c'est qu'un ID c'est une variable primitive qui n'a pas de méthode car elle n'a pas de classe. Dans une classe, on trouve les méthodes pour manipuler l'objet (représenté par la classe). La classe est la règle permettant de fabriquer l'objet et son mode d'emploi (Grimly a bien expliqué ceci). Un entier n'a pas de méthode deleteMe() donc quand tu veux lui appliquer ça, forcément, le script te jette pour te dire que tu ne peux pas faire ça. Par contre, un ID c'est une des chose qui compose un NPC enfin ici un spawn de NPC. Et il existe dans le Java, une classe ainsi qu'une méthode qui en fonction de l'ID que tu lui donnes va te renvoyer (mot clé return) un objet de type spawn de NPC auquel tu pourras appliquer la méthode deleteMe() car c'est une méthode écrite dans la classe décrivant un spawn de NPC. Je sais pas si c'est très clair, j'ai essayé de rester clair et cohérent en gardant un minimum de langage technique parce qu'il faut le connaître aussi. | |
| | | Jules
Nombre de messages : 384 Localisation : Rome Date d'inscription : 11/04/2008
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 24/10/08, 04:38 pm | |
| - Respawner a écrit:
- Java/marxisme, lutte des classes toussa xD
Il adore ! - Respawner a écrit:
- Ton erreur réside dans une chose, un NPC est différent d'un numéro (ID). Or toi tu as fait une liste d'ID puis tu parcours la liste en appliquant à chaque ID la méthode deleteMe(). Le problème c'est qu'un ID c'est une variable primitive qui n'a pas de méthode car elle n'a pas de classe.
Il traduirait par : - La traduction a écrit:
- Ton erreur réside dans une chose, une voiture est différente d'un numéro (d'immatriculation). Or toi tu as fait une liste d'immatriculations puis tu parcours la liste en appliquant à chaque immatriculation la méthode démarreMoi(). Le problème c'est qu'une immatriculation c'est un numéro de base à la con qui n'a pas de méthode de démarrage car elle n'a pas de moteur.
| |
| | | Spanky
Nombre de messages : 392 Age : 42 Localisation : Osaka, Japon Date d'inscription : 01/12/2007
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 24/10/08, 04:44 pm | |
| la j'ai compris | |
| | | Divinity
Nombre de messages : 1282 Age : 35 Localisation : Yvelines Date d'inscription : 24/05/2006
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete 24/10/08, 06:20 pm | |
| - Citation :
- c'est un numéro de base à la con
Désolé pour le flood, mais j'ai trouvé ça excellent comme traduction xD !! | |
| | | Contenu sponsorisé
| Sujet: Re: [Résolue](merci de votre aide)juste une question bete | |
| |
| | | | [Résolue](merci de votre aide)juste une question bete | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |