Ir para conteúdo
  • Cadastre-se

(Resolvido)Skill Rate/Velocidade para upar skill


Ir para solução Resolvido por Naze,

Posts Recomendados

Qual servidor ou website você utiliza como base?

TFS 0.4 8.60

Olá a todos, eu gostaria de deixar bem (bastante) difícil para os jogadores uparem as skills (Do fist ao shield) nos valores mais baixos (Do 0 ao 25), o que ocorre é que não consigo deixar mais difícil de upar do que alguns segundos (Uns 2% da barrinha de skill a cada hit) para upar 1 skill level (Nos valores mais baixos, como upar do skill level 1 para o 2).

Tem alguma forma de dificultar (mais ainda) a velocidade de up da skill nos valores mais baixos?

 

Informações extras:
Eu testei de várias formas e percebi que o mínimo de rate skill que dá pra colocar é 1x (Seja no config.lua ou em script de skills por stages).
No vocations.xml do meu servidor a linha:

<skill fist="1.5" club="1.5" sword="1.5" axe="1.5" distance="1.5" shielding="1.5" fishing="1.5" experience="2.0"/>

Que serve para definir a velocidade com que a skill vai upar tem o valor minimo de "1.0", abaixo disso não upa (No meu servidor quanto menor o número, menor a velocidade que vai upar a skill).
Tendo isso em mente eu testei com rate skill 1x no config e com skill fist="1.0" na tag das vocations (Que foi o mais lento que consegui colocar para upar nos níveis mais baixos das skills) mas ainda assim não é lento o suficiente para mim.
O script de stages que eu estava usando para alguns testes era o:

Eu reparei que esse script pega o valor do skill rate definido no config.lua e multiplica pelo valor definido no script, e como no magic level dá pra colocar valores como 0.3x (deixando assim extremamente difícil de upar) eu tentei fazer o mesmo com as skills e não tive sucesso.
Nesse script dá para colocar um limite de skill level (
Que vai setar a rate skill para 0x) e reparei que quanto mais perto de chegar no limite, mais difícil de upar fica (Do modo que eu quero para os valores baixos).

Minhas dúvidas: 
É possível ajustar esse script para fazer a velocidade do up ser sempre igual a velocidade de quando está chegando no limite de skill? (Se é que esta diminuição está sendo aplicada por este script)
Qual a função que faz essa velocidade diminuir perto do limite de skill? (
O que está fazendo ela diminuir?)
É possível de alguma forma abaixar o rate de skills para
0.X?
É possível dificultar, extremamente, para upar as skills nos valores mais baixos? (
Seja por script ou pela source)

Ps: 
Sou bem leigo se tratando de scripts e tals, então me desculpem se não consegui me expressar bem.
Perdão se eu não estiver na área correta, não estou acostumado com fóruns ainda.

Obrigado a todos que tentarem me ajudar, peço perdão pelo texto enorme ? é justamente para evitar algumas dúvidas sobre o que eu estou tentando fazer.

Caso ainda tenham dúvidas sobre algo que eu disse, me perguntem.

E caso exista algum tópico sobre algo relacionado ao que eu quero, por favor, me mostrem. Não achei nada parecido sobre isso ?

! :EDIT: ! - :!Duvida solucionada!:
Como o @Naze me guiou ao caminho de onde fica a formula na source, eu resolvi fazer alguns testes para entender melhor como funcionava.
A formula é: 

(skillBase[skill] * std::pow(skillMultipliers[skill], (level - 11)));

E entendi que é baseskill × multiplier do vocations ^(level da skill 11), com os valores do meus servidor ficariam:
50 x 1.0 ^ (level - 11) (Onde com rate skill 1x cada hit upava cerca de 2% da barra de skill, o que me levou a crer que eram os hits necessário para upar)

Então eu resolvi testar essa baseskill e aumentei para 100, o que resultou em 1% da barra por hit. (Que no caso a cada +50 de skill base = [ -0,5% para upar a skill ao dar um hit])

E seguindo isso consigo ajustar certinho a dificuldade que quero para upar skill.
Se essa alteração na baseskill pode acarretar em algum problema me avisem, por favor (
Pois não entendo muito de programação).
Mas caso não acarrete em nenhum problema, funcionou perfeitamente para o que eu queria então.
Para quem quer fazer o mesmo (
Dificultar para upar a skill nos níveis mais baixos [como do skill level 0 ao 1]) está ai.
Duvida encerrada! Rep++ @Naze Por me ajudar
^-^ ajudou muito mesmo, de coração, agradeço. :) 

 

Editado por Yamili (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

se pretende fazer isto em todas as skills aconselho remover esse sistema de stage e por o padrão do tibia mesmo, o que voce configura no vocation.xml e no config.xml, nada contra esse sistema mas acredito eu que eu não soube balancear bem isso ai mas tive grandes dor de cabeça, facilitou quando removi isso, acredito que na linha de skill se por a skill 1.0 e deixar o rat skill 1.0 tambem fica bem dificil de treinar ja que o limite fica mais baixo.

Link para o post
Compartilhar em outros sites

@Jeff Delay Eu estava utilizando este script só para alguns testes, como eu disse no post:

2 horas atrás, Yamili disse:

eu testei com rate skill 1x no config e com skill fist="1.0" na tag das vocations (Que foi o mais lento que consegui colocar para upar nos níveis mais baixos das skills) mas ainda assim não é lento o suficiente para mim.

 

Link para o post
Compartilhar em outros sites
  • Solução
Citar

É possível ajustar esse script para fazer a velocidade do up ser sempre igual a velocidade de quando está chegando no limite de skill? (Se é que esta diminuição está sendo aplicada por este script)

É possivel, você so precisaria fazer um calculo que anule o calculo feito das 'skill_tries' necessaria pra dar o up, que vc pode achar em "Vocation::getReqSkillTries" no vocation.cpp, Ou modificar essa função para ser um valor fixo pra up.
 

Citar

Qual a função que faz essa velocidade diminuir perto do limite de skill? (O que está fazendo ela diminuir?)

Nenhuma, como falei na primeira pergunta ela não diminui a velocidade e sim a "experiencia" que vc ganha da skill é cada vez mais necessaria para upar. è a mesma forma que acontece com Level, mas com outros cálculos. No caso é a função "Vocation::getReqSkillTries".

Citar

É possível de alguma forma abaixar o rate de skills para 0.X?

 

Não entendi direito a pergunta, mas pra essa e qualquer outra do tipo, tudo possível so saber oq e onde modificar,
 

Citar

É possível dificultar, extremamente, para upar as skills nos valores mais baixos? (Seja por script ou pela source)

Tudo é possivel... por script o que citou no topico ja te da um exemplo de como mudar com 

doPlayerSetRate(cid, skill, skillRate)

Discord: Naze#3578

 

Ter Linux Dentro de Windows com Acesso 'localhost' para testes e +

AutoLoot Otimizado Direto na Source (tfs 0.4/otx)

 

// Pirataria é crime, original é roubo, compartilhar é legal.

 

tumblr_muk78tEwDQ1qah4nko1_500.gif

Link para o post
Compartilhar em outros sites
14 horas atrás, Naze disse:

É possivel, você so precisaria fazer um calculo que anule o calculo feito das 'skill_tries' necessaria pra dar o up, que vc pode achar em "Vocation::getReqSkillTries" no vocation.cpp, Ou modificar essa função para ser um valor fixo pra up.
 

Não entendi direito a pergunta, mas pra essa e qualquer outra do tipo, tudo possível so saber oq e onde modificar,
 

Tudo é possivel... por script o que citou no topico ja te da um exemplo de como mudar com 


doPlayerSetRate(cid, skill, skillRate)

@Naze  Eu sou totalmente leigo no assunto kk você consegue me ajudar a fazer essas alterações? (Seja no script ou na source)  Ficaria muito grato se puder me ajudar :) 
E sobre a dúvida que você não entendeu, é que o rate skill minimo que consegui colocar no config.lua foi de 1x queria saber se da pra fazer ler em 0.5x por exemplo, mas creio que ela foi esclarecida com a frase "
tudo possível so saber oq e onde modificar" hehe

EDIT: Fiz alguns testes e coloquei o resultado no tópico, se puder conferir e me dizer se errei em algo (sobre qualquer coisa) grato estarei ^~^

