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

Need help with this script.(solved)

LucasFerraz

Systems Analyst
Joined
Jun 10, 2010
Messages
2,857
Reaction score
96
Location
Brazil
I made this script but it's bugged. I need help here.

Explaining:
pos1 = Player go if have this storages {49870, 49871, 49872, 49873}.
pos2 = Player go if do NOT have the storages.
Kapos1~kapos16 = Walls

When player pass in teleport, the removed walls must apears again (Only removed walls)
My script is creating lot of walls in same place

LUA:
local pos1 = {x=32961, y=32277, z=10}
local pos2 = {x=32880, y=32289, z=10}
local kapos1 = {x=32877, y=32272, z=10}
local kapos2 = {x=32878, y=32272, z=10}
local kapos3 = {x=32879, y=32272, z=10}
local kapos4 = {x=32880, y=32272, z=10}
local kapos5 = {x=32881, y=32272, z=10}
local kapos6 = {x=32877, y=32273, z=10}
local kapos7 = {x=32877, y=32274, z=10}
local kapos8 = {x=32877, y=32275, z=10}
local kapos9 = {x=32877, y=32276, z=10}
local kapos10 = {x=32878, y=32276, z=10}
local kapos11 = {x=32879, y=32276, z=10}
local kapos12 = {x=32880, y=32276, z=10}
local kapos13 = {x=32881, y=32276, z=10}
local kapos14 = {x=32881, y=32273, z=10}
local kapos15 = {x=32881, y=32274, z=10}
local kapos16 = {x=32881, y=32275, z=10}
local storages = {49870, 49871, 49872, 49873}



function onStepIn(cid, item, pos)
for i = 1,#storages do
    if getPlayerStorageValue(cid, storages[i]) >= 1 then
       doTeleportThing(cid, pos1)
doCreateItem(1027,1,kapos1)
doCreateItem(1026,1,kapos2)
doCreateItem(1026,1,kapos3)
doCreateItem(1026,1,kapos4)
doCreateItem(1026,1,kapos5)
doCreateItem(1025,1,kapos6)
doCreateItem(1025,1,kapos7)
doCreateItem(1025,1,kapos8)
doCreateItem(1025,1,kapos9)
doCreateItem(1026,1,kapos10)
doCreateItem(1026,1,kapos11)
doCreateItem(1026,1,kapos12)
doCreateItem(1029,1,kapos13)
doCreateItem(1025,1,kapos14)
doCreateItem(1025,1,kapos15)
doCreateItem(1025,1,kapos16)

    else
        doTeleportThing(cid, pos2)
    end
end
return true
end

Image
tibiaq.jpg
 
if getthingfrompos ~= the wall ID then createitem

either make a loop to do this enough times for the amount of walls you need, or you could just copy-paste but change the wall position for each time
 
make them into a config such as:
Code:
config.walls{
1 = {x=13,y=123983,z=7},
2 = {2,x= etc etc}
}

--then in the function add
for i = 1 to 16 --you have 16 pos stored
   if isInArray(getThingFromPos(config.i).itemid,walls) == FALSE then
       createtherighttypeofwallforthatposition, e.g. if i = 1 then docreateitem(config.i,id of the single thin block)
   end
end

if I wasn't so tired I'd script it for you but it's almost 2am here and i'm cream-crackered =/
 
Explaining:
pos1 = Player go if have this storages {49870, 49871, 49872, 49873}.
pos2 = Player go if do NOT have the storages.
Kapos1~kapos16 = Walls

When player pass in teleport, the removed walls must apears again (Only removed walls)
My script is creating lot of walls in same place

