Toliak

Untitled

Jul 20th, 2017
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.37 KB | None | 0 0
  1. local bizs_entrance = {} --сюда идут все созданные маркеры входов
  2. local bizs_buy = {} --сюда идут все созданные маркеры покупки предметов
  3.  
  4. function interiorType(int, x1, y1, z1, rotation, x2, y2, z2)
  5. --[[ id - номер
  6. int - номер интерьера
  7. x1, y1, z1 - координаты выхода
  8. x2, y2, z2 - координаты метки покупки --]]
  9. local obj = {}
  10. obj.interior = int
  11. obj.rotation = rotation
  12. obj.exit = {["position"] = Vector3(x1, y1, z1)}
  13. obj.buy = {["position"] = Vector3(x2, y2, z2)}
  14. return obj
  15. end
  16.  
  17. INT_TYPE = {}
  18. INT_TYPE[1] = interiorType(18, -30.96, -91.64, 1003.54, 0, -28.02, -89.96, 1002.54)
  19. INT_TYPE[2] = interiorType(6, -27.45, -58.28, 1003.54, 0, -23.43, -55.64, 1002.54)
  20. INT_TYPE[3] = interiorType(4, -27.36, -31.77, 1003.55, 0, -30.92, -29.02, 1002.55)
  21.  
  22. local BLIPID = {{50}, {10, 14}}
  23. local BUYPICKUPID = 1274
  24. local MARKERENTER_COLOR = {247, 255, 47}
  25. local MARKERBUY_COLOR = {255, 0, 0}
  26. local START_DIMENSION = 400
  27. local SPAWN_LENGTH = 2
  28. local MARKER_Z_OFFSET = 0.6
  29. local SELL_KOEF = 0.8
  30.  
  31.  
  32. function s_mode_biz_spawnBlips()
  33. local result = dbPoll(dbQuery(mysql_connection, "SELECT * FROM `shops`"), -1)
  34. if not result then return false end
  35. for _, r in pairs(result) do
  36. local entrance
  37. if (r.owner) then
  38. entrance = Marker(r.x, r.y, r.z+MARKER_Z_OFFSET, "arrow", 1, unpack(MARKERENTER_COLOR))
  39. addEventHandler("onMarkerHit", entrance, s_mode_biz_onTeleportMarkerHit)
  40. else
  41. entrance = Pickup(r.x, r.y, r.z, 3, BUYPICKUPID, 1000)
  42. addEventHandler("onPickupUse", entrance, s_mode_biz_onBuyPickupUse)
  43. end
  44. local blip = Blip.createAttachedTo(entrance, BLIPID[r.type][r.iconType], 0.5, 0, 0, 0, 255, 0, 150)
  45. entrance:setData("blip", blip, false)
  46. entrance:setData("rotation", INT_TYPE[r.intType].rotation, false)
  47. entrance:setData("interior", INT_TYPE[r.intType].interior, false)
  48. entrance:setData("dimension", START_DIMENSION + r.id, false)
  49. local ang = math.rad(INT_TYPE[r.intType].rotation)+math.pi/2
  50. local n = INT_TYPE[r.intType].exit.position+Vector3(SPAWN_LENGTH*math.cos(ang), SPAWN_LENGTH*math.sin(ang), 0)
  51. entrance:setData("position", {n.x, n.y, n.z}, false) --Нельзя ставить vector в дату
  52. bizs_entrance[r.id] = entrance
  53.  
  54. s_mode_biz_setInterior(r.id , r)
  55.  
  56.  
  57.  
  58. end
  59. end
  60.  
  61. function s_mode_biz_setInterior(id, bdresult)
  62. local iDim = START_DIMENSION + id
  63. local iInt = INT_TYPE[bdresult.intType].interior
  64. local mrk = Marker(INT_TYPE[bdresult.intType].exit.position+Vector3(0, 0, MARKER_Z_OFFSET), "arrow", 1, unpack(MARKERENTER_COLOR))
  65. mrk.dimension = iDim
  66. mrk.interior = iInt
  67. mrk:setData("rotation", bdresult.rotation, false)
  68. local ang = math.rad(bdresult.rotation)+math.pi/2
  69. local n = Vector3(bdresult.x, bdresult.y, bdresult.z)+Vector3(SPAWN_LENGTH*math.cos(ang), SPAWN_LENGTH*math.sin(ang), 0)
  70. mrk:setData("position", {n.x, n.y, n.z}, false)
  71. mrk:setData("interior", 0, false)
  72. mrk:setData("dimension", 0, false)
  73. addEventHandler("onMarkerHit", mrk, s_mode_biz_onTeleportMarkerHit)
  74.  
  75. mrk = Marker(INT_TYPE[bdresult.intType].buy.position, "cylinder", 1, unpack(MARKERBUY_COLOR)) --видимый маркер
  76. mrk.dimension = iDim
  77. mrk.interior = iInt
  78.  
  79. mrk = Marker(INT_TYPE[bdresult.intType].buy.position+Vector3(0, 0, 0.6), "cylinder", 1) --рабочий маркер
  80. mrk:setVisibleTo(root,false)
  81. mrk.dimension = iDim
  82. mrk.interior = iInt
  83. bizs_buy[id] = mrk --тот самый костыль с неработающим маркером, когда игрок в нем
  84. end
  85.  
  86. function s_mode_biz_removeBlips()
  87. for _, r in pairs(bizs_entrance) do
  88. if isElement(r) then
  89. local blip = r:getData("blip", false)
  90. if isElement(blip) then
  91. blip:destroy()
  92. end
  93. r:destroy()
  94. end
  95. end
  96. bizs_entrance = {}
  97. end
  98.  
  99. function s_mode_biz_updateBlips()
  100. s_mode_biz_removeBlips()
  101. s_mode_biz_spawnBlips()
  102. end
  103.  
  104. function s_mode_biz_getPlayerBizs(player)
  105. local result = dbPoll(dbQuery(mysql_connection, "SELECT * FROM `shops` WHERE `owner`=?", player.name), -1)
  106. if not result[1] then return false end
  107. return result
  108. end
  109. function Player:s_mode_biz_getBizs() return s_mode_biz_getPlayerBizs(self) end
  110.  
  111. function s_mode_biz_isPlayerOwner(player,bizid)
  112. local result = dbPoll(dbQuery(mysql_connection, "SELECT * FROM `shops` WHERE `owner`=? AND `id`=?", player.name,bizid), -1)[1]
  113. if not result then return false end
  114. return result
  115. end
  116. function Player:s_mode_biz_isOwner(...) return s_mode_biz_isPlayerOwner(self,...) end
  117.  
  118. function s_mode_biz_getInventory(id)
  119. local result = dbPoll(dbQuery(mysql_connection, "SELECT `inv` FROM `shops` WHERE `id`=?", id), -1)[1]
  120. if not result then return false end
  121. return fromJSON(result.inv)
  122. end
  123.  
  124. function s_mode_biz_findItem(bizid,itemid)
  125. local inv = s_mode_biz_getInventory(bizid)
  126. if not inv then return nil end
  127. for i, r in pairs(inv) do
  128. if (r[1]==itemid) and (r[2]>0) then
  129. return i
  130. end
  131. end
  132. return false
  133. end
  134.  
  135. function s_mode_biz_setInventory(id, inv)
  136. return dbExec(mysql_connection, "UPDATE `shops` SET `inv`=? WHERE `id`=?", toJSON(inv), id)
  137. end
  138.  
  139. function s_mode_biz_sellbiz()
  140. local biz = client:getData("tmp_currentsellbiz",false)
  141. local whom = client:getData("tmp_currentsellbizto",false)
  142. local price = client:getData("tmp_currentsellbizprice",false)
  143. if whom and (not isElement(whom)) then return outputChatBox("Игрок не найден", client, 0, 255, 0) end
  144. if not whom then --продажа гос-ву
  145. BankTransaction(client, "+", math.floor(biz.buyprice*SELL_KOEF), "Продажа бизнеса "..base64Decode(biz.name))
  146. dbExec(mysql_connection, "UPDATE `shops` SET `owner`=NULL WHERE `id`=?", biz.id)
  147.  
  148. s_mode_biz_updateBlips()
  149. client:setData("tmp_currentsellbiz",nil,false)
  150. client:setData("tmp_currentsellbizto",nil,false)
  151. return outputChatBox("Вы продали бизнес "..base64Decode(biz.name), client, 0, 255, 0)
  152. else --продажа игроку
  153. if whom.money<price then return outputChatBox("У игрока не достаточно денег", client, 0, 255, 0) end
  154. local format1 = client.name.." предложил Вам купить бизнес "..base64Decode(biz.name).." за "..price.."$<br>Вы согласны?"
  155. whom:setData("tmp_currentsellbizfrom",client,false)
  156. triggerClientEvent(whom,"c_ynBox",resourceRoot,"s_mode_biz_buy_accept",nil,nil,format1) --fracpack/defboxes_c.lua
  157. end
  158. end
  159. addEvent("s_mode_biz_sellbiz",true)
  160. addEventHandler("s_mode_biz_sellbiz",root,s_mode_biz_sellbiz)
  161.  
  162. function s_mode_biz_buy_accept()
  163. local from = client:getData("tmp_currentsellbizfrom",false)
  164. if not isElement(from) then return outputChatBox("Игрок не найден", client, 0, 255, 0) end
  165. local biz = from:getData("tmp_currentsellbiz",false)
  166. local price = from:getData("tmp_currentsellbizprice",false)
  167. BankTransaction(from, "+", price, "Продажа бизнеса "..base64Decode(biz.name))
  168. BankTransaction(client, "-", price, "Покупка бизнеса "..base64Decode(biz.name))
  169. dbExec(mysql_connection, "UPDATE `shops` SET `owner`=? WHERE `id`=?", client.name, biz.id)
  170. s_mode_biz_updateBlips()
  171.  
  172. from:setData("tmp_currentsellbiz",nil,false)
  173. from:setData("tmp_currentsellbizto",nil,false)
  174. from:setData("tmp_currentsellbizprice",nil,false)
  175. client:setData("tmp_currentsellbizfrom",nil,false)
  176. end
  177. addEvent("s_mode_biz_buy_accept",true)
  178. addEventHandler("s_mode_biz_buy_accept",root,s_mode_biz_buy_accept)
  179.  
  180. -------------------------------
  181. --Ивенты
  182. -------------------------------
  183.  
  184. function s_mode_biz_onTeleportMarkerHit(element, dim)
  185. if not dim then return nil end
  186. element.interior = source:getData("interior", false)
  187. element.dimension = source:getData("dimension", false)
  188. element.position = Vector3(unpack(source:getData("position", false)))
  189. exports.fracpack:s_facingangle_set ( element, source:getData("rotation", false) )
  190. end
  191.  
  192. -------------------------------
  193. --Команды
  194. -------------------------------
  195.  
  196. function s_mode_biz_cmd_buybiz(player, cmd)
  197. local id
  198. for i, r in pairs(bizs_entrance) do
  199. if getElementType(r)=="pickup" then -- .type у пикапа возвращает тип пикапа -_-
  200. if player:isWithinColShape(r.colShape) then
  201. id = i
  202. break
  203. end
  204. end
  205. end
  206. if not id then return outputChatBox("Вы не около бизнеса", player, 255, 0, 0) end
  207. local result = dbPoll(dbQuery(mysql_connection, "SELECT `owner`, `buyprice`, `name` FROM `shops` WHERE `id`=?", id), -1)[1]
  208. if result.owner then return outputChatBox("Бизнес уже куплен", player, 255, 0, 0) end
  209. if player.money<result.buyprice then return outputChatBox("У Вас не достаточно денег", player, 255, 0, 0) end
  210. BankTransaction(player, "-", result.buyprice, "Покупка бизнеса "..base64Decode(result.name))
  211. dbExec(mysql_connection, "UPDATE `shops` SET `owner`=? WHERE `id`=?", player.name, id)
  212.  
  213. s_mode_biz_updateBlips()
  214. return outputChatBox("Вы купили бизнес "..base64Decode(result.name), player, 0, 255, 0)
  215. end
  216. addCommandHandler("buybiz", s_mode_biz_cmd_buybiz)
  217.  
  218. function s_mode_biz_cmd_sellbiz(player, cmd, id, playerId, price)
  219. --Проверка владельца, синтаксиса
  220. id = tonumber(id)
  221. playerId = tonumber(playerId)
  222. price = tonumber(price)
  223. if not id then return outputChatBox("Синтаксис: /"..cmd.." [id] (id игрока) (цена)", player, 255, 0, 0) end
  224. local biz = player:s_mode_biz_isOwner(id)
  225. if not biz then return outputChatBox("Вы не владелец данного бизнеса", player, 255, 0, 0) end
  226.  
  227. --Проверка на продажу игроку
  228. local curpl
  229. if playerId then
  230. if not price then return outputChatBox("Синтаксис: /"..cmd.." [id] [id игрока] [цена]", player, 255, 0, 0) end
  231. price = math.floor(price) --дробей еще напихают
  232. if price<=0 then return outputChatBox("Цена указана неверно", player, 255, 0, 0) end --и отрицательных чисел
  233. curpl = g_Players[playerId]
  234. if not isElement(curpl) then return outputChatBox("Игрок не найден", player, 255, 0, 0) end
  235. if (curpl.position - player.position).length>5 then return outputChatBox("Игрок слишком далеко", player, 255, 0, 0) end
  236.  
  237. player:setData("tmp_currentsellbizto",curpl,false)
  238. player:setData("tmp_currentsellbizprice",price,false)
  239. end
  240.  
  241. --ARE YOU SURE?
  242. player:setData("tmp_currentsellbiz",biz,false)
  243. local format1 = curpl and "Вы действительно хотите продать бизнес "..base64Decode(biz.name).." игроку "..curpl.name.." за "..price.."$ ?" or "Вы действительно хотите продать бизнес государству?"
  244. triggerClientEvent(player,"c_ynBox",resourceRoot,"s_mode_biz_sellbiz",nil,nil,format1) --fracpack/defboxes_c.lua
  245. end
  246. addCommandHandler("sellbiz", s_mode_biz_cmd_sellbiz)
  247.  
  248. local ITEM_BUYTYPE = {} --single(нельзя купить, если есть в инвентаре) replace(заменяет то, что есть в инвентаре) add(добавляет к тому, что есть в инвентаре)
  249. ITEM_BUYTYPE[1] = "single"
  250. ITEM_BUYTYPE[14] = "single"
  251. ITEM_BUYTYPE[15] = "single"
  252.  
  253. local ITEM_TYPE = {} --item weapon(цветы, трость)
  254. ITEM_TYPE[1] = "item"
  255. ITEM_TYPE[14] = "weapon"
  256. ITEM_TYPE[15] = "weapon"
  257.  
  258. local ITEM_SECONDPART = {} --вторая часть предмета (записывается в инвентарь)
  259. --делать в виде функций!
  260. ITEM_SECONDPART[1] = function() return 0 end
  261. ITEM_SECONDPART[14] = function() return 1 end
  262. ITEM_SECONDPART[15] = function() return 1 end
  263.  
  264. local ITEM_NAME = {} --Не вижу смысла держать в БД
  265. ITEM_NAME[1] = "Канистра"
  266. ITEM_NAME[14] = "Цветы"
  267. ITEM_NAME[15] = "Трость"
  268.  
  269.  
  270. function s_mode_biz_cmd_buyitem(player, cmd, item)
  271. --Проверка синтаксиса, получение ID биза
  272. item = tonumber(item)
  273. if not item then return outputChatBox("Синтаксис: /"..cmd.." [item ID]", player, 255, 0, 0) end
  274. local bizid
  275. for i, r in pairs(bizs_buy) do
  276. if (player:isWithinColShape(r.colShape)) and (r.dimension==player.dimension) then
  277. bizid = i
  278. break
  279. end
  280. end
  281. if not bizid then return outputChatBox("Вы не около кассы", player, 255, 0, 0) end
  282.  
  283. --Проверка наличия предмета на складе
  284. local inv = s_mode_biz_getInventory(bizid)
  285. local indexInInv = s_mode_biz_findItem(bizid,item)
  286. if indexInInv==nil then return outputChatBox("Ошибка #BIZ1", player, 255, 0, 0) end
  287. if indexInInv==false then return outputChatBox("Данного предмета нет на складе", player, 255, 0, 0) end
  288.  
  289. --Проверка наличия предмета у игрока
  290. local amount
  291. if ITEM_TYPE[item]=="item" then
  292. for _, r in pairs(player:getData("inventory", false)) do
  293. if r[1]==item then
  294. amount = r[2]
  295. break
  296. end
  297. end
  298. if not amount then amount = 0 end
  299. elseif ITEM_TYPE[item]=="weapon" then
  300. local slot = getSlotFromWeapon(item)
  301. amount = (player:getWeapon(slot)==item) and player:getTotalAmmo(slot) or 0
  302. end
  303. if not amount then return outputChatBox("Ошибка #BIZ2", player, 255, 0, 0) end
  304. local secondPart
  305. if ITEM_BUYTYPE[item]=="single" then
  306. if amount>0 then return outputChatBox("Данный предмет у Вас уже есть", player, 255, 0, 0) end
  307. secondPart = ITEM_SECONDPART[item]()
  308. elseif ITEM_BUYTYPE[item]=="replace" then
  309. secondPart = ITEM_SECONDPART[item]()
  310. InvRemove(player, item)
  311. --тут что-то нужно придумать
  312. elseif ITEM_BUYTYPE[item]=="add" then
  313. secondPart = ITEM_SECONDPART[item]()
  314. else return outputChatBox("Ошибка #BIZ3", player, 255, 0, 0) end
  315. if not secondPart then return outputChatBox("Ошибка #BIZ4", player, 255, 0, 0) end
  316.  
  317. --Списание денег
  318. if player.money<inv[indexInInv][3] then return outputChatBox("У Вас не достаточно денег", player, 255, 0, 0) end
  319. BankTransaction(player, "-", inv[indexInInv][3], "Покупка товара '"..ITEM_NAME[item].."'")
  320.  
  321. --Обновление инвентаря магазина
  322. inv[indexInInv][2] = inv[indexInInv][2] - 1
  323. s_mode_biz_setInventory(bizid, inv)
  324.  
  325. --Получение покупки
  326. if ITEM_TYPE[item]=="item" then
  327. InvAdd(player, item, secondPart)
  328. elseif ITEM_TYPE[item]=="weapon" then
  329. player:giveWeapon(item, 1)
  330. end
  331.  
  332. dbExec(mysql_connection, "UPDATE `shops` SET `bank`=`bank`+? WHERE `id`=?", inv[indexInInv][3], bizid)
  333. return outputChatBox("Вы купили "..ITEM_NAME[item], player, 0, 255, 0)
  334. end
  335. addCommandHandler("buyitem", s_mode_biz_cmd_buyitem)
  336.  
  337.  
  338. function s_mode_biz_cmd_bizfee(player,cmd, id, price)
  339. --Проверка синтаксиса
  340. id, price = tonumber(id), tonumber(price)
  341. if not (id and price) then return outputChatBox("Синтаксис: /"..cmd.." [ID товара] [цена]", player, 255, 0,0) end
  342. price = math.floor(price)
  343. if price<=0 then return outputChatBox("Цена указана неверно", player, 255, 0, 0) end
  344.  
  345. --Проверка на нахождение внутри бизнеса
  346. local bizid = player.dimension - START_DIMENSION
  347. if not bizs_entrance[bizid] then return outputChatBox("Вы не внутри бизнеса", player, 255, 0,0) end
  348.  
  349. --Проверка на владельца
  350. local biz = player:s_mode_biz_isOwner(bizid)
  351. if not biz then return outputChatBox("Вы не владелец данного бизнеса", player, 255, 0, 0) end
  352.  
  353. --Проверка существования товара
  354. if not ITEM_NAME[id] then return outputChatBox("Такого товара не существует", player, 255, 0,0) end
  355. local inv = s_mode_biz_getInventory(bizid)
  356. local indexInInv = s_mode_biz_findItem(bizid,id)
  357. iprint(indexInInv)
  358. if indexInInv==nil then return outputChatBox("Ошибка #BIZ5", player, 255, 0, 0) end
  359.  
  360. --Установка новой цены
  361. if indexInInv==false then
  362. table.insert(inv,{id,0,price})
  363. else
  364. inv[indexInInv][3] = price
  365. end
  366. s_mode_biz_setInventory(bizid,inv)
  367. return outputChatBox("Товару '"..ITEM_NAME[id].."' установлена цена "..price.."$",player,0,255,0)
  368. end
  369. addCommandHandler("bizfee", s_mode_biz_cmd_bizfee)
  370.  
  371. function s_mode_biz_cmd_bizbank(player, cmd, amount)
  372. --Проверка синтаксиса и денег
  373. amount = tonumber(amount)
  374. if not amount then return outputChatBox("Синтаксис: /"..cmd.." [сумма]", player, 255, 0,0) end
  375. amount = math.floor(amount)
  376. if player.money<amount then return outputChatBox("У Вас не достаточно денег", player, 255, 0,0) end
  377. if amount<=0 then return outputChatBox("Сумма денег для перевода указана неверно", player, 255, 0, 0) end
  378.  
  379. --Проверка на нахождение внутри бизнеса
  380. local bizid = player.dimension - START_DIMENSION
  381. if not bizs_entrance[bizid] then return outputChatBox("Вы не внутри бизнеса", player, 255, 0,0) end
  382.  
  383. --Проверка на владельца
  384. local biz = player:s_mode_biz_isOwner(bizid)
  385. if not biz then return outputChatBox("Вы не владелец данного бизнеса", player, 255, 0, 0) end
  386.  
  387. BankTransaction(player, "-", amount, "Перевод денег на счет бизнеса")
  388. dbExec(mysql_connection, "UPDATE `shops` SET `bank`=`bank`+? WHERE `id`=?", amount, bizid)
  389. return outputChatBox("Вы перевели "..amount.."$ на счет бизнеса "..base64Decode(biz.name),player,0,255,0)
  390. end
  391. addCommandHandler("bizbank", s_mode_biz_cmd_bizbank)
  392.  
  393. function s_mode_biz_cmd_bizwithdraw(player, cmd, amount)
  394. --Проверка синтаксиса
  395. amount = tonumber(amount)
  396. if not amount then return outputChatBox("Синтаксис: /"..cmd.." [сумма]", player, 255, 0,0) end
  397. amount = math.floor(amount)
  398. if amount<=0 then return outputChatBox("Сумма денег для снятия указана неверно", player, 255, 0, 0) end
  399.  
  400. --Проверка на нахождение внутри бизнеса
  401. local bizid = player.dimension - START_DIMENSION
  402. if not bizs_entrance[bizid] then return outputChatBox("Вы не внутри бизнеса", player, 255, 0,0) end
  403.  
  404. --Проверка на владельца
  405. local biz = player:s_mode_biz_isOwner(bizid)
  406. if not biz then return outputChatBox("Вы не владелец данного бизнеса", player, 255, 0, 0) end
  407. if biz.bank<amount then return outputChatBox("На счете бизнеса не достаточно денег", player, 255, 0,0) end
  408.  
  409. BankTransaction(player, "+", amount, "Снятие денег со счета бизнеса")
  410. dbExec(mysql_connection, "UPDATE `shops` SET `bank`=`bank`-? WHERE `id`=?", amount, bizid)
  411. return outputChatBox("Вы сняли "..amount.."$ со счета бизнеса "..base64Decode(biz.name),player,0,255,0)
  412. end
  413. addCommandHandler("bizwithdraw", s_mode_biz_cmd_bizwithdraw)
  414.  
  415. function s_mode_biz_cmd_bizlock(player,cmd,what,state) --протестить!!!!
  416. --Проверка синтаксиса
  417. local what_ = {["1"]="bizOpen",["0"]="deliveryOpen"}
  418. local state_ = {["1"]=1,["0"]=0}
  419. what, state = what_[what], state_[state]
  420. if not (what and state) then return outputChatBox("Синтаксис: /"..cmd.." [1/0 - бизнес/склад] [1/0 - закрыть/открыть]", player, 255, 0,0) end
  421.  
  422. --Проверка на нахождение внутри бизнеса
  423. local bizid = player.dimension - START_DIMENSION
  424. if not bizs_entrance[bizid] then return outputChatBox("Вы не внутри бизнеса", player, 255, 0,0) end
  425.  
  426. --Проверка на владельца
  427. local biz = player:s_mode_biz_isOwner(bizid)
  428. if not biz then return outputChatBox("Вы не владелец данного бизнеса", player, 255, 0, 0) end
  429.  
  430. dbExec(mysql_connection, "UPDATE `shops` SET `"..what_.."`=? WHERE `id`=?", state, bizid)
  431. local what__ = {["bizOpen"]="бизнес",["deliveryOpen"]="склад"}
  432. local state__ = {[1]="открыли",[0]="закрыли"}
  433. outputChatBox("Вы "..what__[what].." "..state__[state].." "..base64Decode(biz.name), player, 0, 255, 0)
  434. end
  435. addCommandHandler("bizlock", s_mode_biz_cmd_bizlock)
Advertisement
Add Comment
Please, Sign In to add comment