Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.53 KB | None | 0 0
  1. local screenW, screenH = guiGetScreenSize()
  2. local walls = {}
  3. local number = 0
  4.  
  5. if not getResourceFromName("freecam") then outputDebugString("Do działania zasobu jest wymagany freecam!", 1) end
  6. --Narzedzia menu
  7. BG = guiCreateWindow(0.89, 0.40, 0.09, 0.34, "Narzedzia", true)
  8.     guiWindowSetMovable(BG, false)
  9.     guiWindowSetSizable(BG, false)
  10. newObjectButton = guiCreateButton(0.14, 0.08, 0.76, 0.19, "Dodaj nowy obiekt", true, BG)
  11. editObjectButton = guiCreateButton(0.14, 0.30, 0.76, 0.19, "Edytuj obiekt", true, BG)
  12. textureButton = guiCreateButton(0.14, 0.51, 0.76, 0.19, "Teksturuj", true, BG)
  13. deleteButton = guiCreateButton(0.14, 0.72, 0.76, 0.19, "Usun", true, BG)    
  14. --Obiekty menu
  15. objectMenu = guiCreateWindow(656, 900, 608, 134, "Wybierz obiekt", false)
  16.     guiWindowSetMovable(objectMenu, false)
  17.     guiWindowSetSizable(objectMenu, false)
  18. wallButton = guiCreateButton(0.03, 0.28, 0.22, 0.45, "Sciana", true, objectMenu)
  19. wallDoorButton = guiCreateButton(0.26, 0.28, 0.22, 0.45, "Sciana ze drzwiami", true, objectMenu)
  20. wallWindowButton = guiCreateButton(0.50, 0.28, 0.22, 0.45, "Sciana z oknem", true, objectMenu)
  21. stairsButton = guiCreateButton(0.74, 0.28, 0.22, 0.45, "Schody", true, objectMenu)  
  22. guiSetVisible(BG, false)
  23. guiSetVisible(objectMenu, false)
  24. --Edytor Menu
  25. editObjectWindow = guiCreateWindow(0.02, 0.30, 0.16, 0.39, "Edytuj obiekt", true)
  26.     guiWindowSetMovable(editObjectWindow, false)
  27.     guiWindowSetSizable(editObjectWindow, false)
  28. modelBox = guiCreateEdit(119, 23, 79, 31, "", false, editObjectWindow)
  29. xBox = guiCreateEdit(0.09, 0.16, 0.25, 0.07, "", true, editObjectWindow)
  30. yBox = guiCreateEdit(119, 69, 79, 31, "", false, editObjectWindow)
  31. zBox = guiCreateEdit(0.66, 0.16, 0.25, 0.07, "", true, editObjectWindow)
  32. rxBox = guiCreateEdit(0.09, 0.30, 0.25, 0.07, "", true, editObjectWindow)
  33. ryBox = guiCreateEdit(119, 130, 79, 31, "", false, editObjectWindow)
  34. rzBox = guiCreateEdit(0.66, 0.30, 0.25, 0.07, "", true, editObjectWindow)
  35.  
  36. saveButton = guiCreateButton(0.02, 0.88, 0.45, 0.09, "Ustaw", true, editObjectWindow)  
  37. exitEditButton = guiCreateButton(0.52, 0.88, 0.45, 0.09, "Zamknij okno", true, editObjectWindow)
  38. guiSetVisible(editObjectWindow, false)
  39.  
  40. function myInteriorCursor()
  41.     if guiGetVisible(BG) == true then
  42.         if isCursorShowing(localPlayer) == false then
  43.             showCursor(true)
  44.         else
  45.             showCursor(false)
  46.         end
  47.     end
  48. end
  49. bindKey("f", "down", myInteriorCursor)
  50.  
  51. function myInteriorOn()
  52.     if guiGetVisible(BG) == false then
  53.         guiSetVisible(BG, true)
  54.         exports.freecam:setFreecamEnabled()
  55.         setCameraTarget(localPlayer)
  56.     else
  57.         guiSetVisible(BG, false)
  58.         guiSetVisible(objectMenu, false)
  59.         guiSetVisible(editObjectWindow, false)
  60.         showCursor(false)
  61.         exports.freecam:setFreecamDisabled()
  62.         setCameraTarget(localPlayer)
  63.     end
  64. end
  65. addCommandHandler("myi", myInteriorOn)
  66.  
  67. addEventHandler("onClientGUIClick", resourceRoot, function()
  68.     if source == newObjectButton then
  69.         if guiGetVisible(objectMenu) == false then
  70.             guiSetVisible(objectMenu, true)
  71.         else
  72.             guiSetVisible(objectMenu, false)
  73.         end
  74.     elseif source == editObjectButton then
  75.         if guiGetVisible(editObjectWindow) == false then
  76.             guiSetVisible(editObjectWindow, true)
  77.         else
  78.             guiSetVisible(editObjectWindow, false)
  79.         end
  80.     elseif source == exitEditButton then
  81.         guiSetVisible(editObjectWindow, false)
  82.     elseif source == wallButton then
  83.         number = number + 1
  84.         local x,y,z = getElementPosition(localPlayer)
  85.         walls[number] = createObject(14863, x,y+2,z, 0, 0, 0)
  86.     elseif source == wallDoorButton then
  87.         number = number + 1
  88.         local x,y,z = getElementPosition(localPlayer)
  89.         walls[number] = createObject(15027, x,y+2,z, 0, 0, 0)
  90.     elseif source == saveButton then
  91.         setElementPosition(walls[tonumber(guiGetText(modelBox))], guiGetText(xBox), guiGetText(yBox), guiGetText(zBox))
  92.         setElementRotation(walls[tonumber(guiGetText(modelBox))], guiGetText(rxBox), guiGetText(ryBox), guiGetText(rzBox))
  93.     elseif source == deleteButton then
  94.         destroyElement(walls[tonumber(guiGetText(modelBox))])
  95.     end
  96. end)
  97.  
  98. addEventHandler("onClientClick", getRootElement(), function(button, state, absoluteX, absoluteY, worldX, worldY, worldZ, clickedElement)
  99.     guiSetText(modelBox, "")
  100.     for i,v in pairs(walls) do
  101.         if clickedElement == walls[i] then
  102.             local x,y,z = getElementPosition(walls[i])
  103.             local rx,ry,rz = getElementRotation(walls[i])
  104.             guiSetText(modelBox, i)
  105.             guiSetText(xBox, x)
  106.             guiSetText(yBox, y)
  107.             guiSetText(zBox, z)
  108.             guiSetText(rxBox, rx)
  109.             guiSetText(ryBox, ry)
  110.             guiSetText(rzBox, rz)
  111.         end
  112.     end
  113. end)
  114.  
  115. addEventHandler("onClientRender", root, function()
  116.     local getI = guiGetText(modelBox)
  117.     if getI == "" then return else
  118.         local x,y,z = getElementPosition(walls[tonumber(getI)])
  119.         local rx,ry,rz = getElementRotation(walls[tonumber(getI)])
  120.  
  121.         if (getKeyState("num_8")) then
  122.             setElementPosition(walls[tonumber(getI)], x+0.1, y, z)
  123.         elseif (getKeyState("num_2")) then
  124.             setElementPosition(walls[tonumber(getI)], x-0.1, y, z)
  125.         elseif (getKeyState("num_4")) then
  126.             setElementPosition(walls[tonumber(getI)], x, y-0.1, z)
  127.         elseif (getKeyState("num_6")) then
  128.             setElementPosition(walls[tonumber(getI)], x, y+0.1, z)
  129.         elseif (getKeyState("num_add")) then
  130.             setElementPosition(walls[tonumber(getI)], x, y, z+0.1)
  131.         elseif (getKeyState("num_sub")) then   
  132.             setElementPosition(walls[tonumber(getI)], x, y, z-0.1)
  133.         elseif (getKeyState("num_7")) then
  134.             setElementRotation(walls[tonumber(getI)], rx+1, ry, rz)
  135.         elseif (getKeyState("num_9")) then
  136.             setElementRotation(walls[tonumber(getI)], rx-1, ry, rz)
  137.         elseif (getKeyState("num_1")) then 
  138.             setElementRotation(walls[tonumber(getI)], rx, ry+1, rz)
  139.         elseif (getKeyState("num_3")) then     
  140.             setElementRotation(walls[tonumber(getI)], rx, ry-1, rz)
  141.         elseif (getKeyState("num_5")) then     
  142.             setElementRotation(walls[tonumber(getI)], rx, ry, rz+1)
  143.         elseif (getKeyState("num_0")) then     
  144.             setElementRotation(walls[tonumber(getI)], rx, ry, rz-1)    
  145.         end
  146.     end
  147. end)
  148.  
  149. function dxMyInteriorDraw()
  150.         getI = guiGetText(modelBox)
  151.         if getI == "" then return else
  152.             minx, miny, minz, mx, my, mz = getElementBoundingBox(walls[tonumber(getI)])    
  153.             local x,y,z = getElementPosition(walls[tonumber(getI)])
  154.             local Line = 5
  155.  
  156.             dxDrawLine3D(minx+x, miny+y, mz+z, minx+x, my+y ,mz+z, tocolor(200, 0, 0, 180), Line, false, 0)
  157.             dxDrawLine3D(minx+x, miny+y, mz+z, mx+x, miny+y ,mz+z, tocolor(200, 0, 0, 180), Line, false, 0)
  158.             dxDrawLine3D(mx+x, my+y, mz+z, minx+x, my+y ,mz+z, tocolor(200, 0, 0, 180), Line, false, 0)
  159.             dxDrawLine3D(mx+x, miny+y, mz+z, mx+x, my+y ,mz+z, tocolor(200, 0, 0, 180), Line, false, 0)
  160.             dxDrawLine3D(minx+x, miny+y, minz+z, minx+x, my+y ,minz+z, tocolor(200, 0, 0, 180), Line, false, 0)
  161.             dxDrawLine3D(minx+x, miny+y, minz+z, mx+x, miny+y ,minz+z, tocolor(200, 0, 0, 180), Line, false, 0)
  162.             dxDrawLine3D(mx+x, my+y, minz+z, minx+x, my+y ,minz+z, tocolor(200, 0, 0, 180), Line, false, 0)
  163.             dxDrawLine3D(mx+x, miny+y, minz+z, mx+x, my+y ,minz+z, tocolor(200, 0, 0, 180), Line, false, 0)
  164.             dxDrawLine3D(minx+x,miny+y,minz+z,minx+x,miny+y,mz+z,tocolor(200, 0, 0, 180), Line, false, 0)
  165.             dxDrawLine3D(mx+x,my+y,minz+z,mx+x,my+y,mz+z,tocolor(200, 0, 0, 180), Line, false, 0)
  166.             dxDrawLine3D(mx+x,miny+y,mz+z, mx+x,miny+y,minz+z,tocolor(200, 0, 0, 180), Line, false, 0)
  167.             dxDrawLine3D(minx+x,my+y,mz+z, minx+x,my+y,minz+z,tocolor(200, 0, 0, 180), Line, false, 0)
  168.         end
  169. end
  170. addEventHandler("onClientRender", root, dxMyInteriorDraw)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement