AL

[npc] Npc Premium Com Escolha De Dias

Por alex008, 21 de abr. de 2009 em NPCs, monsters e raids

otserv
tibia
script
16
3.5k
alex008A
21 de abril de 2009 às 19:09

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 Abril 21 por alex0007

noobinhuN
21 de abril de 2009 às 19:12

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

alex008A
21 de abril de 2009 às 19:18

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

noobinhuN
21 de abril de 2009 às 19:23

é alguns ifs são desnecessários, só confundem e aumentam o script :) hehe

alex008A
21 de abril de 2009 às 19:25

^^

 

o script até que fiko pequeno agora, ele era maior, pq tinha as outras partes de compra por créditos

 

xD

Editado Abril 21 por alex0007

22 de abril de 2009 às 10:14

Excelente trabalho manow !!

 

...tah de parabéns mesmo !!

 

...Isso vaolriza muito o RPG do jogo e ainda dificulta server de exp baixa !!

 

Simplesmente adorei !!

 

Grato Pelo post !!

 

...e continue assim !!

 

SEM MAIS

SchiavinatoS
22 de abril de 2009 às 19:24

Opaaa

 

Thanks Man

 

Eu vou usar esse script pra fazer meu npc q vende vip(akele do noobinhu)

 

Eu pedi em Pedidos de Scripting, mas ngm me deu resposta

 

Vai esse msm

 

Flw

25 de abril de 2009 às 15:59

Opa, vou usar no meu projeto... Vou tentar editar pra as moedas vips do meu jogo!

valeuuh cara!

alex008A
25 de abril de 2009 às 16:33

#Nosctradamus

Vlw :D

 

 

#Schiavinato

boa sorte

 

 

#Capecci

bom ter ajudado

 

 

 

 

Thx aí galera, so nao deixem o topico fechar :/

postar nao ranca pedaço xD

abraços

selfarionS
28 de abril de 2009 às 09:53

Interessante o seu NPC !

 

Depois darei uma revisada, e se sobrar tempo..

ponho no meu ot =]

 

No fim das contas, eh bem util !!

 

abração..

 

Selfarion.

1 mês depois...
satan666S
07 de maio de 2009 às 20:18

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 Maio 19 por Marcryzius

1 mês depois...
HellSingH
13 de junho de 2009 às 12:14

Teria como tu me manda um script para creditos para trokar por iten tipo assim eu criei os itens e so falta a moeda

! Agradeço Cassiano Mesquita!

1 mês depois...
SanfS
13 de julho de 2009 às 12:20

é pra qual versão? aguardo.

xxterrivelX
13 de julho de 2009 às 16:16

Anúncio Removido

Editado Julho 13 por Daniel Oliveira

DaNDaNrOxXD
13 de julho de 2009 às 16:23

Usuário xxterrivel alertado em 10% e suspenso de postar por 7 dias.

Eu avisei para você parar de fazer anúncios em tópicos que não é para isto.