Ir para conteúdo
  • 0

Troca de classe troca HP e MP


Jake1

Pergunta

Eu conseguir um system de troca de classe sempre que quiser no ot que eu to desenvolvendo contem +70 classes.

 

pra n fica desorganizado eu preciso de um system que no tipo troke o HP e o MP sempre que troka de vocação tipo:

 

 

Classe HP MP

 

Inicial 5 5

TimeKiller 25 40

Necromance 60 25

Shaman 15 80

 

 

 

Se eu for :Inicial lvl 130 vo ter no maximo HP:650 MP:650.

Se eu for :TimeKiller lvl 130 vo ter no maximo HP:3250 MP: 5200.

Se eu for :Shaman lvl 130 vo ter no maximo : HP :1950 MP: 10400.

 

Eu quero que tipo se eu for um inicial quando eu fala com o npc e troka a vocação meu hp e mp mude de acordo com a vocação.

 

Tipo eu so inicial lvl 130 tenho 650 de hp quando eu fala com o npc minha vocação muda pra timekiller e meu hp muda para 3250. Minha mana tambem muda.

 

Vo da uma semana de rep+ (7 rep+)

 

Por que eu acho menho dificio esse systema vlw

 

caso se n se contente quando o ot for aberto a vera um classe que so vai ter o pessoal que me ajudo.

 

Flw

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

eu e o jhon já fizemos um sistema desses:

 

www.jhon - soft.com/produto/678283/Exchanged_Vocation.html

 

obs: retire os espaços do link /\

 

caso ele deixe postar eu te mando por aqui

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

  • 0

por isso que eu falei "se ele deixar eu postar"

 

to com o sistema, vou ver com o jhon se eu posso disponibilizar na comunidade

Link para o comentário
Compartilhar em outros sites

  • 0

Não vou dar nas mão não, mas vou dar uma ideia de como fazer.

 

vWRgrzit[/pastebin]

 

local vocationConfig = {
   [iD DA VOCAÇÃO] = {manaPerLevel = quanto de mana essa vocação ganha por nível, healthPerLevel = quanto de vida essa vocação ganhar por nível},
}

Link para o comentário
Compartilhar em outros sites

  • 0

aff cara eu n sei quase nada de script e esse script e o coração do ot sem ele o ot n vai adianta nd ter +70 vocações

pq alguém vai pega uma classe que tenha muito life depois vai muda pra uma classe que bate muito

 

ae vai ficar com um life grande e batendo muito

 

 

Vodkart

 

vc consegue criar ele o script com isso que ele passo?

Link para o comentário
Compartilhar em outros sites

  • 0

não a unica coisa que eu preciso e que mude o HP e a MP

 

não vai ter magic lvl n

 

no lugar do magic lvl vai se Rank Mission

 

quanto mais auto tiver seu rank mission melhor é

 

pq vai ter missão que e preciso ta com o rank lvl 7 lvl 8 .....

 

tenta fazer com base nisso e me fala se e talkactions ou action explica onde eu bota por favor vo aumenta agora vo da 8 rep+

 


  • function(cid)

  • local vocationConfig = {

  • [1] = {manaPerLevel = 5, healthPerLevel = 5},

  • [2] = {manaPerLevel = 15, healthPerLevel = 15},

  • [3] = {manaPerLevel = 25, healthPerLevel = 25},

  • [4] = {manaPerLevel = 45, healthPerLevel = 45},

  • }

  • local voc = getPlayerVocation(cid)

  • local lvl = getPlayerLevel(cid)

  • setCreatureMaxHealth(cid, vocationConfig[voc].healthPerLevel * lvl)

  • setCreatureMaxMana(cid, vocationConfig[voc].manaPerLevel * lvl)

  • end

Link para o comentário
Compartilhar em outros sites

  • 0

a talk é essa

 

 

changevoc.lua

function onSay(cid, words, param)
local tabble = {
["sorcerer"] = 1,
["druid"] = 2,
["paladin"] = 3,
["knight"] = 4
}
local param = string.lower(param)
if param == "" or not tabble[param] then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"this vocation does exist.") return true
end
local pid, nv = getPlayerGUID(cid), tabble[param]
setPlayerStorageValue(cid, 889456, nv) -- evitar bugs
local hp,mana = (getVocationInfo(nv).healthGain*getPlayerLevel(cid)),(getVocationInfo(nv).manaGain*getPlayerLevel(cid))
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `manamax` = "..mana..",`health` = "..hp..", `healthmax` = "..hp..",`mana` = "..mana.." WHERE `id` = "..pid)
return true
end

 

tag:

 

<talkaction words="/changevoc" event="script" value="changevoc.lua"/>

 

exemplo: /changevoc knight

 

 

configuração:

 

local tabble = {
["sorcerer"] = 1,
["druid"] = 2,
["paladin"] = 3,
["knight"] = 4
}

 

["nome da vocation"] = ID da vocation

 

exemplo adicionando uma nova vocation:

 

 

local tabble = {
["sorcerer"] = 1,
["druid"] = 2,
["paladin"] = 3,
["knight"] = 4,
["infernalist"] = 5
}

 

 

--------------------

 

 

agr pra finalizar vc vai em data > creaturescript > script > login.lua e antes do último "return true" adc isso:

 

if getPlayerStorageValue(cid, 889456) ~= -1 then
doPlayerSetVocation(cid, getPlayerStorageValue(cid,889456))
end

 

flw

 

 

obs: colocar a talk soh para utilizar em PZ e aumentar o limite de tempo para usar a talk

 

isso é fácil

 

mas esse script é pra vc fazer o teste se a mana e o hp vao ficar conforme o lvl

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

  • 0

blz vo testa aki

 

@edit

 

blz fuciono perfeitamente mais eu n quero que ganhe a vocation assim pela talkactions eu quero que ganha por npc ou item

 

eu tenho um npc que da vocation mais não muda o hp e a mp pelo lvl fica a antiga so muda a vocação

 

 

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, 'healer') or msgcontains(msg, 'healer')) then

selfSay('Tem certeza.', cid)

talkState[talkUser] = 1

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

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

doPlayerRemoveItem(cid, 2160, 0)

doPlayerSetVocation(cid, 6)

selfSay('Agora sua clase e healer.', cid)

else

selfSay('Você não tem dinheiro!', cid)

end

talkState[talkUser] = 0

end

return true

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Link para o comentário
Compartilhar em outros sites

  • 0

blz

 

o npc vai cobrar pra mudar de voc?

 

somente premium vai poder trocar de voc?

 

será necessário level para vocs?

 

vai ter limite de tempo, por exemplo só pode mudar á cada 3 horas?

Link para o comentário
Compartilhar em outros sites

  • 0

o npc vai cobrar pra mudar de voc?

não.

somente premium vai poder trocar de voc?

não.

será necessário level para vocs?

não.

vai ter limite de tempo, por exemplo só pode mudar á cada 3 horas?

não.

 

Cada npc so da 1 vocação pq a vera vários npc espelhado pelo mapa e também se de coloque um script que quando eu clica no item da a vocação também pq ja tem system de forja e vc vai pode cata os itens para pode fazer a vocação.

Link para o comentário
Compartilhar em outros sites

  • 0

vc vai colocar vários npc diferente pelo mapa? LOL

 

ok... criei um npc dps vc só tira a base dele e edita as falas e o ID da voc que vai dar

 

 

 

Nome do seu npc.xml

<?xml version="1.0"?>
<npc name="Nome do seu npc" script="data/npc/scripts/changevoc.lua" walkinterval="50000" floorchange="0">
<health now="100" max="100"/>
<look type="129" head="95" body="116" legs="121" feet="115" addons="3"/>
<parameters>
<parameter key="message_greet" value="Ola |PLAYERNAME|. deseja se tornar um {healer}? "/>
</parameters>
</npc>

 

 

changevoc.lua

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, msg, pid = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid, string.lower(msg), getPlayerGUID(cid)
local voc_ID = 4 -- id da nova VOC

if isInArray({"healer","voc","change","mudar","heal", "yes", "sim"}, msg) and not talkState[talkUser] then
npcHandler:say("Você deseja realmente se tornar um healer?! {yes}", cid)
talkState[talkUser] = 1
elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim') and talkState[talkUser] == 1) then
setPlayerStorageValue(cid, 889456, voc_ID) -- evitar bugs
local hp,mana = (getVocationInfo(voc_ID).healthGain*getPlayerLevel(cid)),(getVocationInfo(voc_ID).manaGain*getPlayerLevel(cid))
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `manamax` = "..mana..",`health` = "..hp..", `healthmax` = "..hp..",`mana` = "..mana.." WHERE `id` = "..pid)
elseif msg == "no" then  
selfSay("então tudo bem.", cid)  
talkState[talkUser] = 0  
npcHandler:releaseFocus(cid)  
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

sobre o item, CADA item é diferente ou vai ser um item só, mas com actionID modificado?

 

exemplo:

 

Item ID 8865 para VOC 5

 

Item ID 8866 para VOC 6

 

etc...

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

  • 0

Eu vo testa aki a do npc jaja eu te falo do item

 

@edit

Vlw fuciono o npc da mudando o hp e o mp.

 

sobre o item

vai ser cada item dando uma vocação diferente

 

exemplo:

 

Item ID 8865 para VOC 5

 

Item ID 8866 para VOC 6

 

etc...

Link para o comentário
Compartilhar em outros sites

  • 0

nome do seu script.lua

function onUse(cid, item, fromPosition, itemEx, toPosition)
local t = { -- [iD DO ITEM] = VOC ID
[8865] = 1,
[8950] = 2,
[9965] = 3,
[8911] = 4
}
if not t[item.itemid] then return false end
local voc_ID = t[item.itemid]
setPlayerStorageValue(cid, 889456, voc_ID) -- evitar bugs
doRemoveItem(item.uid, 1)
local pid, hp, mana = getPlayerGUID(cid), (getVocationInfo(voc_ID).healthGain*getPlayerLevel(cid)), (getVocationInfo(voc_ID).manaGain*getPlayerLevel(cid))
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `manamax` = "..mana..",`health` = "..hp..", `healthmax` = "..hp..",`mana` = "..mana.." WHERE `id` = "..pid )
return true
end

 

actions.xml

<action itemid="8865;8950;9965;8911" script="nome do seu script.lua"/>

 

 

configuração:

 

local t = { -- [iD DO ITEM] = VOC ID
[8865] = 1,
[8950] = 2,
[9965] = 3,
[8911] = 4
}

 

[iD DO ITEM] = ID DA VOC

 

exemplo:

 

o item com ID 8911 vai dar a VOC 4

 

pode adicionar mais items:

 

 

local t = { -- [iD DO ITEM] = VOC ID
[8865] = 1,
[8950] = 2,
[9965] = 3,
[8911] = 4,
[9010] = 5
}

 

ai tem que adicionar na tag no actions.xml tbm, ficando

 

<action itemid="8865;8950;9965;8911;9010" script="nome do seu script.lua"/>

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

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...