From MTA
MTA and DarqlineMP both run Lua resources with a manifest, events and exports, so server-side resources port with few structural changes. The main differences:
- No client scripts. Client-side Lua, its GUI and
triggerClientEventhave no equivalent. Use the built-in dialogs, menus and HUD widgets, or a view: an HTML page of your resource that exchanges actions and data with your server code. - Elements are typed handles. Instead of one
setElementPosition(element, ...)for every element type, each type has its own calls:player:teleport,dlmp.set_vehicle_position,object:set_position. cancelEvent()becomes a return value. A handler cancels a cancelable event by returningfalse.- Manifest.
meta.xmlbecomesresource.toml;<script type="server">is[server] scripts,<export>is[server] exports,<include>is[server] dependencies.
See Moving a game mode for the other differences. Below is a draft mapping of the main functions and events.
Events
| MTA | DarqlineMP |
|---|---|
onResourceStart, onResourceStop | resource_start, resource_stop with dlmp.resource_root as the source |
onPlayerConnect | player_connecting (refusable) |
onPlayerJoin, onPlayerQuit | player_connect, player_disconnect |
onPlayerSpawn, onPlayerWasted | player_spawn, player_death |
onPlayerDamage | player_damage |
onPlayerChat | player_chat; return false to stop the broadcast |
onPlayerCommand | handlers of dlmp.add_command_handler |
onVehicleStartEnter, onVehicleEnter, onVehicleExit | vehicle_start_enter (refusable), player_enter_vehicle, player_exit_vehicle |
onVehicleExplode, onVehicleRespawn | vehicle_death, vehicle_respawn |
onPickupHit, onPickupUse | pickup_interact |
onColShapeHit, onColShapeLeave | colshape_enter, colshape_leave |
onPlayerWeaponFire | player_weapon_fire |
onPlayerStealthKill | player_stealth_kill (refusable) |
bindKey (server side) | dlmp.register_action and player_action |
Resources, commands and timers
| MTA | DarqlineMP |
|---|---|
addEventHandler(name, root, fn) | dlmp.add_event_handler(name, dlmp.root, fn) |
addCommandHandler | dlmp.add_command_handler for players, dlmp.add_console_command for the console |
setTimer(fn, ms, times, ...) | dlmp.set_timer(ms, times, fn, ...): times 0 runs until cancelled |
killTimer | timer:cancel() |
exports.name:fn(...), call | dlmp.import("name").fn(...), with name in [server] dependencies |
dbConnect, dbQuery, dbExec | dlmp.db.query, dlmp.db.exec, dlmp.db.transaction: Storing data |
setGameType | dlmp.set_mode_text |
setServerPassword | dlmp.set_server_password |
Players
| MTA | DarqlineMP |
|---|---|
outputChatBox(text, player, r, g, b) | player:send_message(text), or a list of colored runs |
getPlayerName, setPlayerName | player:name(), player:set_name(name) |
spawnPlayer | player:spawn(args); player:set_respawn(args) decides where a death respawns |
getElementPosition, setElementPosition | player:position(), player:teleport({ x, y, z }) |
setElementInterior, setElementDimension | player:teleport({ ..., interior }), player:set_virtual_world(world) |
getElementHealth, setElementHealth | player:health(), player:set_health(value) |
getPedArmor, setPedArmor | player:armor(), player:set_armor(value) |
givePlayerMoney, setPlayerMoney, getPlayerMoney | player:give_money(delta), player:set_money(amount), player:money() |
setElementModel | player:set_skin(model, variant) |
setPlayerWantedLevel | player:set_wanted(level) |
setPlayerNametagColor, setPlayerNametagText, setPlayerNametagShowing | player:set_color, player:set_nametag_text, player:set_nametag_visible |
setPlayerTeam | player:set_team(team) with a team from dlmp.create_team |
setPedAnimation | player:apply_animation(args), player:clear_animations() |
setPedStat | player:set_stat(stat, value) |
setPedWalkingStyle, setPedFightingStyle | player:set_walking_style, player:set_fighting_style |
setElementVelocity | player:set_velocity(x, y, z) |
setElementFrozen, toggleAllControls | player:set_frozen(frozen) |
setCameraMatrix | player:set_camera(...) |
setCameraTarget | player:spectate(target) for another player, player:reset_camera() for the player itself; a vehicle target has no equivalent yet |
setTime, setWeather | player:set_time(hour, minute), player:set_weather(weather) for each player |
kickPlayer, banPlayer | player:kick(reason), player:ban(reason, seconds) |
Weapons
| MTA | DarqlineMP |
|---|---|
giveWeapon | player:give_weapon(weapon, ammo, set_current) |
takeWeapon, takeAllWeapons | player:take_weapon(weapon), player:clear_weapons() |
setWeaponAmmo | player:set_ammo(weapon, ammo, clip) |
setWeaponProperty | dlmp.set_weapon_property |
createExplosion | dlmp.create_explosion(spec) |
Vehicles
| MTA | DarqlineMP |
|---|---|
createVehicle | dlmp.create_vehicle(spec) |
destroyElement(vehicle) | dlmp.destroy_vehicle(vehicle) |
warpPedIntoVehicle, removePedFromVehicle | dlmp.put_player_in_vehicle(player, vehicle, seat), dlmp.remove_player_from_vehicle(player) |
fixVehicle, setElementHealth(vehicle) | dlmp.repair_vehicle, dlmp.set_vehicle_health |
setVehicleColor, setVehiclePaintjob | dlmp.set_vehicle_colors, dlmp.set_vehicle_paintjob |
addVehicleUpgrade, removeVehicleUpgrade | dlmp.add_vehicle_component, dlmp.remove_vehicle_component |
setVehicleLocked, setVehicleEngineState, setVehicleOverrideLights | dlmp.set_vehicle_locked, dlmp.set_vehicle_engine, dlmp.set_vehicle_lights |
setVehiclePlateText | dlmp.set_vehicle_plate |
setVehicleHandling | dlmp.set_vehicle_handling |
respawnVehicle | dlmp.respawn_vehicle |
attachTrailerToVehicle, detachTrailerFromVehicle | dlmp.attach_trailer, dlmp.detach_trailer |
World and interface
| MTA | DarqlineMP |
|---|---|
createPickup | dlmp.create_pickup(spec) |
createBlip, createBlipAttachedTo | dlmp.create_blip(spec) |
createRadarArea | dlmp.create_gang_zone(spec) |
createColSphere, createColCuboid, createColPolygon and the rest | dlmp.create_colshape(spec) |
createMarker of type checkpoint | dlmp.create_checkpoint(spec) |
createObject, moveObject, attachElements | dlmp.create_object(spec), object:move(...), object:attach(...) |
createTeam | dlmp.create_team(spec) |
| GUI windows and DX drawing | dlmp.show_dialog, dlmp.show_menu, HUD widgets or a view |
