Ir para conteúdo
  • Cadastre-se

(Resolvido)Spell por %


Ir para solução Resolvido por Vodkart,

Posts Recomendados

Alguém da um help aqui. Poderia por gentileza mudar essa spell para ao invés de remover a quantidade exata de skills como está no script, remover por %. Por exemplo, ao invés de remover 70 de skills exatos, ela removeria 70% dos skills totais do player.

 

Ex: O player tem skills 500 - Com o script atual ele perderia 70 pontos de skills, ficando com 430.

Ex: O player tem skills 500 - Com o script por porcentagem, ele perderia 70% dos 500, ficando com 350.

 

Segue o script:

local combat = createCombatObject() 
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_YELLOW_RINGS)


local condition = createConditionObject(CONDITION_ATTRIBUTES) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 8000)
setConditionParam(condition, CONDITION_PARAM_SKILL_FIST, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, -70)
setCombatCondition(combat, condition) 

arr = {
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
}

local area = createCombatArea(arr)
setCombatArea(combat, area)

function onCastSpell(creature, var)
    return doCombat(creature, combat, var)
end

 

 

 

Editado por Rogex Joyz (veja o histórico de edições)

                                                                                                               destinyshield.gif.9f031b59b026058f32a1c50da92ebe2a.gif  mídias sociais  destinyshield.gif.02fca81ab0615e050b2bcefd8a73a2e8.gif

                                                                                                                            talk to me              

                                                                                                                               vídeos           

                                                                                             

                                                                                                            LOGONORMAL.png.815b40b04ec583be88d8a1e2626fe430.png

                                                                                                           

                               

Link para o post
Compartilhar em outros sites

tenta usar algumas dessas conditions:

 

CONDITION_PARAM_STAT_MAXHEALTHPERCENT = 31
CONDITION_PARAM_STAT_MAXMANAPERCENT = 32
CONDITION_PARAM_STAT_SOULPERCENT = 33
CONDITION_PARAM_STAT_MAGICLEVELPERCENT = 34
CONDITION_PARAM_SKILL_MELEEPERCENT = 35
CONDITION_PARAM_SKILL_FISTPERCENT = 36
CONDITION_PARAM_SKILL_CLUBPERCENT = 37
CONDITION_PARAM_SKILL_SWORDPERCENT = 38
CONDITION_PARAM_SKILL_AXEPERCENT = 39
CONDITION_PARAM_SKILL_DISTANCEPERCENT = 40
CONDITION_PARAM_SKILL_SHIELDPERCENT = 41
CONDITION_PARAM_SKILL_FISHINGPERCENT = 42

 

 

ficando assim:

 

 

local condition = createConditionObject(CONDITION_ATTRIBUTES) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 8000)
setConditionParam(condition, CONDITION_PARAM_SKILL_FISTPERCENT, -170)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXEPERCENT, -170)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORDPERCENT, -170)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUBPERCENT, -170)
setCombatCondition(combat, condition) 

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

Parece não surtir efeito algum, muito menos erro na distro. Ocorre como se a magia não afetasse o player de nenhuma forma. Vou deixar em spoiler o modo como deixei a spell.

Spoiler

local combat = createCombatObject() 
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_YELLOW_RINGS)


local condition = createConditionObject(CONDITION_ATTRIBUTES) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 8000)
setConditionParam(condition, CONDITION_PARAM_SKILL_FISTPERCENT, -170)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXEPERCENT, -170)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORDPERCENT, -170)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUBPERCENT, -170)
setCombatCondition(combat, condition) 

arr = {
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
}

local area = createCombatArea(arr)
setCombatArea(combat, area)

function onCastSpell(creature, var)
    return doCombat(creature, combat, var)
end

 

                                                                                                               destinyshield.gif.9f031b59b026058f32a1c50da92ebe2a.gif  mídias sociais  destinyshield.gif.02fca81ab0615e050b2bcefd8a73a2e8.gif

                                                                                                                            talk to me              

                                                                                                                               vídeos           

                                                                                             

                                                                                                            LOGONORMAL.png.815b40b04ec583be88d8a1e2626fe430.png

                                                                                                           

                               

Link para o post
Compartilhar em outros sites
  • Moderador
local a = 900

print(a/100*70)

retorno: 910.0 (1300%x70 = 910)

 

local a = getPlayerSkillLevel(cid, 1)

local b = 100

local c = 70

print(a/b*c)

dá até para fazer uma função mais bonita e colocar na própria lib em outros casos como este, segue:

 

function mathPercent(number, percent)
	if (not number or not percent) then return; end
	local percentage = 100
	return number/percentage*percent
end

usando no script:

mathPercent(getplayerskill)

 

Link para o post
Compartilhar em outros sites

Usando essa função na lib, o script da spell ficaria assim?

 

setConditionParam(condition, mathPercent(getplayerskill), -170)
Editado por Rogex Joyz (veja o histórico de edições)

                                                                                                               destinyshield.gif.9f031b59b026058f32a1c50da92ebe2a.gif  mídias sociais  destinyshield.gif.02fca81ab0615e050b2bcefd8a73a2e8.gif

                                                                                                                            talk to me              

                                                                                                                               vídeos           

                                                                                             

                                                                                                            LOGONORMAL.png.815b40b04ec583be88d8a1e2626fe430.png

                                                                                                           

                               

Link para o post
Compartilhar em outros sites
  • Moderador
18 minutos atrás, Rogex Joyz disse:

Usando essa função na lib, o script da spell ficaria assim?

 


setConditionParam(condition, mathPercent(getplayerskill), -170)

quase, mathPercent(getPlayerSkill(cid, skill), 70)

nesse caso, ele pegaria 70% da skill

Link para o post
Compartilhar em outros sites

A spell ficou: 

Spoiler

local condition = createConditionObject(CONDITION_ATTRIBUTES) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 8000)
setConditionParam(condition, mathPercent(getPlayerSkill(cid, fist), 70)
setConditionParam(condition, mathPercent(getPlayerSkill(cid, club), 70)
setConditionParam(condition, mathPercent(getPlayerSkill(cid, axe), 70)
setConditionParam(condition, mathPercent(getPlayerSkill(cid, sword), 70)
setCombatCondition(combat, condition)

O erro na distro: 

Spoiler

>>> Loading spells... [Error - LuaInterface::loadFile] data/spells/scripts/monster/roshamuul/feversleep skill reducer.lua:8: ')' expected (to close '(' at line 7) near 'setConditionParam'
[Error - Event::checkScript] Cannot load script (data/spells/scripts/monster/roshamuul/feversleep skill reducer.lua)
data/spells/scripts/monster/roshamuul/feversleep skill reducer.lua:8: ')' expected (to close '(' at line 7) near 'setConditionParam'
(done).
 

 

Não ta fechando o "(", mas não sei como por então k

                                                                                                               destinyshield.gif.9f031b59b026058f32a1c50da92ebe2a.gif  mídias sociais  destinyshield.gif.02fca81ab0615e050b2bcefd8a73a2e8.gif

                                                                                                                            talk to me              

                                                                                                                               vídeos           

                                                                                             

                                                                                                            LOGONORMAL.png.815b40b04ec583be88d8a1e2626fe430.png

                                                                                                           

                               

Link para o post
Compartilhar em outros sites
  • Moderador
4 minutos atrás, Rogex Joyz disse:

A spell ficou: 

  Ocultar conteúdo

local condition = createConditionObject(CONDITION_ATTRIBUTES) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 8000)
setConditionParam(condition, mathPercent(getPlayerSkill(cid, fist), 70)
setConditionParam(condition, mathPercent(getPlayerSkill(cid, club), 70)
setConditionParam(condition, mathPercent(getPlayerSkill(cid, axe), 70)
setConditionParam(condition, mathPercent(getPlayerSkill(cid, sword), 70)
setCombatCondition(combat, condition)

O erro na distro: 

  Mostrar conteúdo oculto

>>> Loading spells... [Error - LuaInterface::loadFile] data/spells/scripts/monster/roshamuul/feversleep skill reducer.lua:8: ')' expected (to close '(' at line 7) near 'setConditionParam'
[Error - Event::checkScript] Cannot load script (data/spells/scripts/monster/roshamuul/feversleep skill reducer.lua)
data/spells/scripts/monster/roshamuul/feversleep skill reducer.lua:8: ')' expected (to close '(' at line 7) near 'setConditionParam'
(done).
 

 

Não ta fechando o "(", mas não sei como por então k

setConditionParam(condition, mathPercent(getPlayerSkill(cid, FIST%$), 70))

 

voce tem que alterar a parte FIST%& pelo id da skill, vc pode verificar ele em constants, na pasta libs

 

se não conseguir quando tiver pelo pc respondo ao topico

Link para o post
Compartilhar em outros sites
Spoiler

[Error - Spell Interface]
data/spells/scripts/monster/roshamuul/feversleep skill reducer.lua
Description:
(luaGetPlayerSkillLevel) Player not found
 

 

Coloquei os ids, mas o script não acha o Player

                                                                                                               destinyshield.gif.9f031b59b026058f32a1c50da92ebe2a.gif  mídias sociais  destinyshield.gif.02fca81ab0615e050b2bcefd8a73a2e8.gif

                                                                                                                            talk to me              

                                                                                                                               vídeos           

                                                                                             

                                                                                                            LOGONORMAL.png.815b40b04ec583be88d8a1e2626fe430.png

                                                                                                           

                               

Link para o post
Compartilhar em outros sites
  • Moderador
1 hora atrás, Rogex Joyz disse:
  Ocultar conteúdo

[Error - Spell Interface]
data/spells/scripts/monster/roshamuul/feversleep skill reducer.lua
Description:
(luaGetPlayerSkillLevel) Player not found
 

 

Coloquei os ids, mas o script não acha o Player

caramba, nao tinha sacado que a gente taria fora do escopo da função, dá para gente tentar fazer de uma forma que não seja por condition, ou substituir a requisição que fazemos sobre a skilllevel do player para um numero fixo, o vodkart deve ter outra sacada também

Link para o post
Compartilhar em outros sites

Eu acho estranho o CONDITION_PARAM_SKILL_CLUBPERCENT não funcionar, porque está na lib. Ta estranho.

Editado por Rogex Joyz (veja o histórico de edições)

                                                                                                               destinyshield.gif.9f031b59b026058f32a1c50da92ebe2a.gif  mídias sociais  destinyshield.gif.02fca81ab0615e050b2bcefd8a73a2e8.gif

                                                                                                                            talk to me              

                                                                                                                               vídeos           

                                                                                             

                                                                                                            LOGONORMAL.png.815b40b04ec583be88d8a1e2626fe430.png

                                                                                                           

                               

Link para o post
Compartilhar em outros sites
  • Solução
19 horas atrás, Rogex Joyz disse:

Eu acho estranho o CONDITION_PARAM_SKILL_CLUBPERCENT não funcionar, porque está na lib. Ta estranho.

tenta assim:

 

local condition = createConditionObject(CONDITION_ATTRIBUTES) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 8000)
setConditionParam(condition, CONDITION_PARAM_SKILL_FISTPERCENT, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXEPERCENT, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORDPERCENT, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUBPERCENT, -70)
setCombatCondition(combat, condition) 

 

ou assim:

 

local condition = createConditionObject(CONDITION_ATTRIBUTES) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 8000)
setConditionParam(condition, CONDITION_PARAM_SKILL_FISTPERCENT, 70)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXEPERCENT, 70)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORDPERCENT, 70)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUBPERCENT, 70)
setCombatCondition(combat, condition) 

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
2 horas atrás, Vodkart disse:

tenta assim:

 


local condition = createConditionObject(CONDITION_ATTRIBUTES) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 8000)
setConditionParam(condition, CONDITION_PARAM_SKILL_FISTPERCENT, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXEPERCENT, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORDPERCENT, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUBPERCENT, -70)
setCombatCondition(combat, condition) 

 

ou assim:

 


local condition = createConditionObject(CONDITION_ATTRIBUTES) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 8000)
setConditionParam(condition, CONDITION_PARAM_SKILL_FISTPERCENT, 70)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXEPERCENT, 70)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORDPERCENT, 70)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUBPERCENT, 70)
setCombatCondition(combat, condition) 

 

Obrigado, a segunda opção funcionou. ? 

                                                                                                               destinyshield.gif.9f031b59b026058f32a1c50da92ebe2a.gif  mídias sociais  destinyshield.gif.02fca81ab0615e050b2bcefd8a73a2e8.gif

                                                                                                                            talk to me              

                                                                                                                               vídeos           

                                                                                             

                                                                                                            LOGONORMAL.png.815b40b04ec583be88d8a1e2626fe430.png

                                                                                                           

                               

Link para o post
Compartilhar em outros sites

Tem com fazer com que essa spell funcione assim? tipo ela como está reduz por %, então daria para transformar ela em coletar X% dos player no campo da magia e fazer com que o player que usou a habilidade ficasse com esses X% no status por Y segundos?

3 player X foram atingidos pela spell, logo o player Y que usou a spell vai fica com Fist, Axe, Club Percent desses player por alguns segundos e eles serão negativados X% por segundos? 

Link para o post
Compartilhar em outros sites
  • 3 months later...
Em 12/09/2021 em 20:41, Vodkart disse:

tenta assim:

 


local condition = createConditionObject(CONDITION_ATTRIBUTES) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 8000)
setConditionParam(condition, CONDITION_PARAM_SKILL_FISTPERCENT, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXEPERCENT, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORDPERCENT, -70)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUBPERCENT, -70)
setCombatCondition(combat, condition) 

 

ou assim:

 


local condition = createConditionObject(CONDITION_ATTRIBUTES) 
setConditionParam(condition, CONDITION_PARAM_TICKS, 8000)
setConditionParam(condition, CONDITION_PARAM_SKILL_FISTPERCENT, 70)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXEPERCENT, 70)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORDPERCENT, 70)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUBPERCENT, 70)
setCombatCondition(combat, condition) 

 

Opa amigo, desculpa reviver o tópico, mas gostaria da sua ajuda o script é funcional no meu servidor, porém ao utilizar qualquer buff que conceda skills o script não funciona

Link para o post
Compartilhar em outros sites
3 minutos atrás, darlingtwoo disse:

Opa amigo, desculpa reviver o tópico, mas gostaria da sua ajuda o script é funcional no meu servidor, porém ao utilizar qualquer buff que conceda skills o script não funciona

tambem estou com esse problema.

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo