After a long fk*n days I made a script with client please tell me dose it work or not
SCRIPT MADE BY:=PK=NO
HERE IS IT
package vcmp.client;
import java.io.*;
import java.net.*;
import java.util.*;
import org.json.JSONObject;
public class VCMPClient {
private Socket socket;
private BufferedReader reader;
private PrintWriter writer;
private String serverHost;
private int serverPort;
private boolean connected;
private String playerName;
private boolean loggedIn;
private int playerId;
private int adminLevel;
private int money;
private int kills;
private int deaths;
private List<VCMPEventListener> listeners;
public VCMPClient(String host, int port, String playerName) {
this.serverHost = host;
this.serverPort = port;
this.playerName = playerName;
this.connected = false;
this.loggedIn = false;
this.adminLevel = 0;
this.money = 0;
this.kills = 0;
this.deaths = 0;
this.listeners = new ArrayList<>();
}
public boolean connect() {
try {
socket = new Socket(serverHost, serverPort);
socket.setSoTimeout(30000); // 30 second timeout
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream(), true);
connected = true;
startMessageListener();
return true;
} catch (Exception e) {
System.err.println("Connection failed: " + e.getMessage());
fireEvent(VCMPEventType.ERROR, "Connection failed: " + e.getMessage());
return false;
}
}
private void startMessageListener() {
Thread listenerThread = new Thread(() -> {
try {
String message;
while (connected && (message = reader.readLine()) != null) {
System.out.println("Received: " + message);
processServerMessage(message);
}
} catch (SocketTimeoutException e) {
System.err.println("Socket timeout");
} catch (IOException e) {
if (connected) {
System.err.println("Connection lost: " + e.getMessage());
fireEvent(VCMPEventType.DISCONNECTED, "Connection lost");
disconnect();
}
}
});
listenerThread.setDaemon(true);
listenerThread.start();
}
private void processServerMessage(String message) {
try {
JSONObject json = new JSONObject(message);
String messageType = json.getString("type");
switch (messageType) {
case "welcome":
fireEvent(VCMPEventType.CONNECTED, json.getString("message"));
break;
case "login_success":
handleLoginSuccess(json);
break;
case "login_failed":
fireEvent(VCMPEventType.LOGIN_FAILED, json.getString("message"));
break;
case "player_stats":
updatePlayerStats(json);
break;
case "player_join":
fireEvent(VCMPEventType.PLAYER_JOIN, json.getString("param1"));
break;
case "player_leave":
fireEvent(VCMPEventType.PLAYER_LEAVE, json.getString("param1"));
break;
case "player_kill":
fireEvent(VCMPEventType.PLAYER_KILL,
json.getString("param1") + " killed " + json.getString("param2"));
break;
case "success":
fireEvent(VCMPEventType.ADMIN_MESSAGE, "Success: " + json.getString("message"));
break;
case "error":
fireEvent(VCMPEventType.ERROR, json.getString("message"));
break;
default:
fireEvent(VCMPEventType.UNKNOWN, message);
break;
}
} catch (Exception e) {
System.err.println("Error processing message: " + e.getMessage());
fireEvent(VCMPEventType.ERROR, "Invalid message format: " + message);
}
}
private void handleLoginSuccess(JSONObject json) {
this.loggedIn = true;
this.playerId = json.getInt("player_id");
this.adminLevel = json.getInt("admin_level");
this.money = json.getInt("money");
this.kills = json.getInt("kills");
this.deaths = json.getInt("deaths");
fireEvent(VCMPEventType.LOGIN_SUCCESS,
String.format("Logged in as %s (ID: %d, Admin: %d, Money: $%d)",
playerName, playerId, adminLevel, money));
}
private void updatePlayerStats(JSONObject json) {
this.money = json.getInt("money");
this.kills = json.getInt("kills");
this.deaths = json.getInt("deaths");
this.adminLevel = json.getInt("admin_level");
fireEvent(VCMPEventType.STATS_UPDATE,
String.format("Stats - Kills: %d, Deaths: %d, Money: $%d, Admin: %d",
kills, deaths, money, adminLevel));
}
// Authentication methods
public void login(String password) {
JSONObject loginData = new JSONObject();
loginData.put("type", "player_login");
loginData.put("player_name", playerName);
loginData.put("password", password);
sendMessage(loginData.toString());
}
public void register(String password) {
// Note: Registration happens in-game, this is just for client connection
fireEvent(VCMPEventType.ERROR, "Please register through the game client first");
}
// Chat methods
public void sendChatMessage(String message) {
JSONObject chatData = new JSONObject();
chatData.put("type", "chat_message");
chatData.put("message", message);
sendMessage(chatData.toString());
}
// Admin commands
public void kickPlayer(int targetId, String reason) {
JSONObject kickData = new JSONObject();
kickData.put("type", "admin_command");
kickData.put("command", "kick");
kickData.put("target_id", targetId);
kickData.put("reason", reason);
sendMessage(kickData.toString());
}
public void banPlayer(int targetId, String reason) {
JSONObject banData = new JSONObject();
banData.put("type", "admin_command");
banData.put("command", "ban");
banData.put("target_id", targetId);
banData.put("reason", reason);
sendMessage(banData.toString());
}
public void giveMoney(int targetId, int amount) {
JSONObject moneyData = new JSONObject();
moneyData.put("type", "admin_command");
moneyData.put("command", "givemoney");
moneyData.put("target_id", targetId);
moneyData.put("amount", amount);
sendMessage(moneyData.toString());
}
public void teleportToPlayer(int targetId) {
JSONObject tpData = new JSONObject();
tpData.put("type", "admin_command");
tpData.put("command", "tp");
tpData.put("target_id", targetId);
sendMessage(tpData.toString());
}
public void setAdminLevel(int targetId, int level) {
JSONObject adminData = new JSONObject();
adminData.put("type", "admin_command");
adminData.put("command", "setadmin");
adminData.put("target_id", targetId);
adminData.put("level", level);
sendMessage(adminData.toString());
}
// Player actions
public void requestStats() {
JSONObject statsRequest = new JSONObject();
statsRequest.put("type", "get_stats");
sendMessage(statsRequest.toString());
}
private void sendMessage(String message) {
if (connected && writer != null) {
System.out.println("Sending: " + message);
writer.println(message);
writer.flush();
}
}
public void disconnect() {
connected = false;
loggedIn = false;
try {
if (writer != null) writer.close();
if (reader != null) reader.close();
if (socket != null) socket.close();
} catch (IOException e) {
System.err.println("Error during disconnect: " + e.getMessage());
}
fireEvent(VCMPEventType.DISCONNECTED, "Disconnected from server");
}
// Event handling
public void addEventListener(VCMPEventListener listener) {
listeners.add(listener);
}
public void removeEventListener(VCMPEventListener listener) {
listeners.remove(listener);
}
private void fireEvent(VCMPEventType type, String data) {
for (VCMPEventListener listener : listeners) {
listener.onVCMPEvent(type, data);
}
}
// Getters
public boolean isConnected() { return connected; }
public boolean isLoggedIn() { return loggedIn; }
public String getPlayerName() { return playerName; }
public int getPlayerId() { return playerId; }
public int getAdminLevel() { return adminLevel; }
public int getMoney() { return money; }
public int getKills() { return kills; }
public int getDeaths() { return deaths; }
}