Ir para conteúdo
  • 0

pedrizito15

Pergunta

Tipo do script: Runa

Protocolo (versão do Tibia): 8.6

Servidor utilizado: Styller Yurots

Nível de experiência: ...

Adicionais/Informações:

 

Galera queria um script de Runa assim o player pode usar as runas somente 3 vezes, não importa se ela é diferente...

Se ele tentar um 4 vez apareça a mensagem "você já possui a runa no nível máximo"

Deve estar em PZ zone para usar a runa.

 

 

Runa 1 "Adiciona 150 de HP para o player que a usar..." {{Não precisa por ID nenhum, depois eu pego as id's que eu desejo deixe XXXX}}

Runa 2 "Adiciona 150 de MP para o player que a usar...

Runa 3 "Adiciona 3 De Todos Os Skill {Menos ML} ao player que usar"

Runa 4 "Adiciona 2 De ML ao player que usar"

Runa 5 "Tira todas as runas que o player já utilizou ou seja um Removedor de runas"

 

EX : Se o player usar a runa de HP 2 vezes e a de Skill 1 vez ele não pode usar nenhuma runa a mais porque já possui 3 runas, se ele usar o remover, o remover irá desabilitar as runas ou seja vai tirar os 3 pontos de skill e os 300 de HP adicional do player e vai poder usar novamente 3 runas...

Editado por pedrizito15
Link para o comentário
Compartilhar em outros sites

  • Respostas 32
  • Created
  • Última resposta

Top Posters For This Question

Posts Recomendados

  • 0

Só dando uma ajuda a vocês, porque diabos vocês estão manipulando o HP/MP máximo dos jogadores, quando, na verdade, sem nenhuma complicação, vocês podem adicionar uma condition ao jogador que aumente HP e MP?

 

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTH, 150)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)


local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXMANA, 150)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)

 

doAddCondition(cid, condition)

 


 

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

@OtheReality

mais facil editar o seu script

tava querendo dizer isso

ta 100%

dei uma editada rápida deixei hp

function onUse(cid, item)
local amount_storage = 19901
local hp_storage = 19902
local playerhp_storage = getPlayerStorageValue(cid, hp_storage)
-- config.
local max_runes = 3 -- maximo de runas que o jogador pode usar.
local efeito = 28 -- magic efect ao usar uma runa.
local removedor = 6547 -- id do removedor.
local hp_rune = 6550 -- id da runa de HP.
local hp_amount = 150 -- HP max aumentada.
if (item.itemid == hp_rune) then
if getPlayerStorageValue(cid, amount_storage) < max_runes then
if (item.itemid == hp_rune) then
local hp_max = getCreatureMaxHealth(cid)
setCreatureMaxHealth(cid, hp_max + hp_amount)
doCreatureAddHealth(cid,-hp_amount-10)
doPlayerSetStorageValue(cid, hp_storage, playerhp_storage + 1)
doPlayerSave(cid)
doCreatureAddHealth(cid,hp_amount*2+10)
end
else
doPlayerSendTextMessage(cid, 22, 'Agora você possui '..max_runes..' runas.')
end
end
if ((item.itemid == hp_rune)) and (getPlayerStorageValue(cid, amount_storage) < 1) then
doPlayerSetStorageValue(cid, amount_storage, 1)
doPlayerSetStorageValue(cid, hp_storage, 1)
doPlayerSetStorageValue(cid, ml_storage, 1)
doSendMagicEffect(getPlayerPosition(cid), efeito)
doRemoveItem(item.uid, 1)
elseif ((item.itemid == hp_rune)) and (getPlayerStorageValue(cid, amount_storage) > 0) and (getPlayerStorageValue(cid, amount_storage) < max_runes) then
local runas = getPlayerStorageValue(cid, amount_storage)
doPlayerSetStorageValue(cid, amount_storage, runas + 1)
doSendMagicEffect(getPlayerPosition(cid), efeito)
doRemoveItem(item.uid, 1)
elseif (item.itemid == removedor) then
local hp_max = getCreatureMaxHealth(cid)
setCreatureMaxHealth(cid, hp_max -(playerhp_storage * hp_amount))
doCreatureAddHealth(cid,-max_runes*hp_amount)
doPlayerSetStorageValue(cid, amount_storage, 0)
doPlayerSetStorageValue(cid, hp_storage, 0)
local new_amount = getPlayerStorageValue(cid, amount_storage)
doPlayerSendTextMessage(cid, 22, 'Agora você possui '..new_amount..' runas.')
doSendMagicEffect(getPlayerPosition(cid), efeito)
doRemoveItem(item.uid, 1)
doPlayerSave(cid)
end
return TRUE
end

@Oneshot

interessante essas

condition

não sabia disso ainda rsrs to me esforçando pra aprende mais

não sei onde achar mais Conteúdo sobre linguagem.lua

só acho aquele manual muito ruim e aqui no xtibia que salva pátria rsrs

Editado por notle2012
Link para o comentário
Compartilhar em outros sites

  • 0


local config = {
   [2153] = {
       [CONDITION_ATTRIBUTES] = {
           [CONDITION_PARAM_STAT_MAXHEALTH] = 150,
           [CONDITION_PARAM_SUBID] = 10
       }
   },
   [2154] = {
       [CONDITION_ATTRIBUTES] = {
           [CONDITION_PARAM_STAT_MAXMANA] = 150,
           [CONDITION_PARAM_SUBID] = 20
       }
   },
   [2155] = {
       [CONDITION_ATTRIBUTES] = {
           [CONDITION_PARAM_SKILL_MELEE] = 3,
           [CONDITION_PARAM_SKILL_DISTANCE] = 3,
           [CONDITION_PARAM_SUBID] = 30
       }
   },
   [2156] = {
       [CONDITION_ATTRIBUTES] = {
           [CONDITION_PARAM_STAT_MAGICLEVEL] = 2,
           [CONDITION_PARAM_SUBID] = 40
       }
   }
}

local tmp = {}
for itemid, conditions in pairs(config) do
   tmp[itemid] = {}
   for i = 1, 3 do
       for condition, parameters in pairs(conditions) do
           local obj = createConditionObject(condition)
           setConditionParam(obj, CONDITION_PARAM_TICKS, -1)
           for parameter, value in pairs(parameters) do
               setConditionParam(obj, parameter, value)
           end
           setConditionParam(obj, CONDITION_PARAM_SUBID, config[itemid][condition][CONDITION_PARAM_SUBID] + i)
           setConditionParam(obj, CONDITION_PARAM_BUFF, true)
           tmp[itemid][i] = obj
       end
   end
end

local storage = 30001

function onUse(cid, item, fromPosition, itemEx, toPosition)
   local status = getCreatureStorage(cid, storage)

   if status < 0 then
       doCreatureSetStorage(cid, storage, 0)
   end

   if item.itemid == 2158 then
       doRemoveConditions(cid, false)
       doCreatureSetStorage(cid, storage, 0)
       doSendMagicEffect(fromPosition, CONST_ME_MAGIC_BLUE)
       return true
   end

   if not tmp[item.itemid] then
       doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
       return true
   end

   if status == 3 then
       doPlayerSendCancel(cid, "You cannot use support runes anymore.")
       return true
   end

   doAddCondition(cid, tmp[item.itemid][status + 1])
   doCreatureSetStorage(cid, storage, status + 1)
   return true
end

 

<action itemid="2153-2156;2158" event="script" value="nome_do_arquivo.lua"/>

 

Pronto, sem nenhuma complicação. O código está um pouco "pogado", mas nada que traga problemas. Eu usei os IDs 2153, 2154, 2155, 2156 e 2158 para as "runas", mas você pode mudar livremente.

 

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Hehe, vlw paara todo o pessoal ai, vou passar dando uns rep+ no resto da semana para vcs

 

se alguém quiser tentar http://www.xtibia.com/forum/topic/191758-imbuicao-system-que-venha-um-semi-deus-do-script-tentar/page__pid__1314283#entry1314283

 

não está sumindo a runa como eu faço ?

Link para o comentário
Compartilhar em outros sites

  • 0

Eu coloquei mais agora está dando um erro no distro, depois eu posto porque tenho que sair agora

 

[Error - LuaInterace::loadFile] data/actions/scripts/runes.lua:75: 'end' expected (to close 'function' at line 48) near 'doRemoveItem'

[Warning - Event::loadScript] Cannot load script (data/actions/scripts/runes.lua)

data/actions/scripts/runes.lua:75: 'end' expected (to close 'function' at line 48) near 'doRemoveItem'

Link para o comentário
Compartilhar em outros sites

  • 0

local config = {
   [2153] = {
       [CONDITION_ATTRIBUTES] = {
           [CONDITION_PARAM_STAT_MAXHEALTH] = 150,
           [CONDITION_PARAM_SUBID] = 10
       }
   },
   [2154] = {
       [CONDITION_ATTRIBUTES] = {
           [CONDITION_PARAM_STAT_MAXMANA] = 150,
           [CONDITION_PARAM_SUBID] = 20
       }
   },
   [2155] = {
       [CONDITION_ATTRIBUTES] = {
           [CONDITION_PARAM_SKILL_MELEE] = 3,
           [CONDITION_PARAM_SKILL_DISTANCE] = 3,
           [CONDITION_PARAM_SUBID] = 30
       }
   },
   [2156] = {
       [CONDITION_ATTRIBUTES] = {
           [CONDITION_PARAM_STAT_MAGICLEVEL] = 2,
           [CONDITION_PARAM_SUBID] = 40
       }
   }
}

local tmp = {}
for itemid, conditions in pairs(config) do
   tmp[itemid] = {}
   for i = 1, 3 do
       for condition, parameters in pairs(conditions) do
           local obj = createConditionObject(condition)
           setConditionParam(obj, CONDITION_PARAM_TICKS, -1)
           for parameter, value in pairs(parameters) do
               setConditionParam(obj, parameter, value)
           end
           setConditionParam(obj, CONDITION_PARAM_SUBID, config[itemid][condition][CONDITION_PARAM_SUBID] + i)
           setConditionParam(obj, CONDITION_PARAM_BUFF, true)
           tmp[itemid][i] = obj
       end
   end
end

local storage = 30001

function onUse(cid, item, fromPosition, itemEx, toPosition)
   local status = getCreatureStorage(cid, storage)

   if status < 0 then
       doCreatureSetStorage(cid, storage, 0)
   end

   if item.itemid == 2158 then
       doRemoveConditions(cid, false)
       doCreatureSetStorage(cid, storage, 0)
       doSendMagicEffect(fromPosition, CONST_ME_MAGIC_BLUE)
       return true
   end

   if not tmp[item.itemid] then
       doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
       return true
   end

   if status == 3 then
       doPlayerSendCancel(cid, "You cannot use support runes anymore.")
       return true
   end

   doAddCondition(cid, tmp[item.itemid][status + 1])
   doCreatureSetStorage(cid, storage, status + 1)
   doRemoveItem(item.uid, 1)
   return true
end

Link para o comentário
Compartilhar em outros sites


×
×
  • Criar Novo...