• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    Ayuda con el sistema vip

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

    1Resuelto Ayuda con el sistema vip el Sáb Oct 25, 2014 10:32 am

    yilfren.munoz

    avatar
    Nuevo Miembro
    Nuevo Miembro
    Hola A todos lso que lean esto le quiero pedir el favor de que me diga como poner la vip en mi ot lo que quiero es poner el piso vip para que no pasen chart free y poner la vip doll para que pasen los vip

    Ver perfil de usuario

    2Resuelto Re: Ayuda con el sistema vip el Mar Oct 28, 2014 2:05 am

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    preparate:


    1.-te vas a data/lib copias cualquier archivo y renombras por 049-vipsys.lua y pegas esto dentro:

    Código:
    vip = {
    name = "VIP System";
    author = "Mock";
    version = "1.0.0.0";
    query="ALTER TABLE `accounts` ADD `vip_time` INTEGER";
    query2="ALTER TABLE `accounts` ADD `vip_time` INT(15) NOT NULL"
    }

    function vip.setTable()
    dofile('config.lua')
    if sqlType == "sqlite" then
    db.executeQuery(vip.query)
    else
    db.executeQuery(vip.query2)
    end
    end

    function vip.getVip(cid)
    assert(tonumber(cid),'Parameter must be a number')
    if isPlayer(cid) == FALSE then error('Player don\'t find') end;
    ae = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..getPlayerAccount(cid).."';")
    if ae:getID() == -1 then
    return 0
    end

    local retee = ae:getDataInt("vip_time") or 0
    ae:free()
    return retee
    end

    function vip.getVipByAcc(acc)
    assert(acc,'Account is nil')
    local a = db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';")
    if a:getID() ~= -1 then
    return a:getDataInt("vip_time") or 0, a:free()
    else
    error('Account don\'t find.')
    end
    end

    function vip.setVip(cid,time)
    dofile("config.lua")
    assert(tonumber(cid),'Parameter must be a number')
    assert(tonumber(time),'Parameter must be a number')
    if isPlayer(cid) == FALSE then error('Player don\'t find') end;
    db.executeQuery("UPDATE `"..sqlDatabase.."`.`accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='".. getPlayerAccount(cid).."';")
    end

    function vip.getVipByAccount(acc)
    assert(acc,'Account is nil')
    return db.getResult("SELECT `vip_time` FROM `accounts` WHERE `name` = '"..acc.."';"):getDataInt("vip_time") or 0
    end

    function vip.hasVip(cid)
    assert(tonumber(cid),'Parameter must be a number')
    if isPlayer(cid) == FALSE then return end;
    local t = vip.getVip(cid) or 0
    if os.time(day) < t then
    return TRUE
    else
    return FALSE
    end
    end

    function vip.hasVips(cid)
    assert(tonumber(cid),'Parameter must be a number')
    if isPlayer(cid) == FALSE then return end;
    local t = vip.getVip(cid)
    if os.time(day) < t then
    return TRUE
    else
    return FALSE
    end
    end

    function vip.accountHasVip(acc)
    assert(acc,'Account is nil')
    if os.time() < vip.getVipByAccount(acc) then
    return TRUE
    else
    return FALSE
    end
    end
    function vip.getDays(days)
    return (3600 * 24 * days)
    end

    function vip.addVipByAccount(acc,time)
    assert(acc,'Account is nil')
    assert(tonumber(time),'Parameter must be a number')
    local a = vip.getVipByAcc(acc)
    a = os.difftime(a,os.time())
    if a < 0 then a = 0 end;
    a = a+time
    return vip.setVipByAccount(acc,a)
    end

    function vip.setVipByAccount(acc,time)
    dofile("config.lua")
    assert(acc,'Account is nil')
    assert(tonumber(time),'Parameter must be a number')
    db.executeQuery("UPDATE `accounts` SET `vip_time` = '"..(os.time()+time).."' WHERE `accounts`.`name` ='"..acc.."';")
    return TRUE
    end

    function vip.returnVipString(cid)
    assert(tonumber(cid),'Parameter must be a number')
    if isPlayer(cid) == TRUE then
    return os.date("%d %B %Y %X ", vip.getVip(cid))
    end
    end

    2.- te vas a data/creaturescrpits/scripts copias cualquier archivo y renombras por fimvip.lua y pegas esto dentro:

    Código:
    function onLogin(cid)
    local temple = { x =32369, y = 32246, z = 6}
    if vip.hasVip(cid) == true then
    if getPlayerStorageValue(cid,55555) ~= 1 then
    setPlayerStorageValue(cid,55555,1)
    end
    else
    if getPlayerStorageValue(cid,55555) == 1 then
    doTeleportThing(cid, temple)
    doPlayerSendTextMessage(cid, 22, "Your VIP Time over!")
    db.executeQuery("UPDATE `accounts` SET `vip_time` = 0 WHERE `id` = ".. getAccountIdByName(getPlayerName(cid)) ..";")
    setPlayerPromotionLevel(cid, 1)
    setPlayerStorageValue(cid, 55555, 0)
    end
    end
    return true
    end


    editas local temple = {x=32369, y=32246, z=6}. por son las cordenadas donde sera teleportado el player cuando se termine su vip.


    3-te vas a data/creaturescripts/scripts/login.lua y añades esta linea:

    Código:
    registerCreatureEvent(cid, "FimVip")
    registerCreatureEvent(cid, "VipReceive")

    4.-en data/creaturescripts/creaturescripts.xml adicione está tag:

    Código:
    <event type="login" name="FimVip" event="script" value="fimvip.lua"/>


    5.-en data\movements\scripts copie cualquier archivo y renombre por viptile.lua y pegue esto dentro

    Código:
    function onStepIn(cid, item, position, fromPosition)

    local tileConfig = {
    kickPos = fromPosition, kickEffect = CONST_ME_POFF,
    kickMsg = "You need to be a vip player to access this area.",
    enterMsg = "Welcome to vip area!",
    enterEffect = CONST_ME_MAGIC_RED,
    }

    if isPlayer(cid) == true then
    if vip.hasVip(cid) == FALSE then
    doTeleportThing(cid, tileConfig.kickPos)
    doSendMagicEffect(tileConfig.kickPos, tileConfig.kickEffect)
    doPlayerSendCancel(cid, tileConfig.kickMsg)
    return
    end
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tileConfig.enterMsg)
    doSendMagicEffect(position, tileConfig.enterEffect)
    return true
    end
    end


    6.- En data\movements\movements.xml adicione a tag:


    Código:
    <movevent type="StepIn" actionid="13500" event="script" value="viptile.lua"/>


    en el rme coloque este ActionID : 13500 en el sqm que es el que no le permitira al player pasar si no tiene vip


    7.- en data/talkactions/scripts copie 7 archivos.lua y renombre por:


    add.lua y pegue dentro

    Código:
    function onSay(cid, words, param, channel)
    doPlayerSendCancel(cid, "Added "..param.." Vip Days.")
    return doPlayerAddVipDays(cid, param)
    end

    addvipp.lua y pegue dentro

    Código:
    function onSay(cid, words, param)
    if param == "" then
    return doPlayerPopupFYI(cid,"Está com problemas?\nAprenda os comandos!\n---------------\nAdicionar vip:\n/vip add days player\n/vip add 30 Real\n---------------\nDeletar vip:\n/vip del player\n/vip del Real\n---------------\nVer a vip:\n/vip see player\n/vip see Real\n---------------\n")
    end
    if param:lower():find('add') == 1 and 3 then
    local _,_,id,name = param:lower():find('add (%d+) (.+)')
    name = name or ""
    id = tonumber(id or 1) or 1
    if tonumber(id) == nil or getPlayerByName(name) == false then
    return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Adicionar vip:\n/vip add days player\n/vip add 30 Real\n [Player: "..name.."]")
    end
    if isPlayer(getPlayerByName(name)) == TRUE then
    vip.addVipByAccount(getPlayerAccount(getPlayerByName(name)) ,vip.getDays(id))

    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Foram adicionados "..tonumber(id).." dias de vip a "..name..".")
    doPlayerSendTextMessage(getPlayerByName(name),MESSAGE_INFO_DESCR,"Você recebeu "..tonumber(id).." dias de vip.")
    else
    doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,name.." não esta online ou não existe.")
    end
    elseif param:lower():find('del') == 1 and 3 then
    local _,_,name = param:lower():find('del (.+)')
    if getPlayerByName(name) == false then
    return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Deletar vip:\n/vip del player\n/vip del Real\n")
    end

    vip.setVipByAccount(getPlayerAccount(getPlayerByName(name)),-os.time())
    doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"A vip de "..name.." foi apagada.")
    elseif param:lower():find('see') == 1 and 3 then
    local _,_,name = param:lower():find('see (.+)')
    name = name or ""
    if getPlayerByName(name) == false then
    return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Ver a vip:\n/vip see player\n/vip see Real\n")
    end
    local ret_ = vip.getVip(getPlayerByName(name))
    if ret_ == 0 then
    return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,name.." Não tem vip, e nunca teve.")
    else
    return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "A vip de "..name.." Acaba/terminou em "..os.date("%d %B %Y %X ",ret_))
    end
    end
    return TRUE
    end

    get.lua y pegue dentro

    Código:
    function onSay(cid, words, param, channel)
    doPlayerSendCancel(cid, ""..getPlayerVipDays(cid).." days VIP left.")
    end

    is.lua y pegue dentro

    Código:
    function onSay(cid, words, param, channel)
    if isPlayerVip(cid) == TRUE then
    doPlayerSendCancel(cid, "You are a VIP player.")
    else
    doPlayerSendCancel(cid, "You are not a VIP player.")
    end
    end


    removevip.lua
    y pegue dentro

    Código:
    function onSay(cid, words, param, channel)
    doPlayerSendCancel(cid, "Vip removed.")
    return doPlayerRemoveVip(cid)
    end

    set.lua y pegue dentro

    Código:
    function onSay(cid, words, param, channel)
    doPlayerSendCancel(cid, "VIP Days: "..param..".")
    return setPlayerVipDays(cid, param)
    end

    vipdays.lua y pegue dentro

    Código:
    function onSay(cid, words, param)
    if vip.hasVip(cid) == TRUE then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your vip end in "..os.date("%d %B %Y %X ",vip.getVip(cid)))
    else
    if vip.getVip(cid) ~= 0 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You're not a vip player. Your vip has finished in "..os.date("%d %B %Y %X ", vip.getVip(cid)).." and now is "..os.date("%d %B %Y %X ", os.time()))
    else
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You're not a vip player. You naver has a vip.")
    end
    end
    return TRUE
    end


    8° - En data/talkactions/talkactions.xml adicione está tag:

    Código:
    <talkaction log="yes" words="/vip" access="5" event="script" value="VIP/addvipp.lua" />
    <talkaction words="!vipdays" event="script" value="VIP/vipdays.lua" />

    9° - para terminar ejecute esta tabla en su base de datos:

    si tiene mysql:

    Código:
    ALTER TABLE `accounts` ADD `vip_time` INT(15) NOT NULL

    si tiene sqlite

    Código:
    ALTER TABLE `accounts` ADD `vip_time` INTEGER


    y listo.















    Ver perfil de usuario 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).