Ir para conteúdo

Rope Roof System


W0lfer

Posts Recomendados

Este sistema é vendido por 10,00 ~ 19,90 por algumas empresas e estou liberando gratuitamente para vocês.

 

Detalhes: Os players conseguirão subir telhados com a ROPE.

 

<iframe width="640" height="360" src="http://www.youtube.c...layer_embedded" frameborder="0" allowfullscreen></iframe>

 

Versão 8.60

 

Vá em data/actions/scripts/tools/rope.lua e troque tudo que estiver la por isto:

 

--[[ Rope Chance

ID: 4

]]

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

 

--############################################# CONFIGURE AQUI ################################################## #####--

 

roofs_tile = {6172,3348,920,926,927,929,936,937,939,946,947,948 ,956,957,958} -- Piso de telhados aceitos

roofs_border = {6160,6161,6162,6163,6164,6165,6166,6167,6168,6168 ,6169,6170,6171, -- Lista de todas as bordas de telhados aceitas

921,922,923,924,925,928,930,931,932,933,934,935,93 8,941,942,943,944,

945,946,947,948,949,950,951,952,953,954,955,956,95 7,958,959,960,961,962,963,964,

3298,3299,3300,3301,3302,3303,3304,3305,3306,3307, 3308,3309,

3349,3350,3351,3352,3353,3354,3355,3356,3357,3358, 3359,3360,1268,1055,5045,5047,5048,5049,5050,5051, 5052,5053,5054}

timeDelay = 180 -- Tempo pra ser usado a corda novamente.

 

--################################################## ################################################## ##################--

 

 

 

if(toPosition.x == CONTAINER_POSITION) then

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)

return true

end

local creature = toPosition

creature.stackpos = 253

local pid_creature = getThingFromPos(creature,FALSE).uid

toPosition.stackpos = STACKPOS_GROUND

local itemGround = getThingFromPos(toPosition,FALSE)

if(isInArray(SPOTS, itemGround.itemid)) then

doTeleportThing(cid, {x = toPosition.x, y = toPosition.y + 1, z = toPosition.z - 1}, false)

return true

elseif tonumber(cid) == tonumber(pid_creature) then

verificacao_telhado = {[0]={x=toPosition.x,y=toPosition.y-1,z=toPosition.z},[1]={x=toPosition.x+1,y=toPosition.y,z=toPosition.z},

[2]={x=toPosition.x,y=toPosition.y+1,z=toPosition.z},[3]={x=toPosition.x-1,y=toPosition.y,z=toPosition.z}}

local position_tp = verificacao_telhado[getCreatureLookDirection(cid)]

position_tp.stackpos=0

local position_cid = getCreaturePosition(cid)

position_cid.stackpos=0

local meu_tile = getThingFromPos(position_cid,FALSE).itemid

local position_ver_down = verificacao_telhado[getCreatureLookDirection(cid)]

position_ver_down.stackpos=0

local ver_down = getThingFromPos(position_ver_down,FALSE)

--//\\--

local pos = position_tp

pos.z = pos.z-1

local coisa = getThingFromPos(pos,FALSE)

 

local pos2 = getCreaturePosition(cid)

pos2.stackpos=0

pos2.z = pos2.z-1

local coisa2 = getThingFromPos(pos2,FALSE)

if not (isInArray(roofs_tile,meu_tile)) or (isInArray(roofs_border,coisa.itemid) or isInArray(roofs_border,coisa2.itemid)) then

local chance_special = {[1]=10,[2]=15,[3]=25,[4]=40}

local time_segundos = {[0]=320,[1]=240,[2]=220,[3]=180,[4]=120}

local chance = 5

if os.time() >= getPlayerStorageValue(cid,"rope") then

if getPlayerStorageValue(cid,86574) == -1 then

setPlayerStorageValue(cid,86574,1)

addEvent(setPlayerStorageValue,2000,cid,86574,-1)

else

doPlayerSendCancel(cid,"You are exausted.")

doSendMagicEffect(getCreaturePosition(cid),2)

return TRUE

end

if math.random(1,100) >= 100-chance then

local coisa = getThingFromPos(position_tp,FALSE)

position_cid.z=position_cid.z-1

local ver_up = getThingFromPos(position_cid,FALSE)

local top_z = 7

local ative = 0

for i=0,3 do

coisa = getThingFromPos(position_tp,FALSE).itemid

if isWalkable(position_tp, true, true, true) and isInArray(roofs_tile,coisa) or isInArray(roofs_border,coisa) then

if position_tp.z < top_z then

top_z=position_tp.z

ative = 1

setPlayerStorageValue(cid,"rope",os.time()+timeDel ay)

end

end

position_tp.z=position_tp.z-1

end

if top_z ~= 0 and ative == 1 then

doSendMagicEffect(getCreaturePosition(cid),2)

