Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.30 KB | None | 0 0
  1.  
  2. CPlayer = {}
  3.  
  4. -- Конструктор
  5. function CPlayer:constructor()
  6.     self.m_Vehicle = nil
  7.     self.m_Account = getPlayerAccount ( self )
  8.     self.m_AccountName = getAccountName ( self.m_Account )
  9.     -- Запрос
  10.     local aResult = dbPoll ( dbQuery ( cServer:getDB(), "SELECT * FROM `players` WHERE `loginName`=?", self.m_AccountName ), -1 )
  11.     if aResult and #aResult > 0 then
  12.     -- Если игрок раннее играл на сервере, то:
  13.         self.m_Money = aResult[1].money
  14.         self.m_VehiclePacks = fromJSON ( aResult[1].packs )
  15.     else
  16.     -- Если игрок только зарагестрировался
  17.         -- Начальные деньги
  18.         self.m_Money = 50000
  19.         -- Пак машин
  20.         self.m_VehiclePacks = { "Classic" }
  21.         dbExec ( cServer:getDB(), "INSERT INTO `players` (`loginName`, `money`, `packs`) VALUES (?, ?, ?)", self.m_AccountName, self.m_Money, toJSON ( self.m_VehiclePacks ) )
  22.     end
  23.     setPlayerMoney ( self, self.m_Money, true )
  24.     -- Доступные для игрока автомобили
  25.     self.m_Cars = {}
  26.     -- Распарсим
  27.     -- Таблица с названиями пака игрока
  28.     for _, playerPack in ipairs ( self.m_VehiclePacks ) do
  29.         for packName, packTable in pairs ( g_VehiclePacks ) do
  30.             if playerPack == packName then
  31.                 for index, carID in ipairs ( packTable ) do
  32.                     table.insert ( self.m_Cars, carID )
  33.                 end
  34.             end
  35.         end
  36.     end
  37.     -- Тюнинг для авто игрока, синтаксис:
  38.     -- [vehID] = { "", "", "" }
  39.     self.m_CarsTunning = {}
  40.     for index, carID in ipairs ( self.m_Cars ) do
  41.         -- Запрос в БД
  42.         local aResult = dbPoll ( dbQuery ( cServer:getDB(), "SELECT `JSON`, `wheels`, `color` from `tunning` WHERE `vehicleID`=? AND `loginName`=?", carID, self.m_AccountName ), -1 )
  43.         if aResult and #aResult > 0 then
  44.             -- Если у нас уже есть какой то тюнинг данного автомобиля, то:
  45.             self.m_CarsTunning[carID] = {}
  46.             self.m_CarsTunning[carID].wheels = aResult[1].wheels
  47.             self.m_CarsTunning[carID].color = fromJSON ( aResult[1].color )
  48.             self.m_CarsTunning[carID].components = fromJSON ( aResult[1].JSON )
  49.         else
  50.             -- Если же тюнинга на авто нет, то
  51.             self.m_CarsTunning[carID] = {}
  52.             self.m_CarsTunning[carID].wheels = 0
  53.             self.m_CarsTunning[carID].color = { 255, 255, 255 }
  54.             if g_VehiclesStockParts[carID] then
  55.                 self.m_CarsTunning[carID].components = g_VehiclesStockParts[carID]
  56.             else
  57.                 self.m_CarsTunning[carID].components = {}
  58.             end
  59.             dbExec ( cServer:getDB(), "INSERT INTO `tunning` (`loginName`, `vehicleID`, `wheels`, `color`, `JSON`) VALUES (?, ?, ?, ?, ?)", self.m_AccountName, carID, 0, toJSON ( self.m_CarsTunning[carID].color ), toJSON ( self.m_CarsTunning[carID].components ) )
  60.         end
  61.     end
  62. end
  63.  
  64. -- Деструктор
  65. function CPlayer:destructor()
  66.     dbExec ( cServer:getDB(), "UPDATE `players` SET `money`=? WHERE `loginName`=?", self.m_Money, self.m_AccountName )
  67. end
  68.  
  69. -- Возвращаем юсердату аккаунта
  70. function CPlayer:getAccount()
  71.     return self.m_Account
  72. end
  73.  
  74. -- Возвращаем имя аккаунта
  75. function CPlayer:getAccountName()
  76.     return self.m_AccountName
  77. end
  78.  
  79. -- Возвращаем таблицу со всеми автомобилями игрока
  80. function CPlayer:getCars()
  81.     return self.m_Cars
  82. end
  83.  
  84. -- Возвращаем таблицу со всем тюнингом для авто
  85. function CPlayer:getTunning()
  86.     return self.m_CarsTunning
  87. end
  88.  
  89. -- Возвращаем таблицу с тюнингом для определенного авто
  90. function CPlayer:getCarTuning ( vehID )
  91.     if tonumber ( vehID ) then
  92.         return self.m_CarsTunning[vehID]
  93.     end
  94.     return false
  95. end
  96.  
  97. -- Изменяем тюннинг для авто
  98. function CPlayer:setCarTuning ( vehID, aTable )
  99.     if type ( aTable ) == "table" then
  100.         self.m_CarsTunning[vehID] = aTable
  101.     end
  102. end
  103.  
  104. -- Сохраняем тюннинг для авто в БД
  105. function CPlayer:saveTunningForVehicle ( vehID, aTable )
  106.     self.m_CarsTunning[vehID] = aTable
  107.     dbExec ( cServer:getDB(), "UPDATE `tunning` set `wheels` = ?, `color` = ?, `JSON` = ? WHERE `loginName` = ? AND `vehicleID` = ?", aTable.wheels, toJSON ( aTable.color ), toJSON ( aTable.components ), self.m_AccountName, vehID )
  108. end
  109.  
  110. function CPlayer:spawn ( iVehicleID, sSpawnName )
  111.     local X, Y, Z = g_SpawnPoints[sSpawnName].x, g_SpawnPoints[sSpawnName].y, g_SpawnPoints[sSpawnName].z
  112.     local iDimension = g_SpawnPoints[sSpawnName].dimenstion
  113.     local iInterior = g_SpawnPoints[sSpawnName].interior
  114.     local pVehicle = CreateVehicleForPlayer ( iVehicleID, X, Y, Z, self.m_CarsTunning[iVehicleID].color, self.m_CarsTunning[iVehicleID].wheels, self.m_CarsTunning[iVehicleID].components )
  115.     setElementRotation ( pVehicle, 0, 0, g_SpawnPoints[sSpawnName].rot )
  116.     self.m_Vehicle = pVehicle
  117.     addVehicleUpgrade ( pVehicle, pVehicle:getWheels() )
  118.     local aColor = pVehicle:getColor()
  119.     setVehicleColor ( pVehicle, aColor[1], aColor[2], aColor[3] )
  120.     setElementFrozen ( pVehicle, true )
  121.     spawnPlayer ( self, X, Y, Z, 0, 0 )
  122.     setElementFrozen ( self, true )
  123.     setElementDimension ( pVehicle, iDimension )
  124.     setElementDimension ( source, iDimension )
  125.     setElementInterior ( pVehicle, iInterior )
  126.     setElementInterior (  source, iInterior)
  127.     warpPedIntoVehicle ( self, pVehicle )
  128.     local aTable = {}
  129.     local aVehicles = GetAllVehiclesWithDimension ( iDimension )
  130.     local aPlayers = GetAllPlayersWithMimension ( iDimension )
  131.     for index, vehicle in ipairs ( aVehicles ) do
  132.         aTable[vehicle] = vehicle.m_Components
  133.     end
  134.     for _, player in ipairs ( aPlayers ) do
  135.         triggerClientEvent ( player, "OnTunningSyncRequest", player, aTable )
  136.     end
  137.     setCameraTarget ( self, self )
  138.     setTimer ( function()
  139.                     triggerClientEvent ( self, "COnPlayerSpawn", self, self.m_Vehicle )
  140.                     toggleAllControls ( self, true )
  141.                     setElementFrozen ( pVehicle, false )
  142.                     setElementFrozen ( self, false )
  143.                     setTimer ( fadeCamera, 1000, 1, self, true, 1 )
  144.                 end, 2000, 1 )
  145. end
  146.  
  147. addEventHandler ( "onPlayerLogout", root,
  148.     function()
  149.         if source.m_Vehicle then
  150.             destroyElement ( source.m_Vehicle )
  151.             source.m_Vehicle = nil
  152.         end
  153.     end
  154. )
  155.  
  156. addEventHandler ( "onPlayerQuit", root,
  157.     function()
  158.         if source.m_Vehicle then
  159.             destroyElement ( source.m_Vehicle )
  160.             source.m_Vehicle = nil
  161.         end
  162.      end
  163. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement