• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Sistema] VIP System (Mock tfs 0.3.7/0.4.0 / Otx)

    Compartir:

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

    [Admin] God Maya

    avatar
    Administrador
    Administrador


    name = "VIP System";
    author = "Mock";
    version = "1.0.0.0"
    ;



    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

    Sotomayor

    avatar
    Miembro
    Miembro
    Ese sistema esta perfecto! yo lo uso amigo, hay manera de aplicar vip por ejemplo con item y te de 3 dias? ya que solo se otorga con comando o por medio de la pagina amigo? saludos

    Ver perfil de usuario

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Ese sistema esta perfecto! yo lo uso amigo, hay manera de aplicar vip por ejemplo con item y te de 3 dias? ya que solo se otorga con comando o por medio de la pagina amigo? saludos

    Código:

    function onUse(cid, item, fromPos, itemEx, toPos)
    vip.addVipByAccount(getPlayerAccount(cid), vip.getDays(1)) -----> 1 dia
    doPlayerSendTextMessage(cid, 20, "Obtuviste 1 dias de VIP!")
    doRemoveItem(item.uid, 1)
    return true
    end


    ahi esta el action ya usted elige el item que quiera que le de la vip



    Ver perfil de usuario http://www.tibiaface.com

    ElizaldeG

    avatar
    Miembro
    Miembro
    Como puedo configurar para que con un items el usuario pueda tener vip 1 dia

    Ver perfil de usuario

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Como puedo configurar para que con un items el usuario pueda tener vip 1 dia

    ahi esta ahi comente

    [Tienes que estar registrado y conectado para ver este vínculo]

    a esa persona



    Ver perfil de usuario http://www.tibiaface.com

    ElizaldeG

    avatar
    Miembro
    Miembro
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Como puedo configurar para que con un items el usuario pueda tener vip 1 dia

    ahi esta ahi comente

    [Tienes que estar registrado y conectado para ver este vínculo]

    a esa persona

    Ya puse el codigo con este items <action itemid="9653" script="vip/vip.lua"/>

    Al momento de usar se habre una ventana de texto y no da vip.

    Ver perfil de usuario

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Como puedo configurar para que con un items el usuario pueda tener vip 1 dia

    ahi esta ahi comente

    [Tienes que estar registrado y conectado para ver este vínculo]

    a esa persona

    Ya puse el codigo con este items <action itemid="9653" script="vip/vip.lua"/>

    Al momento de usar se habre una ventana de texto y no da vip.


    y para que usa ese item que abre un ventanda de texto use otro



    Ver perfil de usuario http://www.tibiaface.com

    ElizaldeG

    avatar
    Miembro
    Miembro
    [quote="[Admin] God Maya"][quote="ElizaldeG"]
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Como puedo configurar para que con un items el usuario pueda tener vip 1 dia

    ahi esta ahi comente

    [Tienes que estar registrado y conectado para ver este vínculo]

    a esa persona

    Ya funciono como puedo hacer que se habrán las puertas. Que tenia con el otro sistema.

    ActionID 5788

    Ver perfil de usuario

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    [quote="ElizaldeG"][quote="[Admin] God Maya"]
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Como puedo configurar para que con un items el usuario pueda tener vip 1 dia

    ahi esta ahi comente

    [Tienes que estar registrado y conectado para ver este vínculo]

    a esa persona

    Ya funciono como puedo hacer que se habrán las puertas. Que tenia con el otro sistema.

    ActionID 5788


    Código:

    function onUse(cid, item, frompos, item2, topos)
    if vip.hasVip(cid) >= 1 then
    pos = getPlayerPosition(cid)
    if pos.x == topos.x then
    if pos.y < topos.y then
    pos.y = topos.y + 1
    else
    pos.y = topos.y - 1
    end
    elseif pos.y == topos.y then
    if pos.x < topos.x then
    pos.x = topos.x + 1
    else
    pos.x = topos.x - 1
    end
    else
    doPlayerSendTextMessage(cid,22,"Fique de frente com a porta.")
    return true
    end
    doTeleportThing(cid,pos)
    doSendMagicEffect(topos,12)
    else
    doPlayerSendTextMessage(cid,22,'Precisar ser VIP Account para passar por aqui.')
    end
    return true
    end


    Código:
    <action actionid="xxxx" event="script" value="vip/vipdoor.lua"/>

    xxxx -----> actionid que no este ocupando y que colocara a la puerta con rme en l parte actionid

    nota: si tienes algun error cambia esta linea
    Código:

    if vip.hasVip(cid) >= 1 then

    a esta otra
    Código:

    if vip.hasVip(cid) == TRUE then


    para un piso en moveevents

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

    135000 actionid que s colocran en el piso con el rme

    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



    Ver perfil de usuario http://www.tibiaface.com

    Sotomayor

    avatar
    Miembro
    Miembro
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Ese sistema esta perfecto! yo lo uso amigo, hay manera de aplicar vip por ejemplo con item y te de 3 dias? ya que solo se otorga con comando o por medio de la pagina amigo? saludos

    Código:

    function onUse(cid, item, fromPos, itemEx, toPos)
    vip.addVipByAccount(getPlayerAccount(cid), vip.getDays(1)) -----> 1 dia
    doPlayerSendTextMessage(cid, 20, "Obtuviste 1 dias de VIP!")
    doRemoveItem(item.uid, 1)
    return true
    end


    ahi esta el action ya usted elige el item que quiera que le de la vip

    Gracias maya! me anduvo perfecto el script del action =)

    Ver perfil de usuario

    Contenido patrocinado


    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).