• 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 Remove Stone/wall if you have an item to pay [Switch]

RealSoft

Banned User
Joined
Feb 3, 2009
Messages
4,381
Reaction score
92
Location
There I sleep
Hi, this is an script I made, a guy requested it to me and I decied to release it seince seems many people want it.

I'm mabey not the first one success with this script, but I made this scripts 100%


With this you need put an item on a special position, and then you pull switch both the pay item and stone/wall dissapear, then you pull switch again stone/wall come back, but not the pay item
Code:
--script 100% created by Xaroth--
function onUse(cid, item, frompos, item2, topos)
gatepos = {x=2002, y=1996, z=6, stackpos=1}
getgate = getThingfromPos(gatepos)

gatepos2 = {x=2000, y=2000, z=6, stackpos=1}
getgate2 = getThingfromPos(gatepos2)

if item.uid == 44444 and item.itemid == 1945 and getgate.itemid == 1483 and getgate2.itemid == 2376
then
doRemoveItem(getgate.uid,1)
doRemoveItem(getgate2.uid,1)
doTransformItem(item.uid,item.itemid+1)
elseif item.uid == 44444 and item.itemid == 1946 and getgate.itemid == 0 then
doCreateItem(1483,1,gatepos)
doTransformItem(item.uid,item.itemid-1)
else
doPlayerSendCancel(cid,"Haha, I love secrets, dont you?.")
end
  return 1
  end

getgate = The position of the stone/wall,

getgate2 = the position there the paying items should be

getgate.itemid == 1483 and getgate2.itemid == 2376
----------item of stone/wall-------------item of pay item


This one is tested to work with all types of servers between 8.0-8.2 and some 8.2-8.4,


if this script worked for ya, please add me some Rep++ :D
 
Last edited:
Sorry, forgotten this..

sorry mates, forgotten this..

data/actions/actions.xml
Code:
<action uniqueid="44444" script="test.lua" />
 
PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
    removals = {
        { item = 1483, pos = { x = 2002 , y = 1996 , z = 6 } },
        { item = 2376, pos = { x = 2000 , y = 2000 , z = 6 } }    
    }
    
    if item.itemid == 1945 then
        for i = 1, #removals do
            removals[i].pos.stackpos = 1
            doRemoveItem(getThingfromPos(removals[i].pos).uid, 1)
        end
        doTransformItem(item.uid, item.itemid + 1)
    elseif item.itemid == 1946 then
        for i = 1, #removals do
            doCreateItem(removals[i].item, 1, removals[i].pos)
        end
        doTransformItem(item.uid, item.itemid - 1)
    end
    return TRUE
end
 
:D:D

Hi, this is an script I made, a guy requested it to me and I decied to release it seince seems many people want it.

I'm mabey not the first one success with this script, but I made this scripts 100%


With this you need put an item on a special position, and then you pull switch both the pay item and stone/wall dissapear, then you pull switch again stone/wall come back, but not the pay item
Code:
--script 100% created by Xaroth--
function onUse(cid, item, frompos, item2, topos)
gatepos = {x=2002, y=1996, z=6, stackpos=1}
getgate = getThingfromPos(gatepos)

gatepos2 = {x=2000, y=2000, z=6, stackpos=1}
getgate2 = getThingfromPos(gatepos2)

if item.uid == 44444 and item.itemid == 1945 and getgate.itemid == 1483 and getgate2.itemid == 2376
then
doRemoveItem(getgate.uid,1)
doRemoveItem(getgate2.uid,1)
doTransformItem(item.uid,item.itemid+1)
elseif item.uid == 44444 and item.itemid == 1946 and getgate.itemid == 0 then
doCreateItem(1483,1,gatepos)
doTransformItem(item.uid,item.itemid-1)
else
doPlayerSendCancel(cid,"Haha, I love secrets, dont you?.")
end
  return 1
  end

getgate = The position of the stone/wall,

getgate2 = the position there the paying items should be

getgate.itemid == 1483 and getgate2.itemid == 2376
----------item of stone/wall-------------item of pay item


This one is tested to work with all types of servers between 8.0-8.2 and some 8.2-8.4,


if this script worked for ya, please add me some Rep++ :D

Thanks mate :D:D Rep++ for ya,


Macros didn't work, tried it but didn't work at all -.-
I using Evo 8.11..
 
Anni Script

a guy requested anni script so I put it here too..

here is the script, its only one for both entrance switch and the quest's..


Code:
function onUse(cid, item, frompos, item2, topos)
if item.uid == 5000 then
 if item.itemid == 1946 then

 player1pos = {x=33225, y=31671, z=13, stackpos=253}
 player1 = getThingfromPos(player1pos)

 player2pos = {x=33224, y=31671, z=13, stackpos=253}
 player2 = getThingfromPos(player2pos)

 player3pos = {x=33223, y=31671, z=13, stackpos=253}
 player3 = getThingfromPos(player3pos)

 player4pos = {x=33222, y=31671, z=13, stackpos=253}
 player4 = getThingfromPos(player4pos)


	 if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then

  player1level = getPlayerLevel(player1.uid)
  player2level = getPlayerLevel(player2.uid)
  player3level = getPlayerLevel(player3.uid)
  player4level = getPlayerLevel(player4.uid)

  questlevel = 100

  if player1level >= questlevel and player2level >= questlevel and player3level >= questlevel and player4level >= questlevel then

	  queststatus1 = getPlayerStorageValue(player1.uid,100)
	  queststatus2 = getPlayerStorageValue(player2.uid,100)
	  queststatus3 = getPlayerStorageValue(player3.uid,100)
	  queststatus4 = getPlayerStorageValue(player4.uid,100)

	  if queststatus1 == -1 and queststatus2 == -1 and queststatus3 == -1 and queststatus4 == -1 then
	--if 1==1 then
	demon1pos = {x=33219, y=31657, z=13}
	demon2pos = {x=33221, y=31657, z=13}
	demon3pos = {x=33220, y=31661, z=13}
	demon4pos = {x=33222, y=31661, z=13}
	demon5pos = {x=33223, y=31659, z=13}
	demon6pos = {x=33224, y=31659, z=13}
 
   doSummonCreature("Demon", demon1pos)
   doSummonCreature("Demon", demon2pos)
   doSummonCreature("Demon", demon3pos)
   doSummonCreature("Demon", demon4pos)
   doSummonCreature("Demon", demon5pos)
   doSummonCreature("Demon", demon6pos)

	nplayer1pos = {x=33222, y=31659, z=13}
	nplayer2pos = {x=33221, y=31659, z=13}
	nplayer3pos = {x=33220, y=31659, z=13}
	nplayer4pos = {x=33219, y=31659, z=13}

   doSendMagicEffect(player1pos,2)
   doSendMagicEffect(player2pos,2)
   doSendMagicEffect(player3pos,2)
   doSendMagicEffect(player4pos,2)

   doTeleportThing(player1.uid,nplayer1pos)
   doTeleportThing(player2.uid,nplayer2pos)
   doTeleportThing(player3.uid,nplayer3pos)
   doTeleportThing(player4.uid,nplayer4pos)

	 doSendMagicEffect(nplayer1pos,10)
	 doSendMagicEffect(nplayer2pos,10)
	 doSendMagicEffect(nplayer3pos,10)
	 doSendMagicEffect(nplayer4pos,10)

	 doTransformItem(item.uid,1945)

	else
	 doPlayerSendCancel(cid,"Someone has already done this quest")
	end
   else
	doPlayerSendCancel(cid,"Your level is too low")
   end
  else
  doPlayerSendCancel(cid,"You need 4 players in your team.")
  end
 end
 if item.itemid == 1945 then
-- Here is the code start:
starting={x=1632, y=423, z=14, stackpos=253}
checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos}
ending={x=1638, y=428, z=14, stackpos=253}
players=0
totalmonsters=0
monster = {}
repeat
creature= getThingfromPos(checking)
 if creature.itemid > 0 then
 if getPlayerAccess(creature.uid) == 0 then
 players=players+1
 end
  if getPlayerAccess(creature.uid) ~= 0 and getPlayerAccess(creature.uid) ~= 3 then
 totalmonsters=totalmonsters+1
  monster[totalmonsters]=creature.uid
   end
 end
checking.x=checking.x+1
  if checking.x>ending.x then
  checking.x=starting.x
  checking.y=checking.y+1
 end
until checking.y>ending.y
if players==0 then
trash= {x=1715, y=678, z=5}
current=0
repeat
current=current+1
doTeleportThing(monster[current],trash)
until current>=totalmonsters
doTransformItem(item.uid,1946)
end
-- Here is the end of it

end
end
if item.uid == 5001 then
 queststatus = getPlayerStorageValue(cid,100)
 if queststatus == -1 then
  doPlayerSendTextMessage(cid,22,"You have found a demon armor.")
  doPlayerAddItem(cid,2494,1)
  setPlayerStorageValue(cid,100,1)
 else
  doPlayerSendTextMessage(cid,22,"It is empty.")
 end
end
if item.uid == 5002 then
 queststatus = getPlayerStorageValue(cid,100)
 if queststatus ~= 1 then
  doPlayerSendTextMessage(cid,22,"You have found a magic sword.")
  doPlayerAddItem(cid,2400,1)
  setPlayerStorageValue(cid,100,1)
 else
  doPlayerSendTextMessage(cid,22,"It is empty.")
 end
end
if item.uid == 5003 then
 queststatus = getPlayerStorageValue(cid,100)
 if queststatus ~= 1 then
  doPlayerSendTextMessage(cid,22,"You have found a stonecutter axe.")
  doPlayerAddItem(cid,2431,1)
  setPlayerStorageValue(cid,100,1)
 else
  doPlayerSendTextMessage(cid,22,"It is empty.")
 end
end
if item.uid == 5004 then
 queststatus = getPlayerStorageValue(cid,100)
 if queststatus ~= 1 then
  doPlayerSendTextMessage(cid,22,"You have found a present.")
  doPlayerAddItem(cid,2326,1)
  setPlayerStorageValue(cid,100,1)
 else
  doPlayerSendTextMessage(cid,22,"It is empty.")
 end
 end
 return 1
end


Data/actions/actions.xml
Code:
<action uniqueid="5000" script="annihilator.lua" />
<action uniqueid="5001" script="annihilator.lua" />
<action uniqueid="5002" script="annihilator.lua" />
<action uniqueid="5003" script="annihilator.lua" />
<action uniqueid="5004" script="annihilator.lua" />


Here you go :p
 
Thanks mate :D:D Rep++ for ya,


Macros didn't work, tried it but didn't work at all -.-
I using Evo 8.11..
I just tried my script and it works perfectly on the latest TFS. As that's the only server I've ever used I can't say if it works on Evo or not, sorry.
 
I just tried my script and it works perfectly on the latest TFS. As that's the only server I've ever used I can't say if it works on Evo or not, sorry.


then start to try make scripts works for both?

I make scripts works for both tfs and evo, its easy,

there might be some tfs servers with special functions not allow the script, but most servers does.. :D
 
I'm not going to make scripts which works for both TFS and Evo as I have no idea what functions Evo has and I am not planning on finding out. The way you did it is easy to do, but sucks in general as it's not optimized at all. If I'd like to remove a second wall, I would have to modify most of the script. However if you use an optimized script like mine, which includes a configuration part where you can easily add new walls or whatever, you won't have to modify the entire script.

EDIT: I believe the reason it may not have worked for him using Evo is because of the # function. Simply replace #removals against table.maxn(removals).
 
I'm not going to make scripts which works for both TFS and Evo as I have no idea what functions Evo has and I am not planning on finding out. The way you did it is easy to do, but sucks in general as it's not optimized at all. If I'd like to remove a second wall, I would have to modify most of the script. However if you use an optimized script like mine, which includes a configuration part where you can easily add new walls or whatever, you won't have to modify the entire script.

EDIT: I believe the reason it may not have worked for him using Evo is because of the # function. Simply replace #removals against table.maxn(removals).


Better know both types of scripts, tfs aint the only server in the world, Tfs is not the only type of servers will exist in future :p

btw, I don't see anything hard with that kind of scripts, to make it work for almoust all servers.. :D

But hey, don't see me as a naging crow.. keep your good work up :D
 
PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
    removals = {
        { item = 1483, pos = { x = 2002 , y = 1996 , z = 6 } },
        { item = 2376, pos = { x = 2000 , y = 2000 , z = 6 } }    
    }
    
    if item.itemid == 1945 then
        for i = 1, #removals do
            removals[i].pos.stackpos = 1
            doRemoveItem(getThingfromPos(removals[i].pos).uid, 1)
        end
        doTransformItem(item.uid, item.itemid + 1)
    elseif item.itemid == 1946 then
        for i = 1, #removals do
            doCreateItem(removals[i].item, 1, removals[i].pos)
        end
        doTransformItem(item.uid, item.itemid - 1)
    end
    return TRUE
end

Awesome script, thanks! ++rep
 
Back
Top