_F
talkaction

[talkaction] Troca De Vocação 100%

Por _ferrari_, 14 de jun. de 2009 em Actions e Talkactions

script
22
5.8k
14 de junho de 2009 às 11:27

Olá pessoal! Eu desenvolvi um script simples que irá resolver um problema bem grande.

Quando um player troca de vocação de alguma maneira, a sua vida e mana continua a mesma. Então, um player cria um sorcerer ou druid, pega nível MUITO alto e troca para knight. Após pegar muitos níveis mais, dando spam com sua mana pool imensa, vira paladin, com vida e mana de knight e sorcerer respectivamente.

 

O script pode ser alterado como quiserem, ele funciona por talkaction.

 

Em data/talkactions/talkactions.xml, adicione:

 

<!-- Vocação -->

<talkaction words="!changeknight" script="knight.lua"/>

<talkaction words="!changepaladin" script="paladin.lua"/>

<talkaction words="!changedruid" script="druid.lua"/>

<talkaction words="!changesorcerer" script="sorcerer.lua"/>

 

Em data/talkactions/scripts, crie quatro scripts. knight.lua, paladin.lua, druid.lua e sorcerer.lua.

 

Respectivamente:

 

 

knight:

 

function onSay(cid,words,params)

level = getPlayerLevel(cid)

 

newhp = (level-8)*VIDA+100

 

 

newmana = (level-8)*MANA

 

 

doPlayerSetVocation(cid, 4)

playerid = getPlayerGUID(cid)

db.executeQuery("UPDATE `players` SET `healthmax`="..newhp..",`health`="..newhp..",`manamax`="..newmana..",`mana`="..newmana.." WHERE `players`.`id`= ".. playerid .."")

doRemoveCreature(cid)

end

 

Em vermelho a vida que o knight ganha por nível, e em azul a mana que ele ganha.

 

 

Paladin:

 

function onSay(cid,words,params)

level = getPlayerLevel(cid)

 

newhp = (level-8)*VIDA+100

 

 

newmana = (level-8)*MANA

 

 

doPlayerSetVocation(cid, 3)

playerid = getPlayerGUID(cid)

db.executeQuery("UPDATE `players` SET `healthmax`="..newhp..",`health`="..newhp..",`manamax`="..newmana..",`mana`="..newmana.." WHERE `players`.`id`= ".. playerid .."")

doRemoveCreature(cid)

end

 

Mesma coisa das cores.

 

 

Druid:

 

 

 

function onSay(cid,words,params)

level = getPlayerLevel(cid)

 

newhp = (level-8)*VIDA+100

 

 

newmana = (level-8)*MANA

 

 

doPlayerSetVocation(cid, 2)

playerid = getPlayerGUID(cid)

db.executeQuery("UPDATE `players` SET `healthmax`="..newhp..",`health`="..newhp..",`manamax`="..newmana..",`mana`="..newmana.." WHERE `players`.`id`= ".. playerid .."")

doRemoveCreature(cid)

end

 

 

 

E sorcerer:

 

 

 

function onSay(cid,words,params)

level = getPlayerLevel(cid)

 

newhp = (level-8)*VIDA+100

 

 

newmana = (level-8)*MANA

 

 

doPlayerSetVocation(cid, 1)

playerid = getPlayerGUID(cid)

db.executeQuery("UPDATE `players` SET `healthmax`="..newhp..",`health`="..newhp..",`manamax`="..newmana..",`mana`="..newmana.." WHERE `players`.`id`= ".. playerid .."")

doRemoveCreature(cid)

end

 

 

 

E é só isso.

Preciso de algumas sugestões de vocês para melhorar o script. Primeiro, algo que o player tem que dar em troca, talvez dias de premium, dinheiro, item, vocês que sabem. Segundo, algum bug que encontrarem, algo que os players estejam fazendo para "apelar" usando esse sistema, poste aqui que eu dou um jeito. Espero ter ajudado vocês, os créditos são todos meus.

Editado Junho 14 por _ferrari_

satan666S
14 de junho de 2009 às 19:30

so de olhar o script ja encontro uma forma de se dar bem com ele

tipo so mage pego ml fast entao troco pra pala e kina ja imaginou um kina com ml 30+?

kaillerK
15 de junho de 2009 às 19:06

blz cara eu queria isso mais assim adcionar com o god exemplo meu servidor la no vocantion criei umas vocaçao aew eu criei comando /addvocation e o nick do cara q eu quizesse q recebesse a vocaçao nova entendeu?? flws vlws

16 de junho de 2009 às 13:31

eu ja tinha pensado nisso, mas resetar o ml e skills seria justo? pensei em deixar o ml 0 e reduzir skills para 30%, assim um kina com 100 de skill viraria sorc com 30 de skill. Ml é mais dificil de resolver, alguma sugestão?

WiltryW
16 de junho de 2009 às 13:47

Ficou muito bom o script :)

O unico problema é a questão do ML mesmo :p

Tu poderia tentar fazer que tipow, ele ve o tanto de mana que o player ja gasto no char dele, e transforma o ML relativo a quanto de ML ele teria se ele fosse kina/paly/druid/sorc

Parece meio dificil, mas acho que é a unica maneira de arrumar.

 

Abraços

satan666S
16 de junho de 2009 às 22:57

limita o ml pra kina em 10 e paladino em 20 e mage o ml que o player tiver passa pro mage mesmo que o ml dele seja 1 nao importa esse sera o ml dele como mage.

 

e os skills poderiam ser assim se a pessoa e kina e quer ser mage os skills de melee dele ficam limitados em 30 no maximo e se ele quiser ser pala kina>pala os skills de melee se transforma em distance e vice versa.

mas tem um problema em se transforma pala>kina os skill de distance do pala se tranformara em que axe, club ou sword?

20 de junho de 2009 às 19:29

vou esperar novas sugestões para alterar o script. mesmo assim agradeço. estou pensando em deixar ml e skills 0 mas não vai ser nada justo.

satan666S
21 de junho de 2009 às 12:23

nada justo e o cara ser kina com ml muito alto.

ou pala tb com ml absurdo.

 

se quer troca de vocaçao tem que saber o preço a pagar por isso.

RajasR
25 de junho de 2009 às 19:13

tpw e soh voce coloca uma funçao randomica se reduçao tpw -30%,-50%.... tanto no ml quanto no skill.

 

Espero ter ajudado!

26 de junho de 2009 às 13:58

ainda assim, uma redução de 50% no ml de um sorcerer lvl 200 continua sendo 30-40+ e não é justo pra knight.

LordfireL
26 de junho de 2009 às 14:11

Tem um erro, level 1 tem 150 de vida e não 100

Btw, se for analisar os prós e os contras tá ruim

satan666S
26 de junho de 2009 às 14:43
Tem um erro, level 1 tem 150 de vida e não 100

Btw, se for analisar os prós e os contras tá ruim

 

se for isso :

 

newhp = (level-8)*VIDA+100

 

esta certo e assim mesmo nao e pra por os 150 de life pode deixar assim mesmo.

juanbrandoJ
30 de junho de 2009 às 21:44

IDEA FRAKA IMAGINA KINA COM MANA DE SORC I SORC COM MANA DE KINA :surprised:

03 de julho de 2009 às 13:31

:withstupidsmiley: :withstupidsmiley: :withstupidsmiley:

É exatamente isso que eu estou tentando resolver, gênio.

rockstar96R
05 de julho de 2009 às 19:22

Como o Wiltry falou, use o gasto de mana, se quiser, a função é esta:

doPlayerAddSpentMana(cid, amount)

E, poderia fazer tudo em um só script, penso eu, usando o for...

 

Ah, e para a skill, faça a mesma coisa...a função é esta:

doPlayerAddSkillTry(cid, skillid, n)

 

Bom, é isso (:

Editado Julho 5 por iRockStar