doTeleportThing(cid,{x=position_tp.x,y=position_tp .y,z=top_z})

return TRUE

else

doPlayerSendCancel(cid,"Desculpa, mas é quase impossivel subir aqui.")

end

else

doSendAnimatedText(getCreaturePosition(cid),"MISS" ,215)

doPlayerSendCancel(cid,"You missed the roof!")

doSendMagicEffect(getCreaturePosition(cid),2)

if getPlayerStorageValue(cid,42319) == -1 then

setPlayerStorageValue(cid,42319,1)

addEvent(setPlayerStorageValue,10000,cid,42319,-1)

end

return TRUE

end

else

doPlayerSendTextMessage(cid,MESSAGE_STATUS_SMALL," You are exausted, please wait ".. getPlayerStorageValue(cid,"rope")-os.time() .." seconds for use the rope.")

return TRUE

end

end

if (ver_down.uid == 0 or isInArray(roofs_border,ver_down.itemid)) then

if getCreatureLookDirection(cid) == 0 then position_tp.y=position_tp.y-1 end

position_tp.z=getCreaturePosition(cid).z

for i=0,3 do

position_tp.z=position_tp.z+1

tp_ground = getThingFromPos(position_tp,FALSE)

if tp_ground.uid ~= 0 then

if isWalkable(position_tp, true, true, true) then

doTeleportThing(cid,position_tp)

return TRUE

else

return FALSE

end

end

end

else

doPlayerSendTextMessage(cid,MESSAGE_STATUS_SMALL," Sorry, you can not use the rope here!")

return TRUE

end

 

------------------------------------------------------

elseif(isInArray(ROPABLE, itemEx.itemid)) then

local hole = getThingFromPos({x = toPosition.x, y = toPosition.y, z = toPosition.z + 1, stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE})

if(hole.itemid > 0) then

doTeleportThing(hole.uid, {x = toPosition.x, y = toPosition.y + 1, z = toPosition.z}, false)

else

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)

end

return true

end

return false

end

 

function isWalkable(pos, creature, proj, pz)-- by Nord

if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end

if getTopCreature(pos).uid > 0 and creature then return false end

if getTileInfo(pos).protection and pz then return false, true end

local n = not proj and 3 or 2

for i = 0, 255 do

pos.stackpos = i

local tile = getTileThingByPos(pos)

if tile.itemid ~= 0 and not isCreature(tile.uid) then

if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then

return false

end

end

end

return true

end

 

Versão 9.60 ~ 9.70

 

-[[ Rope Chance

ID: 4

]]

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

 

--############################################# CONFIGURE AQUI ################################################## #####--

 

roofs_tile = {6172,3348,920,926,927,929,936,937,939,946,947,948 ,956,957,958} -- Piso de telhados aceitos

roofs_border = {6160,6161,6162,6163,6164,6165,6166,6167,6168,6168 ,6169,6170,6171, -- Lista de todas as bordas de telhados aceitas

921,922,923,924,925,928,930,931,932,933,934,935,93 8,941,942,943,944,

945,946,947,948,949,950,951,952,953,954,955,956,95 7,958,959,960,961,962,963,964,

3298,3299,3300,3301,3302,3303,3304,3305,3306,3307, 3308,3309,

3349,3350,3351,3352,3353,3354,3355,3356,3357,3358, 3359,3360,1268,1055,5045,5047,5048,5049,5050,5051, 5052,5053,5054}

timeDelay = 180 -- Tempo pra ser usado a corda novamente.

 

--################################################## ################################################## ##################--

 

 

 

if(toPosition.x == CONTAINER_POSITION) then

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)

return true

end

local creature = toPosition

creature.stackpos = 253

local pid_creature = getThingFromPos(creature).uid

toPosition.stackpos = STACKPOS_GROUND

local itemGround = getThingFromPos(toPosition)

if(isInArray(SPOTS, itemGround.itemid)) then

doTeleportThing(cid, {x = toPosition.x, y = toPosition.y + 1, z = toPosition.z - 1}, false)

return true

elseif tonumber(cid) == tonumber(pid_creature) then

verificacao_telhado = {[0]={x=toPosition.x,y=toPosition.y-1,z=toPosition.z},[1]={x=toPosition.x+1,y=toPosition.y,z=toPosition.z},

[2]={x=toPosition.x,y=toPosition.y+1,z=toPosition.z},[3]={x=toPosition.x-1,y=toPosition.y,z=toPosition.z}}

local position_tp = verificacao_telhado[getCreatureLookDirection(cid)]

position_tp.stackpos=0

local position_cid = getCreaturePosition(cid)

position_cid.stackpos=0

local meu_tile = getThingFromPos(position_cid).itemid

local position_ver_down = verificacao_telhado[getCreatureLookDirection(cid)]

position_ver_down.stackpos=0

