Postado Setembro 23, 2015 9 anos Olá olhem o erro que está dando: Obs, não sei nem se com esses arquivos a VIP vai acabar normal ou ficar infinita (quero pra acabar). Tentei colocar um sistema vip com esses arquivos: Em movements.xml <movevent event="StepIn" actionid="29859" script="viptile.lua"/> Em actions.xml <action itemid="16101" script="VIP Tile.lua"/> Em movements>Scripts> viptile.lua function onStepIn(cid, item, position, fromPosition) local config = { msgDenied = "This place is only for vip players,please buy a VIP Scroll.", msgWelcome = "Welcome to VIP PLACE!!." } if getPlayerStorageValue(cid, 445577) - 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 end Em actions>scripts> VIP tile.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local config={ removeOnUse = "yes" -- remover quando usar ("yes" or "no") } local days = 30 -- dias que serão adicionados local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, 445577) local timenow = os.time() if getPlayerStorageValue(cid, 445577) - 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, 445577, time) local quantity = math.floor((getPlayerStorageValue(cid, 445577) - 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
Postado Setembro 23, 2015 9 anos Provavelmente é o valor da storage. Troque o movement por esse: local config = { msgDenied = "This place is only for vip players,please buy a VIP Scroll.", msgWelcome = "Welcome to VIP PLACE!!" } function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerStorageValue(cid, 58787) - os.time() <= 0 then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgDenied) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) end return true end E a action por essa: function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { removeOnUse = "yes", -- remover quando usar ("yes" or "no") storage = 58787 } local days = 30 -- dias que serão adicionados local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, config.storage) local timenow = os.time() if getPlayerStorageValue(cid, config.storage) - 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, config.storage, time) local quantity = math.floor((getPlayerStorageValue(cid, config.storage) - 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 Não testei, se voltar a dar erro, avise. ➥ Regras | Seções OTServ | Seções BOT
Postado Setembro 23, 2015 9 anos Autor Em 23/09/2015 em 12:18, Wakon disse: Provavelmente é o valor da storage. Troque o movement por esse: local config = { msgDenied = "This place is only for vip players,please buy a VIP Scroll.", msgWelcome = "Welcome to VIP PLACE!!" } function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerStorageValue(cid, 58787) - os.time() <= 0 then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgDenied) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) end return true end E a action por essa: function onUse(cid, item, fromPosition, itemEx, toPosition) local config = { removeOnUse = "yes", -- remover quando usar ("yes" or "no") storage = 58787 } local days = 30 -- dias que serão adicionados local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, config.storage) local timenow = os.time() if getPlayerStorageValue(cid, config.storage) - 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, config.storage, time) local quantity = math.floor((getPlayerStorageValue(cid, config.storage) - 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 Não testei, se voltar a dar erro, avise. Edited*: Usei só o seu movements com a action que já tinha, troquei o valor do storage e está tudo OK, até o momento não deu erro nenhum. Olhando esse script, será que quando se passarem os 30 dias, o player vai perder sua VIP ? Se a resposta for sim, eu gostaria de adicionar uma script para teleportar o player até o templo assim que acabasse. Poderia ajudar? Obrigado Editado Setembro 23, 2015 9 anos por vikingmu (veja o histórico de edições)
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.