TR

[Encerrado] Usar tp se tiver tal cap

Por travisani, 06 de nov. de 2017 em Tópicos Sem Resposta

3
950
travisaniT
06 de novembro de 2017 às 17:07

Gostaria de saber se tem como adaptar um script que faça com que só 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

 

2 semanas depois...
RayanR
17 de novembro de 2017 às 14:02

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

 

Editado Novembro 17 por Rayan

5 meses depois...
StigalS
19 de abril de 2018 às 17:12
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.