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

Any way to make this script shorter?

tosse12

Panchira Project Member
Joined
Jun 10, 2007
Messages
864
Reaction score
9
Location
Sweden
Hi
To begin with I am not sure if it's this forum I should ask this in but :p you can move this thread to the right forum.

Anyways I am using TFS 0.3.5 server and wonder if it's possible to make this script shorter :p

If there is, if you aren't too lazy to fix the whole script or else you could give me an exemple how I can shorten this ( I perfer that you give me an exempel because I want to learn and try it out myself :D )

At moment it's 103 lines long (which I think is too much for a script like this):
Code:
function onUse(cid, item, frompos, item2, topos)
-- Lever 1 (stone + Bridge)
	stone1n = {x=9841, y=9875, z=11}
	-- Bridge --
		b1 = {x=9848, y=9849, z=11}
		b2 = {x=9848, y=9849, z=11}
		b3 = {x=9848, y=9849, z=11}
		b4 = {x=9848, y=9849, z=11}
		b5 = {x=9848, y=9849, z=11}
		b6 = {x=9848, y=9849, z=11}
-- Lever 2 (stone + wall)
	--stone
	stone2n = {x=9857, y=9875, z=11}
	-- Wall--
	wall1 = {x=9848, y=9824, z=11}
-- Lever 3 (stone)
	-- stone
	stone3	={x=9842, Y=9817, z=9}
	stone3n ={x=9844, y=9817, z=9}
-- Lever 4 (wall)
	-- Wall
	wall2 = {x=9850, y=9814, z=11}
-- End of config
----------------------------------------------------------------------------
-- Lever 1 --
	if item.itemid == 1945 and item.uid == 1015 then
		--Stone1 --
		doCreateItem(1304, 1, stone1n)
		doTransformItem(item.uid, 1946)
		doTransformItem(1016, 1945)
		--Stone1 end--
		--Bridge--
		doRemoveItem(getTileItemById(b1, 598).uid)
		doRemoveItem(getTileItemById(b2, 598).uid)
		doRemoveItem(getTileItemById(b3, 598).uid)
		doRemoveItem(getTileItemById(b4, 598).uid)
		doRemoveItem(getTileItemById(b5, 598).uid)
		doRemoveItem(getTileItemById(b6, 598).uid)
		doCreateItem(1284, 1, b1)
		doCreateItem(1284, 1, b2)
		doCreateItem(1284, 1, b3)
		doCreateItem(1284, 1, b4)
		doCreateItem(1284, 1, b5)
		doCreateItem(1284, 1, b6)
		--Bridge end--
	elseif item.itemid == 1945 and item.uid == 1015 then
		doRemoveItem(getTileItemById(stone1n, 1304).uid)
		doTransformItem(item.uid, 1945)
		doTransformItem(1016, 1304)
		--Bridge--
		doRemoveItem(getTileItemById(b1, 1284).uid)
		doRemoveItem(getTileItemById(b2, 1284).uid)
		doRemoveItem(getTileItemById(b3, 1284).uid)
		doRemoveItem(getTileItemById(b4, 1284).uid)
		doRemoveItem(getTileItemById(b5, 1284).uid)
		doRemoveItem(getTileItemById(b6, 1284).uid)
		doCreateItem(598, 1, b1)
		doCreateItem(598, 1, b2)
		doCreateItem(598, 1, b3)
		doCreateItem(598, 1, b4)
		doCreateItem(598, 1, b5)
		doCreateItem(598, 1, b6)
		--Bridge end--
--Lever 1 End--

--Lever 2--
	elseif item.itemid == 1945 and item.uid == 1016 then
		--wall1--
		doRemoveItem(getTileItemById(wall1, 1197).uid))
		--wall1 end--
		-- Stone2--
		doCreateItem(1304, 1, stone2n)
		doTransformItem(item.uid, 1946)
		doTransformtItem(1016, 1945)
		-- Stone2 end--
	elseif item.itemid == 1946 and item.uid == 1016 then
		--wall1--
		doCreateItem(1197, 1, wall1)
		--wall1 end--
		-- Stone2--
		doRemoveItem(getTileItemById(stone2n, 1304).uid)
		doTransformItem(item.uid, 1945)
		doTransformItem(1016, 1304)
		-- Stone2 end--
--Lever 3--
	elseif item.itemid == 1945 and item.uid == 1017 then
		--Stone3
		doRemoveItem(getTileItemById(stone3, 1304).uid)
		doCreateItem(1304, 1, stone3n)
		doTransformItem(item.uid, 1946)
	elseif item.itemid == 1946 and item.uid == 1017 then
		doRemoveItem(getTileItemById(stone3n, 1304).uid)
		doCreateItem(1304, 1, stone3)
		doTransformItem(item.uid, 1945)
--Lever 4--
	elseif item.itemid == 1945 and item.uid == 1018
		doTransformItem(item.uid, 1946)
		doRemoveItem(getTileItemById(wall2, 1197).uid)
	elseif item.itemid == 1946 and item.uid == 1018
		doTransformItem(item.uid, 1945)
		doCreateItem(1197, 1, wall2)
	end
	return 1
end
This script is doing many things :p
Code:
Create a bridge
Remove a bridge
Transform a stone
Create Stone
Remove a Stone
Transform a Stone
Remove stone
Create Stone
Remove wall
Create Wall
Remove Wall
Create Wall
I think I missed some, but it's what the script does.
Could someone please help me / give me an exemple?

(Rep to the one who helping me) Cykotitan + Chojrak Can't rep+ you more...
 
90 lines, :(
Code:
local t = {
-- Lever 1 (stone + Bridge)
	stone1n = {x=9841, y=9875, z=11},
	-- Bridge --
	b = {
		{x=9848, y=9849, z=11},
		{x=9848, y=9849, z=11},
		{x=9848, y=9849, z=11},
		{x=9848, y=9849, z=11},
		{x=9848, y=9849, z=11},
		{x=9848, y=9849, z=11}
	},
-- Lever 2 (stone + wall)
	--stone
	stone2n = {x=9857, y=9875, z=11},
	-- Wall--
	wall1 = {x=9848, y=9824, z=11},
-- Lever 3 (stone)
	-- stone
	stone3	={x=9842, Y=9817, z=9},
	stone3n ={x=9844, y=9817, z=9},
-- Lever 4 (wall)
	-- Wall
	wall2 = {x=9850, y=9814, z=11}
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
-- Lever 1 --
	if item.itemid == 1945 and item.uid == 1015 then
		--Stone1 --
		doCreateItem(1304, 1, t.stone1n)
		doTransformItem(item.uid, 1946)
		doTransformItem(1016, 1945)
		--Stone1 end--
		--Bridge--
		for i = 1, 6 do
			doRemoveItem(getTileItemById(t.b[i], 598).uid)
			doCreateItem(1284, 1, t.b[i])
		end
		--Bridge end--
	elseif item.itemid == 1946 and item.uid == 1015 then
		doRemoveItem(getTileItemById(t.stone1n, 1304).uid)
		doTransformItem(item.uid, 1945)
		doTransformItem(1016, 1304)
		--Bridge--
		for i = 1, 6 do
			doRemoveItem(getTileItemById(t.b[i], 1284).uid)
			doCreateItem(598, 1, t.b[i])
		end
		--Bridge end--
--Lever 1 End--

--Lever 2--
	elseif item.itemid == 1945 and item.uid == 1016 then
		--wall1--
		doRemoveItem(getTileItemById(t.wall1, 1197).uid)
		--wall1 end--
		-- Stone2--
		doCreateItem(1304, 1, t.stone2n)
		doTransformItem(item.uid, 1946)
		doTransformtItem(1016, 1945)
		-- Stone2 end--
	elseif item.itemid == 1946 and item.uid == 1016 then
		--wall1--
		doCreateItem(1197, 1, t.wall1)
		--wall1 end--
		-- Stone2--
		doRemoveItem(getTileItemById(t.stone2n, 1304).uid)
		doTransformItem(item.uid, 1945)
		doTransformItem(1016, 1304)
		-- Stone2 end--
--Lever 3--
	elseif item.itemid == 1945 and item.uid == 1017 then
		--Stone3
		doRemoveItem(getTileItemById(t.stone3, 1304).uid)
		doCreateItem(1304, 1, t.stone3n)
		doTransformItem(item.uid, 1946)
	elseif item.itemid == 1946 and item.uid == 1017 then
		doRemoveItem(getTileItemById(t.stone3n, 1304).uid)
		doCreateItem(1304, 1, t.stone3)
		doTransformItem(item.uid, 1945)
--Lever 4--
	elseif item.itemid == 1945 and item.uid == 1018 then
		doTransformItem(item.uid, 1946)
		doRemoveItem(getTileItemById(t.wall2, 1197).uid)
	elseif item.itemid == 1946 and item.uid == 1018 then
		doTransformItem(item.uid, 1945)
		doCreateItem(1197, 1, t.wall2)
	end
	return TRUE
end
Without comments, 60 lines:
Code:
local t = {
	stone1n = {x=9841, y=9875, z=11},
	b = {
		{x=9848, y=9849, z=11},
		{x=9848, y=9849, z=11},
		{x=9848, y=9849, z=11},
		{x=9848, y=9849, z=11},
		{x=9848, y=9849, z=11},
		{x=9848, y=9849, z=11}
	},
	stone2n = {x=9857, y=9875, z=11},
	wall1 = {x=9848, y=9824, z=11},
	stone3	={x=9842, Y=9817, z=9},
	stone3n ={x=9844, y=9817, z=9},
	wall2 = {x=9850, y=9814, z=11}
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if item.itemid == 1945 and item.uid == 1015 then
		doCreateItem(1304, 1, t.stone1n)
		doTransformItem(item.uid, 1946)
		doTransformItem(1016, 1945)
		for i = 1, 6 do
			doRemoveItem(getTileItemById(t.b[i], 598).uid)
			doCreateItem(1284, 1, t.b[i])
		end
	elseif item.itemid == 1946 and item.uid == 1015 then
		doRemoveItem(getTileItemById(t.stone1n, 1304).uid)
		doTransformItem(item.uid, 1945)
		doTransformItem(1016, 1304)
		for i = 1, 6 do
			doRemoveItem(getTileItemById(t.b[i], 1284).uid)
			doCreateItem(598, 1, t.b[i])
		end
	elseif item.itemid == 1945 and item.uid == 1016 then
		doRemoveItem(getTileItemById(t.wall1, 1197).uid)
		doCreateItem(1304, 1, t.stone2n)
		doTransformItem(item.uid, 1946)
		doTransformtItem(1016, 1945)
	elseif item.itemid == 1946 and item.uid == 1016 then
		doCreateItem(1197, 1, t.wall1)
		doRemoveItem(getTileItemById(t.stone2n, 1304).uid)
		doTransformItem(item.uid, 1945)
		doTransformItem(1016, 1304)
	elseif item.itemid == 1945 and item.uid == 1017 then
		doRemoveItem(getTileItemById(t.stone3, 1304).uid)
		doCreateItem(1304, 1, t.stone3n)
		doTransformItem(item.uid, 1946)
	elseif item.itemid == 1946 and item.uid == 1017 then
		doRemoveItem(getTileItemById(t.stone3n, 1304).uid)
		doCreateItem(1304, 1, t.stone3)
		doTransformItem(item.uid, 1945)
	elseif item.itemid == 1945 and item.uid == 1018 then
		doTransformItem(item.uid, 1946)
		doRemoveItem(getTileItemById(t.wall2, 1197).uid)
	elseif item.itemid == 1946 and item.uid == 1018 then
		doTransformItem(item.uid, 1945)
		doCreateItem(1197, 1, t.wall2)
	end
	return TRUE
end
Perhaps Chojrak can make it even shorter.
 
Chojrak Chojrak is offline
<...>
Last Activity: Today 20:39

:)
Moar, 38 lines:
Code:
local b = {
	{x=9848, y=9849, z=11},
	{x=9848, y=9849, z=11},
	{x=9848, y=9849, z=11},
	{x=9848, y=9849, z=11},
	{x=9848, y=9849, z=11},
	{x=9848, y=9849, z=11}
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
	local k, v = item.uid, item.itemid
	if k == 1015 then
		doTransformItem(1016, v == 1945 and 1945 or 1304)
		for i = 1, 6 do
			doRemoveItem(getTileItemById(b[i], v == 1945 and 598 or 1284).uid)
			doCreateItem(v == 1945 and 1284 or 598, 1, b[i])
		end
		if v == 1945 then
			doCreateItem(1304, 1, {x=9841, y=9875, z=11})
		else
			doRemoveItem(getTileItemById({x=9841, y=9875, z=11}, 1304).uid)
		end
	elseif k == 1016 then
		doRemoveItem(getTileItemById(v == 1945 and {x=9848, y=9824, z=11} or {x=9857, y=9875, z=11}, 1197).uid)
		doCreateItem(v == 1945 and 1304 or 1197, 1, v == 1945 and {x=9857, y=9875, z=11} or {x=9848, y=9824, z=11})
		doTransformItem(1016, v == 1945 and 1945 or 1304)
	elseif k == 1017 then
		doRemoveItem(getTileItemById(v == 1945 and {x=9842, Y=9817, z=9} or {x=9844, y=9817, z=9}, 1304).uid)
		doCreateItem(1304, 1, v == 1945 and {x=9844, y=9817, z=9} or {x=9842, Y=9817, z=9})
	elseif k == 1018 then
		if v == 1945 then 
			doRemoveItem(getTileItemById({x=9850, y=9814, z=11}, 1197).uid)
		else
			doCreateItem(1197, 1, {x=9850, y=9814, z=11})
		end
	end
	doTransformItem(k, tonumber("194".. (v == 1945 and 6 or 5)))
	return TRUE
end
 
Last edited:
OMFG ZOOMG! Thanx :p Shall read throgh the code tomorrow, if I do that now, I will understan NADA! :D
I wish I were as good as you to script xD
 
Okey, I tried the script, it worked, just needed to fix the right id's :p but... when I use the lever again (uid 1015) as an exemple, the lever with uid:1016 doesn't turn back to stone:
Code:
local b = {
	{x=9848, y=9849, z=11},
	{x=9848, y=9848, z=11},
	{x=9848, y=9847, z=11},
	{x=9848, y=9846, z=11},
	{x=9848, y=9845, z=11},
	{x=9848, y=9844, z=11},
	{x=9848, y=9843, z=11}
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
	local k, v = item.uid, item.itemid
	if k == 1015 then
		doTransformItem(1016, v == 1945 and 1945 or 1304)
		for i = 1, 7 do
			doRemoveItem(getTileItemById(b[i], v == 1945 and 598 or 1284).uid)
			doCreateItem(v == 1945 and 1284 or 598, 1, b[i])
		end
		if v == 1945 then
			doCreateItem(1304, 1, {x=9841, y=9875, z=11})
		else
			doRemoveItem(getTileItemById({x=9841, y=9875, z=11}, 1304).uid)
		end
	elseif k == 1016 then
		doRemoveItem(getTileItemById(v == 1945 and {x=9848, y=9824, z=11} or {x=9857, y=9875, z=11}, 1197).uid)
		doCreateItem(v == 1945 and 1304 or 1197, 1, v == 1945 and {x=9857, y=9875, z=11} or {x=9848, y=9824, z=11})
		doTransformItem(1017, v == 1945 and 1945 or 1304)
	elseif k == 1017 then
		doRemoveItem(getTileItemById(v == 1945 and {x=9842, Y=9817, z=9} or {x=9844, y=9817, z=9}, 1304).uid)
		doCreateItem(1304, 1, v == 1945 and {x=9842, Y=9817, z=9} or {x=9844, y=9817, z=9})
	elseif k == 1018 then
		if v == 1945 then 
			doRemoveItem(getTileItemById({x=9850, y=9814, z=11}, 1196).uid)
		else
			doCreateItem(1196, 1, {x=9850, y=9814, z=11})
		end
	end
	doTransformItem(k, tonumber("194".. (v == 1945 and 6 or 5)))
	return TRUE
end

I tried to modify it myself but couldn't make it...
And another problem that showed up was "uid 1017" the stone with position: {x=9842, Y=9817, z=9}, didn't get removed when I pulled the lever, but the stone at position: {x=9844, y=9817, z=9}, get's removed and created when I pull the lever :p
 
Back
Top