JavaSDK

From Multi Theft Auto: Wiki

This SDK allows you to call exported MTA functions from Java over HTTP.

Getting Started

To use it, you need to add library to your class-path. It's included in the zip file below.

To get started, copy modules/ml_sockets into your modules folder.And load that. After that, copy resources/jsdk into your resources folder.And start that.


Classes

com.mtasa.elements.Resource

public String getName();
public com.mtasa.MTA getServer();
public void setServer(com.mtasa.MTA newServer);
public String getResourceInfo(String attr);
public boolean setResourceInfo(String attr, String newVal);
public boolean stopResource();
public boolean startResource();
public com.mtasa.LuaArgs call(String functionName,LuaArgs parameters);
public String toString();

com.mtasa.elements.Element

public String getType();
public boolean is_a(Class<?> compareElement);
public boolean clearElementVisibleTo(Element visibleTo);
public Element cloneElement();
public boolean destroyElement();
public Point3D getElementPosition();
public boolean setElementPosition(double x,double y,double z);
public boolean setElementPosition(Point3D points);
public Point3D getElementRotation();
public boolean setElementRotation(double x,double y,double z);
public boolean setElementRotation(Point3D points);
public int getElementAlpha();
public boolean setElementAlpha(int alpha);
public float getElementHealth();
public boolean setElementHealth(float health);
public int getElementModel();
public boolean setElementModel(int model);
public int getElementInterior();
public boolean setElementInterior(int interior);
public int getElementDimension();
public boolean setElementDimension(int dimension);
public Point3D getElementVelocity();
public boolean setElementVelocity(double x,double y,double z);
public boolean setElementVelocity(Point3D points);
public boolean isElementVisibleTo(Element element);
public boolean setElementVisibleTo(Element element,boolean visible);
public boolean isElementFrozen();
public boolean setElementFrozen(boolean frozen);
public String getElementID();
public boolean setElementID(String new_id);
public String getElementData(String data_name);
public boolean setElementData(String data_name,String newVal);

com.mtasa.elements.Ped extends Element

All Element Functions;
// Cloth Types
public static final int CLOTH_SHIRT = 0;
public static final int CLOTH_HEAD = 1;
public static final int CLOTH_TROUSERS = 2;
public static final int CLOTH_SHOES = 3;
public static final int CLOTH_TATTOOS_LEFT_UPPER_ARM = 4;
public static final int CLOTH_TATTOOS_LEFT_LOWER_ARM = 5;
public static final int CLOTH_TATTOOS_RIGHT_UPPER_ARM = 6;
public static final int CLOTH_TATTOOS_RIGHT_LOWER_ARM = 7;
public static final int CLOTH_TATTOOS_BACK = 8;
public static final int CLOTH_TATTOOS_LEFT_CHEST = 9;
public static final int CLOTH_TATTOOS_RIGHT_CHEST = 10;
public static final int CLOTH_TATTOOS_STOMACH = 11;
public static final int CLOTH_TATTOOS_LOWER_BACK = 12;
public static final int CLOTH_NECKLACE = 13;
public static final int CLOTH_WATCH = 14;
public static final int CLOTH_GLASSES = 15;
public static final int CLOTH_HAT = 16;
public static final int CLOTH_EXTRA = 17;

// Fighting Styles
public static final int STYLE_STANDARD = 4;
public static final int STYLE_BOXING = 5;
public static final int STYLE_KUNG_FU = 6;
public static final int STYLE_KNEE_HEAD = 7;
public static final int STYLE_GRAB_KICK = 15;
public static final int STYLE_ELBOWS = 16;

// Ped stats
public static final int PROGRESS_MADE = 0;
public static final int TOTAL_PROGRESS = 1;
public static final int LONGEST_BASKETBALL = 2;

public static final int DIST_FOOT = 3;
public static final int DIST_CAR = 4;
public static final int DIST_BIKE = 5;
public static final int DIST_BOAT = 6;
public static final int DIST_GOLF_CART = 7;
public static final int DIST_HELICOPTOR = 8;
public static final int DIST_PLANE = 9;
public static final int LONGEST_WHEELIE_DIST = 10;
public static final int LONGEST_STOPPIE_DIST = 11;
public static final int LONGEST_2WHEEL_DIST = 12;

