forked from MagicBane/Server
				
			
				 3 changed files with 161 additions and 76 deletions
			
			
		@ -0,0 +1,143 @@
				@@ -0,0 +1,143 @@
					 | 
				
			||||
// • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | 
				
			||||
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | 
				
			||||
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | 
				
			||||
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | 
				
			||||
// ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | 
				
			||||
//      Magicbane Emulator Project © 2013 - 2022
 | 
				
			||||
//                www.magicbane.com
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
package engine.objects; | 
				
			||||
 | 
				
			||||
import engine.gameManager.DbManager; | 
				
			||||
import engine.math.Vector3fImmutable; | 
				
			||||
import engine.net.client.ClientConnection; | 
				
			||||
import engine.net.client.msg.ClientNetMsg; | 
				
			||||
import engine.net.client.msg.PetitionReceivedMsg; | 
				
			||||
import org.joda.time.DateTime; | 
				
			||||
import org.pmw.tinylog.Logger; | 
				
			||||
 | 
				
			||||
import java.sql.Connection; | 
				
			||||
import java.sql.PreparedStatement; | 
				
			||||
import java.sql.SQLException; | 
				
			||||
 | 
				
			||||
public class Petition extends AbstractGameObject { | 
				
			||||
    public int primaryType; | 
				
			||||
    public int subType; | 
				
			||||
    public Account reportAccount; | 
				
			||||
    public PlayerCharacter reportPlayer; | 
				
			||||
    public Vector3fImmutable playerLocation; | 
				
			||||
    public DateTime reportTime; | 
				
			||||
    public String message; | 
				
			||||
 | 
				
			||||
    public Petition(ClientNetMsg msg, ClientConnection origin){ | 
				
			||||
        this.primaryType = ((PetitionReceivedMsg)msg).getType(); | 
				
			||||
        this.subType = ((PetitionReceivedMsg)msg).getSubType(); | 
				
			||||
        this.reportAccount = origin.getAccount(); | 
				
			||||
        this.reportPlayer = origin.getPlayerCharacter(); | 
				
			||||
        this.playerLocation = origin.getPlayerCharacter().getLoc(); | 
				
			||||
        this.reportTime = DateTime.now(); | 
				
			||||
        this.message = ((PetitionReceivedMsg) msg).getMessage(); | 
				
			||||
    } | 
				
			||||
    public static String getPrimaryTypeString(int value){ | 
				
			||||
        String primaryReportType; | 
				
			||||
        switch(value){ | 
				
			||||
            case 1: // TYPE_GENERAL_HELP
 | 
				
			||||
                primaryReportType = "GENERAL"; | 
				
			||||
                break; | 
				
			||||
            case 2: // TYPE_FEEDBACK
 | 
				
			||||
                primaryReportType = "FEEDBACK"; | 
				
			||||
                break; | 
				
			||||
            case 3: // TYPE_STUCK
 | 
				
			||||
                primaryReportType = "STUCK"; | 
				
			||||
                break; | 
				
			||||
            case 4: // TYPE_HARASSMENT
 | 
				
			||||
                primaryReportType = "HARASSMENT"; | 
				
			||||
                break; | 
				
			||||
            case 5: // TYPE_EXPLOIT
 | 
				
			||||
                primaryReportType = "EXPLOIT"; | 
				
			||||
                break; | 
				
			||||
            case 6: // TYPE_BUG
 | 
				
			||||
                primaryReportType = "BUG"; | 
				
			||||
                break; | 
				
			||||
            case 7: // TYPE_GAME_STOPPER
 | 
				
			||||
                primaryReportType = "GAME STOPPER"; | 
				
			||||
                break; | 
				
			||||
            case 8: // TYPE_TECH_SUPPORT
 | 
				
			||||
                primaryReportType = "TECH SUPPORT"; | 
				
			||||
                break; | 
				
			||||
            default: // INVALID_TYPE cannot process this
 | 
				
			||||
                primaryReportType = "NONE"; | 
				
			||||
                break; | 
				
			||||
        } | 
				
			||||
        return primaryReportType; | 
				
			||||
    } | 
				
