WhoAmI Posted March 31, 2014 Share Posted March 31, 2014 (edited) Cześć. Uploduje tu prywatny system aut. Posiada: - zapis pojazdu w ostatniej pozycji, koloru i upgrade'ów - zapis do SQL/MySQL - pełną konfiguracje - panel tworzenia auta pod 'Z' albo /privatecars Zexportowane funkcje: createPrivateVehicle ( int model, int x, int y, int z, int rotX, int rotY, int rotZ, table color, table upgrades, string accName ) tablica kolorów powinna wyglądać { r, g, b, r1, g1, b1, r2, g2, b2, r3, g3, b3, r4, g4, b4 } isCarPrivate ( element vehicle ) getPrivateCarOwner ( element vehicle ) Wszystkie funkcje po stronie serwera. Wbudowane komendy: /carinfo Zdjęcia: http://imgur.com/sMiYSLj,UpFjofz,mu5wL58 Plik konfiguracyjny --[[ PRIVATE CARS by WhoAmI (aka Jacob) You are able to modify the script, if you don't change author. #config.lua ]]-- --[[ change if you wish availible values: - MySQL - SQL ]]-- connectionType = "SQL"; -- ONLY if you chose MySQL MySQLdbhost = "localhost"; -- host MySQLdbname = "test"; -- database name MySQLdbuser = "root"; -- database user MySQLdbpassword = ""; -- user's password -- end -- ONLY if you chose SQL SQLfilename = "example.db"; -- choose name for databse file --[[ WARNING! without ".db" at the and it won't work. REMEMBER! you have to add following line to meta.xml: <file src="YOUR_NAME.db" /> AND create this file! otherwise, SQL won't work. REMEMBER! end ]]-- -- ACL groups allowed to create private car aclGroups = { "Admin", "Moderator", }; -- end -- ACL groups allowed to see car info aclGroupsInfo = { "Everyone", }; -- end -- command name for car's information carInfoCommandName = "carinfo"; -- end -- time after the vehicle will be fixed after explosion IN SECONDS respawnTime = 10; -- end Download https://community.multitheftauto.com/index.php?p= ... s&id=11268 Skrypt jest po angielsku. Błędy proszę zgłaszać. Powodzenia. Edited April 2, 2015 by Guest Link to comment
aski Posted April 2, 2014 Share Posted April 2, 2014 wszystko działa jak powinno a da się zrobić aby podnośnik go odmrażał podczas holu? Link to comment
WhoAmI Posted April 2, 2014 Author Share Posted April 2, 2014 Zrób swój skrypt, może działać w ten sposób np. - PD wchodzi do auta, wpisuje komendę - samochód zostaje odmrożony funckją setElementFrozen - PD zawozi na baze, wpisuje ponownie komende freezując samochód setElementFrozen Pozdrawiam. Link to comment
aski Posted April 2, 2014 Share Posted April 2, 2014 Tak to ma wyglądać?: function toggleFreezeStatus ( thePlayer ) if isObjectInACLGroup("user." .. accountname, aclGetGroup("Pd")) then if getPedOccupiedVehicle ( thePlayer ) then local playerVehicle = getPlayerOccupiedVehicle ( thePlayer ) local currentFreezeStatus = isElementFrozen ( playerVehicle ) local newFreezeStatus = not currentFreezeStatus setElementFrozen ( playerVehicle, newFreezeStatus ) end end end local connectedPlayers = getElementsByType ( "player" ) for i, aPlayer in ipairs(connectedPlayers) do addCommandHandler ( "reczny", toggleFreezeStatus ) end Aha i szkoda ze po restarcie skryptu auta znikaja Link to comment
WhoAmI Posted April 2, 2014 Author Share Posted April 2, 2014 Nie mają prawa znikać, bo u mnie działało. Masz plik w folderze zasobu 'vehicles.db'? Link to comment
aski Posted April 2, 2014 Share Posted April 2, 2014 Tak mam ten plik wszystko dziala jak powinno lecz lko po restart znikaja pokazac mam ten plik? A co z pierwszym pytaniem? Link to comment
WhoAmI Posted April 2, 2014 Author Share Posted April 2, 2014 Podaj mi co jest w debugu i czy przerabiałeś jakoś skrypt? function toggleFreezeStatus ( thePlayer ) local account = getPlayerAccount ( thePlayer ) if ( not isGuestAccount ( account ) ) then local accountName = getAccountName ( account ) if ( isObjectInACLGroup ( "user." .. accountName, aclGetGroup ( "Pd" ) ) then if ( isPedInVehicle ( thePlayer ) ) then local vehicle = getPedOccupiedVehicle ( thePlayer ) setElementFrozen ( vehicle, not isElementFrozen ( vehicle ) ) end end end end addCommandHandler ( "reczny", toggleFreezeStatus ) Link to comment
aski Posted April 2, 2014 Share Posted April 2, 2014 Tak zmienilem komendy te dwie i spolszczylem outputChatBox a buga nie dam bo nie jestem w grze Link to comment
WhoAmI Posted April 2, 2014 Author Share Posted April 2, 2014 To daj mi zawartość server.lua. Link to comment
aski Posted April 2, 2014 Share Posted April 2, 2014 aclGroup = "Urzad" -- who can create car aclGroupInfo = "Everyone" -- who can see info about car -- dont touch this local last_id = 0 -- dont touch this addEventHandler ( "onResourceStart", resourceRoot, function ( ) connection = dbConnect ( "sqlite", "vehicles.db" ) if ( not connection ) then outputDebugString ( "PRIVATE CARS: Failed to connect to database.", 3, 255, 0, 0 ) return end local creatingTable = dbExec ( connection, "CREATE TABLE IF NOT EXISTS `vehicles` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `vehicle_model` INTEGER, `x` INTEGER, `y` INTEGER, `z` INTEGER, `rotX` INTEGER, `rotY` INTEGER, `rotZ` INTEGER, `r` INTEGER, `g` INTEGER, `b` INTEGER, `acc_name` TEXT )" ) if ( not creatingTable ) then outputDebugString ( "PRIVATE CARS: Failed to create table.", 3, 255, 0, 0 ) return end local query = dbQuery ( connection, "SELECT * FROM `vehicles`" ) local result = dbPoll ( query, -1 ) for _, data in pairs ( result ) do local vehicle = createVehicle ( data [ "vehicle_model" ], data [ "x" ], data [ "y" ], data [ "z" ], data [ "rotX" ], data [ "rotY" ], data [ "rotZ" ] ) if ( isElement ( vehicle ) and getElementType ( vehicle ) == "vehicle" ) then if ( tonumber ( data [ "id" ] ) > last_id ) then last_id = data [ "id" ] end setVehicleColor ( vehicle, data [ "r" ], data [ "g" ], data [ "b" ], data [ "r" ], data [ "g" ], data [ "b" ], data [ "r" ], data [ "g" ], data [ "b" ], data [ "r" ], data [ "g" ], data [ "b" ] ) setElementData ( vehicle, "private", true ) setElementData ( vehicle, "accName", data [ "acc_name" ] ) setElementData ( vehicle, "id", data [ "id" ] ) setElementFrozen ( vehicle, true ) end end end ) -- SAVING addEventHandler ( "onResourceStop", resourceRoot, function ( ) for _, vehicle in ipairs ( getElementsByType ( "vehicle" ) ) do if ( isCarPrivate ( vehicle ) ) then local x, y, z = getElementPosition ( vehicle ) local rX, rY, rZ = getElementRotation ( vehicle ) local r, g, b = getVehicleColor ( vehicle, true ) local id = getElementData ( vehicle, "id" ) local updating = dbExec ( connection, "UPDATE `vehicles` SET `x`=?, `y`=?, `z`=?, `rotX`=?, `rotY`=?, `rotZ`=?, `r`=?, `g`=?, `b`=? WHERE id=?", x, y,z , rX, rY, rZ, r, g, b, id ) end end end ) -- USEFUL FUNCTIONS function getPlayerFromNamePart(name) local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end -- USEFUL FUNCTIONS function createPrivateCar ( model, player, x, y, z, rX, rY, rZ, r, g, b ) assert ( type ( model ) == "number", "Bad argument #1. Expected number, got " .. type ( model ) .. " @ createPrivateCar" ) assert ( type ( player ) == "userdata", "Bad argument #2. Expected element, got " .. type ( player ) .. " @ createPrivateCar" ) assert ( type ( r ) == "number", "Bad argument #3. Expected number, got " .. type ( r ) .. " @ createPrivateCar" ) assert ( type ( g ) == "number", "Bad argument #4. Expected number, got " .. type ( g ) .. " @ createPrivateCar" ) assert ( type ( b ) == "number", "Bad argument #5. Expected number, got " .. type ( b ) .. " @ createPrivateCar" ) assert ( type ( x ) == "number", "Bad argument #6. Expected number, got " .. type ( x ) .. " @ createPrivateCar" ) assert ( type ( y ) == "number", "Bad argument #7. Expected number, got " .. type ( y ) .. " @ createPrivateCar" ) assert ( type ( z ) == "number", "Bad argument #8. Expected number, got " .. type ( z ) .. " @ createPrivateCar" ) assert ( type ( rX ) == "number", "Bad argument #9. Expected number, got " .. type ( rX ) .. " @ createPrivateCar" ) assert ( type ( rY ) == "number", "Bad argument #10. Expected number, got " .. type ( rY ) .. " @ createPrivateCar" ) assert ( type ( rZ ) == "number", "Bad argument #11. Expected number, got " .. type ( rZ ) .. " @ createPrivateCar" ) if ( getElementType ( player ) ~= "player" ) then return false end if ( r < 0 or r > 255 ) then r = 255 end if ( g < 0 or g > 255 ) then g = 255 end if ( b < 0 or b > 255 ) then b = 255 end local account = getPlayerAccount ( player ) if ( not isGuestAccount ( account ) ) then local accName = getAccountName ( account ) local vehicle = createVehicle ( model, x, y, z, rX, rY, rZ ) setElementData ( vehicle, "id", tonumber ( last_id ) + 1 ) last_id = last_id + 1 setElementData ( vehicle, "private", true ) setElementData ( vehicle, "accName", accName ) if ( vehicle ) then setVehicleColor ( vehicle, r, g, b, r, g, b, r, g, b, r, g, b ) local inserting = dbExec ( connection, "INSERT INTO `vehicles` ( `vehicle_model`, `x`, `y`, `z`, `rotX`, `rotY`, `rotZ`, `r`, `g`, `b`, `acc_name` ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )", model, x, y, z, rX, rY, rZ, r, g, b, accName ) if ( inserting ) then return vehicle else destroyElement ( vehicle ) return false end else return false end else return false end end function isCarPrivate ( car ) if ( isElement ( car ) and getElementType ( car ) == "vehicle" ) then local data = getElementData ( car, "private" ) if ( data ) then return true else return false end else return false end end function getPrivateCarOwner ( car ) if ( isElement ( car ) and getElementType ( car ) == "vehicle" ) then local data = getElementData ( car, "accName" ) if ( data ) then return tostring ( data ) else return false end else return false end end addCommandHandler ( "daj", function ( player, _, model, r, g, b, playerName ) if ( isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( player ) ), aclGetGroup ( aclGroup ) ) ) then if ( tonumber ( model ) and tonumber ( r ) and tonumber ( g ) and tonumber ( b ) and tostring ( playerName ) ) then local playerElement = getPlayerFromNamePart ( playerName ) if ( isElement ( playerElement ) and getElementType ( player ) == "player" ) then local x, y, z = getElementPosition ( player ) local rX, rY, rZ = getElementRotation ( player ) setElementPosition ( player, x, y, z + 1 ) local car = createPrivateCar ( tonumber ( model ), playerElement, tonumber ( x ), tonumber ( y ), tonumber ( z ), tonumber ( rX ), tonumber ( rY ), tonumber ( rZ ), tonumber ( r ), tonumber ( g ), tonumber ( b ) ) if ( isElement ( car ) and getElementType ( car ) == "vehicle" ) then outputChatBox ( "Auto " .. model .. " Stworzone dla " .. getPlayerName ( playerElement ) .. ".", root, 255, 255, 255, true ) end else outputChatBox ( "Nie mozna znalezc gracza.", player, 255, 255, 255, true ) end end else outputChatBox ( "Nie posiadasz uprawnien do tego!", player, 255, 0, 0, true ) end end ) addCommandHandler ( "info", function ( player ) if ( isObjectInACLGroup ( "user." .. getAccountName ( getPlayerAccount ( player ) ), aclGetGroup ( aclGroupInfo ) ) ) then local veh = getPedOccupiedVehicle ( player ) if ( veh ) then if ( isCarPrivate ( veh ) ) then outputChatBox ( "Model tego pojazdu to:".. getElementModel ( veh ) .. ", wlascicielem jest: " .. getPrivateCarOwner ( veh ) .. ".", player, 255, 255, 255, true ) else outputChatBox ( "To nie jest prywatne auto.", player, 255, 255, 255, true ) end end else outputChatBox ( "Nie masz uprawnień do tego!", player, 255, 0, 0, true ) end end ) addEventHandler ( "onVehicleStartEnter", root, function ( player, seat ) if ( isCarPrivate ( source ) ) then if ( seat == 0 ) then local account = getPlayerAccount ( player ) if ( not isGuestAccount ( account ) ) then local accName = getAccountName ( account ) local carAccountName = getPrivateCarOwner ( source ) if ( accName ~= carAccountName ) then cancelEvent ( ) outputChatBox ( "Nie posiadasz Klucza do tego auta!", player, 255, 0, 0, true ) else setElementFrozen ( source, false ) end else cancelEvent ( ) outputChatBox ( "Nie posiadasz Klucza do tego auta!", player, 255, 0, 0, true ) end end end end ) addEventHandler ( "onVehicleExit", root, function ( player, seat ) if ( isCarPrivate ( source ) ) then if ( seat == 0 ) then local account = getPlayerAccount ( player ) if ( not isGuestAccount ( account ) ) then local accName = getAccountName ( account ) local carAccountName = getPrivateCarOwner ( source ) if ( accName == carAccountName ) then setElementFrozen ( source, true ) end end end end end ) Link to comment
WhoAmI Posted April 2, 2014 Author Share Posted April 2, 2014 Potrzebuje błędów wyświetlanych w debugu. Link to comment
aski Posted April 2, 2014 Share Posted April 2, 2014 Bardzo chetnie ale nie w tym momencie korzystam teraz z tableta więc raczej szanse są zerowe na tą chwilę. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now