Secret Experience

Secret Experience (https://secretexperience.net/)
-   [Lineage] Java Mods (https://secretexperience.net/lineage-java-mods/)
-   -   [L2JFrozen] NPC Bug Report (https://secretexperience.net/lineage-java-mods/34218-npc-bug-report.html)

Setokaiba 29-09-2013 11:20 AM

NPC Bug Report
 
Código:

Crie uma classe com.l2jfrozen.gameserver.model.actor.instance com o nome L2BugReportInstance e cole o seguinte código.
Código:

/*
 * 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 com.l2jfrozen.gameserver.model.actor.instance;

import java.io.*;
import java.util.StringTokenizer;

import javolution.text.TextBuilder;

import com.l2jfrozen.gameserver.ai.CtrlIntention;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.network.L2GameClient;
import com.l2jfrozen.gameserver.network.clientpackets.Say2;
import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
import com.l2jfrozen.gameserver.network.serverpackets.CreatureSay;
import com.l2jfrozen.gameserver.network.serverpackets.MyTargetSelected;
import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jfrozen.gameserver.network.serverpackets.ValidateLocation;
import com.l2jfrozen.gameserver.templates.L2NpcTemplate;

/**
 * @author squallcs
 *
 */
public class L2BugReportInstance extends L2FolkInstance
{
        private static String _type;
       
        public L2BugReportInstance(int objectId, L2NpcTemplate template)
        {
                super(objectId, template);
        }
       
        @Override
        public void onBypassFeedback(L2PcInstance player, String command)
        {
                if (command.startsWith("send_report"))
                {
                        StringTokenizer st = new StringTokenizer(command);
                        st.nextToken();
                        String msg = null;
                        String type = null;
                        type = st.nextToken();
                        msg = st.nextToken();
                        try
                        {
                                while (st.hasMoreTokens())
                                {
                                        msg = msg + " " + st.nextToken();
                                }
                               
                                sendReport(player, type, msg);
                        }
                        catch (StringIndexOutOfBoundsException e)
                        {
                        }
                }
        }
       
        static
        {
                new File("log/BugReports/").mkdirs();
        }
       
        private void sendReport(L2PcInstance player, String command, String msg)
        {
                String type = command;
                L2GameClient info = player.getClient().getConnection().getClient();
               
                if (type.equals("General"))
                        _type = "General";
                if (type.equals("Fatal"))
                        _type = "Fatal";
                if (type.equals("Misuse"))
                        _type = "Misuse";
                if (type.equals("Balance"))
                        _type = "Balance";
                if (type.equals("Other"))
                        _type = "Other";
               
                try
                {
                        String fname = "log/BugReports/" + player.getName() + ".txt";
                        File file = new File(fname);
                        boolean exist = file.createNewFile();
                        if (!exist)
                        {
                                player.sendMessage("You have already sent a bug report, GMs must check it first.");
                                return;
                        }
                        FileWriter fstream = new FileWriter(fname);
                        BufferedWriter out = new BufferedWriter(fstream);
                        out.write("Character Info: " + info + "\r\nBug Type: " + _type + "\r\nMessage: " + msg);
                        player.sendMessage("Report sent. GMs will check it soon. Thanks...");
                       
                        for (L2PcInstance allgms : L2World.getInstance().getAllGMs())
                                allgms.sendPacket(new CreatureSay(0, Say2.SHOUT, "Bug Report Manager", player.getName() + " sent a bug report."));
                       
                        System.out.println("Character: " + player.getName() + " sent a bug report.");
                        out.close();
                }
                catch (Exception e)
                {
                        player.sendMessage("Something went wrong try again.");
                }
        }
       
        @Override
        public void onAction(L2PcInstance player)
        {
                if (!canTarget(player))
                {
                        return;
                }
               
                if (this != player.getTarget())
                {
                        player.setTarget(this);
                       
                        player.sendPacket(new MyTargetSelected(getObjectId(), 0));
                       
                        player.sendPacket(new ValidateLocation(this));
                }
                else if (!canInteract(player))
                {
                        player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this);
                }
                else
                {
                        showHtmlWindow(player);
                }
               
                player.sendPacket(new ActionFailed());
        }
       
        private void showHtmlWindow(L2PcInstance activeChar)
        {
                NpcHtmlMessage nhm = new NpcHtmlMessage(5);
                TextBuilder replyMSG = new TextBuilder("");
               
                replyMSG.append("<html><title>Bug Report Manager</title>");
                replyMSG.append("<body><br><br><center>");
                replyMSG.append("<table border=0 height=10 bgcolor=\"444444\" width=240>");
                replyMSG.append("<tr><td align=center><font color=\"00FFFF\">Hello " + activeChar.getName() + ".</font></td></tr>");
                replyMSG.append("<tr><td align=center><font color=\"00FFFF\">There are no Gms online</font></td></tr>");
                replyMSG.append("<tr><td align=center><font color=\"00FFFF\">and you want to report something?</font></td></tr>");
                replyMSG.append("</table><br>");
                replyMSG.append("<img src=\"L2UI.SquareWhite\" width=280 height=1><br><br>");
                replyMSG.append("<table width=250><tr>");
                replyMSG.append("<td><font color=\"LEVEL\">Select Report Type:</font></td>");
                replyMSG.append("<td><combobox width=105 var=type list=General;Fatal;Misuse;Balance;Other></td>");
                replyMSG.append("</tr></table><br><br>");
                replyMSG.append("<multiedit var=\"msg\" width=250 height=50><br>");
                replyMSG.append("<br><img src=\"L2UI.SquareWhite\" width=280 height=1><br><br><br><br><br><br><br>");
                replyMSG.append("<button value=\"Send Report\" action=\"bypass -h npc_" + getObjectId() + "_send_report $type $msg\" width=204 height=20 back=\"sek.cbui75\" fore=\"sek.cbui75\">");
                replyMSG.append("</center></body></html>");
               
                nhm.setHtml(replyMSG.toString());
                activeChar.sendPacket(nhm);
               
                activeChar.sendPacket(new ActionFailed());
        }
       
}

E a última coisa que você precisa fazer é criar um NPC no banco de dados, que funcinará como o L2BugReport.

Importante: um jogador pode apresentar um relatório. Até o administrador excluí-lo da pasta bugreport/gameserver/logs/bugreport o jogador não será capaz de fazer outro relatório. Eu fiz isso para manter spammers longe ou aqueles que reclamam todo o tempo use o comando //fix_server para fixar algo corrigido. Mas se você quiser, você pode remover o if (!exist) dessa forma removerá a cláusula e permitirá que reportem inúmeras vezes.

Developed by sQuaLL


Horários baseados na GMT -3. Agora são 10:28 AM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.