[ESX - ENG/DE/ES] myMapbuilder - Ingame map editing for RP servers (PAID)

Hey guys,

with this Script I want to present a perfect a In-Game solution to allow your player to enhance their properties. I wrote this especially for roleplay servers, but there are also a lot different possible uses.

I had this idea, because I thought, that the use of CodeWalker or similar programms is very uncomfortable just to add a couch or a table with some chairs to a garden. Because of this I’ve developed this solution to allow your players to build their maps on their own - without leaving the server.

Features:

  • Completely In-Game
  • You can place, delete, move and turn objects
  • You can say whether an object should be moveable
  • Everything is saved into a database → The objects don’t disappear
  • You can edit placed objects later (turn/move/delete)
  • Perfect for roleplay:
    → You can allow your players to spawn objects from a configurable list of objects. This makes it possible for your players to design their properties on their own.
    → You can set up prices for the different objects
  • Admin functions:
    → As an admin you can see each single placed object in a menu and you can teleport to them and edit them.
    → You can choose every object regardless the configured list.
  • Translation file (English, Spanish and German one is already there)
  • Support for NativeUI and NativeUI Realoaded

Update 19.12.2020: Now you can also move objects up and down!

Showcase

List for objects to set up:
You can add every object you want.

Config.recommendObjects = {
    {object = 'prop_table_para_comb_01', label = 'Table with umbrella', price = 1000},
    {object = 'prop_patio_lounger1', label = 'Patio lounger', price = 1000},
    {object = 'prop_patio_heater_01', label = 'Patio heater', price = 1000},
    {object = 'prop_parasol_01', label = 'Parasol', price = 1000},
    {object = 'prop_table_01', label = 'Table', price = 1000},
    {object = 'prop_table_04_chr', label = 'Chair', price = 1000},
    {object = 'prop_bbq_5', label = 'BBQ', price = 1000},
    {object = 'apa_mp_h_din_table_11', label = 'Couch table', price = 1000},
    {object = 'prop_owl_totem_01', label = 'Totem', price = 1000},
}
Config
Config.Locale = 'en'

Config.useNativeUIReloaded = true -- if you want to disable NativeUIReloaded, you have to activate the dependency in fxmanifest.lua!
Config.Debug = true
Config.Command = 'mapbuilder' -- command to open the menu

Config.KeyUsage = false
Config.Key = 38 -- Key, when Key Usage is enabled.

Config.defaultObject = '~r~Nothing'

Config.OnlyForAdmin = false -- then only people with the group can open the menu
Config.AdminGroup = 'superadmin'

Config.Controls = {
    -- turn controls
    turnright = {
        name = 'INPUT_CELLPHONE_RIGHT',
        key = 175
    },
    turnleft = {
        name = 'INPUT_CELLPHONE_LEFT',
        key = 174
    },
    -- move controls
    moveright = {
        name = 'INPUT_CELLPHONE_RIGHT',
        key = 175
    },
    moveleft = {
        name = 'INPUT_CELLPHONE_LEFT',
        key = 174
    },
    moveup = {
        name = 'INPUT_FRONTEND_UP',
        key = 172
    },
    movedown = {
        name = 'INPUT_FRONTEND_DOWN',
        key = 173
    },
    -- general controls
    fast = {
        name = 'INPUT_FRONTEND_SELECT',
        key = 217
    },
    slow = {
        name = 'INPUT_FRONTEND_LS',
        key = 209
    },
    finish = {
        name = 'INPUT_CELLPHONE_CAMERA_EXPRESSION',
        key = 186
    },
}

Config.recommendObjects = {
    {object = 'prop_table_para_comb_01', label = 'Table with umbrella', price = 1000},
    {object = 'prop_patio_lounger1', label = 'Patio lounger', price = 1000},
    {object = 'prop_patio_heater_01', label = 'Patio heater', price = 1000},
    {object = 'prop_parasol_01', label = 'Parasol', price = 1000},
    {object = 'prop_table_01', label = 'Table', price = 1000},
    {object = 'prop_table_04_chr', label = 'Chair', price = 1000},
    {object = 'prop_bbq_5', label = 'BBQ', price = 1000},
    {object = 'apa_mp_h_din_table_11', label = 'Couch table', price = 1000},
    {object = 'prop_owl_totem_01', label = 'Totem', price = 1000},
}
Translations
Translation = {
    ['en'] = {
        ['menu_title'] = 'Map Builder',

        ['get_object_distance'] = 'Placed objects',

        ['controls'] = 'Controls',
        ['turn_right'] = ' ~s~to ~b~turn ~s~the object ~b~right',
        ['turn_left'] = ' ~s~to ~b~turn ~s~the object ~b~left',
        ['turn_fast'] = ' ~s~to ~b~turn ~s~the object ~b~faster',
        ['turn_slow'] = ' ~s~to ~b~turn ~s~the object ~b~slower',
        ['move_forward'] = ' ~s~to ~b~move ~s~the object ~b~forwards',
        ['move_backwards'] = ' ~s~to ~b~move ~s~the object ~b~backwards',
        ['move_right'] = ' ~s~to ~b~move ~s~the object ~b~right side',
        ['move_left'] = ' ~s~to ~b~move ~s~the object ~b~left side',
        ['move_fast'] = ' ~s~to ~b~move ~s~the object ~b~faster',
        ['move_slow'] = ' ~s~to ~b~move ~s~the object ~b~slower',
        ['back_to_menu'] = ' ~s~to go ~b~back ~s~to main menu',

        ['only_for_admins'] = '~r~This function can only be used by staff members!',

        ['spawn_object'] = 'Spawn object',
        ['spawn_object_final'] = '~g~Spawn object',
        ['spawn_object_final_desc'] = '~g~Object will be created at your current location',
        ['move_object'] = 'Move object',
        ['turn_object'] = 'Turn object',
        ['delete_object'] = '~r~Delete object',
        ['delete_object_desc'] = 'Delete object from map',
        ['save_object'] = '~g~Save object',
        ['save_object_desc'] = 'Save object to your database',
        ['enter_objectname'] = 'Object:',
        ['enter_objectname_desc'] = 'Click to enter an object name',

        ['obj_tp'] = 'Teleport',
        ['obj_tp_desc'] = 'Teleport to this object',
        ['obj_hide'] = 'Hide',
        ['obj_hide_desc'] = 'Hide this object (only for you)',
        ['obj_replace'] = '(Re-)Spawn',
        ['obj_replace_desc'] = 'Spawns this object again (Undo Hide)',
        ['obj_already_exists'] = '~r~The object is still there. Hide it first and then you could respawn it.',
        ['obj_permdelete_desc'] = 'The object will be permanently removed from database!',
        ['obj_removed'] = '~g~The object was removed from database.',
        ['obj_savechanges'] = '~g~Save changes.',
        ['obj_savechanges_desc'] = 'Your changes will be saved and applied for all players.',
        ['obj_saved'] = '~g~Your changes were saved!',

        ['set_moveable'] = 'Freeze object?',
        ['set_moveable_desc'] = 'Should it be possible to push/move this object?',
        ['moveable_state_changed'] = '~g~Freeze state changed to ~w~',
        ['set_description'] = 'Description',
        ['set_description_desc'] = 'Makes it easier to find your object in the menu.',

        ['recommend_objects'] = 'Available objects',
        ['recommend_objects_desc'] = 'List of useful objects',
        ['select_object_desc'] = 'Buy object ~b~',

        ['selectObject_help'] = 'Now enter your object using ~y~/selectObject [~g~OBJECT~y~]~s~.',
        ['invalid_object'] = '~r~Invalid object!',
        ['not_enough_money'] = '~r~You do not have enough money!',
        ['no_object'] = '~r~No object!',
        ['cant_save'] = '~r~Object was not saved! Restart your game to to edit this object.',
        
    },
    ['de'] = {
        ['menu_title'] = 'Map Builder',

        ['get_object_distance'] = 'Platzierte Objekte',

        ['controls'] = 'Bedienung',
        ['turn_right'] = ' ~s~um das Objekt ~b~nach rechts ~s~zu drehen',
        ['turn_left'] = ' ~s~um das Objekt ~b~nach links ~s~zu drehen',
        ['turn_fast'] = ' ~s~um das Objekt ~b~schneller ~s~zu drehen',
        ['turn_slow'] = ' ~s~um das Objekt ~b~langsamer ~s~zu drehen',
        ['move_forward'] = ' ~s~um das Objekt nach ~b~vorne ~s~zu ~b~bewegen.',
        ['move_backwards'] = ' ~s~um das Objekt nach ~b~hinten ~s~zu ~b~bewegen.',
        ['move_right'] = ' ~s~um das Objekt nach ~b~rechts ~s~zu ~b~bewegen.',
        ['move_left'] = ' ~s~um das Objekt nach ~b~links ~s~zu ~b~bewegen.',
        ['move_fast'] = ' ~s~um das Objekt ~b~schneller ~s~zu ~b~bewegen.',
        ['move_slow'] = ' ~s~um das Objekt ~b~langsamer ~s~zu ~b~bewegen.',
        ['back_to_menu'] = ' ~s~um zum ~b~Hauptmenu ~s~zurückzukehren.',

        ['only_for_admins'] = '~r~Nur Admins können beliebige Objekte verwenden!',

        ['spawn_object'] = 'Objekt spawnen',
        ['spawn_object_final'] = '~g~Objekt spawnen',
        ['spawn_object_final_desc'] = '~g~Das Objekt wird an deiner Position spawnen',
        ['move_object'] = 'Objekt bewegen',
        ['turn_object'] = 'Objekt drehen',
        ['delete_object'] = '~r~Objekt löschen',
        ['delete_object_desc'] = 'Lösche das Objekt',
        ['save_object'] = '~g~Objekt speichern',
        ['save_object_desc'] = 'Speichert das Objekt in der Datenbank',
        ['enter_objectname'] = 'Objekt:',
        ['enter_objectname_desc'] = 'Klicke, um eine Beschreibung hinzuzufügen',

        ['obj_tp'] = 'Teleport',
        ['obj_tp_desc'] = 'Teleportiere dich zu diesem Objekt',
        ['obj_hide'] = 'Ausblebende',
        ['obj_hide_desc'] = 'Blende das Objekt aus (Nur für dich unsichtbar)',
        ['obj_replace'] = 'Einblenden',
        ['obj_replace_desc'] = 'Blende das Objekt wieder ein',
        ['obj_already_exists'] = '~r~Das Objekt sollte noch sichtbar sein.',
        ['obj_permdelete_desc'] = 'Das Objekt wird permanent aus der Datenbank gelöscht!',
        ['obj_removed'] = '~g~Das Objekt wurde aus der Datenbank entfernt.',
        ['obj_savechanges'] = '~g~Änderungen speichern.',
        ['obj_savechanges_desc'] = 'Deine Änderungen werden gespeichert und für alle Spieler synchronisiert.',
        ['obj_saved'] = '~g~Deine Änderungen wurden gespeichert!',

        ['set_moveable'] = 'Objekt einfrieren?',
        ['set_moveable_desc'] = 'Soll das Objekt bewegt werden können?',
        ['moveable_state_changed'] = '~g~Freeze-Status geändert: ~w~',
        ['set_description'] = 'Kommentar',
        ['set_description_desc'] = 'Dadurch kann das Objekt leichter wiedergefunden werden.',

        ['recommend_objects'] = 'Verfügbare Objekte',
        ['recommend_objects_desc'] = 'Nützliche Objekte',
        ['select_object_desc'] = 'Objekt kaufen~b~',

        ['selectObject_help'] = 'Wähle ein anderen Objekt mit ~y~/selectObject [~g~OBJECT~y~]~s~ aus.',
        ['invalid_object'] = '~r~Unbekanntes Objekt!',
        ['not_enough_money'] = '~r~Du hast nicht genügend Geld!',
        ['no_object'] = '~r~Kein Objekt!',
        ['cant_save'] = '~r~Änderungen nicht gespeichert! Bitte starte das Spiel neu.',
        
    }
}

Dependecies

  • (ESX) - A standalone version is also included: This works with a Steam whitelist.
  • NativeUI or NativeUIReloaded

Price: 6€ / 7,50$ (tax included)
Download at: https://luis-scripts.tebex.io/package/4223168

8 Likes

Few questions. 1, you can only spawn items that are in the configged list correct? 2, is the menu opened with a keybind or command (hopefully command as we have too much on keybinds as it is and not enough keys). 3, Can we have items that are available for “public” and other items restricted to admins? (This is in regards to the standalone version btw)

Hey,

1.) The list with the objects is important for the ESX version. There the player can only buy the objects from the list. As an Admin you can, in standalone and ESX version, every object. You have a free input.
2.) You can set up whether you want to use a command or a keybind
3.) As an Admin you can spawn every object. In the standalone version, the whitelisted player can also spawn every object. If you want, I’ll add a Config option for this.

If there is any question open, just feel free to ask.

Please keep all discussions on topic, concerns about paid topics can be directed to the moderator team directly or on another topic.

If you have questions about the Tebex system or with the resource being illegitimate, stolen, copied or something else please flag it and explain to the moderator team.

Thank you.

1 Like

Yea, admins having full access is fine, but it would be nice to allow non admins to only be able to spawn from a set configged list so we don’t end up with some idiot spawning ridiculous stuff in the middle of the street and have to go deal with cleaning it up. I’m planning on restricting CIV access to a certain CIV rank so randoms won’t have access but still.

Does this only support Steam ID or can it support ACE perms? (I ask because we use Discord ACE Perms for most of our stuff so it would be much easier than Hexing every single person into it.

1 Like

I’ll directly add a Config option, so you can disable the opportunity to spawn everything for every whitelisted person.
I don’t know ACE Perms. But I will take a look at this.

myMapbuilder - Update - 18.12.2020

- Only for Standalone: Added a seperate Admin Whitelist in the Config.lua. 
  Now you can set up Admins, who will have access to spawn every object they want.
  The whitelisted perople can only spawn objects from the list and edit their own objects.
1 Like

Awesome. Just bought this and am looking forward to using this in our community! Hopefully you can get ACE perms as a feature for the standalone in the near future as that will make implementation MUCH easier!

1 Like

2 things, I assume since we are running NativeUI and not the NUI Reloaded, I need to change that in the fxmanifest and also, the Config.recommendObjects, is that the list for non admins?

Does this have object culling, or rather, onesync support? Like what if there’s 10000 objects spawned in?

Yes, Config.recommendObjects is the list for the whitelisted perople.

I guess I’ve forgot the Config option for NativeUIReloaded in the Standalone version. Give me 5 minutes, I’ll push an update.

I’ve updated my fxmanifest to reflect just NativeUI since that is what we run. I assume I need to run the updated config to work with NativeUI instead of Reloaded when you push the update?

Soo, new fix is out!

Now the Config option to disable NativeUI Reloaded is also available in the standalone version.

I redownloaded it from the link I received but the config looks the same to me. I don’t see any config options related to NativeUI/NativeUI Reloaded.

1 Like

a question if you update the resource those who buy it as we access the update??

Does the objects despawn when no one is around them?

1 Like

Cool!!! Very great idea for roleplay. I only hope is not IP locked, if not I will buy for sure, great release with affordable price, thank you!

Hey! Make a standalone or qbus version and I’m in

already there is es version esx i there is an independent

@strianodev The script isn’t IP locked and of course you can access the source code and feel free to edit whatever you want.
@mkcx A Standalone version is also included. This version works with a Admin and normal Steam Whitelist. If you want to see the Standalone script first, just write me a private message.

2 Likes