FU

[TFS 1.x] Weather System

Por Furabio, 11 de abr. de 2015 em Mods, funções e outros

script
6
3.3k
FurabioF
11 de abril de 2015 às 11:48

Basicamente é um sistema onde permite chuva e solte raios em determinado local do mapa, use sua criatividade ao usar o sistema.

 

 

 

 

 

_MOhh7T-.png

 

 

 

Features :

 

  • Chuva só nos jogadores, para economizar memória do servidor, em vez de enviar todo o mapa.
  • Se não tiver um telhado, vai enviar o efeito dentro do local mesmo.
  • Assim, se você estiver sob um teto, vai enviar para fora do local.
  • Quando água bate no chão, envia o efeito de splash.
  • Efeito do trovão causa dano.

Em global.lua adicione :

weatherConfig = {
    groundEffect = CONST_ME_LOSEENERGY,
    fallEffect = CONST_ANI_ICE,
    thunderEffect = true,
    minDMG = 5,
    maxDMG = 10
}

function Player.sendWeatherEffect(self, groundEffect, fallEffect, thunderEffect)
    local position, random = self:getPosition(), math.random
    position.x = position.x + random(-4, 4)
      position.y = position.y + random(-4, 4)

    local fromPosition = Position(position.x + 1, position.y, position.z)
       fromPosition.x = position.x - 7
       fromPosition.y = position.y - 5

    local tile, getGround
    for Z = 1, 7 do
        fromPosition.z = Z
        position.z = Z

        tile = Tile(position)
        if tile then -- If there is a tile, stop checking floors
            fromPosition:sendDistanceEffect(position, fallEffect)
            position:sendMagicEffect(groundEffect, self)

            getGround = tile:getGround()
            if getGround and ItemType(getGround:getId()):getFluidSource() == 1 then
                position:sendMagicEffect(CONST_ME_WATERSPLASH, self)
            end
            break
        end
    end

    if thunderEffect and tile then
        if random(2) == 1 then
            local topCreature = tile:getTopCreature()

            if topCreature and topCreature:isPlayer() then
                position:sendMagicEffect(CONST_ME_BIGCLOUDS, self)
                doTargetCombatHealth(0, self, COMBAT_ENERGYDAMAGE, -weatherConfig.minDMG, -weatherConfig.maxDMG, CONST_ME_NONE)
                self:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You were hit by lightning and lost some health.")
            end
        end
    end
end

modo de uso :

player:sendWeatherEffect(weatherConfig.groundEffect, weatherConfig.fallEffect, weatherConfig.thunderEffect)

Em breve vou fazer uns scripts bacana em cima desse sistema, aceito sugestões.

 

 

Créditos : Printer.

1 mês depois...
bielstoccoB
14 de maio de 2015 às 18:48

Achei legal, mas poderia explicar melhor onde instalar.. a tag do modo de uso coloca onde?
e como será o sistema que fará encima desse?

6 meses depois...
BbcrisB
13 de novembro de 2015 às 05:09

onde coloc isso player:sendWeatherEffect(weatherConfig.groundEffect, weatherConfig.fallEffect, weatherConfig.thunderEffect)

CaronteC
13 de novembro de 2015 às 12:35

Achei legal, mas poderia explicar melhor onde instalar.. a tag do modo de uso coloca onde?

e como será o sistema que fará encima desse?

 

 

onde coloc isso player:sendWeatherEffect(weatherConfig.groundEffect, weatherConfig.fallEffect, weatherConfig.thunderEffect)

 

 

Vocês colocam o primeiro código na pasta lib.

 

 

Já o segundo está chamando a função, então vocês podem colocar onde quiser, globalevents, actions, movements

@, explica aí, eu não sei instalar também não wink_smile.gif

AmantezinhoA
14 de novembro de 2015 às 02:12

Parece legal! :)
Porém, para usuários de OTCLIENT, podem aproveitar os Game_effect (shaders)

BbcrisB
14 de novembro de 2015 às 19:30

Obg