Ir para conteúdo
  • 0

Piso ou porta que só entra quem tiver x item


HenrikDiamond

Pergunta

Olá Galera do Xtibia u,U, Hoje estou aki para pedir um script para alguem q conheça do ramo...

 

É o seguinte, tenho um servidor de poketíbia (PDA sem level), que estou querendo fazer uma victory road e a elite dos 4!

Mas pra conseguir ir pra elite dos 4, gostaria que precisasse ter todas as insignias para tentar derrotar a elite dos 4!

Por isso estou precisando desse script, UM QUE SÓ PASSE QUEM TIVER AS 8 INSIGNIAS, ou talvez algum npc que troque as insignias por algum item X, e precise desse item pra teleportar pra elite!

 

isso que pensei, quem poder me ajudar, tá valendo Rep+

 

--Id das Insignias: 12251 até 12259!

 

Grato!

 

@edit

 

ou Pra ficar mais fácil, gostaria de um npc que trocaria as insignias pelo item 2319, e esse item teleportasse até a elite 4!

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

Posts Recomendados

  • 0

movements.xml:

<movevent type="StepIn" actionid="6320" script="storagetile.lua"/>
<movevent type="StepIn" actionid="6321" script="storagetile.lua"/>

 

 

 

storagetile.lua:

Spoiler
function onStepIn(cid, item, position, fromPosition)
local tiles = { -- Action id / Storage, Valor
[6320] = {storage = 2139, valor = 1},
[6321] = {storage = 7654, valor = 2},

}
local t = tiles[item.actionid]

if getPlayerStorageValue(cid, t.storage) < t.valor then
doTeleportThing(cid, fromPosition)
doPlayerPopupFYI(cid, "You can't pass.") return true
end
return true
end
Editado por Dbko
Link para o comentário
Compartilhar em outros sites

  • 0

Testado e funcionado

no movement adicione isso

 

 

function onStepIn(cid, item, position, fromPosition)
 
local itemid = {2382, 12252, 12253, 12254, 12255, 12256, 12257, 12258, 2160} --items que precisa pra pode passa
local pos = {x= 101, y= 117, z= 4} -- posição pra onde sera teleportado
 
if getPlayerItemCount(cid, itemid) >= 1 then
doPlayerSendCancel(cid, "Agora voce pode duela com o elite dos 4.")
doTeleportThing(cid, pos)
else
doPlayerSendCancel(cid, "Voce nao tem as insignias.")
doTeleportThing(cid, fromPosition)
end
return true
end
tag
<movevent type="StepIn" actionid="31234" event="script" value="nome do script.lua"/>

so basta adicionar o actionid no chão pelo rme

 

bye, vo ir joga bola

voltei simplifiquei mais a script

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

  • 0

cara, mesmo assim n deu, eu simplifiquei e coloquei so um item! o strange symbol (2319)

 

olha

 

 

 

function onStepIn(cid, item, position, fromPosition)
 
local itemid = {2319} --items que precisa pra pode passa
local pos = {x= 977, y= 32, z= 7} -- posição pra onde sera teleportado
 
if getPlayerItemCount(cid, itemid) >= 1 then
doPlayerSendCancel(cid, "Welcome To Four Elite!.")
doTeleportThing(cid, pos)
else
doPlayerSendCancel(cid, "Voce precisa das 8 insignias pra passar aqio.")
doTeleportThing(cid, fromPosition)
end
return true
end

 

 

 

Tem algo errado?

Link para o comentário
Compartilhar em outros sites

  • 0

function onStepIn(cid, item, position, fromPosition)


local pos = {x= 160, y= 54, z= 7} -- posição para onde o player será teleportado


local items = {12251,      -- insignias 
              12252,
              12253,
              12254,
              12255,
              12256,
              12257,
              12258,
              12259} 


local check = 0
   
   for i = 1, #items do
      if getPlayerItemCount(cid, items[i]) >= 1 then
         check = check + 1
      end
   end
      if check == #items then
          doTeleportThing(cid, pos)
          doPlayerSendCancel(cid, "Agora voce pode duela com o elite dos 4.")
          for j = 1, #items do
             doPlayerRemoveItem(cid, items[j], 1)
          end
      else
          doTeleportThing(cid, fromPosition)
          doPlayerSendCancel(cid, "Voce nao tem as insignias.")
      end


return true
end

já está com todas as insignias .

testa ae.

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

  • 0

@HenrikDiamond

Como consta nas regras desta área, caso o script não tenha funcionado, relate o erro. Também, diga se você alterou alguma coisa. Só informando que "deu erro", não há como lhe ajudar.

  • Se o script não funcionou, é necessário que você descreva porque não funcionou, o que fez na instalação, o que mudou no script para que o voluntário consiga te ajudar.
Link para o comentário
Compartilhar em outros sites

  • 0

@Zipter98 e @RigBy

 

O script deu certo aki, coloquei apenas um item e consegui passar!

Obrigado aos Dois.

 

Agora se puderem me ajudar com o npc que troca as insignias pelo Strange Symbol (2319 (id)) , Ficaria Grato

 

Mas se quiser pode fechar o tópico, que eu crio outro!

Link para o comentário
Compartilhar em outros sites

  • 0

Sabe fazer o .xml do NPC?

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
 
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local ids = {...}    --Coloque aqui o ID das insígnias. Ex. de como a tabela poderia ficar, se fossem 4 items, sendo eles de ID: 1928, 1929, 1930 e 1931- {1928, 1929, 1930, 1931}
local strange = 2319
local check = 0
    if msgcontains(msg:lower(), "badges") or msgcontains(msg:lower(), "badge") then
        selfSay("Você gostaria de trocar suas 8 insígnias por um "..getItemNameById(strange).."?")
        talkState[talkUser] = 1
        return true
    elseif (msgcontains(msg:lower(), "yes") or msgcontains(msg:lower(), "sim")) and talkState[talkUser] == 1 then
        for i = 1, #ids do
            if getPlayerItemCount(cid, ids[i]) >= 1 then
                check = check + 1
            end
        end
        if check == #ids then
            selfSay("Certo, aqui está seu "..getItemNameById(strange).."!")
            for i = 1, #ids do
                doPlayerRemoveItem(cid, ids[i], 1)
            end
            doPlayerAddItem(cid, strange, 1)
            talkState[talkUser] = 0
            return true
        else
            selfSay("Você não tem 8 insígnias.")
            talkState[talkUser] = 0
            return true
        end
    elseif (msgcontains(msg:lower(), "no") or msgcontains(msg:lower(), "nao")) and talkState[talkUser] == 1 then
        selfSay("Tudo bem, então. Até logo!")
        talkState[talkUser] = 0
        return true
    end
    return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

 

Sabe fazer o .xml do NPC?

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
 
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local ids = {...}    --Coloque aqui o ID das insígnias. Ex. de como a tabela poderia ficar, se fossem 4 items, sendo eles de ID: 1928, 1929, 1930 e 1931- {1928, 1929, 1930, 1931}
local strange = 2319
local check = 0
    if msgcontains(msg:lower(), "badges") or msgcontains(msg:lower(), "badge") then
        selfSay("Você gostaria de trocar suas 8 insígnias por um "..getItemNameById(strange).."?")
        talkState[talkUser] = 1
        return true
    elseif (msgcontains(msg:lower, "yes") or msgcontains(msg:lower(), "sim")) and talkState[talkUser] == 1 then
        for i = 1, #ids do
            if getPlayerItemCount(cid, ids[i]) >= 1 then
                check = check + 1
            end
        end
        if check == #ids then
            selfSay("Certo, aqui está seu "..getItemNameById(strange).."!")
            for i = 1, #ids do
                doPlayerRemoveItem(cid, ids[i], 1)
            end
            doPlayerAddItem(cid, strange, 1)
            talkState[talkUser] = 0
            return true
        else
            selfSay("Você não tem 8 insígnias.")
            talkState[talkUser] = 0
            return true
        end
    elseif (msgcontains(msg:lower(), "no") or msgcontains(msg:lower(), "nao")) and talkState[talkUser] == 1 then
        selfSay("Tudo bem, então. Até logo!")
        talkState[talkUser] = 0
        return true
    end
    return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Zipter esse é o Script do npc em .lua né? que fica na pasta npc/ scripts. coloquei la e editei

Como eu faço agora o .xml do npc?

Link para o comentário
Compartilhar em outros sites

  • 0

Antes de começar a fazê-lo, lhe recomendaria dar uma estudada no arquivo .xml de outros NPCs. Assim, além de você estender seu conhecimento, poderá evitar futuros tópicos pedindo códigos como este (ou seja, fará seus próprios scripts).

Link para o comentário
Compartilhar em outros sites

  • 0

Zipter fiz o npc, mas deu um erro quando eu sumono ele!

 

[26/02/2014 13:09:08] [Error - LuaScriptInterface::loadFile] data/npc/scripts/tradeelite.lua:22: function arguments expected near ','
[26/02/2014 13:09:08] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/tradeelite.lua
[26/02/2014 13:09:08] data/npc/scripts/tradeelite.lua:22: function arguments expected near ','

Link para o comentário
Compartilhar em outros sites

  • 0

Vishh...Denovo

 

[27/02/2014 11:46:11] [Error - LuaScriptInterface::loadFile] data/npc/scripts/tradeelite.lua:15: cannot use '...' outside a vararg function near '...'
[27/02/2014 11:46:11] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/tradeelite.lua
[27/02/2014 11:46:11] data/npc/scripts/tradeelite.lua:15: cannot use '...' outside a vararg function near '...'

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...