Bom pessoal estou aqui para pedir uma ajuda a vocês com um script que encontrei aqui mesmo no Xtibia.
Estou postando o script para pedir que alguém possa configurar ele para quando usar a bomba não precisar "armar a bomba" não precisar ficar um tempo parado do lado da bomba esperando ela ser armada e poder jogar ela de longe mas quando jogar esperar 3 segundos ate ela explodir não entendeu vou explicar melhor:
O script da bomba necessita que o player que usou a bomba fiquei parado do lado dela durante um tempo, e se não ficar aparece uma mensagem dizendo que não pode armar a bomba sendo assim queria que tirasse isto, a bomba só pode ser usada perto do player, queria que tirasse isto também sendo assim a bomba poderia ser jogada de longe mas quando jogada ela ficaria no chão durante 3 segundos.
SCRIPT:
data/action/scripts:
crie um arquivo .lua com nome de bombs
-- --
local mainStorage = 1500 -- Valor de armazenamento principal
local maxBombCount = 2 -- Quantos segundos você pode plantar uma bomba. Cada bomba de armazenamento precisa de 4
local podlozenoTime = 2 -- Quantos segundos a carregar bombas
local naCzas = 'yes' -- É uma bomba-relógio (yes) para sim ou detona quando você usa item (no) para nao
local tekst = 'yes' -- Mostrar uma mensagem quando a bomba explode?
local uciekac = 'yes' -- apresentar a inscrição de fugir quando a bomba explode?
local wybuchTime = 2 -- Depois de quantos segundos depois plantar uma bomba ...
local area = { -- 3 é a posição de bomba, 1 é a area que irá explodir
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 3, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 1, 1, 1}
}
local min = 800 -- Min. hp que ira hitar
local max = 1500 -- Max. hp que ira hitar
local kolorTekstow = (TALKTYPE_MONSTER ~= nil and TALKTYPE_MONSTER or TALKTYPE_ORANGE_1) -- Color Messages
local condition = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition, key, value)
setConditionParam(condition, CONDITION_PARAM_TICKS,(podlozenoTime+wybuchTime+1)*1000)
area = createCombatArea(area)
naCzas = naCzas == 'yes' and true or false
tekst = tekst == 'yes' and true or false
uciekac = uciekac == 'yes' and true or false
function onUse(cid, item, fromPosition, itemEx, toPosition)
if item.itemid == 8300 then
if naCzas then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"You may not detonate a bomb.")
return true
end
-- Bomb Detonation
local aktualnyStorage = mainStorage+1
local ileBomb = 0 -- How many bombs exploded in
while getCreatureStorage(cid,aktualnyStorage) > 0 do
local pos = {x=getCreatureStorage(cid,aktualnyStorage), y=getCreatureStorage(cid,aktualnyStorage+1), z=getCreatureStorage(cid,aktualnyStorage+2), stackpos=getCreatureStorage(cid,aktualnyStorage+3)}
ileBomb = ileBomb+1
detonujBombe(cid, pos, aktualnyStorage)
aktualnyStorage = aktualnyStorage+4
end
if ileBomb == 0 then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,'Nao foi colocada a Bomba.')
else
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,ileBomb ..' bomb'.. (ileBomb == 1 and 'a' or '') ..' Explotada'.. (ileBomb == 1 and '' or 'o') ..'.')
end
return true
end
-- Bomb
local playerPos = getCreaturePosition(cid)
if getTileInfo(playerPos).protection or getTileInfo(playerPos).house then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,'Você nao pode ativar a Bomba em Zona de Proteção.')
return true
end
local aktualneBomby = getCreatureStorage(cid,mainStorage)
if aktualneBomby+maxBombCount > os.time() then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,'Tem que esperar para colocar Outra Bomba.')
return true
end
local ileMaBomb = 0
local aktualnyStorage = mainStorage+1
while(getCreatureStorage(cid,aktualnyStorage) > 0) do
ileMaBomb = ileMaBomb+1
aktualnyStorage = aktualnyStorage+4
end
if(item.type > 1) then
doChangeTypeItem(item.uid,item.type-1)
else
doRemoveItem(item.uid,1)
end
doCreatureSay(cid,'...',kolorTekstow)
addEvent(podlozBombe,podlozenoTime*1000,cid,playerPos,aktualnyStorage)
doCreatureSetStorage(cid,mainStorage,os.time())
end
function podlozBombe(cid, pozycjaGracza, storage)
if not isPlayer(cid) then
return false
end
local playerPos = getCreaturePosition(cid)
if(playerPos.x ~= pozycjaGracza.x or playerPos.y ~= pozycjaGracza.y or playerPos.z ~= pozycjaGracza.z) then
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,'Você se moveu.. nao foi Possivel Armar a Bomba.')
return true
end
local bomba = doCreateItem(9893,1,pozycjaGracza)
local bombaPos = getThingPos(bomba)
doCreatureSetStorage(cid,storage,pozycjaGracza.x)
doCreatureSetStorage(cid,storage+1,pozycjaGracza.y)
doCreatureSetStorage(cid,storage+2,pozycjaGracza.z)
doCreatureSetStorage(cid,storage+3,bombaPos.stackpos)
if(not naCzas) then
doCreatureSay(cid,'Bomba armada',kolorTekstow)
doAddCondition(cid,condition)
else
if(uciekac) then
doCreatureSay(cid,'Corre! a bomba foi armada!',kolorTekstow)
end
addEvent(detonujBombe,wybuchTime*1000,cid,bombaPos,storage)
doAddCondition(cid,condition)
end
return true
end
function detonujBombe(cid, pos, storage)
local playerPos = getCreaturePosition(cid)
if(playerPos.x ~= pos.x or playerPos.y ~= pos.y or playerPos.z ~= pos.z) then
pos.stackpos = pos.stackpos-1
end
local bomba = getThingfromPos(pos)
if(bomba.itemid == 9893) then
doAreaCombatHealth(0, COMBAT_HOLYDAMAGE, pos, area, -min, -max, CONST_ME_HOLYAREA)
doCreatureSetStorage(cid,storage,0)
if(tekst) then
doSendAnimatedText(pos,'BOOOooooOOOMMM!!!',TEXTCOLOR_YELLOW)
end
doRemoveItem(bomba.uid,1)
return true
end
return false
end
em data/action.xml:
adicione esta tag
<action itemid="2305" event="script" value="bombs.lua"/>
Bom no meu servidor a bomba está infinita não sei porque mas está não sei se é no script ou no próprio servidor mas se alguém souber o motivo comenta ai.







