Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CPlayer = {}
- -- Конструктор
- function CPlayer:constructor()
- self.m_Vehicle = nil
- self.m_Account = getPlayerAccount ( self )
- self.m_AccountName = getAccountName ( self.m_Account )
- -- Запрос
- local aResult = dbPoll ( dbQuery ( cServer:getDB(), "SELECT * FROM `players` WHERE `loginName`=?", self.m_AccountName ), -1 )
- if aResult and #aResult > 0 then
- -- Если игрок раннее играл на сервере, то:
- self.m_Money = aResult[1].money
- self.m_VehiclePacks = fromJSON ( aResult[1].packs )
- else
- -- Если игрок только зарагестрировался
- -- Начальные деньги
- self.m_Money = 50000
- -- Пак машин
- self.m_VehiclePacks = { "Classic" }
- dbExec ( cServer:getDB(), "INSERT INTO `players` (`loginName`, `money`, `packs`) VALUES (?, ?, ?)", self.m_AccountName, self.m_Money, toJSON ( self.m_VehiclePacks ) )
- end
- setPlayerMoney ( self, self.m_Money, true )
- -- Доступные для игрока автомобили
- self.m_Cars = {}
- -- Распарсим
- -- Таблица с названиями пака игрока
- for _, playerPack in ipairs ( self.m_VehiclePacks ) do
- for packName, packTable in pairs ( g_VehiclePacks ) do
- if playerPack == packName then
- for index, carID in ipairs ( packTable ) do
- table.insert ( self.m_Cars, carID )
- end
- end
- end
- end
- -- Тюнинг для авто игрока, синтаксис:
- -- [vehID] = { "", "", "" }
- self.m_CarsTunning = {}
- for index, carID in ipairs ( self.m_Cars ) do
- -- Запрос в БД
- local aResult = dbPoll ( dbQuery ( cServer:getDB(), "SELECT `JSON`, `wheels`, `color` from `tunning` WHERE `vehicleID`=? AND `loginName`=?", carID, self.m_AccountName ), -1 )
- if aResult and #aResult > 0 then
- -- Если у нас уже есть какой то тюнинг данного автомобиля, то:
- self.m_CarsTunning[carID] = {}
- self.m_CarsTunning[carID].wheels = aResult[1].wheels
- self.m_CarsTunning[carID].color = fromJSON ( aResult[1].color )
- self.m_CarsTunning[carID].components = fromJSON ( aResult[1].JSON )
- else
- -- Если же тюнинга на авто нет, то
- self.m_CarsTunning[carID] = {}
- self.m_CarsTunning[carID].wheels = 0
- self.m_CarsTunning[carID].color = { 255, 255, 255 }
- if g_VehiclesStockParts[carID] then
- self.m_CarsTunning[carID].components = g_VehiclesStockParts[carID]
- else
- self.m_CarsTunning[carID].components = {}
- end
- 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 ) )
- end
- end
- end
- -- Деструктор
- function CPlayer:destructor()
- dbExec ( cServer:getDB(), "UPDATE `players` SET `money`=? WHERE `loginName`=?", self.m_Money, self.m_AccountName )
- end
- -- Возвращаем юсердату аккаунта
- function CPlayer:getAccount()
- return self.m_Account
- end
- -- Возвращаем имя аккаунта
- function CPlayer:getAccountName()
- return self.m_AccountName
- end
- -- Возвращаем таблицу со всеми автомобилями игрока
- function CPlayer:getCars()
- return self.m_Cars
- end
- -- Возвращаем таблицу со всем тюнингом для авто
- function CPlayer:getTunning()
- return self.m_CarsTunning
- end
- -- Возвращаем таблицу с тюнингом для определенного авто
- function CPlayer:getCarTuning ( vehID )
- if tonumber ( vehID ) then
- return self.m_CarsTunning[vehID]
- end
- return false
- end
- -- Изменяем тюннинг для авто
- function CPlayer:setCarTuning ( vehID, aTable )
- if type ( aTable ) == "table" then
- self.m_CarsTunning[vehID] = aTable
- end
- end
- -- Сохраняем тюннинг для авто в БД
- function CPlayer:saveTunningForVehicle ( vehID, aTable )
- self.m_CarsTunning[vehID] = aTable
- 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 )
- end
- function CPlayer:spawn ( iVehicleID, sSpawnName )
- local X, Y, Z = g_SpawnPoints[sSpawnName].x, g_SpawnPoints[sSpawnName].y, g_SpawnPoints[sSpawnName].z
- local iDimension = g_SpawnPoints[sSpawnName].dimenstion
- local iInterior = g_SpawnPoints[sSpawnName].interior
- local pVehicle = CreateVehicleForPlayer ( iVehicleID, X, Y, Z, self.m_CarsTunning[iVehicleID].color, self.m_CarsTunning[iVehicleID].wheels, self.m_CarsTunning[iVehicleID].components )
- setElementRotation ( pVehicle, 0, 0, g_SpawnPoints[sSpawnName].rot )
- self.m_Vehicle = pVehicle
- addVehicleUpgrade ( pVehicle, pVehicle:getWheels() )
- local aColor = pVehicle:getColor()
- setVehicleColor ( pVehicle, aColor[1], aColor[2], aColor[3] )
- setElementFrozen ( pVehicle, true )
- spawnPlayer ( self, X, Y, Z, 0, 0 )
- setElementFrozen ( self, true )
- setElementDimension ( pVehicle, iDimension )
- setElementDimension ( source, iDimension )
- setElementInterior ( pVehicle, iInterior )
- setElementInterior ( source, iInterior)
- warpPedIntoVehicle ( self, pVehicle )
- local aTable = {}
- local aVehicles = GetAllVehiclesWithDimension ( iDimension )
- local aPlayers = GetAllPlayersWithMimension ( iDimension )
- for index, vehicle in ipairs ( aVehicles ) do
- aTable[vehicle] = vehicle.m_Components
- end
- for _, player in ipairs ( aPlayers ) do
- triggerClientEvent ( player, "OnTunningSyncRequest", player, aTable )
- end
- setCameraTarget ( self, self )
- setTimer ( function()
- triggerClientEvent ( self, "COnPlayerSpawn", self, self.m_Vehicle )
- toggleAllControls ( self, true )
- setElementFrozen ( pVehicle, false )
- setElementFrozen ( self, false )
- setTimer ( fadeCamera, 1000, 1, self, true, 1 )
- end, 2000, 1 )
- end
- addEventHandler ( "onPlayerLogout", root,
- function()
- if source.m_Vehicle then
- destroyElement ( source.m_Vehicle )
- source.m_Vehicle = nil
- end
- end
- )
- addEventHandler ( "onPlayerQuit", root,
- function()
- if source.m_Vehicle then
- destroyElement ( source.m_Vehicle )
- source.m_Vehicle = nil
- end
- end
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement