Ir para conteúdo

[npc] Npc Premium Com Escolha De Dias


alex008

Posts Recomendados

NPC premium BY ALEX0007

 

TUTORIAL:

 

vá em data/npc e copie um arquivo qualquer, renomeie-o para premmy

agora abra-o, exclua tudo dentro e cole isso:

<?xml version="1.0" encoding="UTF-8"?>

<npc name="premmy" script="data/npc/scripts/premmy.lua" walkinterval="3000" floorchange="0" access="5" >

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

<look type="57" head="78" body="86" legs="114" feet="116" addons="0" corpse="2212"/>

<parameters>

<parameter key="message_greet" value="Ola |PLAYERNAME|. Eu vendo {premium account}."/>

<parameter key="message_farewell" value="Adeus. volte quando precisar de ajuda."/>

</parameters>

</npc>

 

agora va na pasta data/npc/scripts e copie um arquivo qualquer, renomeie-o para premmy

agora abra-o, exclua tudo dentro e cole isso:

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 node1 = keywordHandler:addKeyword({'prem'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Eu vendo premium account somente por {GPs}, infelizmente nao temos outra forma de pagamento.'})

function creatureSayCallback(cid, type, msg)

p = 10000 -- valor da P.A em GP

if(not npcHandler:isFocused(cid)) then

return false

end

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

---------- MSGs ----------

if msgcontains(msg, 'gp') or msgcontains(msg, 'gps') or msgcontains(msg, 'GP') or msgcontains(msg, 'GPs') or msgcontains(msg, 'GPS') then

selfSay('Pois bem, cada dia de premium account custa '..p..' GPs, quantos dias você deseja comprar?', cid)

talkState[talkUser] = 1

---== compra por GPs ==---

elseif talkState[talkUser] == 1 then

if getNumber(msg) < 350 then

n = getNumber(msg)

if n ~= 0 then

if getPlayerMoney(cid) > p*n then

selfSay('Dias de P.A: {'..n..'} por {'..n*(p)..'} GPs?', cid)

talkState[talkUser] = 3

else

selfSay('Você nao tem GPs suficientes para comprar {'..n..'} dias de P.A.', cid)

talkState[talkUser] = 0

end

else

selfSay('Escolha um numero acima de zero.', cid)

talkState[talkUser] = 0

end

else

selfSay('Você nao pode comprar mais que 350 dias de P.A.', cid)

talkState[talkUser] = 0

end

elseif talkState[talkUser] == 3 then ---== GPs ==---

if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') or msgcontains(msg, 'SIM') or msgcontains(msg, 'YES') then

if getPlayerPremiumDays(cid)+n <= 350 then

if (doPlayerRemoveMoney(cid, p*n) ~= TRUE) then

npcHandler:say('Voce nao tem GPs suficientes!', cid)

talkState[talkUser] = 0

else

doPlayerAddPremiumDays(cid, n)

selfSay('Compra efetuada com sucesso, dias de P.A:{ '..n..' }.', cid)

talkState[talkUser] = 0

end

else

npcHandler:say('Voce nao pode ter mais que 350 dias de Premium!', cid)

talkState[talkUser] = 0

end

end

elseif msgcontains(msg, 'no') or msgcontains(msg, 'nao') or msgcontains(msg, 'não') or msgcontains(msg, 'NO') or msgcontains(msg, 'NAO') or msgcontains(msg, 'NÃO')then

selfSay('Tudo bem.', cid)

talkState[talkUser] = 0

end

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

-- function maded by Gesior--

function getNumber(txt) --return number if its number and is > 0, else return 0

x = string.gsub(txt,"%a","")

x = tonumber(x)

if x ~= nill and x > 0 then

return x

else

return 0

end

end

 

Simulação de conversa:

EU: hi

Premmy: Ola alex. Eu vendo premium account.

EU: premium account

Premmy: Eu vendo premium account somente por GPs, infelizmente nao temos outra forma de pagamento.

EU: gps

Premmy: Pois bem, cada dia de premium account custa 10000 GPs, quantos dias você deseja comprar?

EU: 3

Premmy: Dias de P.A: 3 por 30000 GPs?

EU: sim, yes

Premmy: Compra efetuada com sucesso, dias de P.A:3.

 

 

na verdade esse script eu fiz pra ter dois modos de compra (gps e créditos), eu apenas modifiquei um pouco para comprar somente por GPs

NAO testei ainda, mais tenho certeza que finciona

para mudar o outfit do NPC acesse meu script - [action] Criando Outfit Para Npc Facilmente

Qualquer problema favor avisar, que eu arrumarei ;]

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

boa :)

 

só falta agora aprender diminuir os scripts para uma melhor visualização do mesmo, menos ifs, menos ends, melhor visualização... isso você aprende com o temppo e exercitando

Link para o comentário
Compartilhar em outros sites

humm se fala fazer isso?

 

if hasudih then

if ddd then

if iiiddd then

if kkslkakd then

ashiduhsaiudhikflkflaslslsls

end end end end

 

 

PS: vlw noobinhu, uma palavra sua é uma honra pra mim!!

abraços

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

vlw mesmo nao tava conseguindo fazer esse npc e tava precisando muito.

 

testando aki encontrei um erro se o cara for la com o dinheiro contado tipo se o dia de p.a for 5k e o cara for la com os 5k o npc diz que ele nao tem dinheiro suficiente pra comprar um dia de p.a.

vo ve se consigo arrumar isso e te mando pra atualizar.

 

pronto ta atualizado retirei esse erro que tava nele.

 

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 node1 = keywordHandler:addKeyword({'prem'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Eu vendo premium account, se quiser saber mais {informaçoes} e so me dizer.'})

function creatureSayCallback(cid, type, msg)

p = 5000 -- valor da P.A em GP

v = 4999 -- nao mude

if(not npcHandler:isFocused(cid)) then

return false

end

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

---------- MSGs ----------

if msgcontains(msg, 'infor') or msgcontains(msg, 'informacoes') or msgcontains(msg, 'informaçoes') or msgcontains(msg, 'info') then

selfSay('Pois bem, cada dia de premium account custa '..p..' GPs, quantos dias você deseja comprar?', cid)

talkState[talkUser] = 1

---== compra por GPs ==---

elseif talkState[talkUser] == 1 then

if getNumber(msg) < 350 then

n = getNumber(msg)

if n ~= 0 then

if getPlayerMoney(cid) > v*n then

selfSay('Gostaria de comprar {'..n..'} dia de premium account por {'..n*(p)..'} GPs?', cid)

talkState[talkUser] = 3

else

selfSay('Você precisa ter {'..n*(p)..'} GPs pra poder comprar {'..n..'} dias de Premium account.', cid)

talkState[talkUser] = 0

end

else

selfSay('Escolha um numero acima de zero.', cid)

talkState[talkUser] = 0

end

else

selfSay('Você nao pode comprar mais que 350 dias de Premium account', cid)

talkState[talkUser] = 0

end

elseif talkState[talkUser] == 3 then ---== GPs ==---

if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') or msgcontains(msg, 'SIM') or msgcontains(msg, 'YES') then

if getPlayerPremiumDays(cid)+n <= 350 then

if (doPlayerRemoveMoney(cid, p*n) ~= TRUE) then

npcHandler:say('Voce nao tem dinheiro suficiente!', cid)

talkState[talkUser] = 0

else

doPlayerAddPremiumDays(cid, n)

selfSay('Compra efetuada com sucesso, voce comprou { '..n..' }. dias de premium account por {'..n*(p)..'} Gps.', cid)

talkState[talkUser] = 0

end

else

npcHandler:say('Voce nao pode ter mais que 350 dias de Premium!', cid)

talkState[talkUser] = 0

end

end

elseif msgcontains(msg, 'no') or msgcontains(msg, 'nao') or msgcontains(msg, 'não') or msgcontains(msg, 'NO') or msgcontains(msg, 'NAO') or msgcontains(msg, 'NÃO')then

selfSay('Tudo bem.', cid)

talkState[talkUser] = 0

end

end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

-- function maded by Gesior--

function getNumber(txt) --return number if its number and is > 0, else return 0

x = string.gsub(txt,"%a","")

x = tonumber(x)

if x ~= nill and x > 0 then

return x

else

return 0

end

end

ainda tomei a liberdade de modifica a conversa com o npc que tava " com todo o perdao da palavra" uma droga.

espero que atualize pra ficar sem erro algum uma grande ideia sua que eu estava projetando o meu mas tava sem tempo entao nao deu tempo de concluilo.

parabens.

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

  • 1 month later...
  • 1 month later...
×
×
  • Criar Novo...