local ver_down = getThingFromPos(position_ver_down)

--//\\--

local pos = position_tp

pos.z = pos.z-1

local coisa = getThingFromPos(pos)

 

local pos2 = getCreaturePosition(cid)

pos2.stackpos=0

pos2.z = pos2.z-1

local coisa2 = getThingFromPosition(pos2,false)

if not (isInArray(roofs_tile,meu_tile)) or (isInArray(roofs_border,coisa.itemid) or isInArray(roofs_border,coisa2.itemid)) then

local chance_special = {[1]=10,[2]=15,[3]=25,[4]=40}

local time_segundos = {[0]=320,[1]=240,[2]=220,[3]=180,[4]=120}

local chance = 5

if os.time() >= getPlayerStorageValue(cid,"rope") then

if getPlayerStorageValue(cid,86574) == -1 then

setPlayerStorageValue(cid,86574,1)

addEvent(setPlayerStorageValue,2000,cid,86574,-1)

else

doPlayerSendCancel(cid,"You are exausted.")

doSendMagicEffect(getCreaturePosition(cid),2)

return TRUE

end

if math.random(90,100) >= 100-chance then

local coisa = getThingFromPos(position_tp)

position_cid.z=position_cid.z-1

local ver_up = getThingFromPos(position_cid)

local top_z = 7

local ative = 0

for i=0,3 do

coisa = getThingFromPos(position_tp).itemid

if isWalkable(position_tp, true, true, true) and isInArray(roofs_tile,coisa) or isInArray(roofs_border,coisa) then

if position_tp.z < top_z then

top_z=position_tp.z

ative = 1

setPlayerStorageValue(cid,"rope",os.time()+timeDel ay)

end

end

position_tp.z=position_tp.z-1

end

if top_z ~= 0 and ative == 1 then

doSendMagicEffect(getCreaturePosition(cid),2)

doTeleportThing(cid,{x=position_tp.x,y=position_tp .y,z=top_z})

return TRUE

else

doPlayerSendCancel(cid,"Desculpa, mas é quase impossivel subir aqui.")

end

else

--doSendAnimatedText(getCreaturePosition(cid),"MISS" ,215)

doCreatureSay(itemEx.uid, "MISS", TALKTYPE_ORANGE_1)

 

doPlayerSendCancel(cid,"You missed the roof!")

doSendMagicEffect(getCreaturePosition(cid),2)

if getPlayerStorageValue(cid,42319) == -1 then

setPlayerStorageValue(cid,42319,1)

addEvent(setPlayerStorageValue,10000,cid,42319,-1)

end

return TRUE

end

else

doPlayerSendTextMessage(cid,MESSAGE_STATUS_SMALL," You are exausted, please wait ".. getPlayerStorageValue(cid,"rope")-os.time() .." seconds for use the rope.")

return TRUE

end

end

if (ver_down.uid == 0 or isInArray(roofs_border,ver_down.itemid)) then

if getCreatureLookDirection(cid) == 0 then position_tp.y=position_tp.y-1 end

position_tp.z=getCreaturePosition(cid).z

for i=0,3 do

position_tp.z=position_tp.z+1

tp_ground = getThingFromPos(position_tp)

if tp_ground.uid ~= 0 then

if isWalkable(position_tp, true, true, true) then

doTeleportThing(cid,position_tp)

return TRUE

else

return FALSE

end

end

end

else

doPlayerSendTextMessage(cid,MESSAGE_STATUS_SMALL," Sorry, you can not use the rope here!")

return TRUE

end

 

------------------------------------------------------

elseif(isInArray(ROPABLE, itemEx.itemid)) then

local hole = getThingFromPos({x = toPosition.x, y = toPosition.y, z = toPosition.z + 1, stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE})

if(hole.itemid > 0) then

doTeleportThing(hole.uid, {x = toPosition.x, y = toPosition.y + 1, z = toPosition.z}, false)

else

doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)

end

return true

end

return false

end

 

function isWalkable(pos, creature, proj, pz)-- by Nord

if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end

if getTopCreature(pos).uid > 0 and creature then return false end

if getTileInfo(pos).protection and pz then return false, true end

local n = not proj and 3 or 2

for i = 0, 255 do

pos.stackpos = i

local tile = getTileThingByPos(pos)

if tile.itemid ~= 0 and not isCreature(tile.uid) then

if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then

return false

end

end

end

return true

end

 

Espero que gostem smile.png

Link para o comentário
Compartilhar em outros sites

Créditos?

 

Amigo não adianta postar o conteúdo se nao for de sua autoria , coloque os devidos créditos.

 

24 h ou irei reportá-lo.

 

Pois tenho certeza que esse script não é seu.

 

Felipe

Link para o comentário
Compartilhar em outros sites

  • 2 years later...
×
×
  • Criar Novo...