Erreur Java
Résolu
Ezekhx
Messages postés
73
Date d'inscription
Statut
Membre
Dernière intervention
-
Ezekhx Messages postés 73 Date d'inscription Statut Membre Dernière intervention -
Ezekhx Messages postés 73 Date d'inscription Statut Membre Dernière intervention -
Bonjour !
Quand je tape une commande qu'est censée me give un item dans un jeu alors que je suis admin etc tout ce que l'on veut, voilà sur quoi est-ce que je tombe. Quelqu'un peut-il m'aider à y voir plus clair ?
Merci par avance pour vos réponses.
Quand je tape une commande qu'est censée me give un item dans un jeu alors que je suis admin etc tout ce que l'on veut, voilà sur quoi est-ce que je tombe. Quelqu'un peut-il m'aider à y voir plus clair ?
Merci par avance pour vos réponses.

A voir également:
- Erreur Java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
6 réponses
Bonjour,
Ton serveur tu ne sais pas comment il fonctionne, et tu vas avoir une erreur puis une autre, etc. jusqu'à peut-être arriver à un moment où ça marche.
Mais on ne sait pas combien il y a d'erreurs à corriger et ton manque d'autonomie va faire qu'à chaque nouvelle erreur tu vas créer une discussion à laquelle ce sera la croix et la bannière pour corriger le problème...
Donc je ne sais pas ce que tu as tapé comme commande ici, mais apparemment elle est incomplète, le programme attends (au moins) deux valeurs, mais la valeur "1" (donc la deuxième) n'existe pas.
Ton serveur tu ne sais pas comment il fonctionne, et tu vas avoir une erreur puis une autre, etc. jusqu'à peut-être arriver à un moment où ça marche.
Mais on ne sait pas combien il y a d'erreurs à corriger et ton manque d'autonomie va faire qu'à chaque nouvelle erreur tu vas créer une discussion à laquelle ce sera la croix et la bannière pour corriger le problème...
Donc je ne sais pas ce que tu as tapé comme commande ici, mais apparemment elle est incomplète, le programme attends (au moins) deux valeurs, mais la valeur "1" (donc la deuxième) n'existe pas.


Voilà, j'ai vu ce truc là dans un de mes dossiers nommé "commands"
Donc je trouve où ces fameuses lignes de codes ? Dans la database HeidiSQL ou dans le fichier java ?
Les deux images que tu as montré précédemment c'est du code...
Après, le mieux serait de le récupérer directement à la source, dans les fichiers .class qui sont exécutés par le programme (avec JD-GUI par exemple)
Après, le mieux serait de le récupérer directement à la source, dans les fichiers .class qui sont exécutés par le programme (avec JD-GUI par exemple)
Voilà les quelques lignes de codes apparemment du JAVA, mais il y a une dizaine de fichiers java dans mon fichier commandes, donc comment savoir lequel est le bon ? 







Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question

Voilà ce que j'ai dans chat/chatCommandHandlers/ItemSpawner.java
Donc, comme je l'indiquais dans le premier message, la commande est incomplète, le programme attends (au moins) deux valeurs, en l’occurrence des entiers, que l'on voit dans le code :
Integer.parseInt(parameters[1])et qui provoque l'erreur
ArrayIndexOutOfBoundsException: 1car le tableau
parametersne contient pas la valeur 1...
Il faudrait le reste du code... Là ça ne fait que confirmer ce que j'avais compris du message d'erreur. En particulier il faudrait savoir comment le programme calcule les paramètres afin de savoir pourquoi il n'en a qu'un au lieu des deux attendus. Mais cette partie là ne se fait pas dans le code de ItemSpawner donc il me faudrait les trois autres.
Oula, jusque là encore je comprenais mais là je brasse grave ! Quels éléments te faudrait-il pour pouvoir comprendre ce qu'il manque ? Je peux t'expliquer un peu ce que j'ai fait pour avoir les fichiers etc ou même t'envoyer carrément le tuto papier de ce que j'ai fait pour avoir tout ça, si ça peut aider !
Sinon pour faire court, j'ai une database sur MySQL, et des fichiers JAVA et CLASS. Et quand j'ai fini de faire la database sur MySQL, j'ai du faire un AutoCompileAll.bat
Sinon pour faire court, j'ai une database sur MySQL, et des fichiers JAVA et CLASS. Et quand j'ai fini de faire la database sur MySQL, j'ai du faire un AutoCompileAll.bat
C'est ce que j'expliquais plus haut, tu as un message d'erreur qui fait apparaître 4 lignes de codes :

Donc avec ItemSpawner.java je peux confirmer qu'il attends 2 paramètres (des entiers), mais vu le message d'erreur il n'a pas le deuxième.
Il faudrait donc savoir comment il est censé calculer ces deux paramètres et ça je le saurais dans l'un des 3 autres codes. Cela me permettra de savoir quel format est attendu pour ta commande pour que tu la corriges et lui transmettre convenablement les deux paramètres.
- ItemSpawner.java ligne 17
- ChatParser.java ligne 204
- Chat.java ligne 239
- GameServer.java ligne 195

Donc avec ItemSpawner.java je peux confirmer qu'il attends 2 paramètres (des entiers), mais vu le message d'erreur il n'a pas le deuxième.
Il faudrait donc savoir comment il est censé calculer ces deux paramètres et ça je le saurais dans l'un des 3 autres codes. Cela me permettra de savoir quel format est attendu pour ta commande pour que tu la corriges et lui transmettre convenablement les deux paramètres.



Est-ce que ça t'aide ?
Ok, donc le format des commandes c'est
À partir de là il récupère d'une part le nom de la commande puis la liste des paramètres.
Avec le nom de la commande il va chercher dans une liste qu'est-ce qui va permettre de l'interpréter, dans ton cas avec la commande "additem" c'est "ItemSpawner" qui va être utilisé et il attends deux paramètres entiers.
Donc le format ce serait
Par contre je ne sais pas à quoi correspond ces deux entiers, pour le savoir il faudrait regarder dans item/Item.java la méthode itemSpawnPacket et s'intéresser au rôle du deuxième et troisième paramètre (qui sont donc des entiers).
Attention : je n'ai pas le code complet pour ItemSpawner, parce qu'il y a autre chose à droite de l'image que je ne vois pas (et qui sont peut être utiles) donc mon analyse est sous réserve qu'il n'y ait rien d'important caché après...
(c'est pour ça qu'un copier coller du code c'est mieux qu'une image, au moins on a tout d'un coup...)
COMMANDE:PARAM1:PARAM2:PARAM3...
À partir de là il récupère d'une part le nom de la commande puis la liste des paramètres.
Avec le nom de la commande il va chercher dans une liste qu'est-ce qui va permettre de l'interpréter, dans ton cas avec la commande "additem" c'est "ItemSpawner" qui va être utilisé et il attends deux paramètres entiers.
Donc le format ce serait
additem:entier1:entier2
Par contre je ne sais pas à quoi correspond ces deux entiers, pour le savoir il faudrait regarder dans item/Item.java la méthode itemSpawnPacket et s'intéresser au rôle du deuxième et troisième paramètre (qui sont donc des entiers).
Attention : je n'ai pas le code complet pour ItemSpawner, parce qu'il y a autre chose à droite de l'image que je ne vois pas (et qui sont peut être utiles) donc mon analyse est sous réserve qu'il n'y ait rien d'important caché après...

Alors la formule incomplète c'est celle-ci :
Et ensuite dans le item.java il y a ça :
Par contre dans le fichier item, y a aussi consumables, dropitem, equipment etc... Ca ne t'intéresse pas ?
//System.out.println("About to spawn item: " + itemID + "x"+Integer.parseInt(parameters[1])+" at coordinates: " + cur.getlastknownX() + "," + cur.getlastknownY() );
Et ensuite dans le item.java il y a ça :
package item; import java.nio.ByteBuffer; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import Connections.Connection; import Player.Character; import Player.PlayerConnection; import Tools.BitTools; /* * TODO: uhhh.. lots of stuff */ public class Item { private int id; private int width, height; private boolean consumeable; private boolean permanent; private int npcPrice; private long expirationTime; private int minLvl, MaxLvl; private int type; public static final int EQUIPMENT = 1; public static final int POTION = 2; public static final int TELEPORT = 3; public static final int UPGRADE = 4; public static final int MANUAL = 5; public static final int MATERIAL = 6; public static int inc = 0; public static ConcurrentMap<Integer, Integer> iteMap = new ConcurrentHashMap<Integer, Integer>(); public static ConcurrentMap<Integer, Integer> iteMapSTACK = new ConcurrentHashMap<Integer, Integer>(); public static ConcurrentMap<Integer, Integer> iteMapcharid = new ConcurrentHashMap<Integer, Integer>(); public static ConcurrentMap<Integer, Long> iteMapTimedrop = new ConcurrentHashMap<Integer, Long>(); public Item(){ } public Consumables getConsumable(){ return null; } //public Equipment getEquipment(){ // return null; //} public int getId() { return id; } public void setId(int id) { this.id = id; } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public boolean isConsumeable() { return consumeable; } public void setConsumeable(boolean consumeable) { this.consumeable = consumeable; } public boolean isPermanent() { return permanent; } public void setPermanent(boolean permanent) { this.permanent = permanent; } public int getNpcPrice() { return npcPrice; } public void setNpcPrice(int npcPrice) { this.npcPrice = npcPrice; } public long getExpirationTime() { return expirationTime; } public void setExpirationTime(long expirationTime) { this.expirationTime = expirationTime; } public int getMinLvl() { return minLvl; } public void setMinLvl(int minLvl) { this.minLvl = minLvl; } public int getMaxLvl() { return MaxLvl; } public void setMaxLvl(int maxLvl) { MaxLvl = maxLvl; } public int getType() { return type; } public void setType(int type) { this.type = type; } public static byte[] itemSpawnPacket(int charID, int itemID, int STACK, float x, float y, Connection con) { Character cur = ((PlayerConnection)con).getActiveCharacter(); inc++; byte[] item = new byte[56]; byte[] spawnX = BitTools.floatToByteArray(x); byte[] spawnY = BitTools.floatToByteArray(y); byte[] chid = BitTools.intToByteArray(inc); byte[] itid = BitTools.intToByteArray(itemID); byte[] INVstack = BitTools.intToByteArray(STACK); item[0] = (byte)item.length; item[4] = (byte)0x05; item[6] = (byte)0x0e; for(int i=0;i<4;i++) { item[36+i] = spawnX[i]; item[40+i] = spawnY[i]; item[20+i] = itid[i]; item[32+i] = chid[i]; item[28+i] = INVstack[i]; // drop stack } iteMapTimedrop.put(Integer.valueOf(inc), Long.valueOf(System.currentTimeMillis())); iteMapcharid.put(Integer.valueOf(inc), Integer.valueOf(charID)); iteMap.put(Integer.valueOf(inc), Integer.valueOf(itemID)); iteMapSTACK.put(Integer.valueOf(inc), Integer.valueOf(STACK)); cur.sendToMap(item); return item; } }
Par contre dans le fichier item, y a aussi consumables, dropitem, equipment etc... Ca ne t'intéresse pas ?
Ce qui compte c'est la ligne 131 :
Donc le format de ta commande c'est
Je ne sais pas ce qu'est "STACK" dans ton contexte, mais il va falloir lui trouver une valeur et la passer dans ta commande...
NB. C'est quand même du code très moche qu'on a là !
itemSpawnPacket(int charID, int itemID, int STACK, float x, float y, Connection con)
Donc le format de ta commande c'est
additem:itemId:stack
Je ne sais pas ce qu'est "STACK" dans ton contexte, mais il va falloir lui trouver une valeur et la passer dans ta commande...
NB. C'est quand même du code très moche qu'on a là !
Les deux étaient listés dans le .help mais bien que .ping fonctionne, .serverstatus ne fonctionnait pas...
Dans la mesure où on ne sait pas vraiment ce qu'il y a dans le code, on peut aussi très bien imaginer que tu essayes de faire fonctionner une commande qui n'a jamais marché...