Editado por Yamili (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 1 month later...
Em 27/09/2020 em 15:02, Jeff Delay disse:

se pretende fazer isto em todas as skills aconselho remover esse sistema de stage e por o padrão do tibia mesmo, o que voce configura no vocation.xml e no config.xml, nada contra esse sistema mas acredito eu que eu não soube balancear bem isso ai mas tive grandes dor de cabeça, facilitou quando removi isso, acredito que na linha de skill se por a skill 1.0 e deixar o rat skill 1.0 tambem fica bem dificil de treinar ja que o limite fica mais baixo.

 

E como você fez isso?

 

 

 

 

 

                                                                                                                                                     tumblr_nwmv2z4VEM1ujiquxo1_100.gif.2db64bb36f0f565e68ff2a90cb98f439.gif.59f4c4cf234d2f6906621cac0553a862.gif

https://github.com/italoxxx1

 

Link para o post
Compartilhar em outros sites

 

Em 23/11/2020 em 06:32, BangxD disse:

Qual resultado disso? Quero modificar na minha sources também.

@BangxD
Quando treinamos uma skill
(fist, axe, sword...) os níveis mais baixos dela (do nível 1 ao 2, 3, 4, 5) sempre é muito fácil de upar.
Mesmo com
skill rate em 1x e o multiplier do vocations em 1.0 ainda era "fácil" (rápido) demais para o que eu queria.
Exemplo para contexto (
Só para contexto)
Ao treinar a sword skill do
nível 0 ao 1, você demoraria alguns segundos para chegar ao nível 1 (Isso se não upar rapidamente do 0 ao 9,10,11 e tals).

Com essa alteração que eu fiz, para upar uma skill nos níveis mais baixos fica bem difícil (
depende do quanto de dificuldade você quer).
Na parte que eu editei no tópico também tem uma breve explicação minha.
Mas se tu não entendeu essa parte vou dar outros
exemplos abaixo.

- Fórmula - (da source)

(skillBase[skill] * std::pow(skillMultipliers[skill], (level - 11)));


- Valores de testes, o máximo que consegui dificultar sem alterar na source -
Com o skill rate (que você configura no config.lua) em 1x
Multipliers de sword (que você configura no vocations.xml) em 1.0
O baseskill (que é configurado na source, se não me falha a memória é em vocation.cpp) em 50
(level 11) como padrão


! Com a sword skill no nível 1 !
A cada 1 hit que eu dou em um monstro/player com uma sword, eu vou upar 2% da barra de sword skill.

Então ao alterar o baseskill de 50 para -> 100 
A cada 1 hit que eu dou em um monstro/player com uma sword, eu vou upar 1% (Ou 1,5%) da barra de sword skill. 


Ou seja, alterando o baseskill eu consigo dificultar para upar a skill em níveis baixos.

A cada +50 de skill base = [ -0,5% para upar a skill ao dar um hit ]

- Valores atuais no meu servidor - 
Skill rate: 1x (config.lua)
Multipliers: 1.0
Baseskill: 4000


vocation.cpp  (baseskill)

skillbase.png.03041a861f6d360d7f07621c19356e9d.png

vocation.xml (multipliers)
multipliers.thumb.png.ee4e4318ee5b7fedaa1c4ab403dc92c8.png


Se ainda estiver com dúvidas pode me perguntar.
Perdão a demora para responder. 
C ya!

 

Em 27/09/2020 em 12:12, Yamili disse:


Como o @Naze me guiou ao caminho de onde fica a formula na source, eu resolvi fazer alguns testes para entender melhor como funcionava.
A formula é: 







(skillBase[skill] * std::pow(skillMultipliers[skill], (level - 11)));

E entendi que é baseskill × multiplier do vocations ^(level da skill 11), com os valores do meus servidor ficariam:
50 x 1.0 ^ (level - 11) (Onde com rate skill 1x cada hit upava cerca de 2% da barra de skill, o que me levou a crer que eram os hits necessário para upar)

Então eu resolvi testar essa baseskill e aumentei para 100, o que resultou em 1% da barra por hit. (Que no caso a cada +50 de skill base = [ -0,5% para upar a skill ao dar um hit])
 

 

Editado por Yamili (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
1 hora atrás, Yamili disse:

 

@BangxD
Quando treinamos uma skill
(fist, axe, sword...) os níveis mais baixos dela (do nível 1 ao 2, 3, 4, 5) sempre é muito fácil de upar.
Mesmo com
skill rate em 1x e o multiplier do vocations em 1.0 ainda era "fácil" (rápido) demais para o que eu queria.
Exemplo para contexto (
Só para contexto)
Ao treinar a sword skill do
nível 0 ao 1, você demoraria alguns segundos para chegar ao nível 1 (Isso se não upar rapidamente do 0 ao 9,10,11 e tals).

Com essa alteração que eu fiz, para upar uma skill nos níveis mais baixos fica bem difícil (
depende do quanto de dificuldade você quer).
Na parte que eu editei no tópico também tem uma breve explicação minha.
Mas se tu não entendeu essa parte vou dar outros
exemplos abaixo.

- Fórmula - (da source)


(skillBase[skill] * std::pow(skillMultipliers[skill], (level - 11)));


- Valores de testes, o máximo que consegui dificultar sem alterar na source -
Com o skill rate (que você configura no config.lua) em 1x
Multipliers de sword (que você configura no vocations.xml) em 1.0
O baseskill (que é configurado na source, se não me falha a memória é em vocation.cpp) em 50
(level 11) como padrão


! Com a sword skill no nível 1 !
A cada 1 hit que eu dou em um monstro/player com uma sword, eu vou upar 2% da barra de sword skill.

Então ao alterar o baseskill de 50 para -> 100 
A cada 1 hit que eu dou em um monstro/player com uma sword, eu vou upar 1% (Ou 1,5%) da barra de sword skill. 


Ou seja, alterando o baseskill eu consigo dificultar para upar a skill em níveis baixos.

A cada +50 de skill base = [ -0,5% para upar a skill ao dar um hit ]

- Valores atuais no meu servidor - 
Skill rate: 1x (config.lua)
Multipliers: 1.0
Baseskill: 4000


vocation.cpp  (baseskill)

skillbase.png.03041a861f6d360d7f07621c19356e9d.png

vocation.xml (multipliers)
multipliers.thumb.png.ee4e4318ee5b7fedaa1c4ab403dc92c8.png


Se ainda estiver com dúvidas pode me perguntar.
Perdão a demora para responder. 
C ya!

 

 

Vlw tendi agora

Link para o post
Compartilhar em outros sites
  • 1 month later...
Em 30/11/2020 em 16:20, Yamili disse:

 

@BangxD
Quando treinamos uma skill
(fist, axe, sword...) os níveis mais baixos dela (do nível 1 ao 2, 3, 4, 5) sempre é muito fácil de upar.
Mesmo com
skill rate em 1x e o multiplier do vocations em 1.0 ainda era "fácil" (rápido) demais para o que eu queria.
Exemplo para contexto (
Só para contexto)
Ao treinar a sword skill do
nível 0 ao 1, você demoraria alguns segundos para chegar ao nível 1 (Isso se não upar rapidamente do 0 ao 9,10,11 e tals).

Com essa alteração que eu fiz, para upar uma skill nos níveis mais baixos fica bem difícil (
depende do quanto de dificuldade você quer).
Na parte que eu editei no tópico também tem uma breve explicação minha.
Mas se tu não entendeu essa parte vou dar outros
exemplos abaixo.

- Fórmula - (da source)




(skillBase[skill] * std::pow(skillMultipliers[skill], (level - 11)));


- Valores de testes, o máximo que consegui dificultar sem alterar na source -
Com o skill rate (que você configura no config.lua) em 1x
Multipliers de sword (que você configura no vocations.xml) em 1.0
O baseskill (que é configurado na source, se não me falha a memória é em vocation.cpp) em 50
(level 11) como padrão


! Com a sword skill no nível 1 !
A cada 1 hit que eu dou em um monstro/player com uma sword, eu vou upar 2% da barra de sword skill.

Então ao alterar o baseskill de 50 para -> 100 
A cada 1 hit que eu dou em um monstro/player com uma sword, eu vou upar 1% (Ou 1,5%) da barra de sword skill. 


Ou seja, alterando o baseskill eu consigo dificultar para upar a skill em níveis baixos.

A cada +50 de skill base = [ -0,5% para upar a skill ao dar um hit ]

- Valores atuais no meu servidor - 
Skill rate: 1x (config.lua)
Multipliers: 1.0
Baseskill: 4000


vocation.cpp  (baseskill)

skillbase.png.03041a861f6d360d7f07621c19356e9d.png

vocation.xml (multipliers)
multipliers.thumb.png.ee4e4318ee5b7fedaa1c4ab403dc92c8.png


Se ainda estiver com dúvidas pode me perguntar.
Perdão a demora para responder. 
C ya!

 

 

tem como fazer um script para ter total acesso(facilmente) por stage no up da skills? TFS 0.4. Outra coisa que não entendi, vc apenas alterou o skill base para 4000? eu fiz aqui no meu e o player da um dano absurdo... todos rate estão 1.0

(skillBase[skill] * std::pow(skillMultipliers[skill], (level - 11)));
Editado por XGaduX (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 3 months later...

Não entendo muito de skill e estou tentando montar um server offline pra jogar com meus irmãos, e estou tendo um problema com a skill de distance, será que alguém saberia me ajudar?

 

Deixei meu personagem nos treiners durante a noite toda (paladino) e agora ele está com 31 de distance e 45 de shielding, por algum motivo o dsitance está precisando de quantidades estratoféricas de skill pra poder upar.

<skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.5" shielding="1.2" fishing="1.1" experience="1.0"/>

 

Tentei aumentar o rate de ganho de skill mas continua sendo extremamente demorado para upar, será que tenho algum problema no meu source?



 

    skillBase[SKILL_SHIELD] = 100;
    skillBase[SKILL_DIST] = 30;
    skillBase[SKILL_FISH] = 20;
    for(int32_t i = SKILL_FIST; i < SKILL_DIST; ++i)
        skillBase[i] = 50;

 

            if(readXMLFloat(configNode, "distance", floatValue) || readXMLFloat(configNode, "dist", floatValue))
                voc->setSkillMultiplier(SKILL_DIST, floatValue);

            if(readXMLInteger(configNode, "distanceBase", intValue) || readXMLInteger(configNode, "distBase", intValue))
                voc->setSkillBase(SKILL_DIST, intValue);

Agradeço desde já.

Link para o post
Compartilhar em outros sites
17 horas atrás, ashteroth disse:

Não entendo muito de skill e estou tentando montar um server offline pra jogar com meus irmãos, e estou tendo um problema com a skill de distance, será que alguém saberia me ajudar?

 

Deixei meu personagem nos treiners durante a noite toda (paladino) e agora ele está com 31 de distance e 45 de shielding, por algum motivo o dsitance está precisando de quantidades estratoféricas de skill pra poder upar.

<skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.5" shielding="1.2" fishing="1.1" experience="1.0"/>

 

Tentei aumentar o rate de ganho de skill mas continua sendo extremamente demorado para upar, será que tenho algum problema no meu source?



 

    skillBase[SKILL_SHIELD] = 100;
    skillBase[SKILL_DIST] = 30;
    skillBase[SKILL_FISH] = 20;
    for(int32_t i = SKILL_FIST; i < SKILL_DIST; ++i)
        skillBase[i] = 50;

 

            if(readXMLFloat(configNode, "distance", floatValue) || readXMLFloat(configNode, "dist", floatValue))
                voc->setSkillMultiplier(SKILL_DIST, floatValue);

            if(readXMLInteger(configNode, "distanceBase", intValue) || readXMLInteger(configNode, "distBase", intValue))
                voc->setSkillBase(SKILL_DIST, intValue);

Agradeço desde já.


Olha eu também não entendo muito, but, pelo que você mostrou ali o multiplier do distance está 1.5.
Eu sei que alguns servidores quanto maior o multiplier, mais difícil fica de upar (no meu servidor é o contrario).
Então testa abaixar ou aumentar o multiplier do distance até você ver uma diferença.
Se precisar de mais ajuda, crie outro tópico específico para o seu problema ou me manda teu discord no PV que eu tento te ajudar ^^

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo