• 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!

Compiling Compiling, Cast

Joriku

Working in the mines, need something?
Joined
Jul 16, 2016
Messages
1,084
Solutions
15
Reaction score
379
Location
Sweden
YouTube
Joriku
location/desctop/klonera/vc14/x64/release/vc140.pdb is not the pdb theforgottenserver events.cpp file that was used when this precompiled header was created, recreate the precompiled header. and more..
any help woud be nice
10.98 TFS 1.2 windows 10 visual studio 2015 update 3
Compiling on Windows · otland/forgottenserver Wiki · GitHub
 
Solution
My new compiled, why is this happening?
c59f0cbccf5656371a040b5bd2f3768d.png

Wrong DLL files, 64bit exe = use 64bit DLLs, vice versa with 32.
Can you take an SS of the errors insted
In my experience compiling errors could come with 1000 other non related errors that are caused by that bug.
 
Could you take on of the last errors aswell, have you tried to clean the solution and recompiling?
Well, accully i havn't, right now i closed that window just to try to compile outher files, but do you know how i can compile, cast, walk thru players in safe zones and ultimate mana shows healing text with purple color?
//i will report if this doen't work so keep an eye out
 
Well, accully i havn't, right now i closed that window just to try to compile outher files, but do you know how i can compile, cast, walk thru players in safe zones and ultimate mana shows healing text with purple color?
//i will report if this doen't work so keep an eye out

Ultimate mana should be added to your potions.lua in your actions folder.
Cast, find the one you got, add the code and compile - you might have to update the code abit if your TFS is older / newer.
Walk through players same as cast, there are plenty of "tutorials" here on OTLand, just add the code and compile.
 
Ultimate mana should be added to your potions.lua in your actions folder.
Cast, find the one you got, add the code and compile - you might have to update the code abit if your TFS is older / newer.
Walk through players same as cast, there are plenty of "tutorials" here on OTLand, just add the code and compile.
Allright, but this with the potions.lua in actions can you help me with it, i've searched around and i got it work with red text and crach with purple, but the manas went unlimited same as health.
Potions.lua
[LUA]local config = {
-- strong health potion
[7588] = {health = {min = 250, max = 350}, vocations = {3, 4}, text = 'paladins and knights', level = 50, emptyId = 7634},
-- strong mana potion
[7589] = {mana = {min = 115, max = 185}, vocations = {1, 2, 3}, text = 'sorcerers, druids and paladins', level = 50, emptyId = 7634},
-- great mana potion
[7590] = {mana = {min = 150, max = 350}, vocations = {1, 2}, text = 'sorcerers and druids', level = 80, emptyId = 7635},
-- great health potion
[7591] = {health = {min = 425, max = 575}, vocations = {4}, text = 'knights', level = 80, emptyId = 7635},
-- health potion
[7618] = {health = {min = 125, max = 175}, emptyId = 7636},
-- mana potion
[7620] = {mana = {min = 75, max = 180}, emptyId = 7636},
-- great spirit potion
[8472] = {health = {min = 250, max = 350}, mana = {min = 150, max = 250}, vocations = {3}, text = 'paladins', level = 80, emptyId = 7635},
-- ultimate health potion
[8473] = {health = {min = 450, max = 600}, vocations = {4}, text = 'knights', level = 130, emptyId = 7635},

-- POT NOVOS

-- ultimate mana potion 26029
[26029] = {mana = {min = 300, max = 520}, vocations = {1, 2}, text = 'sorcerers and druids', level = 130, emptyId = 7635},

-- Supreme Health Potion 26031
[26031] = {health = {min = 650, max = 780}, vocations = {4}, text = 'knights', level = 200, emptyId = 7635},

-- Ultimate Spirit Potion 26030
[26030] = {health = {min = 400, max = 430}, mana = {min = 250, max = 350}, vocations = {3}, text = 'paladins', level = 130, emptyId = 7635},


-- antidote potion
[8474] = {antidote = true, emptyId = 7636},
-- small health potion
[8704] = {health = {min = 60, max = 85}, emptyId = 7636}
}

local antidote = Combat()
antidote:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
antidote:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
antidote:setParameter(COMBAT_PARAM_TARGETCASTERORTOPMOST, 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_DELAY_INTERVAL) - 100))
-- 1000 - 100 due to exact condition timing. -100 doesn't hurt us, and players don't have reminding ~50ms exhaustion.

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
local potion = config[item.itemid]
if not potion then
return true
end

if target.itemid ~= 1 or target.type ~= THING_TYPE_PLAYER then
return false
end

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

if potion.antidote and not antidote:execute(target, Variant(target.uid)) then
return false
end

if (potion.level and player:getLevel() < potion.level)
or (type(potion.vocations) == 'table' and not isInArray(potion.vocations, player:getVocation():getBase():getId()))
and not (player:getGroup():getId() >= 2) then
player:say(string.format('This potion can only be consumed by %s of level %d or higher.', potion.text, potion.level), TALKTYPE_MONSTER_SAY)
return true
end

if type(potion.health) == 'table' and not doTargetCombatHealth(0, target, COMBAT_HEALING, potion.health.min, potion.health.max, CONST_ME_MAGIC_BLUE) then
return false
end

if type(potion.mana) == 'table' and not doTargetCombatMana(0, target, potion.mana.min, potion.mana.max, CONST_ME_MAGIC_BLUE) then
return false
end

player:addAchievementProgress('Potion Addict', 100000)

player:addCondition(exhaust)
doCreatureSayWithRadius(target, 'Aaaah...', TALKTYPE_MONSTER_SAY, 2, 2)

local topParent = item:getTopParent()
if topParent.isItem and (not topParent:isItem() or topParent.itemid ~= 460) then
local parent = item:getParent()
if not parent:isTile() and (parent:addItem(potion.emptyId, 1) or topParent:addItem(potion.emptyId, 1)) then
item:remove(1)
return true
end
end

Game.createItem(potion.emptyId, 1, item:getPosition())
item:remove(1)
return true
end[/LUA]

Ultimate mana should be added to ur potions.lua in your actions folder.
Cast, find the one you got, add the code and compile - you might have to update the code abit if your TFS is older / newer.
Walk through players same as cast, there are plenty of "tutorials" here on OTLand, just add the code and compile.
It succeded, i want the client updated and now i need to fix the cast and walk thru, can you help me with the walk thru and where do i find the cast code?
 
Last edited by a moderator:
Allright, but this with the potions.lua in actions can you help me with it, i've searched around and i got it work with red text and crach with purple, but the manas went unlimited same as health.
Potions.lua
[LUA]local config = {
-- strong health potion
[7588] = {health = {min = 250, max = 350}, vocations = {3, 4}, text = 'paladins and knights', level = 50, emptyId = 7634},
-- strong mana potion
[7589] = {mana = {min = 115, max = 185}, vocations = {1, 2, 3}, text = 'sorcerers, druids and paladins', level = 50, emptyId = 7634},
-- great mana potion
[7590] = {mana = {min = 150, max = 350}, vocations = {1, 2}, text = 'sorcerers and druids', level = 80, emptyId = 7635},
-- great health potion
[7591] = {health = {min = 425, max = 575}, vocations = {4}, text = 'knights', level = 80, emptyId = 7635},
-- health potion
[7618] = {health = {min = 125, max = 175}, emptyId = 7636},
-- mana potion
[7620] = {mana = {min = 75, max = 180}, emptyId = 7636},
-- great spirit potion
[8472] = {health = {min = 250, max = 350}, mana = {min = 150, max = 250}, vocations = {3}, text = 'paladins', level = 80, emptyId = 7635},
-- ultimate health potion
[8473] = {health = {min = 450, max = 600}, vocations = {4}, text = 'knights', level = 130, emptyId = 7635},

-- POT NOVOS

-- ultimate mana potion 26029
[26029] = {mana = {min = 300, max = 520}, vocations = {1, 2}, text = 'sorcerers and druids', level = 130, emptyId = 7635},

-- Supreme Health Potion 26031
[26031] = {health = {min = 650, max = 780}, vocations = {4}, text = 'knights', level = 200, emptyId = 7635},

-- Ultimate Spirit Potion 26030
[26030] = {health = {min = 400, max = 430}, mana = {min = 250, max = 350}, vocations = {3}, text = 'paladins', level = 130, emptyId = 7635},


-- antidote potion
[8474] = {antidote = true, emptyId = 7636},
-- small health potion
[8704] = {health = {min = 60, max = 85}, emptyId = 7636}
}

local antidote = Combat()
antidote:setParameter(COMBAT_PARAM_TYPE, COMBAT_HEALING)
antidote:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
antidote:setParameter(COMBAT_PARAM_TARGETCASTERORTOPMOST, 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_DELAY_INTERVAL) - 100))
-- 1000 - 100 due to exact condition timing. -100 doesn't hurt us, and players don't have reminding ~50ms exhaustion.

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
local potion = config[item.itemid]
if not potion then
return true
end

if target.itemid ~= 1 or target.type ~= THING_TYPE_PLAYER then
return false
end

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

if potion.antidote and not antidote:execute(target, Variant(target.uid)) then
return false
end

if (potion.level and player:getLevel() < potion.level)
or (type(potion.vocations) == 'table' and not isInArray(potion.vocations, player:getVocation():getBase():getId()))
and not (player:getGroup():getId() >= 2) then
player:say(string.format('This potion can only be consumed by %s of level %d or higher.', potion.text, potion.level), TALKTYPE_MONSTER_SAY)
return true
end

if type(potion.health) == 'table' and not doTargetCombatHealth(0, target, COMBAT_HEALING, potion.health.min, potion.health.max, CONST_ME_MAGIC_BLUE) then
return false
end

if type(potion.mana) == 'table' and not doTargetCombatMana(0, target, potion.mana.min, potion.mana.max, CONST_ME_MAGIC_BLUE) then
return false
end

player:addAchievementProgress('Potion Addict', 100000)

player:addCondition(exhaust)
doCreatureSayWithRadius(target, 'Aaaah...', TALKTYPE_MONSTER_SAY, 2, 2)

local topParent = item:getTopParent()
if topParent.isItem and (not topParent:isItem() or topParent.itemid ~= 460) then
local parent = item:getParent()
if not parent:isTile() and (parent:addItem(potion.emptyId, 1) or topParent:addItem(potion.emptyId, 1)) then
item:remove(1)
return true
end
end

Game.createItem(potion.emptyId, 1, item:getPosition())
item:remove(1)
return true
end[/LUA]


It succeded, i want the client updated and now i need to fix the cast and walk thru, can you help me with the walk thru and where do i find the cast code?

Please don't double post :p
Also the code tags are code=lua now, not lua.

You need to add something in the table, lets say a boolean value then check if that is true, if it is send out an animated text.
 
Please don't double post :p
Also the code tags are code=lua now, not lua.

You need to add something in the table, lets say a boolean value then check if that is true, if it is send out an animated text.
Okay, and with the cast system? i mean the code i need to have, how can i find it?
 
Then you added it in the wrong place most likely, show the code you have insted of linking to what he said.
He sid remove theese and i did, i can walk thru, but everywhere
  1. if (!playerTile || !playerTile->hasFlag(TILESTATE_PROTECTIONZONE)) {
  2. return false;
  3. }
 
Back
Top