Эфект плавного затемнения

Тема в разделе "Программирование / Скриптинг", создана пользователем pokypka20, 11 июл 2014.

  1. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Помогите пожалуйста, возможно ли реализовать эфект плавного затемнения в конце раунда. Нашол плагин blue screen of kill, там при убийстве игрока затемняется экран но спамит ошибками. Если кто уже делал подобное или может помочь подкиньте код.

    Идея плагина:
    Раунд закончился, экран у игрока плавно потемнел.

    Вот что я нашол:
    PHP:
    #include <sourcemod>
     
    public Plugin:myinfo 
    {
     
    name "Blue Screen of Kill",
     
    author "johnspade",
     
    description "The plugin fades the screen to transparent blue for a second when you kill someone",
     
    version "1.0",
     
    url "http://johnspade.ru"
    }
    // Получение события смерти
    public OnPluginStart()
    {
     
    HookEvent("player_death"Event_PlayerDeath);
    }
    // Функция затемнения
    PerformFade(clientduration, const color[4]) {
     new 
    Handle:hFadeClient=StartMessageOne("Fade",client)
     
    BfWriteShort(hFadeClient,duration)
     
    BfWriteShort(hFadeClient,0)
     
    BfWriteShort(hFadeClient,(0x0001))
     
    BfWriteByte(hFadeClient,color[0])
     
    BfWriteByte(hFadeClient,color[1])
     
    BfWriteByte(hFadeClient,color[2])
     
    BfWriteByte(hFadeClient,color[3])
     
    EndMessage()
    }
    // Получение игрока-убийцы, применение к нему функции затемнения
    public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
    {
     new 
    attacker_id GetEventInt(event"attacker");
     new 
    attacker GetClientOfUserId(attacker_id);
     
    PerformFade(attacker300, {0020051});
    // PerformFade(клиент, продолжительность, {красный, зеленый, синий, прозрачность})
    }
    Я попробовал бы переделать это изменив собитые на конец раунда, но это чюда спамит ошибками.
     
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.005
    Симпатии:
    2.994
    PHP:
    #define FFADE_IN            0x0001
    #define FFADE_OUT            0x0002
    #define FFADE_MODULATE    0x0004
    #define FFADE_STAYOUT    0x0008
    #define FFADE_PURGE        0x0010

    stock PerformFade(iClientdurationbool:in)
    {
        new 
    Handle:hFadeClient StartMessageOne("Fade"iClient);
        
    BfWriteShort(hFadeClientduration);
        
    BfWriteShort(hFadeClient0);
        
    BfWriteShort(hFadeClient, (in) ? (FFADE_PURGE|FFADE_IN):(FFADE_PURGE|FFADE_OUT|FFADE_STAYOUT));
        
    BfWriteByte(hFadeClient0);    // fade red
        
    BfWriteByte(hFadeClient0);    // fade green
        
    BfWriteByte(hFadeClient0);    // fade blue
        
    BfWriteByte(hFadeClient255);    // fade alpha
        
    EndMessage();
    }

    // Затемнение
    PerformFade(iClient3000false);

    // Возвращение к нормальному режиму
    PerformFade(iClient0true);
     
  3. Leckter Hannibal

    Leckter Hannibal

    Сообщения:
    521
    Симпатии:
    146
    R1KO Здравствуй .
    вот такую ошибку выдал
    Process started >>>
    SourcePawn Compiler 1.5.3-dev+3954
    Copyright (c) 1997-2006, ITB CompuPhase, (C)2004-2008 AlliedModders, LLC

    zatemnenie.sp(21) : error 010: invalid function or declaration
    zatemnenie.sp(21) : error 021: symbol already defined: "PerformFade"
    zatemnenie.sp(24) : error 010: invalid function or declaration
    zatemnenie.sp(24) : error 021: symbol already defined: "PerformFade"

    4 Errors.
    <<< Process finished. (Exit code 1)
    ================ READY ================
     
  4. R1KO

    R1KO Супер-модератор

    Сообщения:
    6.005
    Симпатии:
    2.994
    lecktercss, потому что ты не верно используешь.
    PHP:
    #include <sourcemod>
    #include <sdktools>
    #pragma semicolon 1

    public OnPluginStart()
    {
        
    HookEvent("round_end"Event_OnRoundEndEventHookMode_PostNoCopy);
        
    HookEvent("round_start"Event_OnRoundStartEventHookMode_PostNoCopy);
    }

    public 
    Event_OnRoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
    {
        for(new 
    i=1<= MaxClientsi++)
        {
            if(
    IsClientInGame(i)) PerformFade(i3000false);
        }
    }

    public 
    Event_OnRoundStart(Handle:event, const String:name[], bool:dontBroadcast)
    {
        for(new 
    i=1<= MaxClientsi++)
        {
            if(
    IsClientInGame(i)) PerformFade(i0true);
        }
    }

    #define FFADE_IN            0x0001
    #define FFADE_OUT            0x0002
    #define FFADE_MODULATE    0x0004
    #define FFADE_STAYOUT    0x0008
    #define FFADE_PURGE        0x0010

    stock PerformFade(iClientdurationbool:in)
    {
        new 
    Handle:hFadeClient StartMessageOne("Fade"iClient);
        
    BfWriteShort(hFadeClientduration);
        
    BfWriteShort(hFadeClient0);
        
    BfWriteShort(hFadeClient, (in) ? (FFADE_PURGE|FFADE_IN):(FFADE_PURGE|FFADE_OUT|FFADE_STAYOUT));
        
    BfWriteByte(hFadeClient0);    // fade red
        
    BfWriteByte(hFadeClient0);    // fade green
        
    BfWriteByte(hFadeClient0);    // fade blue
        
    BfWriteByte(hFadeClient255);    // fade alpha
        
    EndMessage();
    }
     
    Серый™, Leckter Hannibal и pokypka20 нравится это.
  5. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Работает, спасибо. Подскажите а где изменяется скорость затемнения?
     
  6. The Night Fury

    The Night Fury Администратор

    Сообщения:
    1.222
    Симпатии:
    916
    Код:
    PerformFade(i, 3000, false);
    3000 — скорость затемнения (3(?) секунды).
     
    pokypka20 и R1KO нравится это.