Npc Que Vende Nova Vocação

WooX
Por WooX
em NPCs, monsters e raids
  • 1
  • 2

WooX

WooX
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 08/08/10Posts: 64Gênero: Masculino

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

o1n.png

DevilMoon

@leonartei
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/01/10Posts: 706Gênero: MasculinoChar no Tibia: Bakwin

Muinto Bom Cara, Estava Pensando em Fazer algo Assim agora nao preciso Mais!!

 

REP+

Contato: DevilMoon@Xtibia.com

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

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

bossisg.png

DevilMoon

@leonartei
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 30/01/10Posts: 706Gênero: MasculinoChar no Tibia: Bakwin

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!!

Contato: DevilMoon@Xtibia.com

WooX

WooX
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 08/08/10Posts: 64Gênero: Masculino

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.

o1n.png

rafavbueno

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/05/09Posts: 5

Putz cara tava disisperado atraz disso!!!!

 

só que tipow tem como arrumar isso ao inves de dinheiro ser por lvl?

 

se tiver como mi da uma ajuda plx!

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino
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())

bossisg.png

Gegiskan

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/02/07Posts: 89

tipo eu fiz esse npc promote ae ae ele promoveu o player mais quando o player loga ele volta a ser ex: elder druid : /

(¯`·._.·[]·._.·´¯)

otiano

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 28/02/08Posts: 8Char no Tibia: Ksoasa

Aqui tbm..quando reloga volta a voc de antes

como arrumar isso?! :angrysmiley:

GoD_RaFkS

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 01/10/06Posts: 33Char no Tibia: Tubino

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.

você quer? você pode!

coyotestark

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 15/02/11Posts: 259Char no Tibia: Aias Laf Du

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.

385417_122391137880813_100003297811828_101325_1909172176_n.jpg

Nao sou Gigante mas grande o suficiente para entender tudo a minha volta.

daaniel13

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/08/10Posts: 14

auqee tbm esta assim.

quando vira a promotion vip..

assim que ele logaa. a promotion volta a anteriorr

 

AJUDAAAA

 

ajudaaaaaaa.

desculpa p double post

EduardoDantas

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/07/11Posts: 8Char no Tibia: Zowm Megas

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

cordis

Vinicius
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/11/07Posts: 43Char no Tibia: Ollux Junior

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

bepokemon

Lo sono il accolito.
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/08Posts: 273Char no Tibia: Foxx Rookslayer

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())

logo.png

Scripter

@MagicWorld

Ex: Colaborador de Scripting

Contato: bepokemon@hotmail.com

  • 1
  • 2