26.08.2015, 13:49
@!damo!spiderman: They are hosted on dropbox and are working fine for me. Maybe Dropbox is restricted in your country?
@Command
public bool hello(Player p, Player @CommandParam("ąęųљįčę")p2)
{
return true;
}
@Command
@CommandHelp("[myCustomArgumentText] [mySecondCustomArgumentText]")
public boolean givecash(Player p, Player target, int amount)
{
...
}
commandManager.setUsageMessageSupplier((issuer, command, prefix, arguments, help) -> {
if(help != null) //if @CommandHelp has been supplied
return "Correct usage: " + prefix + command + " " + help;
else { //If not, use parameterNames from Java
String paramsString = "";
for(int i = 0; i < arguments.length; i++) {
paramsString += "[" + arguments[i] + "]";
if(i + 1 < arguments.length)
paramsString += " ";
}
return "Correct usage: " + prefix + command + " " + paramsString;
}
});
eventManagerNode.registerHandler(PlayerCommandEvent.class, HandlerPriority.BOTTOM, (e) ->
{
Player player = e.getPlayer();
player.sendMessage(Color.RED, "Unknown command. Type /help to see help.");
e.setProcessed();
});
public class VehicleData extends VehicleLifecycleObject {
private String owner;
public VehicleData(EventManager eventManager, Vehicle vehicle) {
super(eventManager, vehicle);
}
@Override
public void onInit() {
}
@Override
public void onDestroy() {
}
public void setOwner(String owner) {
this.owner = owner;
}
}
vehicleLifecycleHolder = new VehicleLifecycleHolder(eventManager);
vehicleLifecycleHolder.registerClass(VehicleData.class);
Vehicle vehicle = Vehicle.create(some values here...);
VehicleData vehicleData = vehicleLifecycleHolder.getObject(vehicle, VehicleData.class);
vehicleData.setOwner(owner);
Ok, my bad, I REPLACED the code from pastebin instead of just to ADD it.
Other questions (excuse me if there were ones. There are 40 pages to read...): 1) Is there any tutorial how to run already written PAWN gamemode with a gamemode written with the help of your plugin? 2) Can I use plugins like Incognito's streamer in a java gamemode? 3) Can I write my own plugin with the help of your plugin? Or how can I make methods in java gamemode accessible in pawn gamemode? |
package maze.plugin.streamer; import maze.Util; import net.gtaun.shoebill.amx.AmxCallable; import net.gtaun.shoebill.amx.types.ReferenceFloat; import net.gtaun.shoebill.constant.ObjectMaterialSize; import net.gtaun.shoebill.constant.ObjectMaterialTextAlign; import net.gtaun.shoebill.data.Color; import net.gtaun.shoebill.data.Location; import net.gtaun.shoebill.data.Vector3D; import net.gtaun.shoebill.object.Player; import net.gtaun.shoebill.object.Vehicle; import java.util.ArrayList; /** * Created by Bebras on 2015.06.07. */ public class DynamicSampObject { private static ArrayList<DynamicSampObject> objects; private int id, modelId; private Player attachedPlayer; private float speed, drawDistance; private DynamicSampObject attachedObject; private Vehicle attachedVehicle; public static DynamicSampObject create(int modelid, Location location, float rx, float ry, float rz) { return create(modelid, location, rx, ry, rz, 0.0f); } // CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 200.0, Float:drawdistance = 0.0); public static DynamicSampObject create(int modelid, Location location, float rx, float ry, float rz, float drawdistance) { if(objects == null) { objects = new ArrayList<>(); } AmxCallable nativeMethod = Util.getNativeMethod("CreateDynamicObject"); int id = 0; if(nativeMethod != null) { id = (Integer)nativeMethod.call(modelid, location.getX(), location.getY(), location.getZ(), rx, ry, rz, location.getWorldId(), location.getInteriorId(), drawdistance); DynamicSampObject object = new DynamicSampObject(id, modelid, null, 0.0f, drawdistance, null, null); objects.add(object); } return null; } private DynamicSampObject(int id, int modelId, Player attachedPlayer, float speed, float drawDistance, DynamicSampObject attachedObject, Vehicle attachedVehicle) { this.id = id; this.modelId = modelId; this.attachedPlayer = attachedPlayer; this.speed = speed; this.drawDistance = drawDistance; this.attachedObject = attachedObject; this.attachedVehicle = attachedVehicle; } public int getId() { return id; } public int getModelId() { return modelId; } public float getSpeed() { return speed; } public float getDrawDistance() { return drawDistance; } public Player getAttachedPlayer() { return attachedPlayer; } public DynamicSampObject getAttachedObject() { return attachedObject; } public Vehicle getAttachedVehicle() { return attachedVehicle; } // native GetDynamicObjectPos(objectid, &Float:x, &Float:y, &Float:z); public Location getLocation() { AmxCallable function = Util.getNativeMethod("GetDynamicObjectPos"); if(function != null) { ReferenceFloat x = new ReferenceFloat(0.0f); ReferenceFloat y = new ReferenceFloat(0.0f); ReferenceFloat z = new ReferenceFloat(0.0f); function.call(getId(), x, y, z); return new Location(x.getValue(), y.getValue(), z.getValue()); } else { return null; } } // native SetDynamicObjectPos(objectid, Float:x, Float:y, Float:z); public void setLocation(Vector3D location) { AmxCallable function = Util.getNativeMethod("SetDynamicObjectPos"); if(function != null) { function.call(getId(), location.getX(), location.getY(), location.getZ()); } } public void setLocation(Location location) { setLocation(new Vector3D(location.getX(), location.getY(), location.getZ())); } // native GetDynamicObjectRot(objectid, &Float:rx, &Float:ry, &Float:rz); public Vector3D getRotation() { AmxCallable function = Util.getNativeMethod("GetDynamicObjectRot"); if(function != null) { ReferenceFloat x = new ReferenceFloat(0.0f); ReferenceFloat y = new ReferenceFloat(0.0f); ReferenceFloat z = new ReferenceFloat(0.0f); function.call(getId(), x, y, z); return new Location(x.getValue(), y.getValue(), z.getValue()); } else { return null; } } // native SetDynamicObjectRot(objectid, Float:rx, Float:ry, Float:rz); public void setRotation(float rx, float ry, float rz) { AmxCallable function = Util.getNativeMethod("SetDynamicObjectRot"); if(function != null) { function.call(getId(), rx, ry, rz); } } public void setRotation(Vector3D vector3D) { setRotation(vector3D.getX(), vector3D.getY(), vector3D.getZ()); } // native IsDynamicObjectMoving(objectid); public boolean isMoving() { AmxCallable function = Util.getNativeMethod("IsDynamicObjectMoving"); if(function != null) { return (Boolean) function.call(getId()); } else { return false; } } //native MoveDynamicObject(objectid, Float:x, Float:y, Float:z, Float:speed, Float:rx = -1000.0, Float:ry = -1000.0, Float:rz = -1000.0); public int move(float x, float y, float z, float speed) { return move(x, y, z, speed, getRotation().getX(), getRotation().getY(), getRotation().getZ()); } public int move(float x, float y, float z, float speed, float rx, float ry, float rz) { this.speed = speed; AmxCallable function = Util.getNativeMethod("MoveDynamicObject"); if(function == null) { return 0; } else { return (Integer)function.call(getId(), x, y, z, speed, rx, ry, rz); } } public int move(Vector3D pos, float speed) { return move(pos.getX(), pos.getY(), pos.getZ(), speed, getRotation().getX(), getRotation().getY(), getRotation().getZ()); } public int move(Vector3D pos, float speed, Vector3D rotation) { return move(pos.getX(), pos.getY(), pos.getZ(), speed, rotation.getX(), rotation.getY(), rotation.getZ()); } public void stop() { AmxCallable function = Util.getNativeMethod("StopDynamicObject"); if(function != null) { function.call(getId()); } } // native AttachDynamicObjectToPlayer(objectid, playerid, Float:offsetx, Float:offsety, Float:offsetz, Float:rx, Float:ry, Float:rz); public void attach(Player player, float offx, float offy, float offz, float rx, float ry, float rz) { AmxCallable function = Util.getNativeMethod("AttachDynamicObjectToPlayer"); if(function != null) { attachedPlayer = player; function.call(getId(), player.getId(), offx, offy, offz, rx, ry, rz); } } public void attach(Player player, Vector3D vector3D, Vector3D rotation) { attach(player, vector3D.getX(), vector3D.getY(), vector3D.getZ(), rotation.getX(), rotation.getY(), rotation.getZ()); } // native AttachDynamicObjectToObject(objectid, attachtoid, Float:offsetx, Float:offsety, Float:offsetz, Float:rx, Float:ry, Float:rz, syncrotation = 1); public void attach(DynamicSampObject object, float offsetx, float offsety, float offsetz, float rx, float ry, float rz, boolean syncrotation) { AmxCallable function = Util.getNativeMethod("AttachDynamicObjectToObject"); if(function != null) { attachedObject = object; function.call(getId(), object.getId(), offsetx, offsety, offsetz, rx, ry, rz, syncrotation); } } public void attach(DynamicSampObject object, Vector3D offset, Vector3D rotation, boolean sync) { attach(object, offset.getX(), offset.getY(), offset.getZ(), rotation.getX(), rotation.getY(), rotation.getZ(), sync); } // native AttachDynamicObjectToVehicle(objectid, vehicleid, Float:offsetx, Float:offsety, Float:offsetz, Float:rx, Float:ry, Float:rz); public void attach(Vehicle vehicle, float offsetx, float offsety, float offsetz, float rx, float ry, float rz) { AmxCallable function = Util.getNativeMethod("AttachDynamicObjectToObject"); if(function != null) { attachedVehicle = vehicle; function.call(getId(), vehicle.getId(), offsetx, offsety, offsetz, rx, ry, rz); } } public void attach(Vehicle vehicle, Vector3D offsets, Vector3D location) { attach(vehicle, offsets.getX(), offsets.getY(), offsets.getZ(), location.getX(), location.getY(), location.getZ()); } // native AttachCameraToDynamicObject(playerid, objectid); public void attachCamera(Player player) { AmxCallable function = Util.getNativeMethod("AttachCameraToDynamicObject"); if(function != null) { function.call(player.getId(), getId()); } } // native SetDynamicObjectMaterial(objectid, materialindex, modelid, const txdname[], const texturename[], materialcolor = 0); public void setMaterial(int materialindex, int modelid, String txdname, String texturename, Color color) { AmxCallable function = Util.getNativeMethod("SetDynamicObjectMaterial"); if(function != null) { function.call(getId(), materialindex, modelid, txdname, texturename, color.getR() | color.getG() | color.getB() | color.getA()); } } public void setMaterial(int materialindex, int modelid, String txdname, String texturename) { setMaterial(materialindex, modelid, txdname, texturename, new Color(0)); } // native SetDynamicObjectMaterialText(objectid, materialindex, const text[], materialsize = OBJECT_MATERIAL_SIZE_256x128, const fontface[] = "Arial", fontsize = 24, bold = 1, fontcolor = 0xFFFFFFFF, backcolor = 0, textalignment = 0); public void setMaterialText(String text, int materialindex, ObjectMaterialSize materialsize, String font, int fontsize, boolean bold, Color fontcolor, Color backcolor, ObjectMaterialTextAlign objectMaterialTextAlign) { AmxCallable function = Util.getNativeMethod("SetDynamicObjectMaterialText"); if(function != null) { function.call(getId(), materialindex, text, materialsize.getValue(), font, fontsize, bold, fontcolor.toArgbValue(), backcolor.toArgbValue(), objectMaterialTextAlign.getValue()); } } public void setMaterialText(String text) { setMaterialText(text, 0, ObjectMaterialSize.SIZE_256x128, "Arial", 24, true, Color.WHITE, Color.BLACK, ObjectMaterialTextAlign.LEFT); } // native SetDynamicObjectNoCameraCol(objectid); public void setNoCameraCol() { AmxCallable function = Util.getNativeMethod("SetDynamicObjectNoCameraCol"); if(function != null) { function.call(getId()); } } // native DestroyDynamicObject(objectid); public void destroy() { objects.remove(this); AmxCallable function = Util.getNativeMethod("DestroyDynamicObject"); if(function != null) { function.call(getId()); id = 0; } } // native IsValidDynamicObject(objectid); public boolean isDestroyed() { AmxCallable function = Util.getNativeMethod("IsValidDynamicObject"); if(function != null) { return !(Boolean)function.call(getId()); } else { return false; } } public static DynamicSampObject findById(int id) { for(DynamicSampObject object : objects) { if(object.getId() == id) { return object; } } return null; } }
public static AmxCallable getNativeMethod(String name) { AmxCallable nativeMethod = null; for(AmxInstance instance : Shoebill.get().getAmxInstanceManager().getAmxInstances()) { if((nativeMethod = instance.getNative(name)) != null) break; } return nativeMethod; }
@valych:
@dusk: The SampNativeFunction class is located in shoebill-launcher and should not be used. This is internal code only. |
@dusk, thanks a lot
@mk124, thanks for reply. But what about the first question? The thing is, I have already written gamemode from scratch (by myself) in pawn and I dont have any desire to rewrite it again (also it will take a lot of time). I want to continue the development of the gamemode in java and sometimes will rewrite old pieces of code from pawn to java. How can I start the server with pawn and java gamemode in parallel? |
AmxCallable getPos = getNativeMethod("AFunction"); int value =(Integer)getPos.call();
public static AmxCallable getNativeMethod(String name) { AmxCallable nativeMethod = null; for(AmxInstance instance : Shoebill.get().getAmxInstanceManager().getAmxInstances()) { if((nativeMethod = instance.getNative(name)) != null) break; } return nativeMethod; }
forward AFunction(); public AFunction() { return 1; }