• 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:

    Ir a la página : Precedente  1, 2

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

    adm real

    adm real
    Nuevo Miembro
    Nuevo Miembro
    e hecho todo tal y como esta ahi y me aparece este error cuando intento entrar al server i no me deja entrar al character

    [Error - CreatureScript Interface]
    data/creaturescripts/scripts/fimvip.lua:onLogin
    Description:
    data/lib/049-vipsys.lua:26: attempt to call method 'getDataInt' (a nil value)
    stack traceback:
           data/lib/049-vipsys.lua:26: in function 'getVip'
           data/lib/049-vipsys.lua:57: in function 'hasVip'
           data/creaturescripts/scripts/fimvip.lua:3: in function <data/creaturescr
    ipts/scripts/fimvip.lua:1>

    me podrian ayudar plis?



    Última edición por adm real el Dom Abr 26, 2020 12:05 am, editado 3 veces

    adm real

    adm real
    Nuevo Miembro
    Nuevo Miembro
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:

    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.


    e hecho todo tal y como esta ahi pero me aparece este error cuando intento entrar al server i no me deja entrar al character

    [Error - CreatureScript Interface]
    data/creaturescripts/scripts/fimvip.lua:onLogin
    Description:
    data/lib/049-vipsys.lua:26: attempt to call method 'getDataInt' (a nil value)
    stack traceback:
           data/lib/049-vipsys.lua:26: in function 'getVip'
           data/lib/049-vipsys.lua:57: in function 'hasVip'
           data/creaturescripts/scripts/fimvip.lua:3: in function <data/creaturescr
    ipts/scripts/fimvip.lua:1>

    me pueden ayudar pliss?

    [Admin] God Maya

    [Admin] God Maya
    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ó:
    [center]

    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.


    e hecho todo tal y como esta ahi pero me aparece este error cuando intento entrar al server i no me deja entrar al character

    [Error - CreatureScript Interface]
    data/creaturescripts/scripts/fimvip.lua:onLogin
    Description:
    data/lib/049-vipsys.lua:26: attempt to call method 'getDataInt' (a nil value)
    stack traceback:
           data/lib/049-vipsys.lua:26: in function 'getVip'
           data/lib/049-vipsys.lua:57: in function 'hasVip'
           data/creaturescripts/scripts/fimvip.lua:3: in function <data/creaturescr
    ipts/scripts/fimvip.lua:1>

    me pueden ayudar pliss?



    ya relalizo este paso

    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



    [Sistema] VIP System (Mock tfs 0.3.7/0.4.0 / Otx) - Página 2 YNU5B25
    https://www.tibiaface.com

    Contenido patrocinado


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

    Ir a la página : Precedente  1, 2

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