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