LE
npc

Npc life crystal e Flawless Ice Crystal

Por Leofeli, 14 de nov. de 2013 em Scripts

resolvido
11
1k
LeofeliL
14 de novembro de 2013 às 07:03

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+

 

OmegaO
14 de novembro de 2013 às 10:36

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.

gonorreiaswatG
14 de novembro de 2013 às 11:16

Sei que saberá editar depois que o script estiver pronto, mas quando for assim, coloque as ids dos items para facilitar para os scripters.

Se não fizerem pra ti, quando eu voltar eu monto.

 

Boa sorte.

LeofeliL
14 de novembro de 2013 às 11:53

Desculpe Omega e adriano agradeço muito se montar ele para mim ^^

zipter98Z
14 de novembro de 2013 às 12:33

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 Novembro 14 por zipter98

LumusL
14 de novembro de 2013 às 13:38

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.

zipter98Z
14 de novembro de 2013 às 15:04

Tinha feito correndo, ai nem reparei nisso e.e Valeu por corrigir!

Editado Novembro 14 por zipter98

LeofeliL
15 de novembro de 2013 às 11:55

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 ;/

zipter98Z
15 de novembro de 2013 às 12:37

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 Novembro 15 por zipter98

LeofeliL
15 de novembro de 2013 às 19:06

ok

irei evr aki

2 meses depois...
zipter98Z
15 de janeiro de 2014 às 21:44

Tópico movido para a seção de dúvidas e pedidos resolvidos.