Jump to content

Basicrp Interior


FuriouZ

Recommended Posts

Hello! Now i'm asking that,is someone fixed the basic roleplay interior system,that if i create a interior and after that restarting interiors system and trying to get into interior,then it just teleports me somewhere X position...I think there is problem with dimensions and interiors...something that the script gets wrong data form xml

I really need it working. :(

I'm posting the code here(i hope Socialz doesn't get angry for that):

--[[ 
    Basic Roleplay Gamemode
    ~ Server-side functions for interiors
   
    Created by Socialz
]]--
 
-- Miniatures
local cRoot = getRootElement()
local cThis = getThisResource()
local cThisRoot = getResourceRootElement(cThis)
 
-- Functions
local types = {house=true, business=true, government=true}
local interiors = {
    -- ID : x position, y position, z position, interior
    -- Original list by 'mabako', final edits and adds by 'Socialz'
    -- You can add your own mapping positions, but the dimension will always be different so it's not recommened
   
    house1  = {235.25, 1186.68, 1080.26, 3},
    house2  = {226.79, 1240.02, 1082.14, 2},
    house3  = {223.07, 1287.09, 1082.14, 1},
    house4  = {327.94, 1477.73, 1084.44, 15},
    house5  = {2468.84, -1698.29, 1013.51, 2},
    house6  = {226.34, 1114.23, 1080.89, 5},
    house7  = {387.23, 1471.79, 1080.19, 15},
    house8  = {225.79, 1021.46, 1084.02, 7},
    house9  = {295.16, 1472.26, 1080.26, 15},
    house10 = {2807.58, -1174.75, 1025.57, 8},
    house12 = {2270.42, -1210.52, 1047.56, 10},
    house13 = {2496.02, -1692.08, 1014.74, 3},
    house14 = {2259.38, -1135.84, 1050.64, 10},
    house15 = {2365.21, -1135.60, 1050.88, 8},
    house16 = {1531.36, -6.84, 1002.01, 3},
    house17 = {2233.8, -1115.36, 1050.89, 5},
    house18 = {2282.90, -1140.27, 1050.9, 11},
    house19 = {2196.75, -1204.34, 1048.84, 6},
    house20 = {2308.78, -1212.91, 1048.82, 6},
    house21 = {2217.85, -1076.29, 1053, 1},
    house22 = {2237.61, -1081.48, 1048.91, 2},
    house23 = {2317.82, -1026.75, 1049.21, 9},
    house24 = {260.98, 1284.40, 1080.08, 4},
    house25 = {140.18, 1366.58, 1083.86, 5},
    house26 = {82.95, 1322.38, 1083.48, 9},
    house27 = {-42.56, 1405.64, 1084.60, 8},
    house28 = {2333.03, -1077.22, 1048.86, 6},
   
    madddogg = {1298.95, -797.01, 1084.01, 5},
   
    room1 = {243.71, 304.95, 999.14, 1},
    room2 = {266.50, 305.01, 999.14, 2},
    room3 = {322.18, 302.35, 999.14, 5},
    room4 = {343.71, 304.98, 999.14, 6},
   
    ['24/7-1'] =  {-25.89, -188.24, 1003.54, 17},
    ['24/7-2'] =  {6.11, -31.75, 1003.54, 10},
    ['24/7-3'] =  {-25.89, -188.24, 1003.54, 17},
    ['24/7-4'] =  {-25.77, -141.55, 1003.55, 16},
    ['24/7-5'] =  {-27.30, -31.76, 1003.56, 4},
    ['24/7-6'] =  {-27.34, -58.26, 1003.55, 6},
    ammunation1 = {285.50, -41.80, 1001.52, 1},
    ammunation2 = {285.87, -86.78, 1001.52, 4},
    ammunation3 = {296.84, -112.06, 1001.52, 6},
    ammunation4 = {315.70, -143.66, 999.60, 7},
    ammunation5 = {316.32, -170.30, 999.60, 6},
    atrium =      {1727.04, -1637.84, 20.22, 18},
    bar =         {501.99, -67.56, 998.75, 11},
    bar2 =        {-229.3, 1401.28, 27.76, 18},
    bar3 =        {1212.12, -26.14, 1000.99, 3},
    bar4 =        {681.58, -450.89, -25.37, 1},
    burgershot =  {362.84, -75.13, 1001.50, 10},
    clothes1 =    {207.63, -111.26, 1005.13, 15},
    clothes2 =    {204.32, -168.85, 1000.52, 14},
    clothes3 =    {207.07, -140.37, 1003.51, 3},
    clothes4 =    {203.81, -50.66, 1001.80, 1},
    clothes5 =    {227.56, -8.06, 1002.21, 5},
    clothes6 =    {161.37, -97.11, 1001.80, 18},
    club =        {493.50, -24.95, 1000.67, 17},
    club2 =       {-2636.66, 1402.36, 906.50, 3},
    cluckinbell = {364.98, -11.84, 1001.85, 9},
    diner      =  {460.53, -88.62, 999.55, 4},
    diner2      = {441.90, -49.70, 999.74, 6},
    donut      =  {377.08, -193.30, 1000.63, 17},
    electronics = {-2240.77, 137.20, 1035.41, 6},
    meatfactor = {964.93, 2160.09, 1011.03, 1},
    office1 =     {390.76, 173.79, 1008.38, 3},
    office2 =     {-2026.86, -103.60, 1035.18, 3},
    office3 =     {1494.36, 1303.57, 1093.28, 3},
    pizza =       {372.33, -133.52, 1001.49, 5},
    sexshop =     {-100.34, -25.03, 1000.72, 3},
    reeces =      {412, -23, 1002, 2},
    barber =      {418.6, -84.17, 1001.70, 3},
    tattoo =      {-204.37, -8.90, 1002.26, 17},
    factor =  {2541.71, -1304.07, 1025.08, 2},
    battlefield = {-977.72, 1052.96, 1345.22, 10},
    hallway =  {2266.15, 1647.42, 1084.29, 1},
    betting =     {834.78, 7.42, 1003.97, 3},
    betting2 =    {-2158.58, 643.15, 1052.33, 1},
    motel =       {2214.42, -1150.51, 1025.41, 15},
    gym =         {773.57, -78.12, 1000.88, 7},
    gym2 =        {772.11, -5, 1000.42, 5},
    gym3 =        {774.18, -50.42, 1000.60, 6},
    sex =         {-100.33, -24.94, 1000.33, 3},
    stadium =     {-1426.14, 928.44, 1036.35, 15},
    stadium2 =    {-1426.13, 44.16, 1036.23, 1},
    stadium3 =    {-1464.72, 1555.93, 1052.68, 14},
    sgarage =    {-2105.32, 893.01, 76.7, 0},
    mgarage =    {2644.87, -2043.41, 13.62, 0},
    warehouse1 =    {2561.16, -1287.47, 1031.42, 2},
    warehouse2 =    {1405.3120, -8.2928, 1000.9130, 1},
   
    lspd = {246.75, 62.32, 1003.64, 6},
    sfpd = {246.35, 107.30, 1003.22, 10},
    lvpd = {238.72, 138.62, 1003.02, 3},
 
    test = {0, 0, 3, 0}
}
 
