Ir para conteúdo

Featured Replies

Postado

Estava procurando um script e achei o script do usuario @KotZletY no tópico linkado abaixo


E ao tentar adicionar em uma magia do meu servidor, ela da erro, ela diz que realmente precisa do item e quando você coloca, ele não funciona.

segue a spell testada:
script.lua
 

function onGetFormulaValues(cid, level, maglevel)
	local levelTotal = level
	local min = (levelTotal * 4) / 5 + (maglevel * 25) / 2
	local max = (levelTotal * 5) / 5 + (maglevel * 27) / 2
	return -min, -max
end

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 33)
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 46)
setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local function onCastSpell1(parameters)
if not isPlayer(parameters.cid) then return true end
doCombat(parameters.cid, parameters.combat1, parameters.var)
end

function onCastSpell(cid, var)
local parameters = {cid = cid, var = var, combat1 = combat1}

for k = 1, 10 do
	addEvent(function()
		if isCreature(cid) then
			addEvent(onCastSpell1, 1, parameters)
		end
	end, 1 + ((k-1) * 300))
end
return true
end

 

spells.xml

	<instant name="Super Hell Granade" words="super hell granade" needtarget="1" direction="1" lvl="200" maglv="60" mana="7000" soul="0" exhaustion="1000" prem="0" enabled="1" event="script" value="super hell granade.lua"><vocation id="0"/>
		<vocation id="235"/>
		<vocation id="240"/>
		<vocation id="241"/>
		<vocation id="477"/>
	</instant>



Gostaria que me explicassem exatamente o que fizeram no script, para que eu possa aprender! ♥ @Vodkart @So volto tarde

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

  • Respostas 23
  • Visualizações 1.4k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Precisa fazer a verificação se o jogador possui tal item, para isso, basta utilizar a função getPlayerItemCount(cid, itemid)   function onGetFormulaValues(cid, level, maglevel) local levelT

  • você colocou duas onCastSpell(cid, var), e uma delas não está fechada (que é a primeira), pode deletar ela, e manter apenas a de baixo daí só copiar o que tem dentro da primeira onCastSpell e jog

  • agora o seu primeiro if tem dois "end", só precisa de um

Postado

Precisa fazer a verificação se o jogador possui tal item, para isso, basta utilizar a função getPlayerItemCount(cid, itemid)

 

function onGetFormulaValues(cid, level, maglevel)
  local levelTotal = level
  local min = (levelTotal * 4) / 5 + (maglevel * 25) / 2
  local max = (levelTotal * 5) / 5 + (maglevel * 27) / 2
  return -min, -max
end

local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 33)
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 46)
setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local function onCastSpell1(parameters)
  if not isPlayer(parameters.cid) then return true end
  doCombat(parameters.cid, parameters.combat1, parameters.var)
end

local config = {
  requiredItem = {itemid = 2675, count = 1} -- Coloque o id do item necessário em: 'itemid = aqui', e a quantidade necessária do item em: 'count = aqui'
}

function onCastSpell(cid, var)
  local parameters = {cid = cid, var = var, combat1 = combat1}
  local itemName = getItemNameById(config.requiredItem.itemid)

  if getPlayerItemCount(cid, config.requiredItem.itemid) < config.requiredItem.count then
    if config.requiredItem.count == 1 then
      doPlayerSendCancel(cid, string.format("You need %d %s to use this spell.", config.requiredItem.count, itemName))
    else
      doPlayerSendCancel(cid, string.format("You need %d %ss to use this spell.", config.requiredItem.count, itemName))
    end
    return
  end

  for k = 1, 10 do
    addEvent(function()
        if isCreature(cid) then
          addEvent(onCastSpell1, 1, parameters)
        end
      end, 1 + ((k-1) * 300))
  end
  return true
end

 

Postado
  • Autor

@Kyle Bellini

O sript funcionou perfeitamente, mas estou com duvidas, tentei adicionar nesse script abaixo, mas da erro nas funções anteriores, conseguiria adicionar e me explicar detalhadamente a onde você adicionou a função e a onde finalizou elas?

 

function onCastSpell(cid, var) 
ppos = getPlayerPosition(cid) 
if isPlayer(cid) then
if getPlayerMana(cid) > 10 then
doPlayerAddSpentMana(cid, getPlayerMana(cid))
doPlayerAddMana(cid,-getPlayerMana(cid))
doSendMagicEffect(ppos,58) 
return true
end
end
end


alterações que fiz e os erros na distro

[Error - LuaInterface::loadFile] data/spells/scripts/power down.lua:23: 'end' expected (to close 'function' at line 1) near '<eof>'
[Error - Event::checkScript] Cannot load script (data/spells/scripts/power down.lua)
data/spells/scripts/power down.lua:23: 'end' expected (to close 'function' at line 1) near '<eof>'
>>> Loading custommonsters.xml ... (done).
>>> Loading customspells.xml ... (done).
>>> Loading firstitems.xml ... (done).
>>> Loading guildWarSystem.xml ... (done).
>>> Loading highscorebook.xml ... (done).
>>> Loading Ultimate Survival.xml ... (done).
>>> (0) mods were disabled.
[Error - LuaInterface::loadFile] data/spells/scripts/power down.lua:23: 'end' expected (to close 'function' at line 12) near '<eof>'
[Error - Event::checkScript] Cannot load script (data/spells/scripts/power down.lua)
data/spells/scripts/power down.lua:23: 'end' expected (to close 'function' at line 12) near '<eof>'
>>> Loading custommonsters.xml ... (done).
>>> Loading customspells.xml ... (done).
>>> Loading firstitems.xml ... (done).
>>> Loading guildWarSystem.xml ... (done).
>>> Loading highscorebook.xml ... (done).
>>> Loading Ultimate Survival.xml ... (done).
>>> (0) mods were disabled.
[Error - LuaInterface::loadFile] data/spells/scripts/power down.lua:9: 'end' expected (to close 'if' at line 4) near 'function'
[Error - Event::checkScript] Cannot load script (data/spells/scripts/power down.lua)
data/spells/scripts/power down.lua:9: 'end' expected (to close 'if' at line 4) near 'function'

 

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

Postado
  • Autor
  Em 27/01/2022 em 19:34, Kyle Bellini disse:

Envia aqui quais foram as alterações que você fez, que fica melhor de explicar/ver o que errou no script

foi apesar instrudução do código, alguns testes foram:
 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 30000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 10)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, 25)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, 25)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, 25)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, 25)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, 25)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setCombatCondition(combat, condition)

local config = {
  requiredItem = {itemid = 2675, count = 1} -- Coloque o id do item necessário em: 'itemid = aqui', e a quantidade necessária do item em: 'count = aqui'
}

function onCastSpell(cid, var)
  local parameters = {cid = cid, var = var, combat1 = combat1}
  local itemName = getItemNameById(config.requiredItem.itemid)

  if getPlayerItemCount(cid, config.requiredItem.itemid) < config.requiredItem.count then
    if config.requiredItem.count == 1 then
      doPlayerSendCancel(cid, string.format("You need %d %s to use this spell.", config.requiredItem.count, itemName))
    else
      doPlayerSendCancel(cid, string.format("You need %d %ss to use this spell.", config.requiredItem.count, itemName))
    end
    return
  end

function onCastSpell(cid, var)
	if exhaustion.check(cid, 13101) == TRUE then
		doPlayerSendCancel(cid, "Podera usar novamente dentro de 30 segundos.")
		doSendMagicEffect(getCreaturePosition(cid), 2)
		return false
	end
	for k = 1, 100 do
		addEvent(function()
			if isCreature(cid) then
				local pos1 = {x = getPlayerPosition(cid).x + 0, y = getPlayerPosition(cid).y + 0, z = getPlayerPosition(cid).z}
				doSendMagicEffect(pos1, 112)
			end
		end, 1 + ((k-1) * 300))
	end
	exhaustion.set(cid, 13101, 30.0)
	return doCombat(cid, combat, var)
end



provavelmente estrou introduzindo a função no local errado ou não fechando as funções com os ends, consegue me explicar de forma detalhada de como introduzir a função sem estragar o que está ativo?



 


consegue me explicar quais ends e return devem ser utilizados para fechar as funções?

Editado por What Member (veja o histórico de edições)

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo