• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Pedido] Pedido para un vip system

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1[Pedido] Pedido para un vip system Empty [Pedido] Pedido para un vip system Vie Feb 06, 2015 8:34 pm

    Invitado

    Anonymous
    Invitado
    Saludos, Quien me puede pasar los scrips para un sistema vip  para gesior 2012 tfs 1.0, es para el global v2 10.53. De antemano Gracias..!  

    2[Pedido] Pedido para un vip system Empty Re: [Pedido] Pedido para un vip system Sáb Feb 07, 2015 1:03 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    aqui lo tienes no hay un test probalo es de mock


    functions que pueden usar para otros scrips:

    Código:
        -- doPlayerAddVip(cid,secs) - adds +secs seconds of viptime
        -- addVipByAccount(acc,secs) - same as above, uses account id instead

        -- setVipTable() - sends installation query to database
        -- setPlayerVip(cid,secs) - sets viptime for certain time
        -- setVipByAccount(acc,secs) - same as above, uses accont id instead

        -- getPlayerVip(cid) - returns expiration date of viptime in seconds since January 1st, 1970
        -- getVipByAcc(acc) - same as above, uses account id instead
        -- getPlayerVipTime(cid) - returns player viptime in seconds left, if vip expired returns 0
        -- getAccountVipTime(acc) - same as above, uses account id instead

        -- hasVip(cid) - checks if player has vip, returns true or false
        -- accountHasVip(acc) - same as above, uses account id instead

        -- returnVipString(cid) - returns vip time expiration date in string
        -- returnVipCountdown(number) - example: returnVipCountdown(getPlayerVipTime(cid)) returns vip time left as "x days, x hours, x minutes and x seconds left", values equeal to 0 are skipped

    instalacion:

    bueno se va a la carpeta data/global.lua y abren el archivo y al final añaden estas lineas

    Código:
    Vip system lib
    function getPlayerAccount(cid)
    return getAccountNumberByPlayerName(getPlayerName(cid))
    end

    function setVipTable()
    db.query("ALTER TABLE `accounts` ADD `vip_time` INT( 15 ) NOT NULL;")
    end

    function getPlayerVip(cid)
    local resultId = db.storeQuery("SELECT `id`, `vip_time` FROM `accounts` WHERE `id` = '".. getPlayerAccount(cid) .."';")
    if resultId ~= false then
    return result.getDataInt(resultId, "vip_time")
    else
    error('Account not found.')
    end
    end

    function getVipByAcc(acc)
    local a = db.storeQuery("SELECT `vip_time` FROM `accounts` WHERE `id` = '"..acc.."';")
    if a ~= false then
    return result.getDataInt(a, "vip_time")
    else
    error('Account not found.')
    end
    end

    function setPlayerVip(cid,secs) -- seconds
    if isPlayer(cid) then
    db.query("UPDATE `accounts` SET `vip_time` = '"..(os.time()+secs).."' WHERE `id` ='".. getPlayerAccount(cid) .."' LIMIT 1 ;")
    else
    error('Player not found.')
    end
    end

    getVipByAccount = getVipByAcc

    function hasVip(cid)
    if isPlayer(cid) then
    if os.time(day) < getPlayerVip(cid) then
    return true
    else
    return false
    end
    else
    error('Player not found.')
    end
    end

    function accountHasVip(acc)
    if os.time() < getVipByAccount(acc) then
    return true
    else
    return false
    end
    end

    function setVipByAccount(acc,secs) -- seconds
    local a = getVipByAcc(acc)
    if a ~= false then
    if tonumber(secs) ~= nil then
    db.query("UPDATE `accounts` SET `vip_time` = '"..(os.time()+secs).."' WHERE `id` ='"..acc.."' LIMIT 1 ;")
    return true
    else
    error('Time must be defined as number.')
    end
    else
    error('Account not found.')
    end
    return false
    end

    function getPlayerVipTime(cid)
    if getPlayerVip(cid)-os.time() > 0 then
    return getPlayerVip(cid)-os.time()
    else
    return 0
    end
    end

    function getAccountVipTime(acc)
    if getVipByAcc(acc)-os.time() > 0 then
    return getVipByAcc(acc)-os.time()
    else
    return 0
    end
    end

    function addVipByAccount(acc,secs) -- seconds
    local a = getVipByAcc(acc)
    if a ~= false then
    if tonumber(secs) ~= nil then
    db.query("UPDATE `accounts` SET `vip_time` = '"..os.time()+(getAccountVipTime(acc)+secs).."' WHERE `id` ='"..acc.."' LIMIT 1 ;")
    return true
    else
    error('Time must be defined as number.')
    end
    else
    error('Account not found.')
    end
    return false
    end

    function doPlayerAddVip(cid,secs) -- seconds
    local a = getPlayerVip(cid)
    if a ~= false then
    if tonumber(secs) ~= nil then
    return setPlayerVip(cid,(getPlayerVipTime(cid) + secs))
    else
    error('Time must be defined as number.')
    end
    else
    error('Player not found.')
    end
    end

    function returnVipString(cid)
    if isPlayer(cid) == true then
    return os.date("%d %B %Y %X", getPlayerVip(cid))
    else
    error('Player not found.')
    end
    end

    function returnVipCountdown(num)
    local d = (tonumber(string.format("%.0f", os.date("%j",num))) - 1)
    local h = (tonumber(string.format("%.0f", os.date("%H",num))) - 1)
    local m = (tonumber(string.format("%.0f", os.date("%M",num))))
    local s = (tonumber(string.format("%.0f", os.date("%S",num))))
    local tvar, tnames, text = {d, h, m, s}, {"day", "hour", "minute", "second"}, ""
    local nvar, nnames = {}, {}

    for i = 1, #tvar do

    local s = ""
    table.insert(nvar, tvar)
    if tvar > 1 then s = "s" end
    table.insert(nnames, tnames..s)
    if i == 1 then
    if tvar > 0 then text = text..nvar.." "..nnames else text = text end
    else
    if tvar > 0 then
    if text == "" then
    text = nvar.." "..nnames
    else
    if tvar[i+1] ~= nil and tvar[i+1] > 0 then
    text = text..", "..nvar.." "..nnames
    else
    text = text.." and "..nvar.." "..nnames
    end
    end
    else
    text = text
    end
    end
    end
    if text == "" then
    return "no more vip time"
    else
    return text.." of vip time"
    end
    end

    luego se van a:

    data/talkactions/talkactions.xml

    y añaden estas tag

    Código:
    <talkaction words="/vip" script="vip.lua"/>
    <talkaction words="!vip" script="vip.lua"/>


    Ahora se va a:

    data/talkactions/scripts

    copian cualquier archivo y renombran por vip.lua y pegan esto dentro

    Código:

    function onSay(cid, words, param)
    vipsystem_info = {
    name = "Vipsystem for TFS 1.0 by Zbizu(inspired by Mock's creation)",
    author = "Zbizu",
    version = "1.0",
    }

    vip_config = {
    log_opearations = true, -- logs date, IP integer and player name to make sure explainations of its user are truth if something go wrong, ignores players commands
    log_file = "vip_log.txt"
    }

    local daycounter = (math.floor((getVipByAccount(getPlayerAccount(cid))-os.time())/86400, 0) + 1)
    if getPlayerAccess(cid) > 0 then
    adm_info = "\nYou have special access which allows you to manage players viptime.\n\nAvailable params: see, add, reset\nsee - views player's viptime\nadd - adds player's viptime\nreset - makes player's viptime expired immediately\n\nUsage: "..words.." \"param, playername, time, reason"
    else
    adm_info = ""
    end

    if param == "" or getPlayerAccess(cid) == 0 then
    if (daycounter)*(-1) == 1 then s = "" else s = "s" end
    local ret_ = getPlayerVip(cid)
    if ret_ == 0 then
    doPlayerPopupFYI(cid,"You don't have any vip time."..adm_info)
    return false
    else
    if getPlayerVipTime(cid) == 0 then
    if (daycounter)*(-1) == 0 then
    doPlayerPopupFYI(cid, "You don't have any vip time.\nYour vip expired in " .. os.date("%d %B %Y %X ",ret_) .. "(today)."..adm_info)
    return false
    else
    doPlayerPopupFYI(cid, "You don't have any vip time.\nYour vip expired in " .. os.date("%d %B %Y %X ",ret_) .. "(" .. (daycounter)*(-1) .. " day".. s .." ago)."..adm_info)
    return false
    end
    else
    doPlayerPopupFYI(cid, "Your vip status ends in " .. os.date("%d %B %Y %X",ret_) .. ".\nYou have: " .. returnVipCountdown(getPlayerVipTime(cid)) .. " left."..adm_info)
    return false
    end
    end
    else
    if vip_config.log_opearations then
    file = io.open(vip_config.log_file, "a+")
    file:write(os.date("[%x %X]", os.time()).."[IP: "..getPlayerIp(cid).."]["..getPlayerName(cid).."]: ".. words .." \"".. param .."\n")
    file:close()
    end
    local t = string.explode(param, ", ", 4)
    local actions = {["see"] = 1, ["add"] = 2, ["reset"] = 3}
    local gen = {[0] = "She", [1] = "He", [2] = "This user"}
    if actions[t[1]] == nil then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Incorrect action specified.")
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "To see usage manual type "..words.." without params.")
    return false
    else
    local pid = getPlayerByName(t[2])
    reason_text = t[4]
    if reason_text ~= nil then
    if(t[5] ~= nil) then
    for j = 5, #t do
    reason_text = reason_text .. ", " .. t[j]
    end
    end
    else
    reason_text = ""
    end
    if reason_text == "" then vip_comment = "" else vip_comment = "Reason: "..reason_text end

    if pid then
    if actions[t[1]] == 1 then
    if getPlayerVip(pid) == 0 then
    doPlayerPopupFYI(cid, getPlayerName(pid).."'s account never had any vip time.")
    else
    doPlayerPopupFYI(cid, getPlayerName(pid).."'s vip time expiration date:\n" .. os.date("%d %B %Y %X",getPlayerVip(pid)) .. "\n".. gen[getPlayerSex(pid)] .. " has ".. returnVipCountdown(getPlayerVipTime(pid)) .. " left.")
    end
    return false
    elseif actions[t[1]] == 2 then
    if tonumber(t[3]) ~= nil then
    if tonumber(t[3]) == 0 then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPlayerName(pid).."'s vip time wasn't changed.")
    return false
    else
    if tonumber(t[3]) > 0 then
    vip_action = "added to"
    vip_formula = tonumber(t[3])
    else
    vip_action = "removed from"
    vip_formula = tonumber(t[3]*(-1))
    end
    if vip_config.log_opearations then
    file = io.open(vip_config.log_file, "a+")
    file:write(os.date("Player had "..returnVipCountdown(getPlayerVipTime(pid)).." left\n"))
    file:close()
    end
    doPlayerAddVip(pid,tonumber(t[3]))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, returnVipCountdown(vip_formula).." "..vip_action.." "..getPlayerName(pid).."'s account.")
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, gen[getPlayerSex(pid)] .. " has ".. returnVipCountdown(getPlayerVipTime(pid)) .. " now.")
    if vip_comment ~= "" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, vip_comment) end
    doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, returnVipCountdown(vip_formula).." "..vip_action.." your account.")
    doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, "You have ".. returnVipCountdown(getPlayerVipTime(pid)) .. " now.")
    if vip_comment ~= "" then doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, vip_comment) end
    return false
    end
    else
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Time must be a number.")
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "To see usage manual type "..words.." without params.")
    end
    return false
    elseif actions[t[1]] == 3 then
    if vip_config.log_opearations then
    file = io.open(vip_config.log_file, "a+")
    file:write(os.date("Player had "..returnVipCountdown(getPlayerVipTime(pid)).." left\n"))
    file:close()
    end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPlayerName(pid).."'s vip status removed. ".. gen[getPlayerSex(pid)] .. " had "..returnVipCountdown(getPlayerVipTime(pid)).." left.")
    if vip_comment ~= "" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, vip_comment) end
    doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, "Your vip status has been removed.")
    if vip_comment ~= "" then doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, vip_comment) end
    setPlayerVip(pid,0)
    return false
    end
    else
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.")
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "To see usage manual type "..words.." without params.")
    return false
    end
    end
    end
    return true
    end

    y listo


    creditos: Mock's







    [Pedido] Pedido para un vip system YNU5B25
    http://www.tibiaface.com

    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).