• 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!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

Action Plantation System by Killua

Joined
Apr 15, 2014
Messages
75
Reaction score
18
Plantation System




This vide shows the system working. The video were filmed explaining it all in Portuguese, but it's usefull for you to see it working anyway.

Create plantation.lua inside data/actions/scripts and paste​

Code:
-- Plantation System created by Vítor Bertolucci - Killua
-- 02/04/2014

local usableDirt = 103 -- Dirt to seed
local mustBeInHouse = true -- Is it only enabled inside houses? [true/false]
local fruits = {2682, 5097, 8838, 2685, 2674} -- Fruits that can grow
local failChance = 0 -- Fail chance in %

function transformIt(pos, id) -- Seeds the ground
    pos.stackpos = 0
    return doTransformItem(getThingFromPos(pos).uid, id)
end

function getUnwantedItem(pos) -- Checks for unwanted items
    for i = 1, 5 do
        pos.stackpos = i
        if getThingFromPos(pos).itemid > 0 and getThingFromPos(pos).itemid ~= 7732 then
            return true
        end
    end
    return false
end

function transformTo(pos, fromid, toid) -- Makes the plants grow
    for s = 1, 5 do
        pos.stackpos = s
        local item = getThingFromPos(pos)
        if item.itemid == fromid then
            doTransformItem(item.uid, toid)
        end
    end
end

function doRemoveMe(pos, id) -- Removes weeds
    for stackpos = 1, 5 do
      pos.stackpos = stackpos
      local item = getThingFromPos(pos)
        if item.itemid == id then
          doRemoveItem(item.uid)
        end
    end
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if mustBeInHouse and not getHouseFromPos(toPosition) then
        return doPlayerSendCancel(cid, "You can only plant inside houses.")
    end
  
    toPosition.stackpos = 0
    local tile = getThingFromPos(toPosition)
    if tile.itemid == usableDirt and not getUnwantedItem(toPosition) and itemEx.itemid ~= 7732 then
        if item.itemid == 2552 then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You have plowed the ground.")
            doTransformItem(tile.uid, 804)
            addEvent(transformIt, math.random(44600, 48600), toPosition, usableDirt)
        end
    elseif item.itemid == 7732 and tile.itemid == 804 and not getUnwantedItem(toPosition) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You have planted the seed.")
        doRemoveItem(item.uid, 1)
        doCreateItem(6216, 1, toPosition)
        doSendMagicEffect(toPosition, CONST_ME_SMALLPLANTS)
        local chance = math.random(1, 100)
        local time1 = math.random(8500, 12600)
        local time2 = math.random(24500, 28600)
        if chance <= failChance then
            addEvent(transformTo, time1, toPosition, 6216, 2784)
            addEvent(doSendMagicEffect, time1, toPosition, 7)
            addEvent(doRemoveMe, time2, toPosition, 2784)
            addEvent(doSendMagicEffect, time2, toPosition, CONST_ME_POFF)
        else
            addEvent(transformTo, time1, toPosition, 6216, 2779)
            addEvent(doSendMagicEffect, time1, toPosition, CONST_ME_SMALLPLANTS)
            addEvent(doSendMagicEffect, time2, toPosition, CONST_ME_PLANTATTACK)
            addEvent(transformTo, time2, toPosition, 2779, fruits[math.random(1, #fruits)])
        end
    elseif itemEx.itemid == 2784 or itemEx.itemid == 2779 then
        if tile.itemid == 804 or tile.itemid == 103 then
            doRemoveItem(itemEx.uid, 1)
            doSendMagicEffect(toPosition, 3)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You have removed the plant.")
        end
        else
        doPlayerSendCancel(cid, "You cannot plow this ground.")
    end
    return true
end

And in actions.xml paste:​

Code:
<action itemid="2552" event="script" value="plantation.lua"/>
<action itemid="7732" event="script" value="plantation.lua"/>

Use the hoe (ID: 2552) to plow the ground and then plant the seed (ID: 7732) in it.​
 
Last edited:
Back
Top