Ir para conteúdo

Featured Replies

  • Respostas 16
  • Visualizações 2.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • É o seguinte o portal será criado Ok, mas o tempo do outro portal deve ser maior senão o player irá voltar para o local onde ele foi teleportado ou seja, não o local onde o portal foi criado, a partir

  • Poxa cara. Tudo bem então Você vai fazer o seguinte, vai criar a  Spell e colocar o script dela acima Ok. Agora você vai adicionar essas duas linhas no seu movements.xml <movevent typ

  • É o seguinte ele irá castar a Spell em alguém tipo. Exiva Black Fenix E ambos terá que está em party(somente em party) e então  serão teleportado para o local. O portal criado não irá funcionar

Posted Images

Postado
15 horas atrás, Roy disse:

É o seguinte o portal será criado Ok, mas o tempo do outro portal deve ser maior senão o player irá voltar para o local onde ele foi teleportado ou seja, não o local onde o portal foi criado, a partir do momento em que o portal criado for removido ao ele usar o outro portal ele será teleportado para o Removido, Acho que deu para entender.

 

Spell


local config = {storage = 8001}--Seleciona a storage 8001 e separa entre 3, exemplo - "8001, 8002, 8003", Entao nao use nenhuma dessas 3 storages em outros scripts.
local cfg = {storage = 8000, Tempo = 1*60}  --1 minuto. Tempo que poderá passar no piso ao redor do Teleport.
local function doSavePlayerPos(uid, storage, pos)
doCreatureSetStorage(uid, storage, pos.x)
doCreatureSetStorage(uid, storage+1, pos.y)
doCreatureSetStorage(uid, storage+2, pos.z)
end

function onCastSpell(cid, var)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
local TeleportID = 1387
local Teleport = {
config = {
ToPos = {x = 309, y = 287, z = 7}, -- Local onde o jogador será teleportado
Pos = getCreaturePosition(cid),
Time = 10, --Quanto tempo irá durar o Teleport
},
}

function removeTeleport(Teleport)
local t = getTileItemById(Teleport.config.Pos, TeleportID)
if t then
doRemoveItem(t.uid, 1)
doSendMagicEffect(Teleport.config.Pos, CONST_ME_POFF)
end
end

doCreateTeleport(TeleportID, Teleport.config.ToPos,Teleport.config.Pos)
addEvent(removeTeleport, Teleport.config.Time * 1000, Teleport)
setPlayerStorageValue(cid, cfg.storage, os.time()+cfg.Tempo)
doSavePlayerPos(cid, config.storage, getThingPos(cid))
----------------------------------------------------------------------------------------------------------------------------------------------------------------
return TRUE
end

Movements.xml


<movevent type="StepIn" actionid="9000" event="script" value="piso.lua"/>
<movevent type="StepIn" actionid="9001" event="script" value="teleport.lua"/>

 

piso.lua


function onStepIn(cid, item, position, fromPosition)
local config = {storage = 8000}
if (getPlayerStorageValue(cid, config.storage) <= os.time()) then
return true
else
doTeleportThing(cid, fromPosition, false)
doPlayerSendCancel(cid, "Você deve aguardar " ..getPlayerStorageValue(cid, config.storage) - os.time().." para poder entrar nesse portal!")
end
return true 
end

 

Teleport.lua


function onStepIn(cid, item, position, fromPosition)
local config = {storage = 8001}
local function getSavedPlayerPos(uid, storage)
return {x = getCreatureStorage(uid, storage), y = getCreatureStorage(uid, storage+1), z = getCreatureStorage(uid, storage+2)}
end
if (getPlayerStorageValue(cid, config.storage) <= os.time()) then
doTeleportThing(cid, getSavedPlayerPos(cid, config.storage))
else
doTeleportThing(cid, fromPosition, false)
doPlayerSendCancel(cid, "Você deve aguardar " ..getPlayerStorageValue(cid, config.storage) - os.time().." para poder entrar nesse portal!")
end
return true 
end

 

Tem como coloca um efeito ao entrar no teleporte criado no chão. Fica aparecendo um efeito de fumaça. 

Postado
Em 01/01/2019 em 21:03, Black Fenix disse:

@Roy poderia fazer isso para mim ?

 

 

É o seguinte ele irá castar a Spell em alguém tipo.

Exiva Black Fenix

E ambos terá que está em party(somente em party) e então  serão teleportado para o local. O portal criado não irá funcionar mais até porque somente ambos irá poder passar pelo portal do outro lado no caso.

 

adicionar na tag xml da spell:

needtarget="1" params="1" range="1" 

range="1" = distância necessária para poder castar a spell. 1 = Player próximo um do outro.

 

E irá ficar assim:

<instant name="test" words="test" lvl="0" needtarget="1" params="1" range="1" maglv="0" manapercent="0" soul="0" exhaustion="1000" prem="0" enabled="1" script="test.lua"/>

 

Spell .lua

Spoiler

local config = {storage = 8001}--Seleciona a storage 8001 e separa entre 3, exemplo - "8001, 8002, 8003", Entao nao use nenhuma dessas 3 storages em outros scripts.
local cfg = {storage = 8000, Tempo = 1*60}  --1 minuto. Tempo que poderá passar no piso ao redor do Teleport.

local function doSavePlayerPos(uid, storage, pos)
doCreatureSetStorage(uid, storage, pos.x)
doCreatureSetStorage(uid, storage+1, pos.y)
doCreatureSetStorage(uid, storage+2, pos.z)
end

function onCastSpell(cid, var)
local target = variantToNumber(var)
local party = getPartyMembers(cid)
local targetIsPartyMember = false

local TeleportID = 1387
local Teleport = {
config = {
ToPos = {x = 0, y = 0, z = 0}, -- Local onde o jogador será teleportado coloquei 0 porque caso outro jogador tente entrar não possa ser teleportado somente a quem o cara usou a spell
TPos = {x = 309, y = 287, z = 7}, -- Local onde o jogador será teleportado
Pos = getCreaturePosition(cid),
Time = 10, --Quanto tempo irá durar o Teleport 10 segundos
},
}

function removeTeleport(Teleport)
local t = getTileItemById(Teleport.config.Pos, TeleportID)
if t then
doRemoveItem(t.uid, 1)
doSendMagicEffect(Teleport.config.Pos, CONST_ME_POFF)
end
end

if type(party) == "table" then
for _, member in pairs(party) do
if member == target then
targetIsPartyMember = true
break
end
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa esta em party para castar essa spell e, o target precisa ser um membro da sua party!")
return false
end

if targetIsPartyMember then
doCreateTeleport(TeleportID, Teleport.config.ToPos,Teleport.config.Pos)
addEvent(removeTeleport, Teleport.config.Time * 1000, Teleport)
setPlayerStorageValue(target, cfg.storage, os.time()+cfg.Tempo)
setPlayerStorageValue(cid, cfg.storage, os.time()+cfg.Tempo)
doSavePlayerPos(target, config.storage, getThingPos(target))
doSavePlayerPos(cid, config.storage, getThingPos(cid))
doTeleportThing(target, Teleport.config.TPos)
doTeleportThing(cid, Teleport.config.TPos)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você só pode usar essa spell em membros da sua party.")
end
return TRUE
end

 

 

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

 

Em 02/01/2019 em 10:04, BangxD disse:

Tem como coloca um efeito ao entrar no teleporte criado no chão. Fica aparecendo um efeito de fumaça. 

 

Sim tem sim, mas você vai adicionar uma action no piso para onde o Player irá ser teleportado.

 

Tag Movements.xml

<movevent type="StepIn" actionid="9002" event="script" value="Piso-TPos.lua"/>

Piso-TPos.lua

Spoiler

function onStepIn(cid, item, position, fromPosition)
local cfg ={
	Pos = {x = 309, y = 287, z = 7}, --Local de onde o player irá nascer ao acessar o Teleport Criado.
	TimeEffect = 11,-- Tempo em segundos que o efeito vai surgir no Tile. 11 = 10 segundos. sempre coloque 1 segundo a mais.
	Storage = 7000
}

function Effect()
	if isPlayer(cid) then
		doSendMagicEffect(cfg.Pos, CONST_ME_POFF)
	end
end
	  
if (getPlayerStorageValue(cid, cfg.Storage) - os.time() <= 0) then
    setPlayerStorageValue(cid, cfg.Storage, os.time() + 3600) -- por quanto tempo irá demorar para quando o player pisar novamente no Tile irá ficar surgindo o efeito. 3600 = 60 minutos
	
   T = 1
  while T ~= cfg.TimeEffect do
        addEvent(Effect, T*1000)
          T = T + 1
  end
end 

return TRUE
end

 

 

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

 

10 horas atrás, DEKU KUNNNN disse:

@Roy  Script muito boa, mas pq só a vocação que usou a magia do teleporte pode sair ? tem como resolver isso ?

 

Porque só salva a posição do Jogador que usou a spell.

doSavePlayerPos(cid, config.storage, getThingPos(cid))

Eu acho que tive uma solução para todos que entrarem no portal criado.

 

Substituir esse no lugar do outro spell .lua

Spoiler

