Ir para conteúdo

Temperatura


Noock

Posts Recomendados

eae pessoal do xtibia, aqui esta um script reformulado que um membro deixou no xtibia a muito tempo.
nesse script o tibia irar se tornar mais "real", Tornando possível levar dano de frio ou calor, funciona basicamente assim, dependendo da sua roupa e sua altura no tibia (em Z, subsolo e acima do solo)

você irar ganhar temperatura, e quando chegar a uma certa temperatura você irar levar dano, ex: eu desci ate o fundo, onde e muito frio portanto se eu não tiver uma roupa quente o suficiente vou levar dano de frio.

 

sem mais delongas vamos ao script ~~

 

#Instalação

Spoiler

Crie um arquivo chamado temp.lua em creaturescripts/scripts e coloque isso dentro

Spoiler
tempConfig = {-- Confing	sub_config = true, -- Ativar temperatura subterranea? ( false - Não ) ( true - Sim )	death_config = true, -- Poder morrer se temperatura for muito alta/baixa?-- Temperatura normal	temp_base = 26,-- Dano (aleatorio entre o minimo e o maximo)	base_dano = -1, -- Dano por temperatura um pouco alta/baixa	max_base_dano = -100, -- Dano por temperatura muito alta/baixa	delay = 2000, -- tempo em milissigundos dos danos--Temperaturas (quando tiver essa temperatura vai levar dano)	Temperatura_Calor = 40,	Temperatura_Frio = 20,-- Quando tiver nessa temperatura o limite do dano e expandido	Temperatura_Calor_D = 50,	Temperatura_Frio_D = 10}-- determina a temperatura da outfit...outfit_temp = {-- Female Outfits	[136] = 5,-- Citizen-- Male Outfits	[128] = 5-- Citizen}-- determina a temperatura no acima do solo/subsolosub = {[0] = -8,--Nivel Mais Alto[1] = -5,[2] = -3,[3] = 2,[4] = 4,[5] = 3,[6] = 1,[7] = 0,--Nivel Normal[8] = 1,[9] = 2,[10] = -3,[11] = -5,[12] = -8,[13] = -10,[14] = -15,[15] = -20}--Nivel Mais Baixofunction onThink(creature, interval)	local player = creature:getPlayer()	local f = player:getPosition()	local playerOutfit = player:getOutfit()	local temp_local = player:getStorageValue(121314) 	if player:getAccountType() < ACCOUNT_TYPE_GOD then		temp_user = ((tempConfig.temp_base + outfit_temp[playerOutfit.lookType]) + temp_local)		if tempConfig.sub_config == true then -- Temperatura em alta/baixa altitides			temp_user = temp_user + sub[f.z]		end		player:setStorageValue(12345, temp_user)		if temp_user >= tempConfig.Temperatura_Calor then			addEvent(function()				player:sendTextMessage(MESSAGE_STATUS_WARNING, "muito Calor...")				if temp_user >= (tempConfig.Temperatura_Calor + 6) then					player:addHealth(math.random(tempConfig.base_dano, (tempConfig.max_base_dano + (temp_user - tempConfig.Temperatura_Calor))))				else					player:addHealth(math.random(tempConfig.base_dano, -5))				end			end ,tempConfig.delay)			elseif temp_user <= tempConfig.Temperatura_Frio then				addEvent(function()										player:sendTextMessage(MESSAGE_STATUS_WARNING, "muito Frio...")					if temp_user <= (tempConfig.Temperatura_Frio - 6) then						player:addHealth(math.random(tempConfig.base_dano, (tempConfig.max_base_dano + (temp_user - tempConfig.Temperatura_Frio))))					else						player:addHealth(math.random(tempConfig.base_dano, -5))					end				end ,tempConfig.delay)			elseif temp_user >= tempConfig.Temperatura_Calor_D or temp_user <= tempConfig.Temperatura_Frio_D then				addEvent(function()					if tempConfig.death_config == true then						player:sendTextMessage(MESSAGE_STATUS_WARNING, "...")						player:addHealth(math.random(tempConfig.base_dano - 5, tempConfig.max_base_dano))					end				end ,tempConfig.delay)		end	endend

 

É em Creaturescript/Scripts/login.lua adicione a seguinte linha antes do return true no final do script

	player:registerEvent("Temp")	return trueend

É em Creaturescripts.xml e adicione a seguinte linha em qualquer lugar

<event type="think" name="Temp" script="temp.lua" />

Em talkactions/scripts crie um novo chamado de temp.lua e bote o seguinte dentro

function onSay(player, words, param)	local temp = player:getStorageValue(12345)	player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Voce esta sentindo ".. temp .." Graus")end

É em talkactions.xml adicione essa linha

<talkaction words="!temp" script="temp.lua"/>

 

infelizmente eu não consegui adaptar tudo, principalmente a parte do movements, se alguém conseguir agradeceria se postasse :D

 

#Créditos

Pc98 Autor do script.

 

@patrickjean Por disponibilizar no Xtibia a base que eu usei > link <

@Noock por quase nada.

Link para o comentário
Compartilhar em outros sites

sNão acho muito interessante levar dano, mas ficar mais lento quando está com outfits "pesadas" no calor, ter que comer mais comida no frio, diminuir o dano quando estiver com mt frio ou mt calor etc ficaria legal.
O único problema q eu vi nesse script aí é que ele seta a temperatura por tile, e não por área, e isso acaba limitando teu mapping, saca? Mas é uma ideia bem bacana

Link para o comentário
Compartilhar em outros sites

  • Administrador

Poderia aplicar, nessas áreas, a condição ativada ao pisar em um fire field, mas com dano bem menor. Se não eu acho que fica zuado, mas acho que vai da preferência de cada um que for usar e do tipo de servidor. Obrigado por trazer o sistema ao fórum, muito bom!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...