Oláa Todos!
Vamos tentar fazer esse script juntos?
Primeiramente para ser um bom programador é necessario que você tenha uma organização e trate bem as idéias que irão surgir no script. Com isso sempre faça um exemplo pratico e simples de como o script irá se comportar.
Informações
Queria um npc que vendesse promotion (no caso 9,10,11,12) em troca de um item (ID = 9971).
Obs: Foi o pedido do mebro do fórum e resolvi fazer como se fosse uma 'liçãozinha'.
Lógica do script
Primeiramente o player deverá ser premmium account ?
Qual o level necessario?
O player já possui essa promotion?
O player possui a promotion anterior (5,6,7,8) para ir para essa?
O player possui o item desejado?
Construindo o script
Sabemos que para criarmos um npc necessitamos de 2 arquivos. Um se encontra na pasta data/npcs e o outro na pasta data/npcs/script.
e [LUA].
[u][b]Scripts[/b][/u]
[u][size=2][b]data/npc/NpcName.xml[/b][/size][/u]
[spoiler][code]<?xml version="1.0" encoding="UTF-8"?>
<npc name="NpcName" script="data/npc/scripts/NpcName.lua" walkinterval="2000" floorchange="0">
<health now="100" max="100"/>
<look type="96" head="0" body="0" legs="0" feet="0" addons="0"/>
</npc>[/code]
[/spoiler]
A partir desse script ao sumonar o npc ou coloca-lo no mapa, você fará com que ele carregue o script principal, com a sua função. ( NpcName.lua )
[size=2][u][b]data/npc/NpcName.lua[/b][/u][/size]
[spoiler][code]local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
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 npcPromotion(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end
if (isPremium(cid)) then
if (getPlayerLevel(cid) >= 100) then
if (getPlayerVocation(cid) >= 5 and getPlayerVocation(cid) <=8) then
if doRemoveItem(cid, 9971, 1) then
doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
doPlayerSendTextMessage(cid, 20, "Voce é um ".. getPlayerVocationName(cid) .."!")
else
doPlayerSendTextMessage(cid, 20, "Voce nao possui o item desejado!")
end
else
doPlayerSendTextMessage(cid, 20, "Voce não possui a promotion anterior ou já esta promovido.")
end
else
doPlayerSendTextMessage(cid, 20, "Voce nao possui level para ser promovido.")
end
else
doPlayerSendTextMessage(cid, 20, "Voce nao possui premmium account.")
end
end
local node1 = keywordHandler:addKeyword({'high promotion'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can promotion you if you give me a '.. getItemName(9971) ..'. Do you want me to promote you?'})
node1:addChildKeyword({'yes'}, npcPromotion, {})
node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then.', reset = true})
npcHandler:addModule(FocusModule:new())[/code]
[/spoiler]
[center]é isso aí, espero que tenha entendido.[/center]
[center][size=5]Qualquer dúvida é só postar![/size][/center]
[i]Atenciosamente,[/i]
[i]Aluccard.[/i]