public static final int WEAPON_BUDGET = 13;
public static final int FASHION_BUDGET = 14;
public static final int PROPERTY_BUDGET = 15;
public static final int SPRAYING_BUDGET = 16;

public static final int LONGEST_WHEELIE_TIME = 17;
public static final int LONGEST_STOPPIE_TIME = 18;
public static final int LONGEST_2WHEEL_TIME = 19;
public static final int FOOD_BUDGET = 20;

public static final int FAT = 21;
public static final int STAMINA = 22;
public static final int BODY_MUSCLE = 23;
public static final int MAX_HEALTH = 24;
public static final int SEX_APPEAL = 25;

public static final int DIST_SWIMMING = 26;
public static final int DIST_CYCLE = 27;
public static final int DIST_TREADMILL = 28;
public static final int DIST_EXCERSISE_BIKE = 29;
public static final int TATTOO_BUDGET = 30;
public static final int HAIRDRESSING_BUDGET = 31;
public static final int PROSTITUTE_BUDGET = 33;

public static final int MONEY_SPENT_GAMBLING = 35;
public static final int MONEY_MADE_PIMPING = 36;
public static final int MONEY_WON_GAMBLING = 37;
public static final int BIGGEST_GAMBLING_WIN = 38;
public static final int BIGGEST_GAMBLING_LOSS = 39;
public static final int LARGEST_BURGLARY_SWAG = 40;
public static final int MONEY_MADE_BURGLARY = 41;
public static final int LONGEST_TREADMILL_TIME = 44;
public static final int LONGEST_EXCERSISE_BIKE_TIME = 45;
public static final int HEAVIEST_WEIGHT_BENCH_PRESS = 46;
public static final int HEAVIEST_WEIGHT_DUMBELLS = 47;
public static final int BEST_TIME_HOTRING = 48;
public static final int BEST_TIME_BMX = 49;
public static final int LONGEST_CHASE_TIME = 51;
public static final int LAST_CHASE_TIME = 52;
public static final int WAGE_BILL = 53;
public static final int STRIP_CLUB_BUDGET = 54;
public static final int CAR_MOD_BUDGET = 55;
public static final int TIME_SPENT_SHOPPING = 56;
public static final int TOTAL_SHOPPING_BUDGET = 62;
public static final int TIME_SPENT_UNDERWATER = 63;

public static final int RESPECT_TOTAL = 64;
public static final int RESPECT_GIRLFRIEND = 65;
public static final int RESPECT_CLOTHES = 66;
public static final int RESPECT_FITNESS = 67;
public static final int RESPECT = 68;

public static final int WEAPONTYPE_PISTOL_SKILL = 69;
public static final int WEAPONTYPE_PISTOL_SILENCED_SKILL = 70;
public static final int WEAPONTYPE_DESERT_EAGLE_SKILL = 71;
public static final int WEAPONTYPE_SHOTGUN_SKILL = 72;
public static final int WEAPONTYPE_SAWNOFF_SHOTGUN_SKILL = 73;
public static final int WEAPONTYPE_SPAS12_SHOTGUN_SKILL = 74;
public static final int WEAPONTYPE_MICRO_UZI_SKILL = 75;
public static final int WEAPONTYPE_MP5_SKILL = 76;
public static final int WEAPONTYPE_AK47_SKILL = 77;
public static final int WEAPONTYPE_M4_SKILL = 78;
public static final int WEAPONTYPE_SNIPERRIFLE_SKILL = 79;
public static final int SEX_APPEAL_CLOTHES = 80;
public static final int GAMBLING = 81;

