Ir para conteúdo

Featured Replies

Postado

OTX Server 3.10

 

Gostaria de uma ajuda nesse código, pois quero que o char receba X atributos [%] ao equipar um item qualquer [Não pode ser um item especifico, por exemplo: Equipando qualquer Armor ele ganha X de Shielding.]

 

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, 75)

function onEquip(cid, item, slot)
if getPlayerSlotItem(cid, CONST_SLOT_ARMOR) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Now that you're using this item you'll receive a special bonus...")
doAddCondition(cid, condition)
return true
end
end

function onDeEquip(cid, item, slot)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You're no longer receiving the special bonus..")
doRemoveCondition(cid, CONDITION_ATTRIBUTES)
return true
end

Coloca a Armor, recebe o bonus.

Retira a armor, perde o bonus.

<movevent event="Equip" slot="armor" script="armor.lua"/>
<movevent event="DeEquip" slot="armor" script="armor.lua"/>

Infelizmente não acontece nada, e não apresenta erros no console.

Desde já agradecido.

Editado por Tenshimaru (veja o histórico de edições)

Postado

Vai ter que determinar os ids para funcionar.
Se eles estiverem em ordem, pode usar:
(vai funcionar com itens de id 5400 até 5410)

<movevent event="Equip" fromid="5400" toid="5410" slot="armor" script="armor.lua"/>

Mas se não estiverem na ordem, pode fazer assim:
(vai funcionar com os ids que estiverem ali)

<movevent event="Equip" itemid="123;321;456" slot="armor" script="armor.lua"/>

 

                                                                     Ajudei? De nada \o/                                            Att Rusherzin

Postado
  • Autor
3 horas atrás, Rusherzin disse:

Vai ter que determinar os ids para funcionar.
Se eles estiverem em ordem, pode usar:
(vai funcionar com itens de id 5400 até 5410)


<movevent event="Equip" fromid="5400" toid="5410" slot="armor" script="armor.lua"/>

Mas se não estiverem na ordem, pode fazer assim:
(vai funcionar com os ids que estiverem ali)


<movevent event="Equip" itemid="123;321;456" slot="armor" script="armor.lua"/>

 

 

Mas não tem como eu fazer sem ter que declarar o item, porque não precisa ser um item específico. 

Porque eu realmente preciso que seja qualquer item do tipo "ARMOR" por exemplo. Basta colocar e o bonus é concedido.

 

Não existe uma forma de usar esse código aqui para identificar que existe o item de tipo tal equipado, mas sem deixar obrigatório que seja uma ID especifica.

 

if getPlayerSlotItem(cid, CONST_SLOT_ARMOR).itemid ~= 1234 then
...
  
Ex: 
  if getPlayerSlotItem(cid, CONST_SLOT_ARMOR) AMOR QUALQUER EQUIPADO [TRUE]? - SEGUE SCRIPT 

Ou algo assim, mas que funcione sem ter que especificar o item. 

[Não precisa ser em movements]

 

  local player = Player(cid)
        local item = player:getSlotItem(CONST_SLOT_ARMOR)
		
		function onEquip(cid, item, slot)
        if item ~= nil then
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Está usando" .. item:getId() "Bonus 50% de Shielding ")
  				doAddCondition(cid, CONDITION_PARAM_SKILL_SHIELDPERCENT, 50)
        else
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Sem Armadura")
        end

 

Editado por Tenshimaru
Esclarecimento. (veja o histórico de edições)

  • 1 month later...
Postado

pelo que entendo você vai ter teclarar o item. você pode fazer uma tabela igual cara falou de tanto a tanto ou faz 1 para cada armor puxando do mesmo script.

vc pode add todos os itens que você quer e dentro do script checkar o atributo dele e assim puxar de 1 tabela o que add no player e o que remover

 

tabela = {

atribute shield = addshield+5,  -- so exempo. escrito..

atributo axe =  addaxe+3

}

usaria a tag sem o slot e o slot ficaria dentro do script.

 

<movevent event="Equip" itemid="123;321;456" script="Atributos_itens.lua"/>
<movevent event="DeEquip" itemid="123;321;456" script="Atributos_itens.lua"/>

 

Postado
local condition = Condition(CONDITION_ATTRIBUTES)
condition:setParameter(CONDITION_PARAM_TICKS, -1)
condition:setParameter(CONDITION_PARAM_SKILL_SHIELD, 75)

function onEquip(player, item, slot)
    local item = player:getSlotItem(CONST_SLOT_ARMOR)
    if item then
        player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Now that you\'re using this item you\'ll receive a special bonus...')
        player:addCondition(condition)
        return true
    end
end

function onDeEquip(player, item, slot)
    player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You\'re no longer receiving the special bonus..')
    player:removeCondition(CONDITION_ATTRIBUTES)
    return true
end

 

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo