JA
pedido

Troca de classe troca HP e MP

Por Jake1, 05 de mai. de 2013 em Scripts

resolvido
20
2.7k
Jake1J
05 de maio de 2013 às 15:42

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

VodkartV
05 de maio de 2013 às 18:24

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 Maio 5 por Vodkart

Jake1J
05 de maio de 2013 às 19:50

lol isso eu tenho que compra.

VodkartV
05 de maio de 2013 às 19:52

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

Jake1J
05 de maio de 2013 às 20:34

Se eu n consegui isso vo ter que coloka por systema de atributos pra ser coloka manualmente.

tenta conseguir ae.

SkymagnumS
05 de maio de 2013 às 22:54

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},
}

Jake1J
06 de maio de 2013 às 16:58

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?

VodkartV
06 de maio de 2013 às 19:29

ainda n consegui falar com ele

 

mas me diz uma coisa, só vai mudar o hp e mana?

 

e as skills, magic lvl não?

Jake1J
07 de maio de 2013 às 21:32

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

VodkartV
07 de maio de 2013 às 22:16

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 Maio 7 por Vodkart

Jake1J
08 de maio de 2013 às 11:52

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

VodkartV
08 de maio de 2013 às 15:41

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?

Jake1J
08 de maio de 2013 às 17:14

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.

VodkartV
08 de maio de 2013 às 17:59

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 Maio 8 por Vodkart

Jake1J
08 de maio de 2013 às 18:16

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