Ir para conteúdo

[NPC] Npc Roy , Recarrega Soft Boots


Posts Recomendados

Aew galera vomos lá esté e o NPC Roy ele recarrega a bota para você...

 

Créditos : 60% Meus por retirar uns 5 bugs...

40% para a pessoa que fez...

 

Vomos lá...

 

vá em data/npc/script e crie um arquivo xml. com o nome roy depois apague tudo que estiver nele e coloque isso :

 

<npc name="Roy" script="data/npc/scripts/shoes.lua" autowalk="25" floorchange="0" access="5" level="1" maglevel="1">

<health now="150" max="150"/>

<look type="151" head="114" body="1" legs="1" feet="76" addons="1" corpse="2212"/>

<parameters>

<parameter key="message_greet" value="Hello |PLAYERNAME|. i am specialised in boots" />

</parameters>

</npc>

 

~~ Salve e fexe o arquivo ~~

 

 

 

Parte 2

 

Abra a pasta data/npc/script

Copie um arquivo

abra ele, selecione tudo

e cole isso lá dentro:

 

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

 

-- OTServ event handling functions start

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

-- OTServ event handling functions end

 

function creatureSayCallback(cid, type, msg)

-- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself.

if(npcHandler.focus ~= cid) then

return false

end

 

if msgcontains(msg, 'specialised') or msgcontains(msg, 'boot') then

selfSay('Yes, my fathers was a great one blacksmith, it was a wise person , but when he decided to teach me he dies and i just learn about the lovely boots. So, did you bring me some boots? which one?')

elseif msgcontains(msg, 'worn soft boots') or msgcontains(msg, 'worn soft boot') then

selfSay('Did u like that i fix ur worn soft boots? it will cost 100 platinum coins')

talk_state = 1

 

 

elseif msgcontains(msg, 'yes') and talk_state == 1 then

if getPlayerItemCount(cid,6530) >= 1 and getPlayerItemCount(cid,2152) >= 100 then

if doPlayerTakeItem(cid,6530,1) and doPlayerTakeItem(cid,2152,100) == 0 then

selfSay('Here you are.')

doPlayerAddItem(cid,2358,1)

end

else

selfSay('Sorry, you don\'t have the item.')

end

 

 

elseif msgcontains(msg, 'no') and (talk_state >= 1 and talk_state <= 5) then

selfSay('Ok then.')

talk_state = 0

end

-- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself.

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Depois coloque o nome dele de shoes , e pronto seu npc que regarrega boots está pronto !!!

Link para o comentário
Compartilhar em outros sites

  • 2 months later...

bom cara eu não sei pq mas no meu ot 8.40 eu coloquei ele e tudo falo ( hi) com ele, ele me responde mas depois ele não responde mas nada que eu falo , sera que vc pode me ajuda ?

Link para o comentário
Compartilhar em outros sites

aki também n funcionou (TFS 0.3.4) mas eu peguei o script e mexi nele agora funciona vê aí:

 

 

 

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

local shopModule = ShopModule:new()
npcHandler:addModule(shopModule)

function creatureSayCallback(cid, type, msg)
   if(not npcHandler:isFocused(cid)) then
       return false
   end


if  msgcontains(msg, 'worn soft boots') or msgcontains(msg, 'recharge') or msgcontains(msg, 'soft boots') then
selfSay('Yes, my fathers was a great one blacksmith, it was a wise person , but when he decided to teach me he dies and i just learn about the lovely boots. So, did you bring me some boots? which one?', cid)
talk_state = 1


elseif msgcontains(msg, 'yes') and talk_state == 1 then
if getPlayerItemCount(cid,6530) >=1 and getPlayertemCount(cid,2160) >= 1 then
if doPlayerRemoveMoney(cid,10000) and doPlayerTakeItem(cid,6530,1) then
selfSay('Here you are.', cid)
doPlayerAddItem(cid,2358,1)
end
else
selfSay('Sorry, you don\'t have the item.', cid)
talk_state = 0
end


elseif msgcontains(msg, 'no') and (talk_state >= 1 and talk_state <= 5) then
selfSay('Ok then.', cid)
talk_state = 0
end

--Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself.
   return true
end



npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

usa o mesmo xml do esk~ e a recarga custa 10k

 

nem vo por creditos pq n fui eu quem fiz, só arrumei pra funcionar em 8.4 e 8.42

 

 

edited:

 

trokei o doPlayerTakeItem(cid,2160,1) por doPlayerRemoveMoney(cid,10000)

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

erros dos dois scripts. esk~ e apocarai.

 

esk~

getPlayerItemCount(cid,2152) >= 1

apocarai

getPlayerItemCount(cid,2160) >= 1

 

se voces poem pra ele verificar id de moedas e a pessoa nao ter o id de tal moedas vai dar erro.

 

2152 = platinum coin se nao tiver platinum o npc nao fala (por erro no script)

2160 = se nao tiver da o mesmo erro do script do "esk~" (suspeito).

Link para o comentário
Compartilhar em outros sites

Não da erro proprieamente dito. ele fala "Sorry, you don't have the item" e o "suspeito" que vc colocou depois do meu nome ali é porque ta suspeito de ter copiado o script?? se for, eu copiei sim, porém alterei as falas e os talk_state porque em ot 8.4 e 8.42 vc falava hi ele falava "i've been specting you" e n falava mais nada. e eu coloquei embaixo da minha resposta que eu n ia colocar creditos pq n fui eu quem fiz, só alterei.

 

 

vlws

Link para o comentário
Compartilhar em outros sites

o erro esta aqui no elseif.

o certo seria usar if e nao elseif

 

elseif msgcontains(msg, 'yes') and talk_state == 1 then

if getPlayerItemCount(cid,6530) >= 1 and getPlayerItemCount(cid,2152) >= 100 then

if doPlayerTakeItem(cid,6530,1) and doPlayerTakeItem(cid,2152,100) == 0 then

selfSay('Here you are.')

doPlayerAddItem(cid,2358,1)

end

else

selfSay('Sorry, you don\'t have the item.')

end

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

×
×
  • Criar Novo...