jhon117
Nombre de messages : 12 Date d'inscription : 29/11/2008
| Sujet: Nouveau canal HRP et .Title 07/06/09, 10:48 am | |
| Bonjour, J'ai trouvé dernièrement sur la partie contribution deux tutoriaux qui paraissaient fort intéressant, j'explicite : Le premier expliquais la manipulation a faire pour obtenir un nouveau canal Role Play Le second montre comment faire une commande .suicide (que j'aurais bien voulu transformer en .title) Malheureusement les méthodes de ces tuto semblent légèrement desués du fait qu'elles datent d'il y a quelque années maintenant. ---- Une recherche sur le sujet du .title m'a amené a comprendre qu'il y avait ce que l'ont appelle des voicedcommandhandler dans le datapack qui permettent de créer des commandes personnelles. Malheureusement avec mon faible niveau en Java je ne sais comment faire pour avoir un code qui permettrais de réaliser cette action ( j'ai fait un code sommaire, qui doit être faux d'ailleurs, le voici) - Spoiler:
- Code:
-
import net.sf.l2j.L2DatabaseFactory; import net.sf.l2j.gameserver.ai.CtrlIntention; import net.sf.l2j.gameserver.communitybbs.Manager.RegionBBSManager; import net.sf.l2j.gameserver.datatables.ClanTable; import net.sf.l2j.gameserver.handler.IAdminCommandHandler; import net.sf.l2j.gameserver.model.L2Object; import net.sf.l2j.gameserver.model.L2World; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance; import net.sf.l2j.gameserver.model.base.ClassId; import net.sf.l2j.gameserver.network.L2GameClient; import net.sf.l2j.gameserver.network.SystemMessageId; import net.sf.l2j.gameserver.network.serverpackets.CharInfo; import net.sf.l2j.gameserver.network.serverpackets.ExBrExtraUserInfo; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.network.serverpackets.PartySmallWindowAll; import net.sf.l2j.gameserver.network.serverpackets.PartySmallWindowDeleteAll; import net.sf.l2j.gameserver.network.serverpackets.SetSummonRemainTime; import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate; import net.sf.l2j.gameserver.network.serverpackets.SystemMessage; import net.sf.l2j.gameserver.network.serverpackets.UserInfo; import net.sf.l2j.gameserver.util.StringUtil; import net.sf.l2j.gameserver.util.Util;
/** * - settitle * @version $Revision: 1.3.2.1.2.10 $ $Date: 2005/04/11 10:06:06 $ */ public class title implements IVoicedCommandHandler { private static Logger _log = Logger.getLogger(AdminEditChar.class.getName()); private static final String[] ADMIN_COMMANDS = { "title", // changes char title }; public boolean IVoicedCommandHandler(String command, L2PcInstance activeChar) { if (command.startsWith("title")) { try { String val = command.substring(15); L2Object target = activeChar.getTarget(); L2PcInstance player = null; if (target instanceof L2PcInstance) { player = (L2PcInstance) target; } else { return false; } player.setTitle(val); player.sendMessage("Votre titre a été changé"); player.broadcastTitleInfo(); } catch (StringIndexOutOfBoundsException e) { //Case of empty character title activeChar.sendMessage("Vous devez specifier votre titre."); } }
J'ai appris par la même occasion qu'il faut "enregistrer les voicedcommandhandlers du datapack dans un paquet java du game server appelé VoicedCommandHandler.java et ca, je ne sais pas comment le faire... - Spoiler:
- Code:
-
/* * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.l2j.gameserver.handler;
import java.util.Map; import java.util.logging.Logger;
import javolution.util.FastMap; import net.sf.l2j.Config;
/** * This class ... * * @version $Revision: 1.1.4.5 $ $Date: 2005/03/27 15:30:09 $ */ public class VoicedCommandHandler { private static Logger _log = Logger.getLogger(ItemHandler.class.getName()); private static VoicedCommandHandler _instance; private Map<String, IVoicedCommandHandler> _datatable; public static VoicedCommandHandler getInstance() { if (_instance == null) { _instance = new VoicedCommandHandler(); } return _instance; } private VoicedCommandHandler() { _datatable = new FastMap<String, IVoicedCommandHandler>(); } public void registerVoicedCommandHandler(IVoicedCommandHandler handler) { String[] ids = handler.getVoicedCommandList(); for (int i = 0; i < ids.length; i++) { if (Config.DEBUG) _log.fine("Adding handler for command " + ids[i]); _datatable.put(ids[i], handler); } } public IVoicedCommandHandler getVoicedCommandHandler(String voicedCommand) { String command = voicedCommand; if (voicedCommand.indexOf(" ") != -1) { command = voicedCommand.substring(0, voicedCommand.indexOf(" ")); } if (Config.DEBUG) _log.fine("getting handler for command: " + command + " -> " + (_datatable.get(command) != null)); return _datatable.get(command); } /** * @return */ public int size() { return _datatable.size(); } }
Pour le nouveau canal RP j'ai essayé de suivre le tuto disant qu'il fallait aller dans le say2 mais la non plus rien ne ressemble au tuto (*va chercher une corde*) Enfin, si vous pouviez m'aider je vous en serait très reconnaissant Et si vous avez besoin de plus de précisions, il n'y a qu'a demander NB : Je suis un nul en java, ne riez pas | |
|
Skatershi
Nombre de messages : 1305 Age : 36 Date d'inscription : 09/11/2006
| Sujet: Re: Nouveau canal HRP et .Title 09/06/09, 02:00 pm | |
| Pas trop compris tes demandes.
Pour ton canal, dans say2.java, cherche un bloc de code précédé par des "//", c'est un exemple pour créer un canal custom, tu devrais pouvoir te débrouiller avec.
Pour la commande ".title", il te suffit de regarder les voicedcommand existantes, d'essayer de les comprendre puis d'en refaire un, c'est très simple. | |
|
jhon117
Nombre de messages : 12 Date d'inscription : 29/11/2008
| Sujet: Re: Nouveau canal HRP et .Title 10/06/09, 11:31 am | |
| Je réitère alors =) J'ai trouvé pour le .title (j'en ai même fait un petit tuto ) Mais pour le canal enfaite ce que je souhaiterais ce serait que lorsque par exemple un joueur qui veut écrire en HRP tape la premiere parenthèse (qui serait le trigger de la commande) Alors la phrase sera écrite comme si il s'agissait de la Hero_voice mais dans un radius bien définit (comme pour le chat all) je donne un exemple concret tiens Eladrin: *Eladrin se prend les pieds dans les escaliers et tombe sur le sol, s'écrasant l'arrête du nez contre le parvis* Arctura : [HRP] AH !! la Nulle !!(texte réellement tapé de arctura : (AH !! la Nulle !! ) Voila j'espère avoir été plus clair. Bonne journée a vous. | |
|
Klo
Nombre de messages : 20 Age : 36 Date d'inscription : 15/02/2009
| Sujet: Re: Nouveau canal HRP et .Title 10/06/09, 08:16 pm | |
| Soit tu dois pouvoir définir un nouveau canal commençant par le symbole "(" et dans ce cas tu devrais t'en sortir avec ce que t'as donner Skatershi.
Sinon un moyen un peu moins efficace, mais pour faire plus simple (sans la coloration), tu peux juste faire quelque chose du genre :
String str; // la string que tu récupère
if str.startWith( "(" ) str.replace("(","[HRP]"); // Si la phrase commence par une parenthèse, tu la remplace par le [HRP]
Après a voir si tu ne peux pas modifier la couleur également, ça je n'ai pas regardé. | |
|
Contenu sponsorisé
| Sujet: Re: Nouveau canal HRP et .Title | |
| |
|