			||||
    public static String getSecondaryTypeString(int value){ | 
				
			||||
        String subType; | 
				
			||||
        switch (value) { | 
				
			||||
            case 1: // SUBTYPE_EXPLOIT_DUPE
 | 
				
			||||
                subType = "DUPE"; | 
				
			||||
                break; | 
				
			||||
            case 2: // SUBTYPE_EXPLOIT_LEVELING
 | 
				
			||||
                subType = "LEVELLING"; | 
				
			||||
                break; | 
				
			||||
            case 3: // SUBTYPE_EXPLOIT_SKILL_GAIN
 | 
				
			||||
                subType = "SKILL GAIN"; | 
				
			||||
                break; | 
				
			||||
            case 4: // SUBTYPE_EXPLOIT_KILLING
 | 
				
			||||
                subType = "KILLING"; | 
				
			||||
                break; | 
				
			||||
            case 5: // SUBTYPE_EXPLOIT_POLICY
 | 
				
			||||
                subType = "POLICY"; | 
				
			||||
                break; | 
				
			||||
            case 6: // SUBTYPE_EXPLOIT_OTHER
 | 
				
			||||
                subType = "OTHER"; | 
				
			||||
                break; | 
				
			||||
            case 7: // SUBTYPE_TECH_VIDEO
 | 
				
			||||
                subType = "VIDEO"; | 
				
			||||
                break; | 
				
			||||
            case 8: // SUBTYPE_TECH_SOUND
 | 
				
			||||
                subType = "SOUND"; | 
				
			||||
                break; | 
				
			||||
            case 9: // SUBTYPE_TECH_NETWORK
 | 
				
			||||
                subType = "NETWORK"; | 
				
			||||
                break; | 
				
			||||
            case 10: // SUBTYPE_TECH_OTHER
 | 
				
			||||
                subType = "OTHER"; | 
				
			||||
                break; | 
				
			||||
            default: // INVALID_SUB_TYPE
 | 
				
			||||
                subType = "NONE"; | 
				
			||||
                break; | 
				
			||||
        } | 
				
			||||
        return subType; | 
				
			||||
    } | 
				
			||||
    public static String getLocationString(Vector3fImmutable loc){ | 
				
			||||
        return loc.x + "," + loc.y + "," + loc.z; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    public void updateDatabase() { | 
				
			||||
        try (Connection connection = DbManager.getConnection(); | 
				
			||||
 | 
				
			||||
             //check that table exists
 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
             PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO `dyn_petition` (`time`=?, `primaryType`=?, `subType`=?, `account`=?, " | 
				
			||||
                     + "`character`=?, `location`=?, `message`=?, `ID`=?)")) { | 
				
			||||
 | 
				
			||||
            preparedStatement.setString(1, this.reportTime.toString()); | 
				
			||||
            preparedStatement.setString(2, getPrimaryTypeString(this.primaryType)); | 
				
			||||
            preparedStatement.setString(3, getSecondaryTypeString(this.subType)); | 
				
			||||
            preparedStatement.setString(4, this.reportAccount.getUname()); | 
				
			||||
            preparedStatement.setString(5, this.reportPlayer.getFirstName()); | 
				
			||||
            preparedStatement.setString(6, getLocationString(this.playerLocation)); | 
				
			||||
            preparedStatement.setString(7, this.message); | 
				
			||||
            preparedStatement.setInt(8, this.getObjectUUID()); | 
				
			||||
 | 
				
			||||
            preparedStatement.executeUpdate(); | 
				
			||||
 | 
				
			||||
        } catch (SQLException e) { | 
				
			||||
            Logger.error("CREATE PETITION FAILED: " + e); | 
				
			||||
        } | 
				
			||||
    } | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue