vitorbertolucci
Member
- 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: