• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Lua Rope / Fluids errors

Status
Not open for further replies.

atyll

Member
Joined
Dec 30, 2008
Messages
380
Reaction score
16
Hello Guys

I have a couple of bugs on my server, which is Avesta 7.6
Rope and Fluids still work, however, I find these errors annoying:
f1xtep.jpg


Anybody has any idea how to fix those?

My fluids.lua:
LUA:
local exhaust = createConditionObject(CONDITION_EXHAUSTED)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, 1000)

function onUse(cid, item, frompos, item2, topos)
        if(hasCondition(cid, CONDITION_EXHAUSTED) == TRUE) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
		return TRUE
	end
	if item2.itemid == 1 then
		if item.type == 0 then
			doPlayerSendCancel(cid, "It is empty.")
		else
			if item2.uid == cid then
				doChangeTypeItem(item.uid, 0)
				if item.type == 7 then
					new_mana = math.random(90, 180)
					doPlayerAddMana(cid, new_mana)
					doSendMagicEffect(topos, 12)
					doPlayerSay(cid, "Aaaah...", 1)
                              doAddCondition(cid, exhaust)
							  doRemoveItem(item.uid,1)
				elseif item.type == 10 then
					new_life = math.random(40, 80)
					doPlayerAddHealth(cid, new_life)
					doSendMagicEffect(topos, 12)
					doPlayerSay(cid, "Aaaah...", 1)
				else
					doPlayerSay(cid, "Gulp.", 1)
				end
			else
				doChangeTypeItem(item.uid, 0)
				splash = doCreateItem(2025, item.type, topos)
				doDecayItem(splash)
			end
		end
	elseif item2.itemid >= 490 and item2.itemid <= 517 
	or item2.itemid >= 618 and item2.itemid <= 629 
	or item2.itemid == 1368 or item2.itemid == 1369 
	or item2.itemid >= 4820 and item2.itemid <= 4825 
	or item2.itemid >= 4828 and item2.itemid <= 4831 
	or item2.itemid >= 4608 and item2.itemid <= 4666 then
		doChangeTypeItem(item.uid, 1)
	elseif item2.itemid == 103 then
		doChangeTypeItem(item.uid, 19)
	elseif item2.itemid >= 598 and item2.itemid < 601 
	or item2.itemid == 1509 
	or item2.itemid >= 518 and item2.itemid <= 529 then
		doChangeTypeItem(item.uid, 26)
	elseif item2.itemid >= 351 and item2.itemid <= 355 then
		doChangeTypeItem(item.uid, 19)
	elseif item2.itemid >= 602 and item2.itemid <= 605 
	or item2.itemid >= 4691 and item2.itemid <= 4755 
	or item2.itemid == 4758 then
		doChangeTypeItem(item.uid, 28)
	elseif item2.itemid == 1771 then
		doChangeTypeItem(item.uid, 1)
	elseif item2.itemid == 1772 then
		doChangeTypeItem(item.uid, 3)
	elseif item2.itemid == 1773 then
		doChangeTypeItem(item.uid, 15)
	elseif item2.itemid > 2806 and item2.itemid < 3132 
	or item2.itemid >= 4251 and item2.itemid <= 4327 then
		doChangeTypeItem(item.uid, 2)
	else
		if item.type == 0 then
			doPlayerSendCancel(cid, "It is empty.")
		else
			doChangeTypeItem(item.uid, 0)
			splash = doCreateItem(2025, item.type, topos)
			doDecayItem(splash)
		end
	end
	return 1
end

And my rope.lua

LUA:
function onUse(cid, item, frompos, item2, topos)
	newPos = {x = topos.x, y = topos.y, z = topos.z, stackpos = 0}
	groundItem = getThingfromPos(newPos)
	if (isInArray(ROPE_SPOT, groundItem.itemid) == TRUE) then
		newPos.y = newPos.y + 1
		newPos.z = newPos.z - 1
		doTeleportThing(cid, newPos)
	elseif (isInArray(OPENED_HOLE, groundItem.itemid) == TRUE or isInArray(OPENED_TRAP, groundItem.itemid) == TRUE or isInArray(DOWN_LADDER, groundItem.itemid) == TRUE) then
		newPos.y = newPos.y + 1
		downPos = {x = topos.x, y = topos.y, z = topos.z + 1, stackpos = 255}
		downItem = getThingfromPos(downPos)
		if (downItem.itemid > 0) then
			doTeleportThing(downItem.uid, newPos)
		else
			doPlayerSendCancel(cid, "Sorry, not possible.")
		end
	else
		return FALSE
	end
	return TRUE
end

Thank you for help!

- - - Updated - - -

bumpp
 
Last edited:
Use this to fix fluids.


Code:
local exhaust_heal = createConditionObject(CONDITION_EXHAUSTED)
setConditionParam(exhaust_heal, CONDITION_PARAM_TICKS, 1000)

local poison = createConditionObject(CONDITION_POISON)
setConditionParam(poison, CONDITION_PARAM_DELAYED, 1)

local drunk = createConditionObject(CONDITION_DRUNK)
setConditionParam(drunk, CONDITION_PARAM_TICKS, 60000)
addDamageCondition(poison, 4, 6000, -5)
addDamageCondition(poison, 5, 6000, -4)
addDamageCondition(poison, 6, 6000, -3)
addDamageCondition(poison, 10, 6000, -2)
addDamageCondition(poison, 36, 6000, -1)

local TYPE_EMPTY = 0
local TYPE_WATER = 1
local TYPE_BLOOD = 2
local TYPE_BEER = 3
local TYPE_SLIME = 4
local TYPE_LEMONADE = 5
local TYPE_MANA_FLUID = 7
local TYPE_LIFE_FLUID = 10
local TYPE_OIL = 11
local TYPE_URINE = 13
local TYPE_WINE = 15
local TYPE_MUD = 19
local TYPE_LAVA = 26
local TYPE_RUM = 27
local TYPE_SWAMP = 28

function onUse(cid, item, frompos, item2, topos)

        if (item.type == 0) then
                  doPlayerSendCancel(cid,"You can not use this object. ")
        elseif (item2.uid ~= cid) and (topos.stackpos > 0) and (isMoveable(item2.uid) ~= TRUE) and (isCreature(item2.uid) ~= 1) then
                  doPlayerSendCancel(cid,"There is not enough room.")
    elseif (isInArray(FLUID_CONTAINERS,item2.itemid) == TRUE) and (item2.type == TYPE_EMPTY) then
          doChangeTypeItem(item.uid, TYPE_EMPTY)
                  doChangeTypeItem(item2.uid, item.type)

            elseif (topos.x == 65535) and (item2.uid ~= cid) and (isPlayer(item2.uid) ~= cid) then
                if(isInArray(DIRT_WALL,item2.itemid) ~= TRUE) then
          doChangeTypeItem(item.uid, 0)
                  splash = doCreateItem(2025, item.type, getThingPos(cid))
          doDecayItem(splash)
                else
                  doPlayerSendCancel(cid,"There is not enough room.")
                end
            elseif (item2.itemid > 0) and (item2.uid ~= cid) and (isPlayer(item2.uid) ~= cid) then
                if(isInArray(DIRT_WALL,item2.itemid) ~= TRUE) then
          doChangeTypeItem(item.uid, 0)
                  splash = doCreateItem(2025, item.type, topos)
                  if(isInArray(WATER_LAVA_SWAMP,item2.itemid) ~= TRUE) then
                  doDecayItem(splash)
                  end
                else
                  doPlayerSendCancel(cid,"There is not enough room.")
                end
            elseif (frompos.x == 65535) and (item2.uid ~= cid) and (isPlayer(item2.uid) ~= cid) then
                if(isInArray(DIRT_WALL,item2.itemid) ~= TRUE) then
          doChangeTypeItem(item.uid, 0)
                  splash = doCreateItem(2025, item.type, getThingPos(cid))
          doDecayItem(splash)
                else
                  doPlayerSendCancel(cid,"There is not enough room.")
                end
        else
        if (item2.uid == cid) and (isPlayer(item2.uid) == 1) then
              doChangeTypeItem(item.uid, 0)
              if (item.type == TYPE_MANA_FLUID) then
          new_mana = math.random(80, 160)
          doPlayerAddMana(cid, new_mana)
          doSendMagicEffect(topos, 12)
          doPlayerSay(cid, "Aaaah...", 1)
                  doAddCondition(cid, exhaust_heal)
              elseif (item.type == TYPE_LIFE_FLUID) then
          new_life = math.random(20, 50)
          doPlayerAddHealth(cid, new_life)
              doSendMagicEffect(topos, 12)
          doPlayerSay(cid, "Aaaah...", 1)
                  doAddCondition(cid, exhaust_heal)
          elseif (item.type == TYPE_BEER or item.type == TYPE_WINE or item.type == TYPE_RUM) then
                  doTargetCombatCondition(0, cid, drunk, CONST_ME_NONE)
              doPlayerSay(cid, "Aah...", 1)
          elseif (item.type == TYPE_LEMONADE) then
              doPlayerSay(cid, "Mmmh.", 1)
              elseif (item.type == TYPE_SLIME or item.type == TYPE_SWAMP) then
                  doTargetCombatCondition(0, cid, poison, CONST_ME_NONE)
          doPlayerSay(cid, "Urgh!", 1)
              elseif (item.type == TYPE_OIL or item.type == TYPE_URINE) then
          doPlayerSay(cid, "Urgh!", 1)
          else
          doPlayerSay(cid, "Gulp.", 1)
              end
            end
        end
    if (item.type == 0) then
    if item2.itemid >= 490 and item2.itemid <= 517
    or item2.itemid >= 618 and item2.itemid <= 629
    or item2.itemid == 1368 or item2.itemid == 1369
    or item2.itemid >= 4820 and item2.itemid <= 4825
    or item2.itemid >= 4828 and item2.itemid <= 4831
    or item2.itemid >= 4608 and item2.itemid <= 4666 then
        doChangeTypeItem(item.uid, TYPE_WATER)
    elseif item2.itemid == 103 then
        doChangeTypeItem(item.uid, TYPE_MUD)
    elseif item2.itemid >= 598 and item2.itemid < 601
    or item2.itemid == 1509
    or item2.itemid >= 518 and item2.itemid <= 529 then
        doChangeTypeItem(item.uid, TYPE_LAVA)
    elseif item2.itemid >= 351 and item2.itemid <= 355 then
        doChangeTypeItem(item.uid, TYPE_MUD)
    elseif item2.itemid >= 602 and item2.itemid <= 605
    or item2.itemid >= 4691 and item2.itemid <= 4755
    or item2.itemid == 4758 then
        doChangeTypeItem(item.uid, TYPE_SWAMP)
    elseif item2.itemid == 1771 then
        doChangeTypeItem(item.uid, TYPE_WATER)
    elseif item2.itemid == 1772 then
        doChangeTypeItem(item.uid, TYPE_BEER)
    elseif item2.itemid == 1773 then
        doChangeTypeItem(item.uid, TYPE_WINE)
    elseif item2.itemid == 1776 then
        doChangeTypeItem(item.uid, TYPE_LEMONADE)
        elseif(isInArray(NORMAL_CORPSE_STAGE_I,item2.itemid) == TRUE) then
        doChangeTypeItem(item.uid, TYPE_BLOOD)
        elseif(isInArray(SLIME_CORPSES,item2.itemid) == TRUE) then
        doChangeTypeItem(item.uid, TYPE_SLIME)
    elseif item2.itemid >= 371 and item2.itemid <= 382
            or item2.itemid >= 356 and item2.itemid <= 367 then
            doPlayerSendCancel(cid, "You cannot use this object.")
        end
    end
  return TRUE
end
 
Status
Not open for further replies.
Back
Top