Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

3.png.8fd2dbef78a2fe31919666bac0360264.png

 

Olá galera, hoje vim trazer um tutorial bem completinho para vocês do sistema de "Target Animada pela source do OTC" renovada para otcliente 0.6.6 e 0.6.7 e espero que gostem ^^ 

 

Imagens do Target Azul;;

1.png.ab55de83b0f123fc21bdd8cd62289ca8.png

 

Imagens do Target Vermelho;;

2.png.0dd6703a1e36f9a8a85a1fb7f4e55c5e.png

 

VIÍDEO:;;

Spoiler

 

 

 

TUTORIAL

1° Vai na pasta do seu otcliente e ache a pasta da source dele otclient-0.6.6\src\client dentro dela abre o arquivo creature.cpp e procure;;

void Creature::draw(const Point& dest, float scaleFactor, bool animate, LightView *lightView)
{
    if(!canBeSeen())
        return;

    Point animationOffset = animate ? m_walkOffset : Point(0,0);

    if(m_showTimedSquare && animate) {
        g_painter->setColor(m_timedSquareColor);
        g_painter->drawBoundingRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(28, 28)*scaleFactor), std::max<int>((int)(2*scaleFactor), 1));
        g_painter->setColor(Color::white);
    }

    if(m_showStaticSquare && animate) {
        g_painter->setColor(m_staticSquareColor);
        g_painter->drawBoundingRect(Rect(dest + (animationOffset - getDisplacement())*scaleFactor, Size(Otc::TILE_PIXELS, Otc::TILE_PIXELS)*scaleFactor), std::max<int>((int)(2*scaleFactor), 1));
        g_painter->setColor(Color::white);
    }

    internalDrawOutfit(dest + animationOffset * scaleFactor, scaleFactor, animate, animate, m_direction);
    m_footStepDrawn = true;

    if(lightView) {
        Light light = rawGetThingType()->getLight();
        if(m_light.intensity != light.intensity || m_light.color != light.color)
            light = m_light;

        // local player always have a minimum light in complete darkness
        if(isLocalPlayer() && (g_map.getLight().intensity < 64 || m_position.z > Otc::SEA_FLOOR)) {
            light.intensity = std::max<uint8>(light.intensity, 3);
            if(light.color == 0 || light.color > 215)
                light.color = 215;
        }

        if(light.intensity > 0)
            lightView->addLightSource(dest + (animationOffset + Point(16,16)) * scaleFactor, scaleFactor, light);
    }
}

altere para;;

 

void Creature::draw(const Point& dest, float scaleFactor, bool animate, LightView *lightView)
{
    if(!canBeSeen())
        return;

    Point animationOffset = animate ? m_walkOffset : Point(0,0);

/*
if(m_showTimedSquare && animate) {
        g_painter->setColor(m_timedSquareColor);
        g_painter->drawBoundingRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(28, 28)*scaleFactor), std::max<int>((int)(2*scaleFactor), 1));
        g_painter->setColor(Color::white);
    }

    if(m_showStaticSquare && animate) {
        g_painter->setColor(m_staticSquareColor);
        g_painter->drawBoundingRect(Rect(dest + (animationOffset - getDisplacement())*scaleFactor, Size(Otc::TILE_PIXELS, Otc::TILE_PIXELS)*scaleFactor), std::max<int>((int)(2*scaleFactor), 1));
        g_painter->setColor(Color::white);
    }
*/
        
    if(m_showTimedSquare && animate) {
		
        /*ImagePtr L3K0Tt = Image::load("data/images/target.png"); //se preferir usar por imagem
		TexturePtr L3K0T = TexturePtr(new Texture(L3K0Tt, false));
		g_painter->drawTexturedRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(L3K0T->getHeight(), L3K0T->getWidth())*scaleFactor), L3K0T);*/
		
		EffectPtr efeitoL3K0T = EffectPtr(new Effect());
		efeitoL3K0T->setId(653); //id da sprite do efeito
		g_painter->setColor(m_timedSquareColor);
		Rect rect = Rect(dest + (animationOffset - getDisplacement())*scaleFactor, Size(Otc::TILE_PIXELS, Otc::TILE_PIXELS)*scaleFactor);
		g_painter->drawTexturedRect(rect, efeitoL3K0T->getThingType()->getTexture(0));
		g_painter->setColor(Color::white); g_painter->setColor(Color::white); // by L3K0T
		g_painter->setOpacity(0.9);
				
   }

    if(m_showStaticSquare && animate) {

        /*ImagePtr L3K0Tt = Image::load("data/images/target.png"); //se preferir usar por imagem
		TexturePtr L3K0T = TexturePtr(new Texture(L3K0Tt, false));
		g_painter->drawTexturedRect(Rect(dest + (animationOffset - getDisplacement() + 2)*scaleFactor, Size(L3K0T->getHeight(), L3K0T->getWidth())*scaleFactor), L3K0T);*/
		
	    EffectPtr efeitoL3K0T = EffectPtr(new Effect());
		efeitoL3K0T->setId(653); //id da sprite do efeito
		g_painter->setColor(m_staticSquareColor);
		Rect rect = Rect(dest + (animationOffset - getDisplacement())*scaleFactor, Size(Otc::TILE_PIXELS, Otc::TILE_PIXELS)*scaleFactor);
		g_painter->drawTexturedRect(rect, efeitoL3K0T->getThingType()->getTexture(0));
		g_painter->setColor(Color::white); //1 para não piscar e fixar no vermelho
    }

    internalDrawOutfit(dest + animationOffset * scaleFactor, scaleFactor, animate, animate, m_direction);
    m_footStepDrawn = true;

    if(lightView) {
        Light light = rawGetThingType()->getLight();
        if(m_light.intensity != light.intensity || m_light.color != light.color)
            light = m_light;

        // local player always have a minimum light in complete darkness
        if(isLocalPlayer() && (g_map.getLight().intensity < 64 || m_position.z > Otc::SEA_FLOOR)) {
            light.intensity = std::max<uint8>(light.intensity, 3);
            if(light.color == 0 || light.color > 215)
                light.color = 215;
        }

        if(light.intensity > 0)
            lightView->addLightSource(dest + (animationOffset + Point(16,16)) * scaleFactor, scaleFactor, light);
    }
}

salve.

 

 2° agora volte na pasta da source do otclient e abra o arquivo thingtype.h e procure por;;

const TexturePtr& getTexture(int animationPhase);

altere para

/*const TexturePtr& getTexture(int animationPhase);*/

depois ache;;

std::vector<int> getSprites() { return m_spritesIndex; }

abaixo cole;;

const TexturePtr& getTexture(int animationPhase);

dps é só abrir o object guilder e importar o efeito do target;; >>>>> effect_653.obd  tem outras sprite doadas por mim segue o link 

 

 

Depois de recortar é só por o efeito no otc e colocar o ID da sprite ali aonde tá o numero 653 no código.

 

Ajudei?? REP+ ;) 

 

Créditos:;

-Eu por alterar outras coisas que faltou.

-Jair Kevick (código base)

 

effect_653.png

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

  • 2 weeks later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo