• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Heal spell

Erexo

Kage
Premium User
Joined
Mar 27, 2010
Messages
741
Solutions
5
Reaction score
193
Location
Pr0land
GitHub
Erexo
Witam,
mam problem z techniką która leczy [lel].
Cały problem polega na tym, że gdy ktoś stoi na tym samym sqm co gracz używający ów techniki, także dostaje hp.
Spell jest odwzorowany na tych z TFSa, więc nie mam gdzie szukać pomocy.
Myślałem nad zmianą `sposobu`, by spell nie leczył na kratce, lecz dosłownie samego gracza, lecz nie znam się na tym, dla tego kieruję sprawę do Was.

oto spell:
Lua:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_HEALING)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 96)
setCombatParam(combat1, COMBAT_PARAM_AGGRESSIVE, FALSE)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, 1.50, 0, 1.50, 0)

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_NODAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 64)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -1.5, 0, -1.6, 0)

arr1 = {
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 3, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}

arr2 = {
{0, 0, 0, 0, 0},
{0, 1, 0, 0, 0},
{0, 0, 2, 0, 0},
{0, 0, 0, 0, 0},
{0, 0, 0, 0, 0}
}

local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)

setCombatArea(combat1, area1)
setCombatArea(combat2, area2)


    local function onCastSpell1(parameters)
    doCombat(parameters.cid, combat1, parameters.var)
    end
    local function onCastSpell2(parameters)
    doCombat(parameters.cid, combat2, parameters.var)
    end

function onCastSpell(cid, var)
setPlayerStorageValue(cid, 85020, getPlayerStorageValue(cid, 85020) + 1)
if getPlayerStorageValue(cid, 85020) == 249 then
	doPlayerAddAchievement(cid, 53)
end
if getPlayerStorageValue(cid, 85020) == 4999 then
	doPlayerAddAchievement(cid, 54)
end
if getPlayerStorageValue(cid, 85020) == 24999 then
	doPlayerAddAchievement(cid, 55)
end

local parameters = { cid = cid, var = var}
if (getPlayerStorageValue(cid, 14) == 1) then
doPlayerSendCancel(cid, "You cannot use heal.")
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
else
addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell2, 0, parameters)
end
return TRUE
end
 
Nie rozumiem jaki to ma mieć sens, gdy zamiast 3 podstawię 2, efekt leczenia nie wykona się nigdzie.
Dla pewności i czystego sumienia sprawdziłem, i działa tak jak przypuszczałem, czyli nie działa w ogóle.
 
dokładnie tego szukam, lecz nie wiem jak to sprezentować w spell'u by zamiast obszaru zdefiniować konkretną osobę.

@EDIT:
Szukaj blisko a znajdziesz,

Lua:
setCombatArea(combat1, area1)
na
Lua:
setCombatArea(combat1, cid)

Dziękuję za pomoc.
 
Wróć, problem w dalszym ciągu istnieje.
Dalej leczy każdą osobę na kratce, czy ktoś mógłby na to zaradzić?

PS: BUMP
 
Back
Top