• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Solved HELP in VIP SYSTEM

felipemko

New Member
Joined
Mar 2, 2010
Messages
173
Reaction score
3
How i can change the script VIP SYSTEM by account only to BY PLAYER?

And how ADD [VIP] in the name
Code:
--[[
    Name: Vip System by Account
    Version: 1.0
    Author: Kydrai
    Forum: http://www.xtibia.com/forum/topic/136543-vip-system-by-account-v10/
   
    [Functions]
        -- Install
        installVip()
       
        -- By Account
        doTeleportPlayersByAccount(acc, topos)
        getVipTimeByAccount(acc)
        setVipTimeByAccount(acc, time)
        getVipDaysByAccount(acc)
        isVipAccount(acc)
        addVipDaysByAccount(acc, days)
        doRemoveVipDaysByAccount(acc, days)
        getVipDateByAccount(acc)
       
        -- By Player
        doTeleportPlayers(cid, topos)
        getVipTime(cid)
        setVipTime(cid, time)
        getVipDays(cid)
        isVip(cid)
        addVipDays(cid, days)
        doRemoveVipDays(cid, days)
        getVipDate(cid)
]]--

-- Install
function installVip()
    if db.executeQuery("ALTER TABLE `accounts` ADD viptime INT(15) NOT NULL DEFAULT 0;") then
        print("[Vip System] Vip System instalado com sucesso!")
        return TRUE
    end
    print("[Vip System] Não foi possível instalar o Vip System!")
    return FALSE
end

-- By Account
function doTeleportPlayersByAccount(acc, topos)
    if db.executeQuery("UPDATE `players` SET `posx` = "..topos.x..", `posy` = "..topos.y..", `posz` = "..topos.z.." WHERE `account_id` = "..acc..";") then
        return TRUE
    end
    return FALSE
end

function getVipTimeByAccount(acc)
    local vip = db.getResult("SELECT `viptime` FROM `accounts` WHERE `id` = "..acc..";")
    if vip:getID() == -1 then
        print("[Vip System] Account not found!")
        return FALSE
    end
    return vip:getDataInt("viptime")
end

function setVipTimeByAccount(acc, time)
    if db.executeQuery("UPDATE `accounts` SET `viptime` = "..time.." WHERE `id` = "..acc..";") then
        return TRUE
    end
    return FALSE
end

function getVipDaysByAccount(acc)
    local vipTime = getVipTimeByAccount(acc)
    local timeNow = os.time()
    local days = math.ceil((vipTime - timeNow)/(24 * 60 * 60))
    return days <= 0 and 0 or days
end

function isVipAccount(acc)
    return getVipDaysByAccount(acc) > 0 and TRUE or FALSE
end

function addVipDaysByAccount(acc, days)
    if days > 0 then
        local daysValue = days * 24 * 60 * 60
        local vipTime = getVipTimeByAccount(acc)
        local timeNow = os.time()
        local time = getVipDaysByAccount(acc) == 0 and (timeNow + daysValue) or (vipTime + daysValue)
        setVipTimeByAccount(acc, time)
        return TRUE
    end
    return FALSE
end

function doRemoveVipDaysByAccount(acc, days)
    if days > 0 then
        local daysValue = days * 24 * 60 * 60
        local vipTime = getVipTimeByAccount(acc)
        local time = vipTime - daysValue
        setVipTimeByAccount(acc, (time <= 0 and 1 or time))
        return TRUE
    end
    return FALSE
end

function getVipDateByAccount(acc)
    if isVipAccount(acc) then
        local vipTime = getVipTimeByAccount(acc)
        return os.date("%d/%m/%y %X", vipTime)
    end
    return FALSE
end

-- By Player
function doTeleportPlayers(cid, topos)
    doTeleportPlayersByAccount(getPlayerAccountId(cid), topos)
end

function getVipTime(cid)
    return getVipTimeByAccount(getPlayerAccountId(cid))
end

function setVipTime(cid, time)
    return setVipTimeByAccount(getPlayerAccountId(cid), time)
end

function getVipDays(cid)
    return getVipDaysByAccount(getPlayerAccountId(cid))
end

function isVip(cid)
    return isVipAccount(getPlayerAccountId(cid))
end

function addVipDays(cid, days)
    return addVipDaysByAccount(getPlayerAccountId(cid), days)
end

function doRemoveVipDays(cid, days)
    return doRemoveVipDaysByAccount(getPlayerAccountId(cid), days)
end

function getVipDate(cid)
    return getVipDateByAccount(getPlayerAccountId(cid))
end
 
Code:
ALTER TABLE `players` ADD viptime INT(15) NOT NULL DEFAULT 0;

and edit all your querys search:
accounts and replace to players


Like this:
Code:
local vip = db.getResult("SELECT `viptime` FROM `accounts` WHERE `id` = "..acc..";")
Code:
if db.executeQuery("UPDATE `accounts` SET `viptime` = "..time.." WHERE `id` = "..acc..";") then