function onCastSpell(cid, var)
function CreateTeleport(position, itemid)
	local uid = doCreateItem(itemid, 1, position)
		doSetItemActionId(uid, 9003)
	end
	
local TeleportID = 1387
local Teleport = {
config = {
Pos = getCreaturePosition(cid),
Time = 10, --Quanto tempo irá durar o Teleport 10 segundos
},
}

function removeTeleport(Teleport)
local t = getTileItemById(Teleport.config.Pos, TeleportID)
if t then
doRemoveItem(t.uid, 1)
doSendMagicEffect(Teleport.config.Pos, CONST_ME_POFF)
end
end

addEvent(CreateTeleport, 1, Teleport.config.Pos, TeleportID)
addEvent(removeTeleport, Teleport.config.Time * 1000, Teleport)
return TRUE
end

 

 

 

Movements.xml adicionar essa tag.

<movevent type="StepIn" actionid="9003" event="script" value="teleport2.lua"/>

 

em Movements/scripts criar um arquivo com nome. Teleport2.lua e adicionar isso dentro.

Spoiler

function onStepIn(cid, item, position, fromPosition)
local config = {storage = 8001}--Seleciona a storage 8001 e separa entre 3, exemplo - "8001, 8002, 8003", Entao nao use nenhuma dessas 3 storages em outros scripts.
local cfg = {storage = 8000, Tempo = 1*60, Pos = {x = 309, y = 287, z = 7}}  --1 minuto. Tempo que poderá passar no piso ao redor do Teleport.
local function doSavePlayerPos(uid, storage, pos)
doCreatureSetStorage(uid, storage, pos.x)
doCreatureSetStorage(uid, storage+1, pos.y)
doCreatureSetStorage(uid, storage+2, pos.z)
end
doSavePlayerPos(cid, config.storage, getThingPos(cid))
setPlayerStorageValue(cid, cfg.storage, os.time()+cfg.Tempo)
doTeleportThing(cid, cfg.Pos)
return TRUE
end

 

 

OBS: Lembrando que o tempo do teleport criado tem que ser menor que o tempo para entrar no outro Teleport assim o player(s) voltará para o local de onde o Teleport foi criado.

Editado por Roy (veja o histórico de edições)

Postado
  • Autor
2 horas atrás, Roy disse:

É o seguinte ele irá castar a Spell em alguém tipo.


Exiva Black Fenix

E ambos terá que está em party(somente em party) e então  serão teleportado para o local. O portal criado não irá funcionar mais até porque somente ambos irá poder passar pelo portal do outro lado no caso.

 

adicionar na tag xml da spell:


needtarget="1" params="1" range="1" 

range="1" = distância necessária para poder castar a spell. 1 = Player próximo um do outro.

 

E irá ficar assim:


<instant name="test" words="test" lvl="0" needtarget="1" params="1" range="1" maglv="0" manapercent="0" soul="0" exhaustion="1000" prem="0" enabled="1" script="test.lua"/>

 

Spell .lua

  Mostrar conteúdo oculto


local config = {storage = 8001}--Seleciona a storage 8001 e separa entre 3, exemplo - "8001, 8002, 8003", Entao nao use nenhuma dessas 3 storages em outros scripts.
local cfg = {storage = 8000, Tempo = 1*60}  --1 minuto. Tempo que poderá passar no piso ao redor do Teleport.

local function doSavePlayerPos(uid, storage, pos)
doCreatureSetStorage(uid, storage, pos.x)
doCreatureSetStorage(uid, storage+1, pos.y)
doCreatureSetStorage(uid, storage+2, pos.z)
end

function onCastSpell(cid, var)
local target = variantToNumber(var)
local party = getPartyMembers(cid)
local targetIsPartyMember = false

local TeleportID = 1387
local Teleport = {
config = {
ToPos = {x = 0, y = 0, z = 0}, -- Local onde o jogador será teleportado coloquei 0 porque caso outro jogador tente entrar não possa ser teleportado somente a quem o cara usou a spell
TPos = {x = 309, y = 287, z = 7}, -- Local onde o jogador será teleportado
Pos = getCreaturePosition(cid),
Time = 10, --Quanto tempo irá durar o Teleport 10 segundos
},
}

function removeTeleport(Teleport)
local t = getTileItemById(Teleport.config.Pos, TeleportID)
if t then
doRemoveItem(t.uid, 1)
doSendMagicEffect(Teleport.config.Pos, CONST_ME_POFF)
end
end

if type(party) == "table" then
for _, member in pairs(party) do
if member == target then
targetIsPartyMember = true
break
end
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa esta em party para castar essa spell e, o target precisa ser um membro da sua party!")
return false
end

if targetIsPartyMember then
doCreateTeleport(TeleportID, Teleport.config.ToPos,Teleport.config.Pos)
addEvent(removeTeleport, Teleport.config.Time * 1000, Teleport)
setPlayerStorageValue(target, cfg.storage, os.time()+cfg.Tempo)
setPlayerStorageValue(cid, cfg.storage, os.time()+cfg.Tempo)
doSavePlayerPos(target, config.storage, getThingPos(target))
doSavePlayerPos(cid, config.storage, getThingPos(cid))
doTeleportThing(target, Teleport.config.TPos)
doTeleportThing(cid, Teleport.config.TPos)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você só pode usar essa spell em membros da sua party.")
end
return TRUE
end

 

 

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

 

Sim tem sim, mas você vai adicionar uma action no piso para onde o Player irá ser teleportado.

 

Tag Movements.xml


<movevent type="StepIn" actionid="9002" event="script" value="Piso-TPos.lua"/>

Piso-TPos.lua

  Mostrar conteúdo oculto


function onStepIn(cid, item, position, fromPosition)
local cfg ={
	Pos = {x = 309, y = 287, z = 7}, --Local de onde o player irá nascer ao acessar o Teleport Criado.
	TimeEffect = 11,-- Tempo em segundos que o efeito vai surgir no Tile. 11 = 10 segundos. sempre coloque 1 segundo a mais.
	Storage = 7000
}

function Effect()
	if isPlayer(cid) then
		doSendMagicEffect(cfg.Pos, CONST_ME_POFF)
	end
end
	  
if (getPlayerStorageValue(cid, cfg.Storage) - os.time() <= 0) then
    setPlayerStorageValue(cid, cfg.Storage, os.time() + 3600) -- por quanto tempo irá demorar para quando o player pisar novamente no Tile irá ficar surgindo o efeito. 3600 = 60 minutos
	
   T = 1
  while T ~= cfg.TimeEffect do
        addEvent(Effect, T*1000)
          T = T + 1
  end
end 

return TRUE
end

 

 

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

 

Porque só salva a posição do Jogador que usou a spell.


doSavePlayerPos(cid, config.storage, getThingPos(cid))

Eu acho que tive uma solução para todos que entrarem no portal criado.

 

Substituir esse no lugar do outro spell .lua

  Mostrar conteúdo oculto


function onCastSpell(cid, var)
function CreateTeleport(position, itemid)
	local uid = doCreateItem(itemid, 1, position)
		doSetItemActionId(uid, 9003)
	end
	
local TeleportID = 1387
local Teleport = {
config = {
Pos = getCreaturePosition(cid),
Time = 10, --Quanto tempo irá durar o Teleport 10 segundos
},
}

function removeTeleport(Teleport)
local t = getTileItemById(Teleport.config.Pos, TeleportID)
if t then
doRemoveItem(t.uid, 1)
doSendMagicEffect(Teleport.config.Pos, CONST_ME_POFF)
end
end

addEvent(CreateTeleport, 1, Teleport.config.Pos, TeleportID)
addEvent(removeTeleport, Teleport.config.Time * 1000, Teleport)
return TRUE
end

 

 

 

Movements.xml adicionar essa tag.


<movevent type="StepIn" actionid="9003" event="script" value="teleport2.lua"/>

 

em Movements/scripts criar um arquivo com nome. Teleport2.lua e adicionar isso dentro.

  Mostrar conteúdo oculto


function onStepIn(cid, item, position, fromPosition)
local config = {storage = 8001}--Seleciona a storage 8001 e separa entre 3, exemplo - "8001, 8002, 8003", Entao nao use nenhuma dessas 3 storages em outros scripts.
local cfg = {storage = 8000, Tempo = 1*60, Pos = {x = 309, y = 287, z = 7}}  --1 minuto. Tempo que poderá passar no piso ao redor do Teleport.
local function doSavePlayerPos(uid, storage, pos)
doCreatureSetStorage(uid, storage, pos.x)
doCreatureSetStorage(uid, storage+1, pos.y)
doCreatureSetStorage(uid, storage+2, pos.z)
end
doSavePlayerPos(cid, config.storage, getThingPos(cid))
setPlayerStorageValue(cid, cfg.storage, os.time()+cfg.Tempo)
doTeleportThing(cid, cfg.Pos)
return TRUE
end

 

 

OBS: Lembrando que o tempo do teleport criado tem que ser menor que o tempo para entrar no outro Teleport assim o player(s) voltará para o local de onde o Teleport foi criado.

 

a.thumb.png.ed4b273b11cee105d399d3cad047f5a2.png

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo