Skip to content

Commit f088694

Browse files
Merge pull request #63 from MohabCodeX/test-gui
feat: GUI vehicle test spawning
2 parents 854ca29 + bc7dfcb commit f088694

3 files changed

Lines changed: 93 additions & 0 deletions

File tree

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
local screenW, screenH = guiGetScreenSize()
2+
3+
local windowW, windowH = 300, 200
4+
local windowX, windowY = (screenW - windowW) / 2, (screenH - windowH) / 2
5+
local window = guiCreateWindow(windowX, windowY, windowW, windowH, "Vehicle Spawner", false)
6+
7+
local label = guiCreateLabel(20, 40, 260, 30, "Enter Vehicle ID:", false, window)
8+
guiLabelSetHorizontalAlign(label, "center")
9+
10+
local input = guiCreateEdit(50, 70, 200, 30, "", false, window)
11+
12+
local spawnButton = guiCreateButton(50, 120, 200, 40, "Spawn Vehicle", false, window)
13+
14+
guiSetVisible(window, false)
15+
16+
local function spawnVehicleByID(vehicleID)
17+
if not vehicleID then
18+
outputChatBox("Error: Please enter a valid number!", 255, 0, 0)
19+
return
20+
end
21+
22+
local x, y, z = getElementPosition(localPlayer)
23+
local rot = getPedRotation(localPlayer)
24+
local offsetDistance = 5
25+
local spawnX = x + offsetDistance * math.sin(math.rad(-rot))
26+
local spawnY = y + offsetDistance * math.cos(math.rad(-rot))
27+
28+
triggerServerEvent("newmodels-test_vehicles:requestVehicleSpawn", resourceRoot, localPlayer, vehicleID, spawnX, spawnY, z, rot)
29+
end
30+
31+
local function requestVehicleSpawn()
32+
local vehicleID = tonumber(guiGetText(input))
33+
spawnVehicleByID(vehicleID)
34+
guiSetVisible(window, false)
35+
showCursor(false)
36+
guiSetText(input, "")
37+
end
38+
39+
addEventHandler("onClientGUIClick", spawnButton, requestVehicleSpawn, false)
40+
41+
addEvent("newmodels-test_vehicles:vehicleSpawnResponse", true)
42+
addEventHandler("newmodels-test_vehicles:vehicleSpawnResponse", localPlayer, function(success, message)
43+
if success then
44+
outputChatBox(message, 0, 255, 0)
45+
else
46+
outputChatBox(message, 255, 0, 0)
47+
end
48+
end)
49+
50+
local function onInputEnter()
51+
if source == input then
52+
requestVehicleSpawn()
53+
end
54+
end
55+
56+
addEventHandler("onClientGUIAccepted", input, onInputEnter)
57+
58+
local function toggleSpawnerGUI()
59+
local visible = guiGetVisible(window)
60+
guiSetVisible(window, not visible)
61+
showCursor(not visible)
62+
63+
if not visible then
64+
guiBringToFront(input)
65+
guiFocus(input)
66+
end
67+
end
68+
69+
bindKey("F4", "down", toggleSpawnerGUI)
70+
addCommandHandler("vspawner", toggleSpawnerGUI, false)
71+
addCommandHandler("spawnveh", function(cmd, id) spawnVehicleByID(tonumber(id)) end, false)

[examples]/test_vehicles/meta.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<script src="s_vehicles.lua" type="server"/>
44
<script src="s_vehicles_alt.lua" type="server"/>
55
<script src="s_test_cmd.lua" type="server"/>
6+
<script src="c_test_gui.lua" type="client"/>
67
<aclrequest>
78
<right name="function.loadstring" access="true"/>
89
</aclrequest>

[examples]/test_vehicles/s_test_cmd.lua

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,24 @@ addCommandHandler("myvehicle", function(player)
1919
outputChatBox("This vehicle has the custom model ID " .. customModel .. ", which is based on the default model ID " .. baseModel .. " ("..(tostring(getVehicleNameFromModel(baseModel)) or "")..")", player, 0, 255, 0)
2020
end
2121
end, false, false)
22+
23+
addEvent("newmodels-test_vehicles:requestVehicleSpawn", true)
24+
addEventHandler("newmodels-test_vehicles:requestVehicleSpawn", resourceRoot, function(player, vehicleID, x, y, z, rot)
25+
26+
local customModels = exports['newmodels_azul']:getCustomModels()
27+
local isValidCustomModel = customModels[vehicleID] and true or false
28+
local isValidDefaultID = exports['newmodels_azul']:isDefaultID("vehicle", vehicleID)
29+
30+
if not isValidCustomModel and not isValidDefaultID then
31+
triggerClientEvent(player, "newmodels-test_vehicles:vehicleSpawnResponse", player, false, "Invalid ID")
32+
return
33+
end
34+
35+
local vehicle = exports['newmodels_azul']:createVehicle(vehicleID, x, y, z, 0, 0, rot)
36+
37+
if isElement(vehicle) then
38+
triggerClientEvent(player, "newmodels-test_vehicles:vehicleSpawnResponse", player, true, "Vehicle spawned")
39+
else
40+
triggerClientEvent(player, "newmodels-test_vehicles:vehicleSpawnResponse", player, false, "Failed")
41+
end
42+
end)

0 commit comments

Comments
 (0)