LUA:
local pos1 = {x=32961, y=32277, z=10}
local pos2 = {x=32880, y=32289, z=10}
local kapos1 = {x=32877, y=32272, z=10}
local kapos2 = {x=32878, y=32272, z=10}
local kapos3 = {x=32879, y=32272, z=10}
local kapos4 = {x=32880, y=32272, z=10}
local kapos5 = {x=32881, y=32272, z=10}
local kapos6 = {x=32877, y=32273, z=10}
local kapos7 = {x=32877, y=32274, z=10}
local kapos8 = {x=32877, y=32275, z=10}
local kapos9 = {x=32877, y=32276, z=10}
local kapos10 = {x=32878, y=32276, z=10}
local kapos11 = {x=32879, y=32276, z=10}
local kapos12 = {x=32880, y=32276, z=10}
local kapos13 = {x=32881, y=32276, z=10}
local kapos14 = {x=32881, y=32273, z=10}
local kapos15 = {x=32881, y=32274, z=10}
local kapos16 = {x=32881, y=32275, z=10}
local storages = {49870, 49871, 49872, 49873}



function onStepIn(cid, item, pos)
for i = 1,#storages do
    if getPlayerStorageValue(cid, storages[i]) >= 1 then
       doTeleportThing(cid, pos1)
doCreateItem(1027,1,kapos1)
doCreateItem(1026,1,kapos2)
doCreateItem(1026,1,kapos3)
doCreateItem(1026,1,kapos4)
doCreateItem(1026,1,kapos5)
doCreateItem(1025,1,kapos6)
doCreateItem(1025,1,kapos7)
doCreateItem(1025,1,kapos8)
doCreateItem(1025,1,kapos9)
doCreateItem(1026,1,kapos10)
doCreateItem(1026,1,kapos11)
doCreateItem(1026,1,kapos12)
doCreateItem(1029,1,kapos13)
doCreateItem(1025,1,kapos14)
doCreateItem(1025,1,kapos15)
doCreateItem(1025,1,kapos16)

    else
        doTeleportThing(cid, pos2)
    end
end
return true
end

Image
tibiaq.jpg
 
Explaining:
pos1 = Player go if have this storages {49870, 49871, 49872, 49873}.
pos2 = Player go if do NOT have the storages.
Kapos1~kapos16 = Walls

When player pass in teleport, the removed walls must apears again (Only removed walls)
My script is creating lot of walls in same place

LUA:
local pos1 = {x=32961, y=32277, z=10}
local pos2 = {x=32880, y=32289, z=10}
local kapos1 = {x=32877, y=32272, z=10}
local kapos2 = {x=32878, y=32272, z=10}
local kapos3 = {x=32879, y=32272, z=10}
local kapos4 = {x=32880, y=32272, z=10}
local kapos5 = {x=32881, y=32272, z=10}
local kapos6 = {x=32877, y=32273, z=10}
local kapos7 = {x=32877, y=32274, z=10}
local kapos8 = {x=32877, y=32275, z=10}
local kapos9 = {x=32877, y=32276, z=10}
local kapos10 = {x=32878, y=32276, z=10}
local kapos11 = {x=32879, y=32276, z=10}
local kapos12 = {x=32880, y=32276, z=10}
local kapos13 = {x=32881, y=32276, z=10}
local kapos14 = {x=32881, y=32273, z=10}
local kapos15 = {x=32881, y=32274, z=10}
local kapos16 = {x=32881, y=32275, z=10}
local storages = {49870, 49871, 49872, 49873}



function onStepIn(cid, item, pos)
for i = 1,#storages do
    if getPlayerStorageValue(cid, storages[i]) >= 1 then
       doTeleportThing(cid, pos1)
doCreateItem(1027,1,kapos1)
doCreateItem(1026,1,kapos2)
doCreateItem(1026,1,kapos3)
doCreateItem(1026,1,kapos4)
doCreateItem(1026,1,kapos5)
doCreateItem(1025,1,kapos6)
doCreateItem(1025,1,kapos7)
doCreateItem(1025,1,kapos8)
doCreateItem(1025,1,kapos9)
doCreateItem(1026,1,kapos10)
doCreateItem(1026,1,kapos11)
doCreateItem(1026,1,kapos12)
doCreateItem(1029,1,kapos13)
doCreateItem(1025,1,kapos14)
doCreateItem(1025,1,kapos15)
doCreateItem(1025,1,kapos16)

    else
        doTeleportThing(cid, pos2)
    end
end
return true
end

you've done nothing except paste your old code inside the loop... -.-

edit: holy crap that's one messed up script, you didn't read my notes at all?
 
You can try this, Im just afraid it may loop inside the other loop
LUA:
local pos1 = {x=32961, y=32277, z=10}
local pos2 = {x=32880, y=32289, z=10}

local kapositions = {
{x=32877, y=32272, z=10},
{x=32878, y=32272, z=10},
{x=32879, y=32272, z=10},
{x=32880, y=32272, z=10},
{x=32881, y=32272, z=10},
{x=32877, y=32273, z=10},
{x=32877, y=32274, z=10},
{x=32877, y=32275, z=10},
{x=32877, y=32276, z=10},
{x=32878, y=32276, z=10},
{x=32879, y=32276, z=10},
{x=32880, y=32276, z=10},
{x=32881, y=32276, z=10},
{x=32881, y=32273, z=10},
{x=32881, y=32274, z=10},
{x=32881, y=32275, z=10}
}

local items = {1027,1026,1026,1026,1026,1025,1025,1025,1025,1026,1026,1026,1029,1025,1025,1025}
local storages = {49870, 49871, 49872, 49873}
 
 
 
function onStepIn(cid, item, pos)
for i = 1,#storages do
    if getPlayerStorageValue(cid, storages[i]) >= 1 then
       for j = 1, #items do
           doCreateItem(items[j], 1, kapositions[j])
       end 
       doTeleportThing(cid, pos1)
    else
        doTeleportThing(cid, pos2)
    end
end
return true
end
 
Working, but if player with storages step ip will create 4 walls per sqm.

Example:
LUA:
local kapositions = {
{x=32877, y=32272, z=10},
{x=32878, y=32272, z=10},
{x=32879, y=32272, z=10},
{x=32880, y=32272, z=10},
{x=32881, y=32272, z=10},
{x=32877, y=32273, z=10},
{x=32877, y=32274, z=10},
{x=32877, y=32275, z=10},
{x=32877, y=32276, z=10},
{x=32878, y=32276, z=10},
{x=32879, y=32276, z=10},
{x=32880, y=32276, z=10},
{x=32881, y=32276, z=10},
{x=32881, y=32273, z=10},
{x=32881, y=32274, z=10},
{x=32881, y=32275, z=10}
}
create this 4x with 1 step in
 
Why are you checking storages?! Check the levers.
LUA:
local leverUIDs = {49870, 49871, 49872, 49873} -- unique IDs of the 4 levers

local t = {
	{1027, {x=32877, y=32272, z=10}},
	{1026, {x=32878, y=32272, z=10}},
	{1026, {x=32879, y=32272, z=10}},
	{1026, {x=32880, y=32272, z=10}},
	{1026, {x=32881, y=32272, z=10}},
	{1025, {x=32877, y=32273, z=10}},
	{1025, {x=32877, y=32274, z=10}},
	{1025, {x=32877, y=32275, z=10}},
	{1025, {x=32877, y=32276, z=10}},
	{1026, {x=32878, y=32276, z=10}},
	{1026, {x=32879, y=32276, z=10}},
	{1026, {x=32880, y=32276, z=10}},
	{1029, {x=32881, y=32276, z=10}},
	{1025, {x=32881, y=32273, z=10}},
	{1025, {x=32881, y=32274, z=10}},
	{1025, {x=32881, y=32275, z=10}}
}

function onStepIn(cid, item, pos, fromPos)
	doSendMagicEffect(pos, CONST_ME_TELEPORT)
	if isPlayer(cid) then
		local f
		for i = 1, #leverUIDs do
			if getThing(leverUIDs[i]).itemid == 1945 then
				f = true
				break
			end
		end
		if not f then
			doTeleportThing(cid, {x=32961, y=32277, z=10})
			doSendMagicEffect({x=32961, y=32277, z=10}, CONST_ME_TELEPORT)
			for i = 1, #t do
				doCreateItem(t[i][1], 1, t[i][2])
			end
			for i = 1, #leverUIDs do
				doTransformItem(leverUIDs[i], 1945)
			end
			return
		end
	end
	doTeleportThing(cid, {x=32880, y=32289, z=10})
	doSendMagicEffect({x=32880, y=32289, z=10}, CONST_ME_TELEPORT)
end
 
Last edited:
Back
Top