· 9 years ago · Dec 31, 2016, 12:42 AM
1local count = 0
2local DoorsTable = {}
3local db = dbConnect("sqlite", "objects/objects.db")
4dbExec(db, "CREATE TABLE IF NOT EXISTS base_objects(id INT AUTO_INCREMENT, model INT, owner VARCHAR, x FLOAT, y FLOAT, z FLOAT, rx FLOAT, ry FLOAT, rz FLOAT, encampment VARCHAR)")
5
6function loadAllObjects (query)
7 local ob_table = dbPoll(query, 0)
8 if (not ob_table) then return end
9 for ind, data in ipairs(ob_table) do
10 theObject = createObject(data.model, data.x, data.y, data.z, data.rx, data.ry, data.rz)
11 theObjectCol = createColSphere(data.x,data.y,data.z,2)
12
13 attachElements(theObjectCol, theObject, 0, 0, 0)
14
15 setElementData(theObjectCol,"objectRust",true)
16 setElementData(theObjectCol,"objectGroup",data.encampment)
17 setElementData(theObject,"bc.creator",data.owner)
18 setElementData(theObject,"bc.ID",data.id)
19 setElementData(theObject,"rustObj",true)
20 setElementData(theObject,"grupinho",data.encampment)
21
22 if data.model == 2372 then
23 theObjName = "Wall"
24 elseif data.model == 2373 then
25 theObjName = "Wall (Door)"
26 elseif data.model == 2706 then
27 theObjName = "Wall (Window)"
28 elseif data.model == 1785 then
29 theObjName = "Door"
30 colTamanho = 1.5
31 setupDoor(theObject,data.encampment,colTamanho)
32 setElementData(theObjectCol,"objectCanBeBlowed",true)
33 elseif data.model == 2371 then
34 theObjName = "Gate"
35 colTamanho = 3
36 setupDoor(theObject,data.encampment,colTamanho)
37 setElementData(theObjectCol,"objectCanBeBlowed",true)
38 elseif data.model == 2052 then
39 theObjName = "Floor"
40 elseif data.model == 2523 then
41 theObjName = "Floorport"
42 elseif data.model == 2054 then
43 theObjName = "Stairs"
44 elseif data.model == 1898 then
45 theObjName = "Beam"
46 elseif data.model == 1749 then
47 theObjName = "House"
48 elseif data.model == 1725 then
49 theObjName = "House"
50 elseif data.model == 1750 then
51 theObjName = "House"
52 elseif data.model == 1751 then
53 theObjName = "House"
54 elseif data.model == 1844 then
55 theObjName = "House"
56 elseif data.model == 1787 then
57 theObjName = "Fence"
58 end
59 setElementData(theObjectCol,"rustObjectNameDev",theObjName)
60
61 count = count+1
62 end
63end
64dbQuery(loadAllObjects, db, "SELECT * FROM base_objects")
65
66function newObject(model,x,y,z,rx,ry,rz)
67 if model and x and y and z and rx and ry and rz then
68 local ob = createObject(model, x, y, z, rx, ry, rz)
69 obCol = createColSphere(x,y,z,2)
70 attachElements(obCol, ob, 0, 0, 0)
71 setElementData(obCol,"objectRust",true)
72 setElementData(ob,"rustObj",true)
73 local acName = getAccountName(getPlayerAccount(client))
74 setElementData(ob, "bc.creator", acName)
75 local encampment = getElementData(client,"Group")
76 setElementData(ob,"grupinho",encampment)
77 setElementData(obCol,"objectGroup",encampment)
78
79 count = count+1
80 setElementData(ob,"bc.ID",count)
81 dbExec(db, "INSERT INTO base_objects VALUES (?,?,?,?,?,?,?,?,?,?)", count, model, acName, x, y, z, rx, ry, rz, tostring(encampment))
82
83 if model == 2372 then
84 theObjNameNew = "Wall"
85 elseif model == 2373 then
86 theObjNameNew = "Wall (Door)"
87 elseif model == 2706 then
88 theObjNameNew = "Wall (Window)"
89 elseif model == 1785 then
90 theObjNameNew = "Door"
91 colTamanho = 1.5
92 setupDoor(ob,encampment,colTamanho)
93 setElementData(obCol,"objectCanBeBlowed",true)
94 elseif model == 2371 then
95 theObjNameNew = "Gate"
96 colTamanho = 3
97 setupDoor(ob,encampment,colTamanho)
98 setElementData(obCol,"objectCanBeBlowed",true)
99 elseif model == 2052 then
100 theObjNameNew = "Floor"
101 elseif model == 2523 then
102 theObjNameNew = "Floorport"
103 elseif model == 2054 then
104 theObjNameNew = "Stairs"
105 elseif model == 1898 then
106 theObjNameNew = "Beam"
107 elseif model == 1749 then
108 theObjNameNew = "House"
109 elseif model == 1725 then
110 theObjNameNew = "House"
111 elseif model == 1750 then
112 theObjNameNew = "House"
113 elseif model == 1751 then
114 theObjNameNew = "House"
115 elseif model == 1844 then
116 theObjNameNew = "House"
117 elseif model == 1787 then
118 theObjNameNew = "Fence"
119 end
120 setElementData(obCol,"rustObjectNameDev",theObjNameNew)
121 end
122end
123addEvent("rustCreateObjectCraft", true)
124addEventHandler("rustCreateObjectCraft", root, newObject)
125
126function onObjectDestroy(col,object,id)
127 if object then
128 dbExec(db,"DELETE FROM base_objects WHERE id=(?)",id)
129 if getElementData(object,"parent") then
130 destroyElement(getElementData(object,"parent"))
131 end
132 destroyElement(col)
133 destroyElement(object)
134 end
135 count = count-1
136end
137addEvent("onObjectDestroy",true)
138addEventHandler("onObjectDestroy",root,onObjectDestroy)
139
140function playerWantsExplosion (x,y,z,rx,ry,rz)
141 setElementData(source,"C4",getElementData(source,"C4") -1)
142 setPedAnimation(source,"BOMBER","BOM_Plant",-1, false, false, false, false)
143 bomba = createObject(363,x,y,z,rx,ry,rz)
144 setObjectScale(bomba,1.5)
145 setTimer(function()
146 destroyElement(bomba)
147 end,10000,1)
148end
149addEvent("playerWantsExplosion",true)
150addEventHandler("playerWantsExplosion",root,playerWantsExplosion)
151
152function playerWantsAnim ()
153 setPedAnimation(source,"BOMBER","BOM_Plant",-1, false, false, false, false)
154end
155addEvent("playerWantsAnim",true)
156addEventHandler("playerWantsAnim",root,playerWantsAnim)
157function playerWantsAnimTwo ()
158 setPedAnimation(source,"COP_AMBIENT","Copbrowse_loop")
159end
160addEvent("playerWantsAnimTwo",true)
161addEventHandler("playerWantsAnimTwo",root,playerWantsAnimTwo)
162
163function createObjectExplosion (x,y,z)
164 createExplosion(x,y,z,0)
165end
166addEvent("createObjectExplosion",true)
167addEventHandler("createObjectExplosion",root,createObjectExplosion)
168
169function setupDoor(object,encampment,colTamanho)
170 local x,y,z = getElementPosition(object)
171 local rx,ry,rz = getElementRotation(object)
172 local col = createColSphere(x,y,z,colTamanho)
173 setElementData(col,"portacd",true)
174 setElementData(col,"dono",encampment)
175 setElementData(object,"parent",col)
176 setElementData(col,"parent",object)
177 DoorsTable[col] = {pos = {x = x,y = y,z = z}, rot= {x = rx,y = ry,z = rz}, col = col, camp = encampment, door = object}
178end
179
180function closeDoorForReal(doorCol)
181 local data = DoorsTable[doorCol]
182 setElementRotation(data.door,data.rot.x,data.rot.y,data.rot.z)
183end
184
185function closeDoor(doorCol)
186 local data = DoorsTable[doorCol]
187 moveObject(data.door,2000,data.pos.x,data.pos.y,data.pos.z,0,0,-90)
188 setTimer(closeDoorForReal,3500,1,doorCol)
189end
190
191function openDoor(hitElement)
192 local data = DoorsTable[source]
193 if data == nil then return end
194 local rx,ry,rz=getElementRotation(data["door"])
195 if getElementData(hitElement,"Group") == data["camp"] or data.camp == "false" or not data["camp"] then
196 moveObject(data["door"],2000,data.pos.x,data.pos.y,data.pos.z,0,0,90)
197 setTimer(closeDoor,3500,1,source)
198 end
199end
200addEventHandler("onColShapeHit",resourceRoot,openDoor)