local addCommandHandler_ = addCommandHandler
      addCommandHandler  = function(commandName, fn, restricted, caseSensitive)
    if type(commandName) ~= "table" then
        commandName = {commandName}
    end
    for key, value in ipairs(commandName) do
        if key == 1 then
            addCommandHandler_(value, fn, restricted, caseSensitive)
        else
            addCommandHandler_(value,
                function(player, ...)
                    fn(player, ...)
                end
            )
        end
    end
end
 
-- ~ [CREATEINTERIOR, MAKEINTERIOR, MAKEINT] ~ --
addCommandHandler({"createinterior", "makeinterior", "makeint"},
    function(player, cmd, id, cost, type, ...)
        if exports.egExports:isPlayerLeadAdmin(player) then
            local cost = tonumber(cost)
            if id and cost and type and (...) then
                if interiors[id:lower()] then
                    if types[type:lower()] then
                        local name = table.concat({ ... }, " ")
                        if #name > 0 then
                            local xml = xmlLoadFile("interiors.map")
                            local new = xmlCreateChild(xml, "interior")
                            local px, py, pz = getElementPosition(player)
                            local interior = getElementInterior(player)
                            local dimension = getElementDimension(player)
                            local randomid = math.random(1,99999)
                            local randomdimension = math.random(0,65535)
                            xmlNodeSetAttribute(new, "id", tonumber(randomid))
                            xmlNodeSetAttribute(new, "inside", id)
                            xmlNodeSetAttribute(new, "name", tostring(name))
                            xmlNodeSetAttribute(new, "posx", tonumber(px))
                            xmlNodeSetAttribute(new, "posy", tonumber(py))
                            xmlNodeSetAttribute(new, "posz", tonumber(pz) + 1)
                            xmlNodeSetAttribute(new, "interior", tonumber(interior))
                            xmlNodeSetAttribute(new, "dimension", tonumber(dimension))
                            xmlNodeSetAttribute(new, "owner", "None")
                            xmlNodeSetAttribute(new, "createdby", getPlayerName(player))
                            xmlSaveFile(xml)
                            xmlUnloadFile(xml)
                           
                            -- Exterior marker
                            local exterior = createMarker(px, py, pz + 1, "arrow", 2, 255, 255, 0, 180)
                            setElementInterior(exterior, interior)
                            setElementDimension(exterior, dimension)
                            setElementData(exterior, "interiors.name", name)
                            setElementData(exterior, "interiors.id", randomid)
                            setElementData(exterior, "interiors.x", interiors[id][1])
                            setElementData(exterior, "interiors.y", interiors[id][2])
                            setElementData(exterior, "interiors.z", interiors[id][3])
                            setElementData(exterior, "interiors.int", interiors[id][4])
                            setElementData(exterior, "interiors.dim", randomdimension)
                            setElementData(exterior, "interiors.extra", "Entrance")
                            setElementData(exterior, "interiors.owner", "None")
                           
                            -- Interior marker
                            local interior = createMarker(interiors[id][1], interiors[id][2], interiors[id][3] + 1, "arrow", 2, 255, 255, 0, 180)
                            setElementInterior(interior, interiors[id][4])
                            setElementDimension(interior, randomdimension)
                            setElementData(interior, "interiors.name", name)
                            setElementData(interior, "interiors.id", randomid)
                            setElementData(interior, "interiors.x", pz)
                            setElementData(interior, "interiors.y", py)
                            setElementData(interior, "interiors.z", pz - 1)
                            setElementData(interior, "interiors.int", interior)
                            setElementData(interior, "interiors.dim", dimension)
                            setElementData(interior, "interiors.extra", "Exit")
                            setElementData(interior, "interiors.owner", "None")
                           
                            outputChatBox("Created a new interior with ID " .. randomid .. ".", player, 0, 255, 0, false)
                            outputServerLog("[iNTERIORS] [CMD/CREATEINTERIOR]: " .. getPlayerName(player) .. " created a new interior (ID: " .. randomid .. ", Cost: " .. cost .. ", Interior: " .. id .. ", Name: " .. name .. ").")
                        else
                            outputChatBox("Syntax: /" .. cmd .. " ", player, 220, 220, 0, false)
                        end
                    else
                        outputChatBox("Invalid interior type.", player, 255, 0, 0, false)
                    end
                else
                    outputChatBox("Invalid interior ID.", player, 255, 0, 0, false)
                end
            else
                outputChatBox("Syntax: /" .. cmd .. " ", player, 220, 220, 0, false)
            end
        end
    end
)
 