public static final int PEOPLE_KILLED_BY_OTHERS = 120;
public static final int PEOPLE_KILLED_BY_PLAYER = 121;
public static final int CARS_DESTROYED = 122;
public static final int BOATS_DESTROYED = 123;
public static final int HELICOPTORS_DESTROYED = 124;
public static final int PROPERTY_DESTROYED = 125;
public static final int ROUNDS_FIRED = 126;
public static final int EXPLOSIVES_USED = 127;
public static final int BULLETS_HIT = 128;
public static final int TYRES_POPPED = 129;
public static final int HEADS_POPPED = 130;
public static final int WANTED_STARS_ATTAINED = 131;
public static final int WANTED_STARS_EVADED = 132;
public static final int TIMES_ARRESTED = 133;
public static final int DAYS_PASSED = 134;
public static final int TIMES_DIED = 135;
public static final int TIMES_SAVED = 136;
public static final int TIMES_CHEATED = 137;
public static final int SPRAYINGS = 138;
public static final int MAX_JUMP_DISTANCE = 139;
public static final int MAX_JUMP_HEIGHT = 140;
public static final int MAX_JUMP_FLIPS = 141;
public static final int MAX_JUMP_SPINS = 142;
public static final int BEST_STUNT = 143;
public static final int UNIQUE_JUMPS_FOUND = 144;
public static final int UNIQUE_JUMPS_DONE = 145;
public static final int MISSIONS_ATTEMPTED = 146;
public static final int MISSIONS_PASSED = 147;
public static final int TOTAL_MISSIONS = 148;
public static final int TAXI_MONEY_MADE = 149;
public static final int PASSENGERS_DELIVERED_IN_TAXI = 150;
public static final int LIVES_SAVED = 151;
public static final int CRIMINALS_CAUGHT = 152;
public static final int FIRES_EXTINGUISHED = 153;
public static final int PIZZAS_DELIVERED = 154;
public static final int ASSASSINATIONS = 155;
public static final int LATEST_DANCE_SCORE = 156;
public static final int VIGILANTE_LEVEL = 157;
public static final int AMBULANCE_LEVEL = 158;
public static final int FIREFIGHTER_LEVEL = 159;
public static final int DRIVING_SKILL = 160;
public static final int TRUCK_MISSIONS_PASSED = 161;
public static final int TRUCK_MONEY_MADE = 162;
public static final int RECRUITED_GANG_MEMBERS_KILLED = 163;
public static final int ARMOUR = 164;
public static final int ENERGY = 165;
public static final int PHOTOS_TAKEN = 166;
public static final int KILL_FRENZIES_ATTEMPTED = 167;
public static final int KILL_FRENZIES_PASSED = 168;
public static final int FLIGHT_TIME = 169;
public static final int TIMES_DROWNED = 170;
public static final int NUM_GIRLS_PIMPED = 171;
public static final int BEST_POSITION_HOTRING = 172;
public static final int FLIGHT_TIME_JETPACK = 173;
public static final int SHOOTING_RANGE_SCORE = 174;
public static final int VALET_CARS_PARKED = 175;
public static final int KILLS_SINCE_LAST_CHECKPOINT = 176;
public static final int TOTAL_LEGITIMATE_KILLS = 177;
public static final int BLOODRING_KILLS = 178;
public static final int BLOODRING_TIME = 179;
public static final int NO_MORE_HURRICANES = 180;
public static final int CITIES_PASSED = 181;
public static final int POLICE_BRIBES = 182;
public static final int CARS_STOLEN = 183;
public static final int CURRENT_GIRLFRIENDS = 184;
public static final int BAD_DATES = 185;
public static final int GIRLS_DATED = 186;
public static final int TIMES_SCORED_WITH_GIRL = 187;
public static final int DATES = 188;
public static final int GIRLS_DUMPED = 189;
public static final int TIMES_VISITED_PROSTITUTE = 190;
public static final int HOUSES_BURGLED = 191;
public static final int SAFES_CRACKED = 192;
public static final int STOLEN_ITEMS_SOLD = 194;
public static final int EIGHT_BALLS_IN_POOL = 195;
public static final int WINS_IN_POOL = 196;
public static final int LOSSES_IN_POOL = 197;
public static final int VISITS_TO_GYM = 198;
public static final int MEALS_EATEN = 200;
public static final int UNDERWATER_STAMINA = 225;
public static final int BIKE_SKILL = 229;
public static final int CYCLE_SKILL = 230;
// Functions:
public boolean addPedClothes(String texture,String model, int type);
public boolean doesPedHaveJetPack();
public String[] getPedClothes(int clothesType);
public int getPedFightingStyle();
public boolean setPedFightingStyle(int style);
public float getPedGravity();
public boolean setPedGravity(float style);
public int getPedSkin();
public boolean setPedSkin(int skin);
public float getPedRotation();
public boolean setPedRotation(float rot);
public boolean givePedJetpack();
public boolean removePedJetpack();
public Vehicle getPedOccupiedVehicle();
public float getPedStat(int stat);

com.mtasa.elements.Player extends Ped

All Element Functions;
All Ped Functions;
public String getPlayerName();
public String getPlayerName(boolean removecolorcodes);
public String getPlayerIP();
public String getPlayerSerial();
public int getPlayerMoney();
public int getPlayerPing();
public Team getPlayerTeam();
public int getPlayerWantedLevel();
public boolean givePlayerMoney(int money);
public boolean isPlayerMuted();
public boolean setPlayerMoney(int money);
public boolean setPlayerMuted(boolean muted);
public boolean setPlayerTeam(Team team);
public boolean spawnPlayer(double x,double y,double z);
public boolean spawnPlayer(Point3D p);
public boolean spawnPlayer(Point3D point,double rot,int skin,int interior,int dimension,Team team);

com.mtasa.elements.Blip extends Element

All Element Functions;
// Functions will be added soon..

com.mtasa.elements.CollisionShape extends Element

All Element Functions;
// Functions will be added soon..

com.mtasa.elements.GTAObject extends Element

All Element Functions;
// Functions will be added soon..

com.mtasa.elements.Pickup extends Element

All Element Functions;
// Functions will be added soon..

com.mtasa.elements.RadarArea extends Element

All Element Functions;
// Functions will be added soon..

com.mtasa.elements.Team extends Element

All Element Functions;
// Functions will be added soon..

com.mtasa.elements.Vehicle extends Element

All Element Functions;
// Functions will be added soon..

com.mtasa.functions.ElementFuncs

public MTA getServer();
public void setServer(MTA server);
public static String type_to_string(Class<? extends Element> type);
public <E extends Element> E[] getElementsByType(Class<E> type);
public Object[] getElementsByType(String type);
public Element createElement(String type);
public Element getElementByID(String id);

com.mtasa.functions.Output

public static final int LEVEL_CUSTOM = 0;
public static final int LEVEL_ERROR = 1;
public static final int LEVEL_WARNING = 2;
public static final int LEVEL_INFO = 3;

// Functions:

public MTA getServer();
public void setServer(MTA server);
public boolean outputChatBox(Object message);
public boolean outputChatBox(Object message,Element toElement);
public boolean outputChatBox(Object message,Element toElement,int r,int g,int b);
public boolean outputChatBox(Object message,Element toElement,int r,int g,int b,boolean colorcoded);
public boolean outputConsole(Object message);
public boolean outputConsole(Object message,Element toElement);
public boolean outputDebugString(Object message);
public boolean outputDebugString(Object message,int dlevel);
public boolean outputDebugString(Object message,int dlevel,int r,int g,int b);
public boolean outputServerLog(Object message);

com.mtasa.functions.PlayerFuncs

public MTA getServer();
public void setServer(MTA server);
public Player getPlayerFromName(String name);
public Player getPlayerFromNamePart(String name);
public Player[] getAlivePlayers();
public Player[] getDeadPlayers();
public Player getRandomPlayer();
public int getPlayerCount()

com.mtasa.LuaArgs extends java.util.List

All list functions.So, you can use in generic for.
public MTA getServer();
public void setServer(MTA server);
public Element parseElement(int index);
public Player parsePlayer(int index);
public Pickup parsePickup(int index);
public Ped parsePed(int index);
public Blip parseBlip(int index);
public CollisionShape parseCollisionShape(int index);
public GTAObject parseGTAObject(int index);
public RadarArea parseRadarArea(int index);
public Team parseTeam(int index);
public Vehicle parseVehicle(int index) ;
public Resource parseResource(int index) ;
public String parseString(int index);
public Boolean parseBoolean(int index);
public Double parseDouble(int index);
public Float parseFloat(int index);
public Integer parseInt (int index);
public String toJson();
public void loadFromJSON(String json);
public Object[] jsonToObject(String json);
public static String toJson(Object o);
public static Object[] fromJson(String j);
public Object get(int index);

com.mtasa.MTA

public Output out;
public Element rootElement;
public PlayerFuncs players;
public ElementFuncs elements;
public static final String RESOURCE = "jsdk"; // JavaSDK Resource Name.

// Functions;
public void sockOpen(); // Port will used in callJava (Changed)
public Element parseElement(Object o);
public Resource parseResource(Object o);
public void sockClose();
public int getSocketPort();
public LuaArgs call(String resource,String function,LuaArgs args); // Function must be exported and given http="true"
public LuaArgs callFunction(String function,LuaArgs args); // This is for calling server-side functions.(etc:getElementByType)
public LuaArgs luaArg(Object i); // This is for only 1 parameter arguments.
// callJava Functions;
public void addInputEvent(InputEvent e); // Only usable with callJava and sockOpen
public void removeInputEvent(InputEvent e); // Only usable with callJava and sockOpen
public void clearInputEvent(); // Only usable with callJava and sockOpen
public ArrayList<InputEvent> getInputEvents(InputEvent e); // Only usable with callJava and sockOpen

// Getter-Setter;
public void setHost(String host);
public String getHost();
public void setPort(int port);
public int getPort();
public void setUsername(String username);
public String getUsername();
public void setPassword(String password);
public String getPassword();
public String getCharset();
public void setCharset(String charset);

com.mtasa.InputEvent( Interface )

public void onAction(LuaArgs args, String input) throws MTAException

com.mtasa.MTAException extends Exception

All exception functions;

Examples

MTA server = new MTA("localhost",22005,"admin","12345"); // Sweet, we are creating a new instance and connection.
/* Example 1: */
Player[] players = server.elements.getElementsByType(Player.class); // ElementFuncs deployed in server.elements :)
server.out.outputChatBox("There are "+players.length+" players",server.rootElement,180,25,25,false); // You don't need getRootElement(), it's deployed in server.rootElement variable.
LuaArgs ret = server.call("rcon","getThisResource",null); // We are calling getThisResource in rcon bot.It's exported :)
Resource thisRes = ret.parseResource(0); // Now, we parsed argument to Resource object.
Player playerRancho = server.players.getPlayerFromName("Rancho"); // We're getting player named Rancho, if he has a colorcode. We must add this 
if (playerRancho != null){ // If playerRancho exists
	server.out.outputChatBox("<PM> JavaSDK: #0055FFHello Sweety",playerRancho,255,255,255,true);
}else{ // else
	server.out.outputDebugString("There is no named player RANCHO!");
}
/* Example 2 : */
Ped[] peds = server.elements.getElementsByType(Ped.class); // We deployed Peds in the peds variable.
for (Ped ped: peds){ // Generic for, (foreach)
	if (ped.doesPedHaveJetPack()) // If ped has a jetpack
		ped.removePedJetpack(); // remove him jetpack
	else // else
		ped.givePedJetpack(); // give him jetpack 
}
/* Example 3: */
Element[] myElements = server.elements.getElementsByType("myElement"); // Now we get elements by the string type
// To do :)
/* Example 4: for callJava */
server.sockOpen(); // callJava open ports
server.addInputEvent(new InputEvent(){
	@Override
	public void onAction(LuaArgs args, String input) throws MTAException{
		String event = args.parseString(0); // Argumant 1 :) It's not default argument :)
		if (event.equals("onMyCall")){
			System.out.println("onMyCall: "+args.parseString(1));
		}
	}
});
// lua file:
for k,v in ipairs(exports.jsdk:getConnections()) do
    exports.jsdk:callJava(v,"onMyCall","Hello");
end
/* Example 5: is_a */
Player playerRancho = server.players.getPlayerFromName("Rancho"); // We're getting player named Rancho, if he has a colorcode. We must add this 

if (playerRancho != null){ // If playerRancho exists
	LuaArgs myCallbackargs = new LuaArgs(server); // create new instance
	myCallbackargs.add(playerRancho); // add a new argument
	myCallbackargs.add("How are u?"); // add a new argument
	LuaArgs ret = server.call("rcon","returnElement",myCallbackargs); // call the howAre function into rcon resource, and send the 2 parameter :) myCallbackargs
	for (Object o: ret){ // generic for returns
		Element e = (Element)o;
		server.out.outputServerLog("Returned value is a player?: "+o.is_a(Player.class));
	}
}else{ // else
	server.out.outputDebugString("There is no named player RANCHO!");
} 

More complex example

ExamplaSDK.png

Caveats

  • You cannot currently compare two Resource or Element objects that you expect to be identical - you need to do a "deep compare", comparing either the "id" fields or the "name" fields.
  • The zip contains src, and javadoc

Download

Contact

If you have any questions/suggestions you can contact author on MTA forum.