Ir para conteúdo
  • 0

Npc life crystal e Flawless Ice Crystal


Leofeli

Pergunta

Queria saber se vcs poderiam fazer esse npc pra mim

 

nome DO NPC = Flawless Ice Crystal

 

 

quando um player for falar com ele quero que seja asim

 

player : hi

npc : ola [nome do player] voce deseja trocar 10 life crystal por 1 Flawless Ice Crystal

player : yes

 

aew se o player tiver 10 life crystal na bp o npc pega esses 10 life crystal e da 1 Flawless Ice Crystal

 

valendo rep+

 

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Essa seção não deve ser usada para pedidos ou dúvidas, temos uma seção específica para isso. Por favor, preste mais atenção da próxima vez.
Movido para Pedidos e Dúvidas - Scripting.

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz rapidinho aqui, porque jaja estou saindo:

XML do NPC:

<?xml version="1.0" encoding="UTF-8"?>
 
<npc name="Flawless Ice Crystal" script="flawlesscrystal.lua" walkinterval="0" floorchange="0" access="5" level="1" maglevel="1">
<health now="150" max="150"/>
<look type="523" head="114" body="119" legs="114" feet="114" corpse="2212"/>
 
<parameters>
<parameter key="message_greet" value="Ola |PLAYERNAME|, voce deseja trocar 10 life crystal por 1 Flawless Ice Crystal?"/>
</parameters>
</npc>
data/npc/scripts, crie um arquivo com extensão .lua com o nome flawlesscrystal.
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 cfg = {
    life_crystal = xxx,        --ID do life crystal
    life_crystal_qnt = 10,     --Quantidade de life crystal necessários.
    flawless_ice_crystal = xxx,  --ID do flawless ice crystal.
    flawless_ice_crystal_qnt = 1,    --Quantidade de flawless ice crystal que o player irá receber.
}
    if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
        if getPlayerItemCount(cid, cfg.life_crystal) >= cfg.life_crystal_qnt then
            selfSay("Aqui está seu Flawless Ice Crystal!", cid)
            doPlayerRemoveItem(cid, cfg.life_crystal, cfg.life_crystal_qnt) 
            doPlayerAddItem(cid, flawless_ice_crystal, flawless_ice_crystal_qnt)
            talkState[talkUser] = 0
            return true
        else
            selfsay("Você não tem "..life_crystal_qnt.." Life Crystals para trocar...", cid)
            talkState[talkUser] = 0
            return true
        end
    end
    return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Qualquer erro, é só postar.
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Zipter, só corrigindo que sairá um erro aqui:

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 cfg = {
    life_crystal = xxx,        --ID do life crystal
    life_crystal_qnt = 10,     --Quantidade de life crystal necessários.
    flawless_ice_crystal = xxx,  --ID do flawless ice crystal.
    flawless_ice_crystal_qnt = 1,    --Quantidade de flawless ice crystal que o player irá receber.
}
    if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then
        if getPlayerItemCount(cid, cfg.life_crystal) >= cfg.life_crystal_qnt then
            selfSay("Aqui está seu Flawless Ice Crystal!", cid)
            doPlayerRemoveItem(cid, cfg.life_crystal, cfg.life_crystal_qnt) 
            doPlayerAddItem(cid, flawless_ice_crystal, flawless_ice_crystal_qnt)
            talkState[talkUser] = 0
            return true
        else
            selfsay("Você não tem "..life_crystal_qnt.." Life Crystals para trocar...", cid)
            talkState[talkUser] = 0
            return true
        end
    end
    return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

O seu está assim:

 selfsay("Você não tem "..life_crystal_qnt" Life Crystals para trocar...", cid)

Correto:

 selfsay("Você não tem "..life_crystal_qnt.." Life Crystals para trocar...", cid)

Se esqueceu dos ".." ali hehehe' abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

so vou testar aki se der certo rep+


aki não deu não quando vou ponhar o npc ele fica invezivel n da pa ver ele e quando chego in game perto dele da debug no char e nem da de logar o char até eu tirar o npc ;/

Link para o comentário
Compartilhar em outros sites

  • 0

Deve ser problema do XML que mandei. Recomendo que faça um XML próprio, ou mude essa parte:

<look type="523" head="114" body="119" legs="114" feet="114" corpse="2212"/>

Respectivamente, a "roupa" do NPC (look type); as cores da outfit dele (head, body, legs e feet); e a corpse dele. (esse último, como não altera muita coisa, pode deixar 2212.)

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

×
×
  • Criar Novo...