Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Lérigou ...

 

 

 

 

 

-- SYSTEM --

 

 

MySQL queries

 

-execute em sua database :

ALTER TABLE `accounts`
ADD COLUMN `viplastday` int(10) NOT NULL DEFAULT 0 AFTER `lastday`,
ADD COLUMN `vipdays` int(11) NOT NULL DEFAULT 0 AFTER `lastday`;

login.lua

 

- procure o arquivo em data/creaturescripts/scripts/

- adicione logo após local player = Player(cid) :

player:loadVipData()
player:updateVipTime()

global.lua 

 

- procure o arquivo em data/

- adicione este código em baixo dofile('data/compat.lua')

dofile('data/vip-system.lua')

vip-system.lua

 

- crie este arquivo em data/

- adicione esse código nele :

if not VipData then
VipData = { }
end

function Player.getVipDays(self)
return VipData[self:getId()].days
end

function Player.getLastVipDay(self)
return VipData[self:getId()].lastDay
end

function Player.isVip(self)
return self:getVipDays() > 0
end

function Player.addInfiniteVip(self)
local data = VipData[self:getId()]
data.days = 0xFFFF
data.lastDay = 0

db.query(string.format('UPDATE `accounts` SET `vipdays` = %i, `viplastday` = %i WHERE `id` = %i;', 0xFFFF, 0, self:getAccountId()))
end

function Player.addVipDays(self, amount)
local data = VipData[self:getId()]
local amount = math.min(0xFFFE - data.days, amount)
if amount > 0 then
if data.days == 0 then
local time = os.time()
db.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` + %i, `viplastday` = %i WHERE `id` = %i;', amount, time, self:getAccountId()))
data.lastDay = time
else
db.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` + %i WHERE `id` = %i;', amount, self:getAccountId()))
end
data.days = data.days + amount
end

return true
end

function Player.removeVipDays(self, amount)
local data = VipData[self:getId()]
if data.days == 0xFFFF then
return false
end

local amount = math.min(data.days, amount)
if amount > 0 then
db.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` - %i WHERE `id` = %i;', amount, self:getAccountId()))
data.days = data.days - amount
end

return true
end

function Player.removeVip(self)
local data = VipData[self:getId()]
data.days = 0
data.lastDay = 0

db.query(string.format('UPDATE `accounts` SET `vipdays` = 0, `viplastday` = 0 WHERE `id` = %i;', self:getAccountId()))
end

function Player.loadVipData(self)
local resultId = db.storeQuery(string.format('SELECT `vipdays`, `viplastday` FROM `accounts` WHERE `id` = %i;', self:getAccountId()))
if resultId then
VipData[self:getId()] = {
days = result.getDataInt(resultId, 'vipdays'),
lastDay = result.getDataInt(resultId, 'viplastday')
}

result.free(resultId)
return true
end

VipData[self:getId()] = { days = 0, lastDay = 0 }
return false
end

function Player.updateVipTime(self)
local save = false

local data = VipData[self:getId()]
local days, lastDay = data.days, data.lastDay
if days == 0 or days == 0xFFFF then
if lastDay ~= 0 then
lastDay = 0
save = true
end
elseif lastDay == 0 then
lastDay = os.time()
save = true
else
local time = os.time()
local elapsedDays = math.floor((time - lastDay) / 86400)
if elapsedDays > 0 then
if elapsedDays >= days then
days = 0
lastDay = 0
else
days = days - elapsedDays
lastDay = time - ((time - lastDay) % 86400)
end
save = true
end
end

if save then
db.query(string.format('UPDATE `accounts` SET `vipdays` = %i, `viplastday` = %i WHERE `id` = %i;', days, lastDay, self:getAccountId()))
data.days = days
data.lastDay = lastDay
end
end
 

-- Talkactions (/vip command ) --

 

 

- Modos de usar :

 

- /vip adddays, PlayerName, 5
--> Adiciona 5 dias de vip ao PlayerName.
- /vip removedays, PlayerName, 5
--> Remove 5 dias de vip do PlayerName.
- /vip remove, PlayerName
--> Remove todos dias de vip do PlayerName.
- /vip check, PlayerName
--> Checa quando dias de vip tem o PlayerName .
- /vip addinfinite, PlayerName
--> Add infinite vip time ao PlayerName.

 

 

 

 

 

 

 

talkactions.xml

 

- procure em data/talkactions/

- adicione o seguinte código :

<talkaction words="/vip" separator=" " script="vipcommand.lua" />

vipcommand.lua

 

- crie o arquivo em data/talkactions/scripts

- cole este código dentro :

function onSay(cid, words, param)local player = Player(cid)
if not player:getGroup():getAccess() then
return true
end

local params = param:split(',')
if not params[2] then
player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('Player is required.\nUsage:\n%s <action>, <name>, [, <value>]\n\nAvailable actions:\ncheck, adddays, addinfinite, removedays, remove', words))
return false
end

local targetName = params[2]:trim()
local target = Player(targetName)
if not target then
player:sendCancelMessage(string.format('Player (%s) is not online. Usage: %s <action>, <player> [, <value>]', targetName, words))
return false
end

local action = params[1]:trim():lower()
if action == 'adddays' then
local amount = tonumber(params[3])
if not amount then
player:sendCancelMessage('<value> has to be a numeric value.')
return false
end

target:addVipDays(amount)
player:sendCancelMessage(string.format('%s received %s vip day(s) and now has %s vip day(s).', target:getName(), amount, target:getVipDays()))

elseif action == 'removedays' then
local amount = tonumber(params[3])
if not amount then
player:sendCancelMessage('<value> has to be a numeric value.')
return false
end

target:removeVipDays(amount)
player:sendCancelMessage(string.format('%s lost %s vip day(s) and now has %s vip day(s).', target:getName(), amount, target:getVipDays()))

elseif action == 'addinfinite' then
target:addInfiniteVip()
player:sendCancelMessage(string.format('%s now has infinite vip time.', target:getName()))

elseif action == 'remove' then
target:removeVip()
player:sendCancelMessage(string.format('You removed all vip days from %s.', target:getName()))

elseif action == 'check' then
local days = target:getVipDays()
player:sendCancelMessage(string.format('%s has %s vip day(s).', target:getName(), (days == 0xFFFF and 'infinite' or days)))

else
player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('Action is required.\nUsage:\n%s <action>, <name>, [, <value>]\n\nAvailable actions:\ncheck, adddays, addinfinite, removedays, remove', words))
end
return false
end

 Créditos...

Printer

Summ
Eu

Editado por Smart Maxx (veja o histórico de edições)

btn_donate_LG.gif

 
 
 

 

  • Respostas 6
  • Visualizações 1.8k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • 1 month later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo