Ir para conteúdo

Posts Recomendados

Ae Xtibianos

 

Vou Ensinar A Vocês Como Criar Um Npc Que Vende A Nova Voc Que Vc Criou No Seu Server!

 

1°Vá Hem data/npc/

 

Click Hem Novo->Documento De Texto

 

Renomei Para Nome Que Quiser

 

Dentro Coloque Iso

 

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

<npc name="Vip Johnny" script="data/npc/scripts/vip promote.lua" walkinterval="2000" floorchange="0">

<mana now="800" max="800"/>

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

<look type="133" head="114" body="119" legs="132" feet="114"/>

</npc>

 

Azul:Nome Do NPc

 

Click Hem Salvar Como

 

Coloque Nome Que Quiser + No Final Coloque.xml

 

E Salve Na Pasta Do Seu Ot

 

Agora Delete O Arquivo Txt Que Tinha Criado!

 

2°Vá Hem data/npc/scripts/

 

Copie E Cole Qualquer Arquivo.lua

 

Renomeio Para vip promote

 

Dentro Coloque Iso

 

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

 

if(msgcontains(msg, 'vip sorcerer') or msgcontains(msg, 'vip sorcerer')) then

selfSay('Deseja virar {Vip Sorcerer} por 50 crystal coins?', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then

if(getPlayerItemCount(cid, 2160) >= 50) then

doPlayerRemoveItem(cid, 2160, 50)

doPlayerSetVocation(cid,9)

selfSay('Vocação trocada com sucesso , Agora você é um Vip Sorcerer.', cid)

else

selfSay('Você não tem {crystal coins} Suficientes.', cid)

end

talkState[talkUser] = 0

end

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Vermelho:Vocação

Verde:Preço Da Voc

Roxo:ID Da Voc

 

É Isso Vlw

 

Se Falto Algo Comenten

 

By:Leo46

Link para o comentário
https://xtibia.com/forum/topic/139469-npc-que-vende-nova-voca%C3%A7%C3%A3o/
Compartilhar em outros sites

achei o npc muito simples por dois motivos.

 

o primeiro é que nele tem uma falha,qualquer vocação pode usar esse npc,ou sejá um knight poderá virar um "vip sorcerer",já que não tem nenhuma função que faz a checkagem da voc do player.

 

e a segunda é que o npc só da uma vocação,o certo seriam no minimo 4 vocações.

 

procure melhorar amigo,você tem futuro

 

espero novos trabalhos seus por aqui

 

abraços

Editado por Vodkart
Link para o comentário
https://xtibia.com/forum/topic/139469-npc-que-vende-nova-voca%C3%A7%C3%A3o/#findComment-923709
Compartilhar em outros sites

Hmm, eu liguei nesses erros so que eu ia fazer para min tipow qalquer voc ia virar uma vocation vip '-' e nao Vip Kina e etc..

 

Mais se for para usar nesse tipo como o vodkart falo, é muinto simplisinho!!

Link para o comentário
https://xtibia.com/forum/topic/139469-npc-que-vende-nova-voca%C3%A7%C3%A3o/#findComment-923711
Compartilhar em outros sites

TPW No Caso De Qualquer Voc Pegar As Vocs Vip!

Meu Ot É Baiak Yoruts 8.54 a 8.57.

Coloquei O Npc So Na Area Vip.

Assim Somente Vips Comprariam.

E No Caso De Vender 4 Vocs.

É So Copiar Iso Abaixo E Editar.

elseif(msgcontains(msg, 'vip druid') or msgcontains(msg, 'vip druid')) then

selfSay('Deseja virar {Vip Druid} por 50 crystal coins?', cid)

talkState[talkUser] = 2

elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then

if(getPlayerItemCount(cid, 2160) >= 50) then

doPlayerRemoveItem(cid, 2160, 50)

doPlayerSetVocation(cid,10)

selfSay('Vocação trocada com sucesso , Agora você é um Vip Druid.', cid)

else

selfSay('Você não tem {crystal coins} Suficientes.', cid)

end

talkState[talkUser] = 0

 

No Final Coloque Iso.

end

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Desculpa Se O Npc Não Ta Perfeito Vou Tentar Melhorar.

Link para o comentário
https://xtibia.com/forum/topic/139469-npc-que-vende-nova-voca%C3%A7%C3%A3o/#findComment-925164
Compartilhar em outros sites

  • 1 month later...
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 a = {
[5] = {new_voc = 9,need_level = true,level = 60,cobrar = true,price = 100000,need_premium = true},
[6] = {new_voc = 10,need_level = true,level = 60,cobrar = true,price = 100000,need_premium = true},
[7] = {new_voc = 11,need_level = true,level = 60,cobrar = true,price = 100000,need_premium = true},
[8] = {new_voc = 12,need_level = true,level = 60,cobrar = true,price = 100000,need_premium = true}
}
local b = a[getPlayerVocation(cid)]
if(msgcontains(msg, 'vip promotion') or msgcontains(msg, 'vip promote')) then
if(not b) then
selfSay('Você não tem a second promote, então não poderá ser promovido!.', cid)
talkState[talkUser] = 0
else
selfSay('Deseja virar ' .. getVocationInfo(b.new_voc).name .. ' por '..b.price..' gold coins? {yes}', cid)
talkState[talkUser] = 1
end
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if b.need_premium == true and not isPremium(cid) then
selfSay('Você precisa ser Premium para ser promovido!.', cid)
talkState[talkUser] = 0
elseif b.need_level == true and getPlayerLevel(cid) < b.level then
selfSay('Você deve ter pelo menos level '.. b.level ..' para ser promovido!.', cid)
talkState[talkUser] = 0
elseif b.cobrar == true and doPlayerRemoveMoney(cid, b.price) == TRUE then
doPlayerSetVocation(cid,b.new_voc)
selfSay('Você foi promovido com sucesso.', cid)
talkState[talkUser] = 0
else
selfSay('Você não tem '..b.price..' gold coins Suficientes.', cid)
doSendMagicEffect(getPlayerPosition(cid), 2)
end
end
return TRUE
end

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

Link para o comentário
https://xtibia.com/forum/topic/139469-npc-que-vende-nova-voca%C3%A7%C3%A3o/#findComment-939761
Compartilhar em outros sites

  • 3 weeks later...
  • 3 weeks later...
  • 2 months later...

Boa a explicação, e o tutorial é muito útil.

 

O script postado pelo @Vodkart é o que, de fato, eu estava procurando.

 

 

PORÉM...

Ambos têm o mesmo bug: Quando o player promovido Loga, ele volta a ser a vocação que era antes. Exemplo: O player sai do jogo Vip Knight, e volta Elite Knight. Ou seja, a promoção funciona! mas até o player fazer logoff.

 

Alguém aí sabe sanar este problema? se souber, posta, por favor!

 

Abraços.

Editado por GoD_RaFkS
Link para o comentário
https://xtibia.com/forum/topic/139469-npc-que-vende-nova-voca%C3%A7%C3%A3o/#findComment-993554
Compartilhar em outros sites

  • 2 months later...

alguem pode converter esse sistema para 8.52, acho que eh esse meu, pq eu to vendendo vocação no site, coloco pela database, mas os skills bugam cada hit upa um skill de glove se usar luva e sword se usar spada.

Link para o comentário
https://xtibia.com/forum/topic/139469-npc-que-vende-nova-voca%C3%A7%C3%A3o/#findComment-1026859
Compartilhar em outros sites

  • 4 months later...
  • 4 months later...

Isso é simples, la na terceira vocação, vocês procuram fromvoc="1" e deletam... OBS: Só deletem da terceira vocação, de todas as quatro. rs

Editado por EduardoDantas
Link para o comentário
https://xtibia.com/forum/topic/139469-npc-que-vende-nova-voca%C3%A7%C3%A3o/#findComment-1194026
Compartilhar em outros sites

Cara, eu não sou scripter então não sei a tag correta para usar pra concertar, porem eu estou estudando script, e pelo que eu vi o problema é o código "PlayerSetVocation" pois ele ele muda a vocação mas éla funciona como um buff, quando vc loga, acaba.

o correto seria utilizar um código de promotion (o qual eu não sei qual é) pois vc usando ex:"doPromotion" ele cria uma especie de storage do player que de 0 passa a ser 1 tornando o player promoted, ai no caso teria que fazer um código promotion de 1 "setPromotion = 2'

algo assim... posso ta falando besteira, defecando pela boca, mas eu acredito que seja isso =P

quem souber, puder fazer, agradeço, prescio desse npc tbm

Editado por Korocham
Link para o comentário
https://xtibia.com/forum/topic/139469-npc-que-vende-nova-voca%C3%A7%C3%A3o/#findComment-1195084
Compartilhar em outros sites

Cara, eu não sou scripter então não sei a tag correta para usar pra concertar, porem eu estou estudando script, e pelo que eu vi o problema é o código "PlayerSetVocation" pois ele ele muda a vocação mas éla funciona como um buff, quando vc loga, acaba.

o correto seria utilizar um código de promotion (o qual eu não sei qual é) pois vc usando ex:"doPromotion" ele cria uma especie de storage do player que de 0 passa a ser 1 tornando o player promoted, ai no caso teria que fazer um código promotion de 1 "setPromotion = 2'

algo assim... posso ta falando besteira, defecando pela boca, mas eu acredito que seja isso =P

quem souber, puder fazer, agradeço, prescio desse npc tbm

 

Na verdade está certíssimo. É doPlayerSetPromotionLevel(cid, level). Eu postei um Script para segunda promotion (promotion VIP) aqui já. Aqui vai o code e o link do pastebin:

local keywordHandler = KeywordHandler:new() -- By Byerne XTibia
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 startVoc = (getPlayerVocation(cid) - ((getPlayerPromotionLevel(cid))*4))

if msgcontains(msg, 'promotion') then
if getPlayerPromotionLevel(cid) ~= 1 then
selfSay("Não posso te promover.", cid)
else
selfSay("Deseja virar um {VIP "..getVocationInfo(startVoc).name.."} por {40.000 gold coins} ({40k})?", cid)
talkState[talkUser] = 1
end
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if doPlayerRemoveMoney(cid, 40000) then
doPlayerSetPromotionLevel(cid, 2)
selfSay("Parabéns, você agora é um "..getVocationInfo(getPlayerVocation(cid)).name..".", cid)
else
selfSay("Você não tem dinheiro suficiente.", cid)
end
talkState[talkUser] = 0
end

return true
end

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

Editado por Byerne
Link para o comentário
https://xtibia.com/forum/topic/139469-npc-que-vende-nova-voca%C3%A7%C3%A3o/#findComment-1195107
Compartilhar em outros sites

×
×
  • Criar Novo...