Ir para conteúdo

Tibia Real Temperature


Posts Recomendados

Falaé Galera do XTibia, venho hoje postar um script muito legal que um amigo meu fez!

Então, vamos a ele!!

 

#Informações:

Nome: Tibia Real Temperature 1.0

Autor: Pc98 ( I )

Versão Testada: Tibia 8.42~8.7 ( distro tfs, mas deve funcionar em outras, com pequenas alterações, ou nenhuma)

 

@Comentarios:

Um sistema de temperatura para o Tibia ( em graus Celsios ). Resumindo, cada area tem sua temperatura, e piora ou melhor , se a cave for muito profunda, ou a outfit for muito quente, ou mesmo se subir muito uma montanha.

 

Ex: a beggar; se andar com ela no deserto, começa a perder vida, ate morrer, ou tirar ela.

 

 

#Instalação:

 

@CreatureScripts:

 

Vá em Creaturescripts/Scripts e crie um arquivo chamado temp.lua e adicione:

function onThink(cid, interval)
if isPlayer(cid) and getPlayerAccess(cid) == 0 then


------------------------- CONFIG ----------------------

-- Como configurar: Modifique os numeros abaixo da direita para
-- determinar a temperatura da outfit...
outfit_temp = {
              -- Female Outfits
              [136] = 6,        
              [137] = 5,        
              [138] = 5,        
              [139] = 6,        
              [140] = 7,        
              [141] = 6,        
              [142] = 8,        
              [147] = 11,       
              [148] = 6,        
              [149] = 6,        
              [150] = 8,        
              [155] = 7,        
              [156] = 2,   
              [157] = 20,  
              [158] = 11,   
              [152] = 9,
              [259] = 8,
              [270] = 14,
              [279] = 15,
              [288] = 4,
              [324] = 5,
              [336] = 6,
              [329] = 6,
              [366] = 8,
              -- Male Outfits
              [128] = 6, 
              [129] = 5, 
              [130] = 5,
              [131] = 6,
              [132] = 7,
              [133] = 6,
              [134] = 8,
              [143] = 11,
              [144] = 6,
              [145] = 6,
              [151] = 8,
              [152] = 7,
              [153] = 20,   
              [154] = 14,  
              [251] = 11,   
              [268] = 9,
              [273] = 8,
              [278] = 14,
              [279] = 15,
              [289] = 4,
              [325] = 5,
              [335] = 6,
              [328] = 6,
              [367] = 8,
              }     


temp_base = 20

min_dano = 15          -- Dano por temperatura um pouco alta/baixa
max_dano = 100         -- Dano por temperatura muito alta/baixa
delay = 2000         -- tempo em milissigundos dos danos

sub_config = 1                   -- Ativar temperatura subterranea? ( 0 - Nao ) ( 1 - SIM )


-----------------------------FIM DAS CONFIG ------------------------

temp_local = getPlayerStorageValue(cid, 121314)
pos = getCreaturePosition(cid)


  if temp_local == -1 then temp_local = 0 end

  temp_user = (temp_base + temp_local + outfit_temp[getCreatureOutfit(cid).lookType])

  if sub_config == 1 then 

  ----------------------- Subterraneo -------------------------------

  sub = { -11, -10, -8,-5 ,-3 ,-55 , [7] = 0, 55, 5, 7, 10, 12, 15}  

  if pos.z ~= 7 then                                             
     temp_user = temp_user + sub[pos.z]                                  
  end                                                              
  end                                                                 
  -------------------------------------------------------------------

  setPlayerStorageValue(cid, 12345, temp_user)  


  if temp_user >= 40 and temp_user < 50 then
     addEvent(Quente, delay, cid,min_dano)

  elseif temp_user >=50 then
     addEvent(Quente, delay, cid,max_dano)

  elseif temp_user <= 10  and temp_user > 0 then
         addEvent(Frio, delay, cid,min_dano)
  elseif temp_user < 0 then
         addEvent(Frio, delay, cid,max_dano)
  end
end   


end

function Quente(cid,dano,r)
doPlayerSendTextMessage(cid, 22, "Voce esta sentindo muito calor...")
doCreatureAddHealth(cid, -dano)
r = math.random(1,100)
if r <= 30 then
doCreateItem(2018, getCreaturePosition(cid))
end
end

function Frio(cid,dano)
doPlayerSendTextMessage(cid, 22, "Voce esta sentindo muito frio...")
doCreatureAddHealth(cid, -dano)
end  

 

Agora vá em Creaturescript/Scripts/login.lua e adicione a seguinte linha:

registerCreatureEvent(cid, "temp")

 

Agora, vá em Creaturescripts.xml e adicione a seguinte linha:

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

 

 

@Movements:

 

Vá em Movements/scripts e crie dois arquivos, um com o nome de temp_tiles_areia.lua e o outro com o nome de temp_tiles_gelo.lua

Em temp_tiles_areia.lua adicione isso:

function onStepIn(cid, item, position, fromPosition)

if isPlayer(cid) then
setPlayerStorageValue(cid, 121314, 20)
end

return true
end

function onStepOut(cid, item, position, fromPosition)

pos = {x=position.x,y=position.y,z=position.z,stackpos=0}
ground = getThingFromPos(pos)


--------- Deserto Tiles -------------

deserto_tile = {231}          --  Primeira ID "diferente do padrao de "ID=ID + 1 " ^^

deserto_tileid_min = 8315     -- Minimo ID do deserto
deserto_tileid_max = 8322     -- Maximo ID do deserto

for i=deserto_tileid_min, deserto_tileid_max, 1 do

 table.insert(deserto_tile,i)

end
-------------------------------------

if not isInArray(deserto_tile,ground.id) then
setPlayerStorageValue(cid, 121314, 0)
end

return true
end 

 

Em temp_tiles_gelo.lua adicione isso:

 function onStepIn(cid, item, position, fromPosition)

if isPlayer(cid) then
setPlayerStorageValue(cid, 121314, -20)
end

return true
end

function onStepOut(cid, item, position, fromPosition)

pos = {x=position.x,y=position.y,z=position.z,stackpos=0}
ground = getThingFromPos(pos)


--- GELO tiles----

gelo_tile = {}

gelo_tileid_min = 6580
gelo_tileid_max = 6608

for i=gelo_tileid_min, gelo_tileid_max, 1 do  
   table.insert(gelo_tile,i)
end             
---------------

if not isInArray(gelo_tile,ground.id) then
setPlayerStorageValue(cid, 121314, 0)
end

return true
end 

 

Agora, adicione as seguintes linhas em Movements.xml:

<!-- Areia tiles -->

   <movevent type="StepIn" itemid="231" event="script" value="temp_tiles_areia.lua"/>
   <movevent type="StepOut" itemid="231" event="script" value="temp_tiles_areia.lua"/>
   <movevent type="StepIn" fromid="8315" toid="8322" event="script" value="temp_tiles_areia.lua"/>
   <movevent type="StepOut" fromid="8315" toid="8322" event="script" value="temp_tiles_areia.lua"/>

   <!-- Gelo Tiles -->

      <movevent type="StepIn" fromid="6580" toid="6608" event="script" value="temp_tiles_gelo.lua"/>
   <movevent type="StepOut" fromid="6580" toid="6608" event="script" value="temp_tiles_gelo.lua"/>  

#TalkActions:

 

Vá em Talkactions/Scripts e crie um arquivo com o nome temp.lua e adicione:

function onSay(cid, words, param)

doPlayerSendCancel(cid,"Voce esta sentindo "..getPlayerStorageValue(cid, 12345).." Graus")
end

 

Adicione esta linha em Talkactions.xml:

<talkaction words="/temp" event="script" value="temp.lua"/>  

 

 

Isso ai, se vocês tiverem alguma duvida, postem aqui!!

 

Gostou?? Te Ajudei?? REP++ =D

Link para o comentário
Compartilhar em outros sites

Amigo, gostei MUITO da ideia, porém estou testando aqui, ele está funcionando, mas está dando um erro sem parar, e causando lag no servidor.

 

 

[14/07/2011 02:20:10] [Error - CreatureScript Interface] 
[14/07/2011 02:20:10] data/creaturescripts/scripts/temp.lua:onThink
[14/07/2011 02:20:10] Description: 
[14/07/2011 02:20:10] data/creaturescripts/scripts/temp.lua:80: attempt to perform arithmetic on field '?' (a nil value)
[14/07/2011 02:20:10] stack traceback:
[14/07/2011 02:20:10] 	data/creaturescripts/scripts/temp.lua:80: in function <data/creaturescripts/scripts/temp.lua:1>

 

E este erro fica se repetindo a cada segundo, se tiver algum player conectado

Editado por bregola
Link para o comentário
Compartilhar em outros sites

Tá com cara de que copiou o script. Como você faz um script e não sabe resolver?

 

Cara preste mais atenção antes de julgar as pessoas, observe que no inicio do topico ele diz ' venho aqui trazer o script que meu amigo fez'. Então hora nenhuma ele falou que o script era dele.

Link para o comentário
Compartilhar em outros sites

Sei que estou pertubando com isso... mais teria como me mandar os IDS de tais pisos?

e no subteraneo, qual piso seria? o script vem programado, ou tem que arrumar ele, ei que são perguntas idiotas, mais sou novo na parte de script, Agradeço desde já, aguardo resposta...

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...