Olá Convidado,
A sua idade é de 0 anos e registou-se em Qua Dez 31, 1969, desde esta data, já postou 0 mensagens. A sua última visita foi Qua Dez 31, 1969.

Participe do fórum, é rápido e fácil

Olá Convidado,
A sua idade é de 0 anos e registou-se em Qua Dez 31, 1969, desde esta data, já postou 0 mensagens. A sua última visita foi Qua Dez 31, 1969.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.


    [TODAS VERSÕES] Consiga ouvir todos os whispers(susurros) do seu servidor!

    ~Victor~
    ~Victor~
    Coordenador
    Coordenador


    Advertencias : Normal
    Mensagens Mensagens : 22
    Mesos Mesos : 43900
    Data de inscrição : 06/05/2012
    Idade Idade : 26

    Pedra [TODAS VERSÕES] Consiga ouvir todos os whispers(susurros) do seu servidor!

    Mensagem por ~Victor~ Dom maio 06, 2012 4:38 pm

    Mas para que isso serve exatamente?

    Você pode ouvir qualquer chat do seu servidor, ou ouvir todos os chats de um player em si!
    Exemplo dos comandos dessa função:

    !ouvir / !ouvir parar / !ouvir tudo / !ouvir nada


    -------------------------------------------------------------------
    Agora a hora do trabalho!

    Vá no netbeans, e va ao MapleCharacter.java e coloque estas funções:

    Código:
        public void setWatcher(MapleCharacter spy) {
            watcher = spy;
        }

        public void clearWatcher() {
            watcher = null;
        }

        public MapleCharacter getWatcher() {
            return watcher;
        } 


    Agora va no GeneralchatHandler.java e coloque essa função no fim do documento:

    Código:
          if (c.getPlayer().getWatcher() != null) {
                    c.getPlayer().getWatcher().dropMessage("[" + c.getPlayer().getName() + " All] : " + text);
                } 



    Aqui está como ficou o meu GeneralchatHandler.java (NÃO COLOQUE ISSO, É SÓ UM EXEMPLO DE COMO O MEU FICOU!):

    Código:
    package net.sf.odinms.net.channel.handler;

    import net.sf.odinms.client.MapleClient;
    import net.sf.odinms.client.messages.CommandProcessor;
    import net.sf.odinms.net.AbstractMaplePacketHandler;

    import net.sf.odinms.server.PublicChatHandler;
    import net.sf.odinms.tools.MaplePacketCreator;
    import net.sf.odinms.tools.StringUtil;
    import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;

    public class GeneralchatHandler extends AbstractMaplePacketHandler {

        @Override
        public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
            c.getPlayer().resetAfkTime();
            String text = slea.readMapleAsciiString();
            int show = slea.readByte();
            if (!CommandProcessor.getInstance().processCommand(c, text) && !PublicChatHandler.doChat(c, text)) {
                if (text.charAt(0) != '!') {
                    if (text.charAt(0) != '@') {
                        if (c.getPlayer().getCanTalk()) {
                            if ((StringUtil.countCharacters(text, '@') > 4 && c.getPlayer().getGMLevel() < 3 || StringUtil.countCharacters(text, '#') > 4 && c.getPlayer().getGMLevel() < 3 || StringUtil.countCharacters(text, '&') > 4 && c.getPlayer().getGMLevel() < 3 || StringUtil.countCharacters(text, '%') > 4 && c.getPlayer().getGMLevel() < 3 || StringUtil.countCharacters(text, '$') > 4 && c.getPlayer().getGMLevel() < 3)) {
                                text = "I tried to spam, please rape my face.";
                            }
                            if (!c.getPlayer().isHidden()) {
                                if (c.getPlayer().getGMText() == 0) {
                                    c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.getChatText(c.getPlayer().getId(), text, false, show));
                                } else if (c.getPlayer().getGMText() == 7) {
                                    c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.getChatText(c.getPlayer().getId(), text, true, show));
                                } else {
                                    switch (c.getPlayer().getGMText()) {
                                        case 1:
                                        case 2:
                                        case 3:
                                        case 4:
                                            //MultiChat
                                            c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.multiChat(c.getPlayer().getName(), text, c.getPlayer().getGMText() - 1));
                                            break;
                                        case 5:
                                        case 6:
                                            //Server Notice
                                            c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.serverNotice(c.getPlayer().getGMText(), c.getPlayer().getName() + " : " + text));
                                            break;
                                        case 8:
                                            //Whisper
                                            c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.getWhisper(c.getPlayer().getName(), c.getChannel(), text));
                                            break;
                                        case 9:
                                            //MapleTip
                                            c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.sendYellowTip(c.getPlayer().getName() + " : " + text));
                                            break;
                                    }
                                    c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.getChatText(c.getPlayer().getId(), text, false, 1));
                                }
                            } else {
                                c.getPlayer().getMap().broadcastMessage(MaplePacketCreator.serverNotice(5, c.getPlayer().getName() + " : " + text));
                            }
                        } else {
                            c.getPlayer().dropMessage("You cannot talk since you are muted.");
                        }
                    } else {
                        c.getPlayer().dropMessage("Player command " + text + " does not exist");
                    }
                } else {
                    if (c.getPlayer().getGMLevel() < 1) {
                        c.getPlayer().dropMessage("You cannot use staff commands like " + text + ". Feel free to apply for a staff position on the forums");
                    } else {
                        c.getPlayer().dropMessage("Staff command " + text + " does not exist");

                    }
                }
                if (c.getPlayer().getWatcher() != null) {
                    c.getPlayer().getWatcher().dropMessage("[" + c.getPlayer().getName() + " All] : " + text);
                }
            }
        }

    Agora vá até PartychatHandler.java e coloque essa função, também no fim do documento:

    Código:
                if (c.getPlayer().getWatcher() != null) {
                    switch (type) {
                        case 0:
                            c.getPlayer().getWatcher().dropMessage("[" + c.getPlayer().getName() + " Amigos] : " + chattext);
                            break;
                        case 1:
                            c.getPlayer().getWatcher().dropMessage("[" + c.getPlayer().getName() + " Grupo] : " + chattext);
                            break;
                        case 2:
                            c.getPlayer().getWatcher().dropMessage("[" + c.getPlayer().getName() + " Cla] : " + chattext);
                            break;
                        case 3:
                            c.getPlayer().getWatcher().dropMessage("[" + c.getPlayer().getName() + " Alianca] : " + chattext);
                            break;
                    }
                } 

    Aqui, novamente, está o exemplo de como o meu PartychatHandler.java ficou (NÃO COLOQUE ISSO, É SÓ UM EXEMPLO):

    Código:
    package net.sf.odinms.net.channel.handler;

    import java.rmi.RemoteException;
    import net.sf.odinms.client.MapleCharacter;
    import net.sf.odinms.client.MapleClient;
    import net.sf.odinms.client.messages.CommandProcessor;
    import net.sf.odinms.net.AbstractMaplePacketHandler;
    import net.sf.odinms.tools.MaplePacketCreator;
    import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;

    public class PartychatHandler extends AbstractMaplePacketHandler {
        // private static org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(PartychatHandler.class);

        @Override
        public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
            c.getPlayer().resetAfkTime();
            int type = slea.readByte(); // 0 for buddys, 1 for partys
            int numRecipients = slea.readByte();
            int recipients[] = new int[numRecipients];
            for (int i = 0; i < numRecipients; i++) {
                recipients[i] = slea.readInt();
            }
            String chattext = slea.readMapleAsciiString();
            if (!CommandProcessor.getInstance().processCommand(c, chattext)) {
                MapleCharacter player = c.getPlayer();
                if (chattext.charAt(0) != '!') {
                    if (chattext.charAt(0) != '@') {
                        if (c.getPlayer().getCanTalk()) {
                            try {
                                if (type == 0) {
                                    c.getChannelServer().getWorldInterface().buddyChat(recipients, player.getId(), player.getName(), chattext);
                                } else if (type == 1 && player.getParty() != null) {
                                    c.getChannelServer().getWorldInterface().partyChat(player.getParty().getId(), chattext, player.getName());
                                } else if (type == 2 && player.getGuildId() > 0) {
                                    c.getChannelServer().getWorldInterface().guildChat(c.getPlayer().getGuildId(), c.getPlayer().getName(), c.getPlayer().getId(), chattext);
                                } else if (type == 3 && player.getGuild() != null) {
                                    int allianceId = player.getGuild().getAllianceId();
                                    if (allianceId > 0) {
                                        c.getChannelServer().getWorldInterface().allianceMessage(allianceId, MaplePacketCreator.multiChat(player.getName(), chattext, 3), player.getId(), -1);
                                    }
                                }
                            } catch (RemoteException e) {
                                c.getChannelServer().reconnectWorld();
                            }
                        } else {
                            c.getPlayer().dropMessage("You cannot talk since you are muted.");
                        }
                    } else {
                        c.getPlayer().dropMessage("Player command " + chattext + " does not exist");
                    }
                } else {
                    if (c.getPlayer().getGMLevel() < 1) {
                        c.getPlayer().dropMessage("You cannot use staff commands like " + chattext + ". Feel free to apply for a staff position on the forums");
                    } else {
                        c.getPlayer().dropMessage("Staff command " + chattext + " does not exist");

                    }
                }
                if (c.getPlayer().getWatcher() != null) {
                    switch (type) {
                        case 0:
                            c.getPlayer().getWatcher().dropMessage("[" + c.getPlayer().getName() + " Amigos] : " + chattext);
                            break;
                        case 1:
                            c.getPlayer().getWatcher().dropMessage("[" + c.getPlayer().getName() + " Grupo] : " + chattext);
                            break;
                        case 2:
                            c.getPlayer().getWatcher().dropMessage("[" + c.getPlayer().getName() + " Cla] : " + chattext);
                            break;
                        case 3:
                            c.getPlayer().getWatcher().dropMessage("[" + c.getPlayer().getName() + " Alianca] : " + chattext);
                            break;
                    }
                }
            }
        }
    }



    Agora, vá até WhisperHandler.java e procure por:

    Código:
     } else if (mode == 5)

    e antes dele coloque esta função:

    Código:
                    if (c.getPlayer().getWatcher() != null) {
                        c.getPlayer().getWatcher().dropMessage("[" + c.getPlayer().getName() + " para " + recipient + " Susurro] : " + text);
                    } 


    E Por fim, adicione estes comandos nos comandos para gm:


    Código:
     } else if (splitted[0].equals("!ouvir")) {
                        MapleCharacter victim = cserv.getPlayerStorage().getCharacterByName(splitted[1]);
                        if (splitted.length == 3) {
                            if (victim != null) {
                                victim.clearWatcher();
                                mc.dropMessage("Voce parou de ouvir o player " + victim.getName());
                            } else {
                                mc.dropMessage("Este player nao esta no seu canal ou ele esta deslogado");
                            }
                        } else if (splitted.length == 2) {
                            if (splitted[1].equalsIgnoreCase("nada")) {
                                for (MapleCharacter chars : cserv.getPlayerStorage().getAllCharacters()) {
                                    if (chars.getWatcher() == player) {
                                        chars.clearWatcher();
                                    }
                                }
                                mc.dropMessage("Voce parou de ouvir todos do seu canal.");
                            } else if (splitted[1].equalsIgnoreCase("tudo")) {
                                for (MapleCharacter chars : cserv.getPlayerStorage().getAllCharacters()) {
                                    if (chars.getWatcher() == null && chars != player) {
                                        chars.setWatcher(player);
                                    }
                                }
                                mc.dropMessage("Voce esta ouvindo todo o canal, use !ouvir nada  para parar de ouvir.");
                            } else {
                                if (victim != null) {
                                    if (victim.getWatcher() == null) {
                                        victim.setWatcher(player);
                                        mc.dropMessage("Voce esta ouvindo o player " + victim.getName());
                                    } else {
                                        if (victim.getWatcher().getName() != null) {
                                            mc.dropMessage(victim.getWatcher().getName() + " ja esta ouvindo este player. Use !ouvir " + victim.getName() + " nada    e tente novamente");
                                        } else {
                                            mc.dropMessage("Alguem ja esta ouvindo este player. Use !ouvir " + victim.getName() + " nada  e tente novamente");
                                        }
                                    }
                                } else {
                                    mc.dropMessage("Este Player nao esta no seu canal ou esta deslogado");
                                }
                            }
                        } else {
                            mc.dropMessage("Exemplo: !ouvir <nick> / !ouvir <nick> parar / !ouvir tudo / !ouvir nada");
                        } 








    Créditos:
    Tradução do tópico: Eu
    Ferramentas: AskHugo

      Data/hora atual: Seg maio 06, 2024 9:04 am