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

Item Charges Problem

multrayzor

New Member
Joined
Mar 17, 2014
Messages
58
Reaction score
2
So..im running tfs cryng damson 0.3.6 protocol 8.6, and just found a bug that i cant fix, if i have a stack of x potions, runes or whatever, when i use them, it use them all at once, not just one charge, even though i can separate them and use 1 by 1. Also the ice rapier is not breaking for some reason, here are some of the codes on those:

In item.xml:
Code:
<item id="2396" article="an" name="ice rapier">
     <attribute key="description" value="A deadly but fragile weapon." />
     <attribute key="weight" value="1500" />
     <attribute key="attack" value="60" />
     <attribute key="defense" value="1" />
     <attribute key="weaponType" value="sword" />
     <attribute key="elementIce" value="18" />
     <attribute key="charges" value="1" />
Code:
<item id="7590" article="a" name="great mana potion">
     <attribute key="weight" value="220" />
     <attribute key="description" value="This potion can only be consumed by sorcerers and druids of level 80 or higher." />
   </item>

In config.lua
Code:
worldType = "pvp"
   protectionLevel = 1
   pvpTileIgnoreLevelAndVocationProtection = true
   pzLocked = 60 * 1000
   huntingDuration = 60 * 1000
   criticalHitChance = 7
   criticalHitMultiplier = 1
   displayCriticalHitNotify = false
   removeWeaponAmmunition = true
   removeWeaponCharges = true
   removeRuneCharges = true
   whiteSkullTime = 15 * 60 * 1000
   noDamageToSameLookfeet = false
   showHealingDamage = false
   showHealingDamageForMonsters = false
   fieldOwnershipDuration = 5 * 1000
   stopAttackingAtExit = false
   oldConditionAccuracy = false
   loginProtectionPeriod = 10 * 1000
   deathLostPercent = 10
   stairhopDelay = 2 * 1000
   pushCreatureDelay = 2 * 1000
   deathContainerId = 1987
   gainExperienceColor = 215
   addManaSpentInPvPZone = true
   squareColor = 0
   allowFightback = true

Any help is appreciated
 
Well, fixed one problem and got another, i just realized there was a potions.lua script and this line:
doRemoveItem(item.uid)
to this one:
doRemoveItem(item.uid, 1)

But i also want to keep the vials, so i added:
doPlayerGiveItem(cid, potion.empty, 1)

But the problem is, it doesnt stack the empty vials, i tried with
doPlayerAddItem(cid, potion.empty, 1)
But it adds the empty potion to a new slot also.

Here is my entire script:

Code:
local config = {
   removeOnUse = "yes",
   usableOnTarget = "yes", -- can be used on target? (fe. healing friend)
   splashable = "no",
   realAnimation = "no", -- make text effect visible only for players in range 1x1
   healthMultiplier = 1.0,
   manaMultiplier = 1.0
}

config.removeOnUse = getBooleanFromString(config.removeOnUse)
config.usableOnTarget = getBooleanFromString(config.usableOnTarget)
config.splashable = getBooleanFromString(config.splashable)
config.realAnimation = getBooleanFromString(config.realAnimation)

local POTIONS = {
   [8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion
   [7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion
   [7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion
   [7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion
   [8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion

   [7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion
   [7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
   [7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion

   [8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion
}

local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100))

function onUse(cid, item, fromPosition, itemEx, toPosition)
   local potion = POTIONS[item.itemid]
   if(not potion) then
     return false
   end

   if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then
     if(not config.splashable) then
       return false
     end

     if(toPosition.x == CONTAINER_POSITION) then
       toPosition = getThingPos(item.uid)
     end

     doDecayItem(doCreateItem(2016, potion.splash, toPosition))
     doTransformItem(item.uid, potion.empty)
     return true
   end

   if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then
     doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
     return true
   end

   if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and
     not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES))
   then
     doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1)
     return true
   end

   local health = potion.health
   if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then
     return false
   end

   local mana = potion.mana
   if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then
     return false
   end

   doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)
   if(not realAnimation) then
     doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
   else
     for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do
       if(isPlayer(tid)) then
         doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid)
       end
     end
   end

   doAddCondition(cid, exhaust)
   if(not potion.empty or config.removeOnUse) then
     doRemoveItem(item.uid, 1)
     doPlayerGiveItem(cid, potion.empty, 1)
     --doPlayerAddItem(cid, potion.empty, 1)
     return true
   end

   doTransformItem(item.uid, potion.empty)
   return true
end

Also the runes are still not working
 
Last edited by a moderator:
Sweet, just compilled the server mentioned above and runes are working, potions too. the potions even stack the used vials, which was also a problem :D
The only thing to fix now is the ice rapier, here is the code which is running now:

PHP:
<item id="2396" article="an" name="ice rapier">
     <attribute key="description" value="A deadly but fragile weapon." />
     <attribute key="weight" value="1500" />
     <attribute key="attack" value="60" />
     <attribute key="defense" value="1" />
     <attribute key="weaponType" value="sword" />
     <attribute key="elementIce" value="18" />
     <attribute key="charges" value="1" />
   </item>
 
Code:
<item id="2396" article="an" name="ice rapier">
<attribute key="description" value="A deadly but fragile weapon." />
<attribute key="weight" value="1500" />
<attribute key="attack" value="60" />
<attribute key="defense" value="1" />
<attribute key="weaponType" value="sword" />
<attribute key="elementIce" value="18" />
<attribute key="charges" value="1" />
</item>


remove

Code:
<attribute key="charges" value="1" />
 
removing the charges attribute didnt work. i added some lines to show the number of charges and apparently the ice rapier comes with 100 charges and it is breaking little by little.
i looked everywhere in the code trying to find where to change the charges but didnt have any sucess, also some items like protection amulet that have listed in the items.xml 100 charges, comes with 250 charges.
If anyone knows where those info are stored, i would love to know.

15:51 You see an ice rapier (Atk:42 physical + 18 ice, Def:1) that has 93 charges left.
It weighs 15.00 oz.
A deadly but fragile weapon.
ItemID: [2396].
Position: [X: 991] [Y: 1006] [Z: 7].
 
<attribute key="charges" value="1" />
<attribute key="Showcharges" value="1" />
 
PHP:
<item id="2396" article="an" name="ice rapier">
     <attribute key="description" value="A deadly but fragile weapon." />
     <attribute key="weight" value="1500" />
     <attribute key="attack" value="60" />
     <attribute key="defense" value="1" />
     <attribute key="weaponType" value="sword" />
     <attribute key="elementIce" value="18" />
     <attribute key="charges" value="3" />
     <attribute key="showcharges" value="1" />
     <attribute key="showattributes" value="1" />
This is what i have right now, and it still have 100 charges
 
Back
Top