What's new

-LUA & XML Mana Heal

sempele

Active User
Joined
Nov 19, 2010
Messages
107
Reaction score
3
Witam wszystkich. Nie mogę sobie poradzić z tym, że po użyciu obojętnie jakiego mana potiona wyświetlała by się ilość za jaką się leczymy tak jak w przypadku heal potiona. Używam TFS 1.2 pod 8.6 klienta jeżeli ktoś mógłby pomóc byłbym wdzięczny !
 

Kuzyn

Dziad.
Staff member
Joined
May 3, 2008
Messages
1,934
Reaction score
165
Może spróbuj kod Infernum'a z otland, ale najpierw zrób kopię swojego pliku:
Code:
data>actions>scripts>other>potions.lua
Code:
local ultimateHealthPot = 8473
local greatHealthPot = 7591
local greatManaPot = 7590
local greatSpiritPot = 8472
local strongHealthPot = 7588
local strongManaPot = 7589
local healthPot = 7618
local manaPot = 7620
local smallHealthPot = 8704
local antidotePot = 8474
local greatEmptyPot = 7635
local strongEmptyPot = 7634
local emptyPot = 7636

local antidote = Combat()
antidote:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
antidote:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
antidote:setParameter(COMBAT_PARAM_TARGETCASTERORT OPMOST, true)
antidote:setParameter(COMBAT_PARAM_AGGRESSIVE, false)
antidote:setParameter(COMBAT_PARAM_DISPEL, CONDITION_POISON)

local exhaust = Condition(CONDITION_EXHAUST_HEAL)
exhaust:setParameter(CONDITION_PARAM_TICKS, (configManager.getNumber(configKeys.EX_ACTIONS_DEL AY_INTERVAL) +650))
-- 1000 - 100 due to exact condition timing. -100 doesn't hurt us, and players don't have reminding ~50ms exhaustion.

local function sendManaNumbers(player, mana)
player:sendTextMessage(MESSAGE_HEALED, ("You gained %d mana."):format(mana), player:getPosition(), mana, TEXTCOLOR_BLUE)
local name = player:getName()
for _, spectator in ipairs(Game.getSpectators(player:getPosition(), false, true)) do
if spectator ~= player then
spectator:sendTextMessage(MESSAGE_HEALED, ("%s gained %d mana."):format(name, mana), player:getPosition(), mana, TEXTCOLOR_BLUE)
end
end
end

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
if target == nil or not target:isPlayer() then
return true
end

if player:getCondition(CONDITION_EXHAUST_HEAL) then
player:sendTextMessage(MESSAGE_STATUS_SMALL, Game.getReturnMessage(RETURNVALUE_YOUAREEXHAUSTED) )
return true
end

local itemId = item:getId()
if itemId == antidotePot then
if not antidote:execute(target, numberToVariant(target:getId())) then
return false
end

player:addCondition(exhaust)
target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
elseif itemId == smallHealthPot then
if not doTargetCombatHealth(0, target, COMBAT_HEALING, 500, 500, CONST_ME_MAGIC_BLUE) then
return false
end

player:addCondition(exhaust)
target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
elseif itemId == healthPot then
if not doTargetCombatHealth(0, target, COMBAT_HEALING, 2000, 2700, CONST_ME_MAGIC_BLUE) then
return false
end

player:addCondition(exhaust)
target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
elseif itemId == manaPot then
local mana = math.random(2000, 2700)
if not doTargetCombatMana(0, target, mana, mana, CONST_ME_MAGIC_BLUE) then
return false
end
sendManaNumbers(player, mana)
player:addCondition(exhaust)
target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
elseif itemId == strongHealthPot then
if (not isInArray({1,2,3,4,5,6,7,8}, target:getVocation():getId()) or target:getLevel() < 1000) and not getPlayerFlagValue(player, PlayerFlag_IgnoreSpellCheck) then
player:say("Para level 1000+.", TALKTYPE_MONSTER_SAY)
return true
end

if not doTargetCombatHealth(0, target, COMBAT_HEALING, 7400, 7600, CONST_ME_MAGIC_BLUE) then
return false
end

player:addCondition(exhaust)
target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
elseif itemId == strongManaPot then
if (not isInArray({1,2,3,4,5,6,7,8}, target:getVocation():getId()) or target:getLevel() < 1000) and not getPlayerFlagValue(player, PlayerFlag_IgnoreSpellCheck) then
player:say("Para level 1000+.", TALKTYPE_MONSTER_SAY)
return true
end
local mana = math.random(7400, 7600)
if not doTargetCombatMana(0, target, mana, mana, CONST_ME_MAGIC_BLUE) then
return false
end
sendManaNumbers(player, mana)
player:addCondition(exhaust)
target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
elseif itemId == greatSpiritPot then
if (not isInArray({1,2,3,4,5,6,7,8}, target:getVocation():getId()) or target:getLevel() < 41000) and not getPlayerFlagValue(player, PlayerFlag_IgnoreSpellCheck) then
player:say("Para level 41000+.", TALKTYPE_MONSTER_SAY)
return true
end
local mana = math.random(33000, 35000)
if not doTargetCombatHealth(0, target, COMBAT_HEALING, 33000, 35000, CONST_ME_MAGIC_BLUE) or not doTargetCombatMana(0, target, mana, mana, CONST_ME_MAGIC_BLUE) then
return false
end
sendManaNumbers(player, mana)
player:addCondition(exhaust)
target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
elseif itemId == greatHealthPot then
if (not isInArray({1,2,3,4,5,6,7,8}, target:getVocation():getId()) or target:getLevel() < 6000) and not getPlayerFlagValue(player, PlayerFlag_IgnoreSpellCheck) then
player:say("Para level 6000+.", TALKTYPE_MONSTER_SAY)
return true
end

if not doTargetCombatHealth(0, target, COMBAT_HEALING, 13000, 15000, CONST_ME_MAGIC_BLUE) then
return false
end

player:addCondition(exhaust)
target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
elseif itemId == greatManaPot then
if (not isInArray({1,2,3,4,5,6,7,8}, target:getVocation():getId()) or target:getLevel() < 6000) and not getPlayerFlagValue(player, PlayerFlag_IgnoreSpellCheck) then
player:say("Para level 6000+.", TALKTYPE_MONSTER_SAY)
return true
end
local mana = math.random(13000, 15000)
if not doTargetCombatMana(0, target, mana, mana, CONST_ME_MAGIC_BLUE) then
return false
end
sendManaNumbers(player, mana)
player:addCondition(exhaust)
target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
elseif itemId == ultimateHealthPot then
if (not isInArray({1,2,3,4,5,6,7,8}, target:getVocation():getId()) or target:getLevel() < 41000) and not getPlayerFlagValue(player, PlayerFlag_IgnoreSpellCheck) then
player:say("Para level 41000+.", TALKTYPE_MONSTER_SAY)
return true
end

if not doTargetCombatHealth(0, target, COMBAT_HEALING, 33000, 35000, CONST_ME_MAGIC_BLUE) then
return false
end

player:addCondition(exhaust)
target:say("Aaaah...", TALKTYPE_MONSTER_SAY)
end
return true
end
 

sempele

Active User
Joined
Nov 19, 2010
Messages
107
Reaction score
3
Niestety nie działa. Nadal nie pokazuje ilości za jaką się manasujemy
 

Nush

Advanced User
Joined
May 10, 2012
Messages
381
Reaction score
11
game.cpp

funkcja
Code:
combatChangeMana

pod
Code:
realManaChange = targetPlayer->getMana() - realManaChange;

wklejasz
Code:
if (realManaChange > 0) {
            const Position& targetPo s = target->getPosition();
            std::ostringstream strMan aChange;
            strManaChange << realMan aChange;
            addAnimatedText(strManaCha nge.str(), targetPos, TEXTCOLOR_PURPLE);
        }
 
Top