Change accounts for players?

Please anybody
 
Last edited by a moderator:
Instead of accounts, write players. Then in the function (when you use it in a Lua script), use guid instead of account id.
Code:
getPlayerGUID(cid)
 
I changed:

function onSay(cid, words, param, channel)
local t = param:explode(",")
local name, days = t[1], tonumber(t[2])
if words == "/installvip" then
if installVip() then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Vip System instalado com sucesso!")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não foi possível instalar o Vip System!")
end
elseif words == "/addvip" then
if name then
if days then
local acc = getPlayerGUID(cid)
if acc ~= 0 then
addVipDaysByAccount(acc, days)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip ao "..name..", agora ele possui "..getVipDaysByAccount(acc).." dia(s) de vip.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.")
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode adicionar essa quantidade de dia(s) de vip.")
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode adicionar dia(s) de vip a este player.")
end
elseif words == "/removevip" then
if name then
if days then
local acc = getPlayerGUID(cid)
if acc ~= 0 then
doRemoveVipDaysByAccount(acc, days)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você retirou "..days.." dia(s) de vip do "..name..", agora ele possui "..getVipDaysByAccount(acc).." dia(s) de vip.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.")
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode retirar essa quantidade de dia(s) de vip.")
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode retirar dia(s) de vip a este player.")
end
elseif words == "/checkvip" then
if name then
local acc = getPlayerGUID(cid)
if acc ~= 0 then
local duration = getVipDateByAccount(acc)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O "..name.." possui "..getVipDaysByAccount(acc).." dias de vip."..(duration and (" Ela irá durar até "..duration..".") or ""))
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.")
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode visualizar os dias de vip a este player.")
end
end
return TRUE
end

function installVip()
if db.executeQuery("ALTER TABLE `players` ADD viptime INT(15) NOT NULL DEFAULT 0;") then
print("[Vip System] Vip System instalado com sucesso!")
return TRUE
end
print("[Vip System] Não foi possível instalar o Vip System!")
return FALSE
end

-- By Account
function doTeleportPlayersByAccount(acc, topos)
if db.executeQuery("UPDATE `players` SET `posx` = "..topos.x..", `posy` = "..topos.y..", `posz` = "..topos.z.." WHERE `account_id` = "..acc..";") then
return TRUE
end
return FALSE
end

function getVipTimeByAccount(acc)
local vip = db.getResult("SELECT `viptime` FROM `players` WHERE `id` = "..acc..";")
if vip:getID() == -1 then
print("[Vip System] Account not found!")
return FALSE
end
return vip:getDataInt("viptime")
end

function setVipTimeByAccount(acc, time)
if db.executeQuery("UPDATE `players` SET `viptime` = "..time.." WHERE `id` = "..acc..";") then
return TRUE
end
return FALSE
end

function getVipDaysByAccount(acc)
local vipTime = getVipTimeByAccount(acc)
local timeNow = os.time()
local days = math.ceil((vipTime - timeNow)/(24.83 * 60 * 60))
return days <= 0 and 0 or days
end

function isVipAccount(acc)
return getVipDaysByAccount(acc) > 0 and TRUE or FALSE
end

function addVipDaysByAccount(acc, days)
if days > 0 then
local daysValue = days * 24.83 * 60 * 60
local vipTime = getVipTimeByAccount(acc)
local timeNow = os.time()
local time = getVipDaysByAccount(acc) == 0 and (timeNow + daysValue) or (vipTime + daysValue)
setVipTimeByAccount(acc, time)
return TRUE
end
return FALSE
end

function doRemoveVipDaysByAccount(acc, days)
if days > 0 then
local daysValue = days * 24.83 * 60 * 60
local vipTime = getVipTimeByAccount(acc)
local time = vipTime - daysValue
setVipTimeByAccount(acc, (time <= 0 and 1 or time))
return TRUE
end
return FALSE
end

function getVipDateByAccount(acc)
if isVipAccount(acc) then
local vipTime = getVipTimeByAccount(acc)
return os.date("%d/%m/%y %X", vipTime)
end
return FALSE
end

-- By Player
function doTeleportPlayers(cid, topos)
doTeleportPlayersByAccount(getPlayerAccountId(cid), topos)
end

function getVipTime(cid)
return getVipTimeByAccount(getPlayerAccountId(cid))
end

function setVipTime(cid, time)
return setVipTimeByAccount(getPlayerAccountId(cid), time)
end

function getVipDays(cid)
return getVipDaysByAccount(getPlayerAccountId(cid))
end

function isVip(cid)
return isVipAccount(getPlayerAccountId(cid))
end

function addVipDays(cid, days)
return addVipDaysByAccount(getPlayerAccountId(cid), days)
end

function doRemoveVipDays(cid, days)
return doRemoveVipDaysByAccount(getPlayerAccountId(cid), days)
end

function getVipDate(cid)
return getVipDateByAccount(getPlayerAccountId(cid))
end

But get a lot of errors
 
Back
Top