View Single Post
Old 21st June 2009, 19:21   #8 (permalink)
Nottoxia
Member
 
Nottoxia's Avatar
 
Join Date: Sep 2008
Location: SWEDEN
Posts: 33
Reputation: Nottoxia is on a distinguished road



Send a message via MSN to Nottoxia
Doh

Quote:
Originally Posted by Epic View Post
Lua Code:
-- ### CONFIG ###
-- message send to player by script "type" (types you can check in "global.lua")
SHOP_MSG_TYPE = 19
-- time (in seconds) between connections to SQL database by shop script
SQL_interval = 30
-- ### END OF CONFIG ###
SQL_COMUNICATION_INTERVAL = SQL_interval * 1000
function onLogin(cid)
        if(InitShopComunication == 0) then
                local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL, {})
                InitShopComunication = eventServ
        end
        registerCreatureEvent(cid, "PlayerDeath")
        return TRUE
end

function sql_communication(parameters)
        dofile("./config.lua")
        env = assert(luasql.mysql())
        con = assert(env:connect(mysqlDatabase, mysqlUser, mysqlPass, mysqlHost, mysqlPort))
        result_plr = assert(con:execute("SELECT * FROM z_ots_comunication WHERE `type` = 'login';"))
        todo = result_plr:fetch({}, "a")
        while todo do
                id = tonumber(todo.id)
                action = tostring(todo.action)
                delete = tonumber(todo.delete_it)
                cid = getPlayerByName(tostring(todo.name))
                if isPlayer(cid) == TRUE then
                        local itemtogive_id = tonumber(todo.param1)
                        local itemtogive_count = tonumber(todo.param2)
                        local container_id = tonumber(todo.param3)
                        local container_count = tonumber(todo.param4)
                        local add_item_type = tostring(todo.param5)
                        local add_item_name = tostring(todo.param6)
                        local received_item = 0
                        local full_weight = 0
                        if add_item_type == 'container' then
                                container_weight = getItemWeight(container_id, 1)
                                if isItemRune(itemtogive_id) == TRUE then
                                        items_weight = container_count * getItemWeight(itemtogive_id, 1)
                                else
                                        items_weight = container_count * getItemWeight(itemtogive_id, itemtogive_count)
                                end
                                full_weight = items_weight + container_weight
                        else
                                full_weight = getItemWeight(itemtogive_id, itemtogive_count)
                                if isItemRune(itemtogive_id) == TRUE then
                                        full_weight = getItemWeight(itemtogive_id, 1)
                                else
                                        full_weight = getItemWeight(itemtogive_id, itemtogive_count)
                                end
                        end
                        local free_cap = getPlayerFreeCap(cid)
                        if full_weight <= free_cap then
                                if add_item_type == 'container' then
                                        local new_container = doCreateItemEx(container_id, 1)
                                        local iter = 0
                                        while iter ~= container_count do
                                                doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
                                                iter = iter + 1
                                        end
                                        received_item = doPlayerAddItemEx(cid, new_container)
                                else
                                        local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
                                        received_item = doPlayerAddItemEx(cid, new_item)
                                end
                                if received_item == RETURNVALUE_NOERROR then
                                        doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
                                        delete = assert(con:execute("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";"))
                                        assert(con:execute("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";"))
                                else
                                        doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.')
                                end
                        else
                                doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.')
                        end
                end
                todo = result_plr:fetch (todo, "a")
        end
        con:close()
        env:close()
        local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL, parameters)
end


function onLogin(cid)
    if(InitHistory == 0) then
        local historyPage = addEvent(historyPage, 60000, {})
        InitHistory = historyPage
    end
    registerCreatureEvent(cid, "PlayerDeath")
    return TRUE
end

function historyPage(parameters)
    local historyPage = addEvent(historyPage, 60000, {})
    if (tonumber(os.date("%d")) ~= getGlobalStorageValue(23456)) then
        setGlobalStorageValue(23456, (tonumber(os.date("%d"))))
        db.executeQuery("UPDATE `players` SET `onlinetime7`=players.onlinetime6, `onlinetime6`=players.onlinetime5, `onlinetime5`=players.onlinetime4, `onlinetime4`=players.onlinetime3, `onlinetime3`=players.onlinetime2, `onlinetime2`=players.onlinetime1, `onlinetime1`=players.onlinetimetoday, `onlinetimetoday`=0;")
        db.executeQuery("UPDATE `players` SET `exphist7`=players.exphist6, `exphist6`=players.exphist5, `exphist5`=players.exphist4, `exphist4`=players.exphist3, `exphist3`=players.exphist2, `exphist2`=players.exphist1, `exphist1`=players.experience-players.exphist_lastexp, `exphist_lastexp`=players.experience;")
    end
    db.executeQuery("UPDATE `players` SET `onlinetimetoday`=players.onlinetimetoday+60, `onlinetimeall`=players.onlinetimeall+60 WHERE `online` = 1;")
end
XD that's mine, you'rs may be kinda similar

It's placed on: data\creaturescripts\scripts\login.lua


WHen i took your script it crash too -.-
__________________
I know a song that goes public on the present, I know a song that goes public on the present, I know a song that goes public on the present,
Shalalalallala...........
Nottoxia is offline   Reply With Quote