PE
pedido

{Resolvido}

Por pedrizito15, 31 de jul. de 2012 em Scripts

por favor adicione as 5 runas
tibia
script
otserv
33
3.8k
otherealityO
16 de agosto de 2012 às 17:14

Se aparecesse algum erro eu saberia arrumar, eu fiz o script.

pedrizito15P
16 de agosto de 2012 às 17:25

@UP

Opa, então vou dar um upzim aqui

notle2012N
16 de agosto de 2012 às 21:14

@OtheReality

acho que pra fica certo tem que adiciona isso assim que usa vai aumenta 150 mais vai perde 160 ai player vai nota diferença sem desloga faz teste ai

 

doCreatureAddHealth(cid,-160)
doPlayerAddMana(cid,-160)

otherealityO
17 de agosto de 2012 às 00:33

@notle2012

não entendi direito o que você disse.. pode tentar explicar de novo?

NewtonnotwenN
17 de agosto de 2012 às 00:39

Ele esta botando 10 de diferença, 150 para 160 para ver se está correto o script.

 

Assim o player irá notar uma diferença.

OneshotO
17 de agosto de 2012 às 09:03

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.

otherealityO
17 de agosto de 2012 às 12:29

interessante e eu posso usar a condition para remover HP/MP depois? pode usar valores negativos?

 

ps: continuo sem entender o que o notle e o newton estão tentando dizer.

OneshotO
17 de agosto de 2012 às 14:48

Não, aí você simplesmente retira a condição do jogador com essa função:

 

doRemoveCondition(cid, CONDITION_ATTRIBUTES)

notle2012N
17 de agosto de 2012 às 16:12

@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 Agosto 17 por notle2012

brun123B
17 de agosto de 2012 às 16:38

Da pra remover skills sim, usando doPlayerAddSkillTry com valor negativo

E assim como o max hp/mp, dá pra modificar os skills com conditions também

OneshotO
17 de agosto de 2012 às 18:11

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.

otherealityO
17 de agosto de 2012 às 19:00

Tava tentando aqui mas o meu ia ficar bem enjambrado xD

perfeito pra eu ver onde posso melhorar! vlw!

pedrizito15P
18 de agosto de 2012 às 09:45

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 ?

OneshotO
18 de agosto de 2012 às 10:09

Adicione a linha:

 

doRemoveItem(item.uid, 1)

 

Antes do último:

 

return true

 

Abraços.

Editado Agosto 18 por Oneshot

pedrizito15P
19 de agosto de 2012 às 09:25

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'