[Encerrado] Usar tp se tiver tal cap

travisani
em Tópicos Sem Resposta

travisani

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 08/08/15Posts: 6

Gostaria de saber se tem como adaptar um script que faça com que  entre em um determinado teleport, quem tiver tiver 400 de CAP  ou menos (capacidade)

400 ou 400- de cap

Id do teleport: 1387

 

Eu tenho esse script, porem não funcionou... 

TFS 0.3.6 ~ 0.4   Servidor 8.60

function getPlayerMaxCap(cid)           -- Function by darkhaos
   local query = db.getResult("SELECT `cap` FROM `players` WHERE `id` = " .. getPlayerGUID(cid) .. ";")
   if query:getID() ~= -1 then
       return query:getDataInt("cap")
   end
   query:free()
   return LUA_ERROR
end
 
function onStepIn(cid, item, position, fromPosition)
   if getPlayerMaxCap(cid) < 400 then
       return true
   end
   return false
end

 

Rayan

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/05/06Posts: 14Gênero: Masculino

Vc vai precisar botar uma "Action ID" pelo Remere's Map Editor no teleporte (clicando com o botão direito do mouse e indo em propriedades e modificando o numero la), eu testei com o valor 5000.

Não coloque a posição que o teleporte envia o player deixe em branco, somente modifique o Action ID.

 

Movements/movements.xml

Verifique se tem alguma outra tag utilizando o itemid="1387" (dando ctrl+F), creio que vá ter um script chamado "citizen.lua".

Ae vc vai até o script em "Movements/scripts/citizen.lua" e coloca esse script antes do ultimo return true.

Só para explicar as variáveis que vc vai ter que mudar:

local tp_menos_cap = {x=95,y=126,z=7 } --> Coloque a posição para onde a pessoa vai ser teleportada se tiver menos que 400 de cap.
local tp_mais_cap = {x=92,y=125,z=7 } --> Coloque a posição para onde a pessoa vai ser teleportada se tiver mais que 400 de cap.

local cap = getPlayerFreeCap(cid)
local tp_menos_cap = {x=95,y=126,z=7 }
local tp_mais_cap = {x=92,y=125,z=7 }

	if item.actionid == 5000 then
			if cap <= 400 then
				doTeleportThing(cid, tp_menos_cap)
				doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
				return true
			end
		doTeleportThing(cid, tp_mais_cap)
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
		return true
	end

Movements/scripts/citizen.lua

Juntando os 2 no meu caso ficou assim:

function onStepIn(cid, item, position, fromPosition)
	if(item.actionid > 30020 and item.actionid < 30100) then
		local townId = (item.actionid - 30020)
		doPlayerSetTown(cid, townId)
		doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You are the newest resident of " .. getTownName(townId) .. ".")
	end

local cap = getPlayerFreeCap(cid)
local tp_menos_cap = {x=95,y=126,z=7 }
local tp_mais_cap = {x=92,y=125,z=7 }

	if item.actionid == 5000 then
			if cap <= 400 then
				doTeleportThing(cid, tp_menos_cap)
				doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
				return true
			end
		doTeleportThing(cid, tp_mais_cap)
		doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
		return true
	end
	return true
end

 

Stigal

don't ever stop...
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 28/11/10Posts: 3402Gênero: Masculino
A questão neste tópico de suporte foi encerrada por falta de resposta. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta

VI6MDIG.png

 

"O fracasso é a oportunidade de se começar de novo inteligentemente"

Minhas Redes Sociais: Youtube | Página & Grupo | Steam  | Discord Xtibia | Skype: @mrooger

 

OTpanel