Temperatura

Noock
Por Noock
em Mods, funções e outros

Noock

Aquele que tudo vé
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 19/07/15Posts: 19

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.

Opa eae manin tudo em cima ?

Gabriel Netto

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 04/07/16Posts: 242Gênero: Masculino

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

Meu projeto OPEN-SOURCE de Pokétibia que será disponibilizado aqui no XTibia:

 

Vamos transformar o XTibia num ambiente melhor e de colaboração?
Se eu lhe ajudar ou postar algo interessante, voce me dá REP+,
e caso voce faça o mesmo, eu lhe dou o mesmo.

 

Administrador

xTibia 2017
avatar
Administrador
Administrador

INFOS

Grupo: AdministradorRegistrado: 09/07/05Posts: 5780Gênero: Outro

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!

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.