-- ~ [DELETEINTERIOR, DELINTERIOR, DELINT] ~ --
addCommandHandler({"deleteinterior", "delinterior", "delint"},
    function(player, cmd, id)
        if exports.egExports:isPlayerLeadAdmin(player) then
            local id = tonumber(id)
            if id then
                local xml = xmlLoadFile("interiors.map")
                local new = xmlFindChild(xml, "interior", 0)
                for i,v in ipairs(getElementsByType("marker")) do
                    for ii,vv in ipairs(getElementsByType("interior")) do
                        if getElementData(v, "interiors.id") and getElementData(v, "interiors.id") == getElementData(vv, "id") then
                            if getElementData(v, "interiors.extra") == "Entrance" then
                                xmlNodeSetName(new, "deleted")
                                xmlNodeSetAttribute(new, "deletedby", getPlayerName(player))
                                xmlSaveFile(xml)
                                xmlUnloadFile(xml)
                            end
                            destroyElement(v)
                        end
                    end
                end
                outputChatBox("Deleted interior " .. tonumber(id) .. ".", player, 0, 255, 0, false)
                outputServerLog("[iNTERIORS] [CMD/DELETEINTERIOR]: " .. getPlayerName(player) .. " deleted interior " .. tonumber(id) .. ".")
            else
                outputChatBox("Syntax: /" .. cmd .. " ", player, 220, 220, 0, false)
            end
        end
    end
)
 
-- Do not change this integer, thanks
local results = 0
 
-- ~ [NEARBYINTERIORS, NEARBYINTS] ~ --
addCommandHandler({"nearbyinteriors", "nearbyints"},
    function(player, cmd)
        if exports.egExports:isPlayerLeadAdmin(
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...