Jump to content

Recommended Posts

Posted (edited)
Hello guys i want to share with you the BugReportNpc Code for L2Jfrozen!!! Cause some people are looking for this Npc (I do not create the code as you can see it on the credits too)
Create a class in com.l2jfrozen.gameserver.model.actor.instance with the name L2BugReportInstance and paste the following 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 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());
}
 
}
 
And the last thing you have to do it's to create a NPC in the database, and as type set L2BugReport

Important: a player can submit one report at the time. Until the admin delete it from the folder BugReport /gameserver/logs/BugReport the player wont be able to make another report. I did this to keep spammers out who whine all the time and think that fixing something it's solved by using //fix_server. But if you want to, you could remove the if(!exist) clause and the file will continue filling.

 
Credits:JisusKraist
Edited by thepsolartek
Posted (edited)

... i think i want cry really... why you people copy paste old topics especially when those topics are about 2.500 - 3.200 and report? whats the point..

http://bfy.tw/3VpL

 

FULL OF bug report NPC's EVERYWHERE

even xdem cant code better than this :"( stop IT please!

 

Ps. nobody is looking for this npc.. if someone see a server with this npc be sure that he will log out and delete his acc

Edited by AccessDenied
Posted

mate some new people are looking for this code. as i say this code is not mine. it belongs to jisuskraist from l2jfrozen forum and the guy that posted it told that this code belong to him. Anyway if you dont want to add this code just dont add it

Posted (edited)

Forum exist for such things.

 

Wannabe admins want it, more npcs, more professional the server is. Wohoho.

Edited by SweeTs

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...