Jump to content

(Resolvido)Sistema vip por item, com tile!


Go to solution Solved by gabrieldiaszin,

Recommended Posts

  • Solution
Acesse no seu Otserv/data/actions/scripts/vip(caso n tenha essa pasta cria uma).

La copie um arquivo .lua e cole renome ia ele pra addvip.lua e o que tiver dentro dele deleta e cola isso:


function onUse(cid, item, fromPosition, itemEx, toPosition)

local config={
removeOnUse = "yes" -- remover quando usar ("yes" or "no")
}

local days = 35 -- dias que serão adicionados
local daysvalue = days * 24 * 60 * 60
local storageplayer = getPlayerStorageValue(cid, 13540)
local timenow = os.time()

if getPlayerStorageValue(cid,  13540 ) - os.time() <= 0 then
time = timenow + daysvalue
else
time = storageplayer + daysvalue
end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")
setPlayerStorageValue(cid, 13540, time)
local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))
doSendMagicEffect(getPlayerPosition(cid), math.random(28,30))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")
if (config.removeOnUse == "yes") then
doRemoveItem(item.uid, 1)
end

return TRUE
end

como você disse que quer permanente, é só mudar esta linha e colocar um numero bem alto:

local days = 35 -- dias que serão adicionados

Deixe assim:

local days = 9999 -- dias que serão adicionados

O 13540 é o storage caso seu OT tenha storage diferente desse só mudar.

Pronto feito isso salve.

Agora volte e vai em Actions/Actions.xml adicione lá essa tag:

 

 

 

<action itemid="5785" script="vip/addvip.lua"/>


Esse id 5785 é da minha preferência mais pode mudar...

Bom, feito isso salve e feche.

E vamos pra outra etapa... Vá em Otserv/data/movements/script... Abra o arquivo viptile.lua.
Dentro dele apague tudo e adicione isto:


function onStepIn(cid, item, position, fromPosition)

local config = {
msgDenied = "Você precisa ser vip.",
msgWelcome = "Bem-Vindo a Area Vip!."
}

if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then
doTeleportThing(cid, fromPosition, true)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgDenied)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
return TRUE
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgWelcome)
return TRUE
end

Feito isso salve e feche.

E pronto teste. Abra seu ot teste caso o OT esteja aberto apenas dê /reload actions e /reload movements.



 

Espero que seja util.


Creditos:

 

Vodkart.

Edited by Matheus (see edit history)
Link to post
Share on other sites

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Bolludo
      Olá, gostaria que as house do meu servidor salvasse os itens e apenas nos donos pudesse mover, alguém poderia me ajudar ?
      Up
    • By Breno Alves
      Olá a todos, e estou de volta pra postar alguns conteúdos...
       
      Fui atrás de um online bonus system para tfs 1.3 e não achei e portanto decidi fazer o meu, com a ajuda do @vankk.
      ================================================================================================================
      Testado em TFS 1.3 na versão 8.60.
      ================================================================================================================

      ================================================================================================================
      No seu banco de dados, execute a seguinte query
      ALTER TABLE `players` ADD `online_time` int(11) NOT NULL DEFAULT 0 ================================================================================================================
      O próximo passo é apenas para quem gostaria de que, a cada server save, o número seja zerado!
      ================================================================================================================
      Em globalevents/scripts/startup.lua, após o inicio da função onStartup() adicione o seguinte código
      db.query("UPDATE `players` SET `online_time` = 0") ================================================================================================================
      Agora crie um arquivo chamado onlinebonus.lua em creaturescripts/scripts com isso dentro
      local event = {} local function addOnlineToken(playerId) local player = Player(playerId) if not player then return false end if player:getIp() == 0 then event[player:getId()] = nil return false end player:addOnlineTime(1) player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Você ganhou 1 online token por permanecer online por 1 hora sem deslogar.") player:addItem(12543, 1) event[player:getId()] = addEvent(addOnlineToken, 60 * 60 * 1000, player:getId()) end function onLogin(player) player:registerEvent("OnlineBonus") player:registerEvent("OnlineBonusLogout") if event[player:getId()] == nil then event[player:getId()] = addEvent(addOnlineToken, 60 * 60 * 1000, player:getId()) end return true end function onLogout(player) if event[player:getId()] then event[player:getId()] = nil end return true end -- <event type="login" name="OnlineBonus" script="onlineBonus.lua" /> -- <event type="logout" name="OnlineBonusLogout" script="onlineBonus.lua" /> A tag XML está no fim desse código.
      ================================================================================================================
      Agora, na pasta lib, crie um arquivo chamado onlineTime.lua e coloque isso dentro
      function Player.getOnlineTime(self) local resultId = db.storeQuery(string.format('SELECT online_time FROM `players` WHERE `id` = %d', self:getGuid())) if not resultId then return 0 end local value = result.getNumber(resultId, "online_time") result.free(resultId) return value end function Player.addOnlineTime(self, amount) db.query(string.format("UPDATE `players` SET `online_time` = `online_time` + %d WHERE `id` = %d", amount, self:getGuid())) end Não esqueça de registrar essa lib no lib.lua.
      ================================================================================================================
      Agora, na pasta talkactions/scripts, crie um arquivo chamado onlinebonus.lua com o seguinte código dentro:
      function onSay(player, words, param) local skill = player:getOnlineTime(player) local message = "--------[+]------- [Online Bonus System] -------[+]--------\n\nGanhe um online token a cada hora que você passa online sem deslogar.\n\n---------------------------------------------------\n Total\n Desde o server save você já ganhou " .. skill .. " online tokens." doPlayerPopupFYI(player, message) end -- <talkaction words="!onlinebonus" script="onlineBonus.lua"/> A tag XML está no fim desse código.
      ================================================================================================================
      O usuário irá receber um item a cada hora online sem deslogar.
      O item está no código de creaturescripts com o id 12543, que pode ser alterado para qualquer item que seja agrupável.
      ================================================================================================================
      É isso por hoje.
    • By Absolute Luffy
      Como mudar a sprite de um item ? 
      exemplo : Item X tem a aparencia de X sprite e eu quero mudar ela pra X sprite
    • By Maniaco
      Boa Tarde TibiaKing!!
       
      Estou a um tempo procurando e não achei nada parecido ou igual... T.T
      E estou precisando muito dele para o meu servidor!! 
      Caso alguém poder me ajudar agradeço muito +Rep
       
      Bom o script Funcionaria assim!
      eu tenho um item XXXX < Ex Pergaminho 
      Item quebra após o uso.
       
      eu usaria esse pergaminho em uma criatura que esta dentro desta lista
      Creature List {(Ciclope, 2160) (Wolf, 2160)} Ex > Nome da criatura, id do item que ganha apos selar 
       
      a Creature só pode ser selada com a vida baixa > Ex Vida Red
      Msg de erro  > essa criatura está com a vida muito alta ela não pode ser selada tire mais vida dela
      Creature teria % chance de falhar no selamento e sumir logo em seguida.
       
      Cada criatura daria um item diferente Ex > Jogador Selou um Ciclope e recebeu um Ciclope Pergaminho!
       
      Bom é isso...
       
      Obrigado 
       
       
       
    • By ViitinG
      Gostaria de um script que fizese com que o player não possa passar por cima de um certo tile !!
  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...

Important Information

Confirmação de Termo