Jump to content

Zapisywanie danych.


Recommended Posts

Witam,

viewtopic.php?f=108&t=52786

Chciałem przetestować ten skrypt na swoim serwerze, ale jest pewien problem. Po restarcie skryptu wszystko znika, czy jest możliwość, aby niezabardzo doświadczona osoba (czytaj, ja...) zrobiła system zapisywania przedmiotów ? Raczej pokroju .xml, bo baza danych MysQl mnie przeraża. Chyba, że ona jest tym łatwiejszym rozwiązaniem.

Z góry dziękuje.

Link to comment

Do bazy będzie prościej niż do XML, ale nie zrobisz tego w 20 minut, ani w 2 dni, nie mając doświadczenia w tym.

Potrzebujesz zapisać wartość w element data playera o nazwie "inventory_items", być może do samego zasobu też trzeba będzie dopisać jakąś funkcję (nie przyglądałem mu się czy odczytuje przy każdym pokazaniu GUI te przedmioty z element data czy z jakiegoś "cache" (ale w sumie raczej z element data)). niej na uwadze to, że `inventory_items` to jest tablica.

ps. przyjRZyj się też słownikowi ;)

Link to comment

Męcze się z tym na podstawie innego systemu, ale jak widze jakieś klucze, floaty, primary keye, NULLe , nie wiadomo co i wiem, że tego nie rozumiem... to się odechciewa kombinowania... :|

Tutaj jest jakiś inny kod, próbowałem na jego podstawie, ale wyszła jakaś totalna masakra pewnie... :

database = mysql_connect( "127.0.0.1", "root", "", "mtadb" ) -- connectDB 
if database then 
    outputDebugString ('Connect') 
else 
    outputDebugString ("Trouble") 
end 
  
function saveAccounts () -- Save in the database 
    local serial = getPlayerSerial ( source ) 
    local x,y,z = getElementPosition( source ) 
    local i = getElementInterior( source ) 
    local d = getElementDimension( source ) 
    local skin = getPedSkin ( source ) 
    local money = getPlayerMoney ( source ) 
    local health = getElementHealth ( source ) 
    local armor = getPedArmor ( source ) 
    local wanted = getPlayerWantedLevel ( source ) 
    local inventory = getPlayerItemAmount ( source ) 
    local q =  mysql_query(database,"SELECT * FROM `accounts` WHERE `serial` = '".. serial .."'") 
    if(mysql_num_rows(q) == 0) then 
        mysql_query( database, "INSERT INTO accounts ( `serial` , x, y, z, intterior, demension, skin, money, health, armor, wanted, inventory ) VALUES ( '" .. serial .. "', " .. x .. ", " .. y .. ", " .. z .. "," .. i .. ", " .. d .. "," .. skin .. "," .. money .. ", ".. health ..", ".. armor ..", " .. wanted .. ", "..inventory.." )" ) 
    else 
        res = mysql_query ( database, "UPDATE `accounts` SET x = ".. x ..", y =  ".. y ..", z = ".. z ..", intterior = ".. i ..", demension = ".. d ..", skin = ".. skin ..", money = ".. money ..", health = ".. health ..", armor = ".. armor ..", wanted = ".. wanted ..", inventory = ".. inventory .." WHERE `serial` = '"..serial.."'") 
    end 
end 
  
function loadAccounts () -- Loading from the database 
    local serial = getPlayerSerial ( source ) 
    local result = mysql_query ( database ,"SELECT * FROM `accounts` WHERE `serial` = '"..serial.."'") 
    if result then 
        while true do 
            local row = mysql_fetch_assoc(result) 
            if not row then break end 
            setElementPosition ( source, row.x, row.y, row.z) 
            setElementInterior ( source, row.intterior ) 
            setElementDimension ( source, row.demension ) 
            setPedSkin ( source, row.skin ) 
            setPlayerMoney ( source, row.money ) 
            setElementHealth ( source, row.health) 
            setPedArmor ( source, row.armor ) 
            setPlayerWantedLevel ( source, row.wanted ) 
            getPlayerItemAmount ( source, row.inventory ) 
            -- outputChatBox ('You were warped at latest position',source,255,255,255,true) 
            break 
        end 
    end 
end 
addEventHandler ( "onPlayerJoin", getRootElement(), loadAccounts ) 
addEventHandler ( "onPlayerQuit", getRootElement(), saveAccounts ) 

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...