Ir para conteúdo

[Arquivado]Teleport Script


lucasjockey

Posts Recomendados

Ola XTibianos, venho aqui postar um código que cria um Teleport com magia estilo Ragnarök.

O destino do TP vai ser o temple do player que o criou.

 

Avisando desde já que esse TP Script não é meu, e sim de outro usuario (veja os créditos no final do post).

 

Começando...

 

Crie um arquivo chamado Portal.lua na pasta "data/actions/scripts/", nele coloque essas sintaxes:

 

if(getTileItemByType == nil or getPlayerGUID == nil or doCreateTeleport == nil) then
error("Your server does not have support for this script!")
return
end

local getStore = getPlayerStorageValue
local allowedVocations = {2, 6} -- Vocações que podem criar o Portal.
local clientVersion = 810 -- 800 para cliente 8.0, 792 para cliente 7.92
local timeToRemove = 10 -- Tempo que o portal irá desaparecer, em segundos.
local canUseOnPz = FALSE -- Pode ser usado em Protection Zone? FALSE para não, TRUE para sim.
local giveInfightCondition = FALSE -- FALSE para que o char não consiga criar o portal em batalha, TRUE para que consiga.
local portalCreationDelay = 0 -- Tempo para que o portal apareça depois de ter usado a magia.

local condition = 0
if(giveInfightCondition ~= FALSE) then
condition = createConditionObject(CONDITION_INFIGHT)
setConditionParam(condition, CONDITION_PARAM_TICKS, (timeToRemove * 1000)+2000)
end

-- Funções

local function getPlayerLookPos(cid)
local playerPos = getCreaturePosition(cid)
local lookDir = getPlayerLookDir(cid)
if(lookDir == NORTH) then
	playerPos.y = playerPos.y-1
elseif(lookDir == SOUTH) then
	playerPos.y = playerPos.y+1
elseif(lookDir == WEST) then
	playerPos.x = playerPos.x-1
elseif(lookDir == EAST) then
	playerPos.x = playerPos.x+1
end
return playerPos
end

local function removePortal(params)
local remItem = getTileItemByType(params.pos, ITEM_TYPE_TELEPORT)

if(remItem.actionid == params.store and getGlobalStorageValue(params.store) == 1) then
	doRemoveItem(remItem.uid)
	doSendMagicEffect(params.pos, CONST_ME_POFF)
	setGlobalStorageValue(params.store, 0)
end
end

local function canCreatePortal(cid)
	if(portalCreationDelay == 0) then
	return true
end

local newExhaust = os.time()
local oldExhaust = getPlayerStorageValue(cid, 65000)
if(oldExhaust == nil or oldExhaust < 0) then
	oldExhaust = 0
end
local diffTime = os.difftime(newExhaust, oldExhaust)
if(diffTime >= portalCreationDelay or diffTime < 0) then
	setPlayerStorageValue(cid, 65000, newExhaust) 
	return true
end
return false
end

function onUse(cid, item, frompos, item2, topos)
local portalPos = {x=getStore(cid, 8997), y=getStore(cid, 8998), z=getStore(cid, 8999)}
local playerPos = getCreaturePosition(cid)
local storage = 9000 + getPlayerGUID(cid)
if(portalPos.x < 0 or portalPos.y < 0 or portalPos.z < 0)then
	local town = getPlayerTown(cid)
	if(town == 1) then
		portalPos = {x=100, y=100, z=7}
	elseif(town == 2) then
		portalPos = {x=452, y=338, z=6}
	elseif(town == 3) then
		portalPos = {x=796, y=1025, z=8}
		--Add many towns as you wish.
	end
end

local useFromPos = {x=frompos.x, y=frompos.y, z=frompos.z}
if(useFromPos.x == 65535) then
	useFromPos = {x=playerPos.x, y=playerPos.y, z=playerPos.z}
end

if(topos.x == 65535 or (topos.x == 31 and topos.y == 31 and topos.z == 7)) then
	return FALSE
end

if(portalPos.x == topos.x and portalPos.y == topos.y and portalPos.z == topos.z) then
	doPlayerSendCancel(cid, "You cannot create a portal in the same place you are going to!")
	return TRUE
end

if(canUseOnPz == FALSE and (getTilePzInfo(topos) == TRUE or getTilePzInfo(useFromPos) == TRUE)) then
	doPlayerSendDefaultCancel(cid, RETURNVALUE_ACTIONNOTPERMITTEDINPROTECTIONZONE)
	return TRUE
end

if(isInArray(allowedVocations, getPlayerVocation(cid)) == TRUE or getPlayerAccess(cid) ~= 0) then
	if(canCreatePortal(cid) or getPlayerAccess(cid) ~= 0) then
		if(getGlobalStorageValue(storage) ~= 1) then
			local addPos = {x=topos.x, y=topos.y, z=topos.z}
			if(clientVersion < 800) then
				addPos = getPlayerLookPos(cid)
			end

			local portal = doCreateTeleport(1387, portalPos, addPos)
			doSetItemActionId(portal, storage)

			if(clientVersion < 810) then
				doSendMagicEffect(addPos, CONST_ME_ENERGYAREA)
			else
				doSendMagicEffect(addPos, CONST_ME_TELEPORT)
			end
			if(doSendDistanceShoot ~= nil) then
				doSendDistanceShoot(playerPos, addPos, CONST_ANI_ENERGY)
			end
			doSendMagicEffect(playerPos, CONST_ME_MAGIC_GREEN)

			setGlobalStorageValue(storage, 1)

			local params = {pid=cid, store=storage, pos=addPos}
			addEvent(removePortal, timeToRemove * 1000, params)

			if(giveInfightCondition == TRUE) then
				doTargetCombatCondition(0, cid, condition, CONST_ME_NONE)
			end
		else
			doSendMagicEffect(playerPos, CONST_ME_POFF)
			doPlayerSendCancel(cid, "You already have a portal.")
		end
	else
		doSendMagicEffect(playerPos, CONST_ME_POFF)
		doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
	end
else
	doSendMagicEffect(playerPos, CONST_ME_POFF)
	doPlayerSendCancel(cid, "You do not have the required vocation.")
end
return TRUE
end

 

Agora no Actions.xml adicione essa linha:

 

<action itemid="2361" script="portal.lua"/>

 

Vá para a pasta "data/movements/scripts/" e crie um arquivo chamado removeportal.lua com essas sintaxes:

 

function onStepOut(cid, item, pos)
local storage = 9000 + getPlayerGUID(cid)

if(isPlayer(cid) == TRUE) then
	if(item.actionid == storage and getGlobalStorageValue(storage) == 1) then
		doRemoveItem(item.uid)
		doSendMagicEffect(pos, CONST_ME_TELEPORT)
		setGlobalStorageValue(storage, 0)
	end
end
return TRUE
end

 

No arquivo movements.xml adicione:

 

<movevent event="StepOut" itemid="1387" script="removeportal.lua" />

 

Após isso vá para a pasta "data/talkactions/scripts/" e crie um arquivo chamado setportal.lua, nele adicione isso:

 

local allowedVocs = {2, 6}
local allowOnPz = FALSE

function onSay(cid, words, param)
local pos = getPlayerPosition(cid)
if(isInArray(allowedVocs, getPlayerVocation(cid)) == TRUE or getPlayerAccess(cid) ~= 0) then
	if(getTilePzInfo(pos) == FALSE or allowOnPz == TRUE) then
		setPlayerStorageValue(cid, 8997, pos.x)
		setPlayerStorageValue(cid, 8998, pos.y)
		setPlayerStorageValue(cid, 8999, pos.z)
		doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have set a new position for your portals.")
	else
		doSendMagicEffect(pos, CONST_ME_POFF)
		doPlayerSendCancel(cid, "You cannot set a portal position here.")
		return FALSE
	end
else
	doSendMagicEffect(pos, CONST_ME_POFF)
	doPlayerSendCancel(cid, "You do not have the required vocation.")
	return FALSE
end
return TRUE
end

 

No arquivo talkactions.xml adicione isso:

 

<talkaction words="alana vis" script="setportal.lua" />

 

Pronto, agora é só testa, espero que tenham gostado :winksmiley02:

 

tp1qf7.png

 

 

Créditos: Pedro B.

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

da erro aqui

 

data/actions/scripts/portal.lua:2: Your server does not have support for this sc

ript!

Warning: [Event::loadScript] Can not load script. data/actions/scripts/portal.lu

a

 

meu ot do god bom :(

 

infelizmente

 

se tiver como concerta me avisa

Link para o comentário
Compartilhar em outros sites

da erro aqui

 

data/actions/scripts/portal.lua:2: Your server does not have support for this sc
ript!
Warning: [Event::loadScript] Can not load script. data/actions/scripts/portal.lu
a

 

meu ot do god bom :(

 

infelizmente

 

se tiver como concerta me avisa

 

Seu OT não possue suporte.

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 2 weeks later...

Bom eu gosto do Tibia Tibia nao dessas copias de outros jogos ^.-

 

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

Assinatura

 

fanbarlo0.png

 

Minha Fan Bar Te ajudei? Entao Use

fanbarrez7.png

 

Sou Fan de

 

userbar641449wl2zk9.gif sliimfanlo2.png

 

Metas

 

[x]1 posts (SERVO)

[x]10 posts (CAMPONÊS)

[x]25 posts (CAÇADOR)

[x]50 posts (CAVALEIRO)

[x]100 posts (BARONETE)

[ ]200 posts (BARÃO)<----- Go Go Go!

[ ]300 posts (VISCONDE)

[ ]400 posts (DUQUE)

[ ]600 posts (ARQUEDUQUE)

[ ]800 posts (ARISTOCRATA)

[ ]1000 posts (REGENTE)

[ ]1400 posts (SÁBIO)

[ ]1800 posts (SACERDOTE)

[ ]2500 posts (PRÍNCIPE)<-----Um dia chego la ;D

 

Sobre SoulCalibur

 

SoulCalibur foi o unico a zerar tibia 7 vezes.

SoulCalibur fez 2 retas paralelas se encontrarem e uma dezer "oi" para outra.

SoulCalibur mata uma pedra com 2 passaros.

SoulCalibur contou ate o infinito 2x

SoulCalibur uma vez apostou corrida com seu reflexo e ganhou

SoulCalibur quando entra na água ele não fika molhado, é a água que fika Chuck Norris

O tempo não espera ninguém. Exceto se for SoulCalibur

SoulCalibur perdeu a virgindade antes de seu pai

SoulCalibur uma vez tropeçou numa pedra, o mundo gira até hoje

SoulCalibur consegue dividir por zero.

Algumas pessoas usam uniforme do Superman. Já o Superman usa uniforme do SoulCalibur

Quando Deus disse "haja luz" SoulCalibur disse "diga 'por favor'".

Não existe teoria da evolução. Apenas uma lista de criaturas que SoulCalibur deixa viver.

SoulCalibur é o único ser humano que já derrotou uma parede de tijolos em um jogo de tênis.

SoulCalibur jogou roleta russa com uma arma totalmente carregada e ganhou.

SoulCalibur zerou o Ragnarök no Atari

SoulCalibur não bate manteiga. Ele dá uma voadora na vaca e a manteiga sai voando.

Certa vez, SoulCalibur derrubou um caça alemão usando seu dedo e falando: "Bang!"

SoulCalibur pode beber um galão de leite em 47s

SoulCalibur venceu o Campeonato Mundial de Poker com um dois de paus e uma carta "Saída Livre da Prisão" do Banco Imobiliário.

Hail SoulCalibur!

 

Meus Carros

 

teka080808d03a17lw1.png

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...