Jump to content

Vip System TFS 1.2 - Sistema com Comandos, pisos, items, portas


Recommended Posts

Bem procurei aqui na comunidade um VIP System mais informativo e nada, além de ter tido problema com os que estão aqui e acabei achando em outro lugar um que funcionou perfeitamente para mim.

 

Usando tfs 1.2 disponibilizado por Bruno Minervino

 

Só estou trazendo o conteúdo e por não conhecer bem não posso dar suporte mas do jeito que está é só 'instalar' e vai funcionar.

 

Creditos.: Summ por fazer e a mim por uma ou duas alterações que estavam fazendo as portas funcionarem de forma estranha..

 

Sistema Vip

 

 

 

1° execute dentro da sua db

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`;

2º na pasta data/creaturescripts/scripts procure pelo arquivo login.lua e adicione na segunda linha, logo após o function onLogin(player) isso

player:loadVipData()
player:updateVipTime()

3° na pasta data\ crie um arquivo chamado vipsystem.lua e adicione o seguinte

local config = {
-- true = player will be teleported to this position if Vip runs out
-- false = player will not be teleported
useTeleport = true,
expirationPosition = Position(95, 114, 7),

-- true = player will received the message you set
-- false = player will not receive a message
useMessage = true,
expirationMessage = 'Your vip days ran out.',
expirationMessageType = MESSAGE_STATUS_WARNING
}

if not VipData then
VipData = { }
end

function Player.onRemoveVip(self)
if config.useTeleport then
self:teleportTo(config.expirationPosition)
config.expirationPosition:sendMagicEffect(CONST_ME_TELEPORT)
end

if config.useMessage then
self:sendTextMessage(config.expirationMessageType, config.expirationMessage)
end
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

if data.days == 0 then
self:onRemoveVip()
end
end

return true
end

function Player.removeVip(self)
local data = VipData[self:getId()]
if data.days == 0 then
return
end

data.days = 0
data.lastDay = 0

self:onRemoveVip()

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
local daysBefore = days
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
if daysBefore > 0 and days == 0 then
self:onRemoveVip()
end

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

4° no arquivo global.lua adicione a seguinte linha

dofile('data/vipsystem.lua') 

 

 

 

Talkaction !checkvip para todos os players

 

 

 

1° vá na pasta data/talkactions/scripts e crie um arquivo chamando checkvip.lua e adicione o seguinte

function onSay(cid, words, param)
local player = Player(cid)

local days = player:getVipDays()
if days == 0 then
player:sendCancelMessage('You do not have any vip days.')
else
player:sendCancelMessage(string.format('You have %s vip day%s left.', (days == 0xFFFF and 'infinite amount of' or days), (days == 1 and '' or 's')))
end
return false
end

2° e em data/talkactions/talkactions.xml adicione

<talkaction words="!checkvip" script="checkvip.lua"/> 

 

 

 

Talkaction /vip para membros da staff

- /vip adddays, NomedoPlayer, 5
--> Adiciona 5 dias vip para o Player.
- /vip removedays, NomedoPlayer, 5
--> Remove 5 dias vip do Player.
- /vip remove, PlayerName
--> Remove todos os dias vip do Player.
- /vip check, NomedoPlayer
--> Checa quantos dias vip o Player tem.
- /vip addinfinite, NomedoPlayer
--> Adiciona tempo vip infinito para o Player. 

 

 

1° na pasta data/talkactions/scripts crie um arquivo chamado vipcommand.lua e adicione o seguinte

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

2° e em data/talkactions/talkactions.xml adicione

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

 

 

 

Tiles VIP

 

 

Os ids agem de forma diferente
Tiles que tiverem id 1500 só serão passáveis caso o player seja vip
Tiles que tiverem id 1501 são tiles tp, o player vip passa em cima e é transportado para a coord setana no começo do arquivo lua. 

1° em data/movements/movements.xml e adicione

<movevent event="StepIn" actionid="1500" script="viptiles.lua"/>
<movevent event="StepIn" actionid="1501" script="viptiles.lua"/> 

2° em data/movements/script crie o arquivo viptiles.lua e adicione o seguinte

local vipPosition = Position(101, 116, 7)

function onStepIn(cid, item, position, fromPosition)
local player = Player(cid)
if not player then
return true
end

if item.actionid == 1500 then
if not player:isVip() then
player:teleportTo(fromPosition)
fromPosition:sendMagicEffect(CONST_ME_POFF)
player:sendCancelMessage('You do not have any vip days.')
end
elseif item.actionid == 1501 then
if player:isVip() then
player:teleportTo(vipPosition)
player:say('!* VIP *!', TALKTYPE_MONSTER_SAY)
vipPosition:sendMagicEffect(CONST_ME_STUN)
else
player:teleportTo(fromPosition)
player:sendCancelMessage('You do not have any vip days.')
fromPosition:sendMagicEffect(CONST_ME_POFF)
end
end
return true
end 

 

 

 

Portas VIP / Actions

 

 

1° em data/actions/actions.xml adicione isso

<action actionid="1502" script="vipdoors.lua"/>
<action actionid="1503" script="vipdoors.lua"/>
<action actionid="1504" script="vipdoors.lua"/>
Os ids são referentes as portas, 
1502 é uma porta norte/sul
1503 é uma porta leste/oeste
1504 é uma porta que da tp para um local definido no começo do arquivo vipdoors.lua 

2° em data/actions/scripts crie um arquivo chamado vipdoors.lua e adicione o seguinte

local vipPosition = Position(1295, 1576, 7)
 
function onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey)
local player = Player(cid)
	if item.actionid == 1502 then
		local position = player:getPosition()
			if player:isVip() then
				if position.y < fromPosition.y then
					fromPosition.y = fromPosition.y + 1
				else
					fromPosition.y = fromPosition.y - 1
				end
			player:teleportTo(fromPosition)
			player:say('!* VIP *!', TALKTYPE_MONSTER_SAY)
			fromPosition:sendMagicEffect(CONST_ME_STUN)
			else
				player:sendCancelMessage('You do not have any vip days.')
			end
 
	elseif item.actionid == 1503 then
		local position = player:getPosition()
			if player:isVip() then
				if position.x < fromPosition.x then
					fromPosition.x = fromPosition.x + 1
				else
					fromPosition.x = fromPosition.x - 1
				end
			player:teleportTo(fromPosition)
			player:say('!* VIP *!', TALKTYPE_MONSTER_SAY)
			fromPosition:sendMagicEffect(CONST_ME_STUN)
			else
				player:sendCancelMessage('You do not have any vip days.')
			end
 
	elseif item.actionid == 1504 then
		if player:isVip() then
			player:teleportTo(vipPosition)
			player:say('!* VIP *!', TALKTYPE_MONSTER_SAY)
			vipPosition:sendMagicEffect(CONST_ME_STUN)
		else
			player:sendCancelMessage('You do not have any vip days.')
		end
	end
return true
end 

 

 

 

Items que adicionam dias VIP

ItemId 10135 adiciona 10 dias vip.
ItemId 10134 adiciona 30 dias vip.
ItemId 10133 adiciona 90 dias vip. 

 

 

1° em data/actions/actions.xml adicione

<action fromid="10133" toid="10135" script="vipitems.lua"/>

2° e em data/actions/scripts crie um arquivo chamado vipitems.lua e adicione o seguinte

local vipItems = {
-- [itemid] = amount of vip days
[10135] = 10,
[10134] = 30,
[10133] = 90
}

function onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey)
local player = Player(cid)
local days = vipItems[item.itemid]
player:addVipDays(days)
player:say('!* YAY VIP! *!', TALKTYPE_MONSTER_SAY)
player:getPosition():sendMagicEffect(CONST_ME_STUN)
player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('You received %s vip days.', days))
Item(item.uid):remove(1)
return true
end 

 

 

 

Imagens

 

Comando !checkvip mas sem ter vip

 

 

oCVB4rD.png

 

 

 

Comando /vip adddays, dracoknight, 5

 

 

pt0hkY4.png

 

 

 

Comando !checkvip após adicionar 5 dias

 

 

ZQrD7fw.png

 

 

 

Comando /vip addinfinite, dracoknight

 

 

qjr7iOT.png

 

 

 

Comando !checkvip após usar infinite

 

 

FiAZjmo.png

 

 

 

Comando /vip remove, dracoknight

 

 

Lpw85er.png

 

 

Edited by DkAngel
Link to comment
Share on other sites

Você sabe como colocá-lo no site de personagens , aparece VIP ?

solo aparece NOT- VIP em letras vermelas

 

EDIT cual es el vip storage?

Edited by adoration
Link to comment
Share on other sites

Para agregar esto tendras que ver con un webmaster porque no sehacer eso. Acerca del la storage, por lo que sé no la usa, es directa en el db/bd. sorry pero no puedo ayudar mucho :/
si estoy equivocado y alguien lo sabes sientase libre para corregirme. agradecido.

Se alguém que por acaso ler e souber informar como fazer será bom se respondesse :)
Edited by DkAngel
Link to comment
Share on other sites

boa noite mano eu tou tentando executar o comando dentro do sqlite e ta dando isso. o que eu Faço?

[22:52:52] Error while executing SQL query on database 'forgottenserver':

 

Desculpe mas não sei como fazer com relação ao sqlite.. eu usp mysql assim como esse sistema tambem usa..

Desculpe mesmo, então cim relação a isso outra pessoa teria que dar uma ajuda..

Link to comment
Share on other sites

  • 6 months later...

se tiver suporte para esse script

ele pegou aqui mais não pega os comandos

 

 

- /vip adddays, NomedoPlayer, 5
--> Adiciona 5 dias vip para o Player.
- /vip removedays, NomedoPlayer, 5
--> Remove 5 dias vip do Player.
- /vip remove, PlayerName
--> Remove todos os dias vip do Player.
- /vip check, NomedoPlayer
--> Checa quantos dias vip o Player tem.
- /vip addinfinite, NomedoPlayer
--> Adiciona tempo vip infinito para o Player.

Link to comment
Share on other sites

  • 1 year later...
Em 19/07/2015 at 23:59, DeCarvalho disse:

Bem procurei aqui na comunidade um VIP System mais informativo e nada, além de ter tido problema com os que estão aqui e acabei achando em outro lugar um que funcionou perfeitamente para mim.

 

Usando tfs 1.2 disponibilizado por Bruno Minervino

 

Só estou trazendo o conteúdo e por não conhecer bem não posso dar suporte mas do jeito que está é só 'instalar' e vai funcionar.

 

Creditos.: Summ por fazer e a mim por uma ou duas alterações que estavam fazendo as portas funcionarem de forma estranha.. 

 

Sistema Vip

 

 

 

 

1° execute dentro da sua db

 

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`;

2º na pasta data/creaturescripts/scripts procure pelo arquivo login.lua e adicione na segunda linha, logo após o function onLogin(player) isso

 

player:loadVipData()player:updateVipTime()

3° na pasta data\ crie um arquivo chamado vipsystem.lua e adicione o seguinte

 

local config = {-- true = player will be teleported to this position if Vip runs out-- false = player will not be teleporteduseTeleport = true,expirationPosition = Position(95, 114, 7),-- true = player will received the message you set-- false = player will not receive a messageuseMessage = true,expirationMessage = 'Your vip days ran out.',expirationMessageType = MESSAGE_STATUS_WARNING}if not VipData thenVipData = { }endfunction Player.onRemoveVip(self)if config.useTeleport thenself:teleportTo(config.expirationPosition)config.expirationPosition:sendMagicEffect(CONST_ME_TELEPORT)endif config.useMessage thenself:sendTextMessage(config.expirationMessageType, config.expirationMessage)endendfunction Player.getVipDays(self)return VipData[self:getId()].daysendfunction Player.getLastVipDay(self)return VipData[self:getId()].lastDayendfunction Player.isVip(self)return self:getVipDays() > 0endfunction Player.addInfiniteVip(self)local data = VipData[self:getId()]data.days = 0xFFFFdata.lastDay = 0db.query(string.format('UPDATE `accounts` SET `vipdays` = %i, `viplastday` = %i WHERE `id` = %i;', 0xFFFF, 0, self:getAccountId()))endfunction Player.addVipDays(self, amount)local data = VipData[self:getId()]local amount = math.min(0xFFFE - data.days, amount)if amount > 0 thenif data.days == 0 thenlocal time = os.time()db.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` + %i, `viplastday` = %i WHERE `id` = %i;', amount, time, self:getAccountId()))data.lastDay = timeelsedb.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` + %i WHERE `id` = %i;', amount, self:getAccountId()))enddata.days = data.days + amountendreturn trueendfunction Player.removeVipDays(self, amount)local data = VipData[self:getId()]if data.days == 0xFFFF thenreturn falseendlocal amount = math.min(data.days, amount)if amount > 0 thendb.query(string.format('UPDATE `accounts` SET `vipdays` = `vipdays` - %i WHERE `id` = %i;', amount, self:getAccountId()))data.days = data.days - amountif data.days == 0 thenself:onRemoveVip()endendreturn trueendfunction Player.removeVip(self)local data = VipData[self:getId()]if data.days == 0 thenreturnenddata.days = 0data.lastDay = 0self:onRemoveVip()db.query(string.format('UPDATE `accounts` SET `vipdays` = 0, `viplastday` = 0 WHERE `id` = %i;', self:getAccountId()))endfunction Player.loadVipData(self)local resultId = db.storeQuery(string.format('SELECT `vipdays`, `viplastday` FROM `accounts` WHERE `id` = %i;', self:getAccountId()))if resultId thenVipData[self:getId()] = {days = result.getDataInt(resultId, 'vipdays'),lastDay = result.getDataInt(resultId, 'viplastday')}result.free(resultId)return trueendVipData[self:getId()] = { days = 0, lastDay = 0 }return falseendfunction Player.updateVipTime(self)local save = falselocal data = VipData[self:getId()]local days, lastDay = data.days, data.lastDaylocal daysBefore = daysif days == 0 or days == 0xFFFF thenif lastDay ~= 0 thenlastDay = 0save = trueendelseif lastDay == 0 thenlastDay = os.time()save = trueelselocal time = os.time()local elapsedDays = math.floor((time - lastDay) / 86400)if elapsedDays > 0 thenif elapsedDays >= days thendays = 0lastDay = 0elsedays = days - elapsedDayslastDay = time - ((time - lastDay) % 86400)endsave = trueendendif save thenif daysBefore > 0 and days == 0 thenself:onRemoveVip()enddb.query(string.format('UPDATE `accounts` SET `vipdays` = %i, `viplastday` = %i WHERE `id` = %i;', days, lastDay, self:getAccountId()))data.days = daysdata.lastDay = lastDayendend

4° no arquivo global.lua adicione a seguinte linha

 

dofile('data/vipsystem.lua') 

 

 

 

Talkaction !checkvip para todos os players

 

 

 

 

1° vá na pasta data/talkactions/scripts e crie um arquivo chamando checkvip.lua e adicione o seguinte

 

function onSay(cid, words, param)local player = Player(cid)local days = player:getVipDays()if days == 0 thenplayer:sendCancelMessage('You do not have any vip days.')elseplayer:sendCancelMessage(string.format('You have %s vip day%s left.', (days == 0xFFFF and 'infinite amount of' or days), (days == 1 and '' or 's')))endreturn falseend

2° e em data/talkactions/talkactions.xml adicione

 

<talkaction words="!checkvip" script="checkvip.lua"/> 

 

 

 

Talkaction /vip para membros da staff

- /vip adddays, NomedoPlayer, 5--> Adiciona 5 dias vip para o Player.- /vip removedays, NomedoPlayer, 5--> Remove 5 dias vip do Player.- /vip remove, PlayerName--> Remove todos os dias vip do Player.- /vip check, NomedoPlayer--> Checa quantos dias vip o Player tem.- /vip addinfinite, NomedoPlayer--> Adiciona tempo vip infinito para o Player. 

 

 

 

1° na pasta data/talkactions/scripts crie um arquivo chamado vipcommand.lua e adicione o seguinte

 

function onSay(cid, words, param)local player = Player(cid)if not player:getGroup():getAccess() thenreturn trueendlocal params = param:split(',')if not params[2] thenplayer: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 falseendlocal targetName = params[2]:trim()local target = Player(targetName)if not target thenplayer:sendCancelMessage(string.format('Player (%s) is not online. Usage: %s <action>, <player> [, <value>]', targetName, words))return falseendlocal action = params[1]:trim():lower()if action == 'adddays' thenlocal amount = tonumber(params[3])if not amount thenplayer:sendCancelMessage('<value> has to be a numeric value.')return falseendtarget: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' thenlocal amount = tonumber(params[3])if not amount thenplayer:sendCancelMessage('<value> has to be a numeric value.')return falseendtarget: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' thentarget:addInfiniteVip()player:sendCancelMessage(string.format('%s now has infinite vip time.', target:getName()))elseif action == 'remove' thentarget:removeVip()player:sendCancelMessage(string.format('You removed all vip days from %s.', target:getName()))elseif action == 'check' thenlocal days = target:getVipDays()player:sendCancelMessage(string.format('%s has %s vip day(s).', target:getName(), (days == 0xFFFF and 'infinite' or days)))elseplayer:sendTextMessage(MESSAGE_INFO_DESCR, string.format('Action is required.\nUsage:\n%s <action>, <name>, [, <value>]\n\nAvailable actions:\ncheck, adddays, addinfinite, removedays, remove', words))endreturn falseend

2° e em data/talkactions/talkactions.xml adicione

 

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

 

 

 

Tiles VIP

 

 

 

Os ids agem de forma diferenteTiles que tiverem id 1500 só serão passáveis caso o player seja vipTiles que tiverem id 1501 são tiles tp, o player vip passa em cima e é transportado para a coord setana no começo do arquivo lua. 

1° em data/movements/movements.xml e adicione

 

<movevent event="StepIn" actionid="1500" script="viptiles.lua"/><movevent event="StepIn" actionid="1501" script="viptiles.lua"/> 

2° em data/movements/script crie o arquivo viptiles.lua e adicione o seguinte

 

local vipPosition = Position(101, 116, 7)function onStepIn(cid, item, position, fromPosition)local player = Player(cid)if not player thenreturn trueendif item.actionid == 1500 thenif not player:isVip() thenplayer:teleportTo(fromPosition)fromPosition:sendMagicEffect(CONST_ME_POFF)player:sendCancelMessage('You do not have any vip days.')endelseif item.actionid == 1501 thenif player:isVip() thenplayer:teleportTo(vipPosition)player:say('!* VIP *!', TALKTYPE_MONSTER_SAY)vipPosition:sendMagicEffect(CONST_ME_STUN)elseplayer:teleportTo(fromPosition)player:sendCancelMessage('You do not have any vip days.')fromPosition:sendMagicEffect(CONST_ME_POFF)endendreturn trueend 

 

 

 

Portas VIP / Actions

 

 

 

1° em data/actions/actions.xml adicione isso

 

<action actionid="1502" script="vipdoors.lua"/><action actionid="1503" script="vipdoors.lua"/><action actionid="1504" script="vipdoors.lua"/>

Os ids são referentes as portas, 1502 é uma porta norte/sul1503 é uma porta leste/oeste1504 é uma porta que da tp para um local definido no começo do arquivo vipdoors.lua 

2° em data/actions/scripts crie um arquivo chamado vipdoors.lua e adicione o seguinte

 

local vipPosition = Position(1295, 1576, 7) function onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey)local player = Player(cid) if item.actionid == 1502 then local position = player:getPosition() if player:isVip() then if position.y < fromPosition.y then fromPosition.y = fromPosition.y + 1 else fromPosition.y = fromPosition.y - 1 end player:teleportTo(fromPosition) player:say('!* VIP *!', TALKTYPE_MONSTER_SAY) fromPosition:sendMagicEffect(CONST_ME_STUN) else player:sendCancelMessage('You do not have any vip days.') end elseif item.actionid == 1503 then local position = player:getPosition() if player:isVip() then if position.x < fromPosition.x then fromPosition.x = fromPosition.x + 1 else fromPosition.x = fromPosition.x - 1 end player:teleportTo(fromPosition) player:say('!* VIP *!', TALKTYPE_MONSTER_SAY) fromPosition:sendMagicEffect(CONST_ME_STUN) else player:sendCancelMessage('You do not have any vip days.') end elseif item.actionid == 1504 then if player:isVip() then player:teleportTo(vipPosition) player:say('!* VIP *!', TALKTYPE_MONSTER_SAY) vipPosition:sendMagicEffect(CONST_ME_STUN) else player:sendCancelMessage('You do not have any vip days.') end endreturn trueend 

 

 

Items que adicionam dias VIP

ItemId 10135 adiciona 10 dias vip.ItemId 10134 adiciona 30 dias vip.ItemId 10133 adiciona 90 dias vip. 

 

 

 

1° em data/actions/actions.xml adicione

 

<action fromid="10133" toid="10135" script="vipitems.lua"/>

2° e em data/actions/scripts crie um arquivo chamado vipitems.lua e adicione o seguinte

 

local vipItems = {-- [itemid] = amount of vip days[10135] = 10,[10134] = 30,[10133] = 90}function onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey)local player = Player(cid)local days = vipItems[item.itemid]player:addVipDays(days)player:say('!* YAY VIP! *!', TALKTYPE_MONSTER_SAY)player:getPosition():sendMagicEffect(CONST_ME_STUN)player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('You received %s vip days.', days))Item(item.uid):remove(1)return trueend 

 

 

 

Imagens

 

Comando !checkvip mas sem ter vip

 

 

 

oCVB4rD.png

 

 

 

Comando /vip adddays, dracoknight, 5

 

 

 

pt0hkY4.png

 

 

 

Comando !checkvip após adicionar 5 dias

 

 

 

ZQrD7fw.png

 

 

 

Comando /vip addinfinite, dracoknight

 

 

 

qjr7iOT.png

 

 

 

Comando !checkvip após usar infinite 

 

 

 

FiAZjmo.png

 

 

 

Comando /vip remove, dracoknight

 

 

 

Lpw85er.png

 

 

 

Estou com um pequeno problema no meu ! Nao sei se por estar errado o meu sistema...

 

Enfim, eu posso efetuar a compra do meu Vip Days no Shop e tambem pelo comando !buyvip, parece na account que eh VIP... 

Mas quando o char quer entrar em uma area VIP, acusa dizendo que voce deve comprar. 

 

Me ajude please... Nao sei como resolver.. Obrigado

Link to comment
Share on other sites

  • 6 months later...

alguem pode me ajuda? olha o tanto de erro que deu..

 


[Warning - Event::checkScript] Can not load script: scripts/vipitems.lua
data/actions/scripts/vipitems.lua:1: syntax error near 'vipItems'
[Warning - MoveEvents::addEvent] Duplicate move event found: 1500

Link to comment
Share on other sites

×
×
  • Create New...