Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Помогите изменить плагин mapchooser 1.9

, ][
Статус пользователя kupuk96
сообщение 11.1.2011, 19:40
Сообщение #1


Стаж: 15 лет

Сообщений: 456
Благодарностей: 139
Полезность: 554

Добрый вечер.
Помогите мне добавить звуки в плагин mapchooser 1.9, так же как в deagles map manager.
то есть отсчет 5,4,3,2,1 затем воспроизводится "голосование", когда голосование завершилось воспроизводится звук "голосование завершено" (все эти звуки у меня есть)
mapchooser1.9.sma
Код
#include <amxmodx>
#include <amxmisc>

#define PLUGIN_NAME        "Nextmap Chooser"
#define PLUGIN_VERSION    "1.9"
#define PLUGIN_AUTHOR    "UFPS.Team"

#define SELECTMAPS        5
#define MAPS_MAX        128
#define AUTO_LANG        -76

#define charsmax(%1)    (sizeof(%1)-1)


new g_mapNums
new g_mapName        [MAPS_MAX][32]

new g_nextName        [SELECTMAPS]
new g_voteCount        [SELECTMAPS + 2]
new g_mapVoteNum
new g_teamScore        [2]
new g_lastMap        [32]
new g_rtv_count
new g_rtv_vote        [33]

new g_MENU            [512]
new g_MENU_keys =    ( 1 << SELECTMAPS + 1 )
new g_MENU_name        [64]
new g_MENU_title    [128]

new const speak[][] = { "one", "two", "three", "four", "five" }

new g_coloredMenus        = 0
new bool:g_rtv            = false
new bool:g_lastround    = false
new bool:g_changemap    = false
new bool:g_selected        = false
new Float:g_timelimit    = 0.0

new pcv_lastround
new pcv_extendmap_max
new pcv_extendmap_step
new pcv_vote_time
new pcv_vote_delay
new pcv_votemap_ratio
new pcv_amx_nextmap
new pcv_mp_chattime
new pcv_mp_timelimit
new pcv_mp_winlimit
new pcv_mp_maxrounds


public plugin_init( )
{
    register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR )

    register_dictionary    ( "common.txt" )
    register_dictionary    ( "lastround.txt" )
    register_dictionary    ( "mapchooser.txt" )

    register_clcmd( "say rockthevote",            "cmd_say_rtv" )
    register_clcmd( "say /rockthevote",            "cmd_say_rtv" )
    register_clcmd( "say rtv",                    "cmd_say_rtv" )
    register_clcmd( "say /rtv",                    "cmd_say_rtv" )

    register_clcmd( "say_team rockthevote",        "cmd_say_rtv" )
    register_clcmd( "say_team /rockthevote",    "cmd_say_rtv" )
    register_clcmd( "say_team rtv",                "cmd_say_rtv" )
    register_clcmd( "say_team /rtv",            "cmd_say_rtv" )

    pcv_vote_time        = pcvar_register( "amx_vote_time",        "15"   )
    pcv_vote_delay        = pcvar_register( "amx_vote_delay",        "3"    )
    pcv_votemap_ratio    = pcvar_register( "amx_votemap_ratio",    "0.60" )
    pcv_extendmap_max     = pcvar_register( "amx_extendmap_max",    "45"   )
    pcv_extendmap_step     = pcvar_register( "amx_extendmap_step",    "15"   )

    pcv_mp_chattime        = get_cvar_pointer( "mp_chattime"  )
    pcv_mp_timelimit    = get_cvar_pointer( "mp_timelimit" )
    pcv_mp_winlimit        = get_cvar_pointer( "mp_winlimit"  )
    pcv_mp_maxrounds    = get_cvar_pointer( "mp_maxrounds" )
    pcv_amx_nextmap        = get_cvar_pointer( "amx_nextmap"  )

    if( !pcv_amx_nextmap )
        pcv_amx_nextmap    = register_cvar( "amx_nextmap",    "", FCVAR_SERVER | FCVAR_EXTDLL | FCVAR_SPONLY )

    if( cstrike_running( ) )
    {
        pcv_lastround = register_cvar( "amx_lastround", "1" )
        register_event( "TeamScore", "team_score", "a" )
        register_logevent( "evRoundStart", 2, "0=World triggered", "1=Round_Start" )
    }

    register_event( "30", "mapChange", "a" )

    g_coloredMenus = colored_menus( )

    get_localinfo( "lastMap", g_lastMap, charsmax( g_lastMap ) )
    set_localinfo( "lastMap", "" )

    set_cvar_float( "sv_restart", 1.0 )
}

public plugin_cfg( )
{
    new mapcycle[64]
    get_configsdir( mapcycle, charsmax( mapcycle ) )
    format( mapcycle, charsmax( mapcycle ), "%s/maps.ini", mapcycle )

    if( !file_exists( mapcycle ) )
        get_cvar_string( "mapcyclefile", mapcycle, charsmax( mapcycle ) )

    if( !file_exists( mapcycle ) )
        copy( mapcycle, charsmax( mapcycle ), "mapcycle.txt" )

    if( loadSettings( mapcycle) )
        set_task( 15.0, "voteNextmap", 987456, "", 0, "b" )

    formatex( g_MENU_name, charsmax( g_MENU_name ), "%L", "en", "CHOOSE_NEXTM" )
    register_menucmd( register_menuid( g_MENU_name ), ( -1 ^ ( -1 << ( SELECTMAPS + 2 ) ) ), "countVote" )
}

public countVote( id, key )
{
    if( get_cvar_float( "amx_vote_answers" ) )
    {
        new name[32]
        get_user_name( id, name, charsmax( name ) )

        if( key == SELECTMAPS )
            client_print( 0, print_chat, "%L", LANG_PLAYER, "CHOSE_EXT", name )

        else if( key < SELECTMAPS )
        {
            new map[32]
            copy( map, charsmax( map ), g_mapName[g_nextName[key]] )
            client_print( 0, print_chat, "%L", LANG_PLAYER, "X_CHOSE_X", name, map )
        }
    }

    g_voteCount[key]++

    return PLUGIN_HANDLED
}

public voteNextmap( )
{
    if( !g_mapNums ) return 0

    new winlimit = get_pcvar_num( pcv_mp_winlimit )
    new maxrounds = get_pcvar_num( pcv_mp_maxrounds )

    if( g_rtv )
    {
        winlimit = 0
        maxrounds = -1
    }

    if( winlimit )
    {
        new c = winlimit - 2

        if( ( c > g_teamScore[0] ) && ( c > g_teamScore[1] ) )
        {
            g_selected = false
            return 0
        }
    }

    else if( maxrounds )
    {
        if( ( maxrounds - 2 ) > ( g_teamScore[0] + g_teamScore[1] ) )
        {
            g_selected = false
            return 0
        }
    }
    
    else
    {
        new timeleft = get_timeleft( )

        if( timeleft < 1 || timeleft > 129 )
        {
            g_selected = false
            return 0
        }
    }

    if( g_selected ) return 0

    g_selected = true

    new pos, a

    g_MENU_keys = ( 1 << SELECTMAPS + 1 )

    new dmax = clamp( g_mapNums, 0, SELECTMAPS )

    for( g_mapVoteNum = 0; g_mapVoteNum < dmax; g_mapVoteNum++ )
    {
        a = random_num( 0, g_mapNums - 1 )

        while( isInMenu( a ) ) { if( ++a >= g_mapNums ) a = 0; }

        g_nextName[g_mapVoteNum] = a
        pos += format( g_MENU[pos], charsmax( g_MENU ), "%d. %s^n", g_mapVoteNum + 1, g_mapName[a] )
        g_MENU_keys |= ( 1 << g_mapVoteNum )
        g_voteCount[g_mapVoteNum] = 0
    }

    g_MENU[pos++] = '^n'
    g_voteCount[SELECTMAPS] = 0
    g_voteCount[SELECTMAPS + 1] = 0

    new mapname[32]
    get_mapname( mapname, charsmax( mapname ) )

    if( ( winlimit + maxrounds ) == 0 && ( get_pcvar_float( pcv_mp_timelimit ) < get_pcvar_float( pcv_extendmap_max ) ) )
    {
        pos += format( g_MENU[pos], charsmax( g_MENU ), "%d. %L^n", SELECTMAPS + 1, LANG_SERVER, "EXTED_MAP", mapname )
        g_MENU_keys |= ( 1 << SELECTMAPS )
    }

    format( g_MENU[pos], charsmax( g_MENU ), "%d. %L", SELECTMAPS + 2, LANG_SERVER, "NONE" )
    set_task( 1.0, "countDown", 5 )

    return 1
}

stock bool:isInMenu( id )
{
    for( new a; a < g_mapVoteNum; a++ )
        if( id == g_nextName[a] ) return true

    return false
}

public countDown( timer )
{
    if( timer )
    {
        client_cmd( 0 ,"spk ^"fvox/%s^"", speak[timer-1] )
        say_hudmessage( 0, 64, 64, 64, 0.025, -1.0, 0, 0.0, 1.03, 0.0, 0.0, 4, "%L %L", AUTO_LANG, "CHOOSE_NEXTM", AUTO_LANG, "VOTE_COUNTER", timer, g_MENU )
        set_task(1.0, "countDown", --timer)
    }

    else
        set_task( 0.01, "showMenu" )
}

public showMenu( )
{
    new Float:votetime = floatclamp( get_pcvar_float ( pcv_vote_time ), 10.0, 60.0 )

    new menu[512], players[32], player, num
    get_players( players, num, "ch" )

    for( new i; i < num; i++ )
    {
        player = players[i]

        formatex( g_MENU_title, charsmax( g_MENU_title ), g_coloredMenus ? "\y%L:\w^n^n" : "%L:^n^n", player, "CHOOSE_NEXTM" )
        formatex( menu, charsmax( menu ), "%s%s", g_MENU_title, g_MENU )
        show_menu( player, g_MENU_keys, menu, floatround( votetime ), g_MENU_name )
    }

    set_task( votetime + 0.5, "checkVotes" )

    client_print( 0, print_chat, "%L", LANG_PLAYER, "TIME_CHOOSE" )
    client_cmd( 0, "spk Gman/Gman_Choose%d", random_num( 1, 2 ) )
    log_amx( "Vote: Voting for the nextmap started" )
}

public checkVotes( )
{
    new b = 0

    for( new a; a < g_mapVoteNum; ++a )
        if( g_voteCount[b] < g_voteCount[a] ) b = a

    if( g_voteCount[SELECTMAPS] > g_voteCount[b] && g_voteCount[SELECTMAPS] > g_voteCount[SELECTMAPS + 1] )
    {
        if( !g_timelimit )
            g_timelimit = get_pcvar_float( pcv_mp_timelimit )

        new Float:steptime = get_pcvar_float( pcv_extendmap_step )

        new mapname[32]
        get_mapname( mapname, charsmax( mapname ) )

        set_pcvar_float( pcv_mp_timelimit, get_pcvar_float( pcv_mp_timelimit ) + steptime )
        client_print( 0, print_chat, "%L", LANG_PLAYER, "CHO_FIN_EXT", steptime )
        log_amx( "Vote: Voting for the nextmap finished. Map %s will be extended to next %.0f minutes", mapname, steptime )

        return
    }

    new smap[32]
    if( g_voteCount[b] && g_voteCount[SELECTMAPS + 1] <= g_voteCount[b] )
    {
        copy( smap, charsmax( smap ), g_mapName[g_nextName[b]] )
        set_pcvar_string( pcv_amx_nextmap, smap )
    }

    get_pcvar_string( pcv_amx_nextmap, smap, charsmax( smap ) )
    client_print( 0, print_chat, "%L", LANG_PLAYER, "CHO_FIN_NEXT", smap )
    log_amx( "Vote: Voting for the nextmap finished. The nextmap will be %s", smap )

    new players[32], num
    get_players( players, num, "ch" )

    if( g_rtv )
    {
        if( pcv_lastround && get_pcvar_num( pcv_lastround ) )
        {
            if( !g_timelimit )
                g_timelimit = get_pcvar_float( pcv_mp_timelimit )

            set_pcvar_float( pcv_mp_timelimit, 0.0 )

            g_rtv = false
            g_changemap = true
            g_lastround = false

            say_hudmessage( 0, 210, 0, 0, 0.02, 0.21, 1, 20.0, 10.0, 0.5, 0.15, 4, "%L", AUTO_LANG, "FINAL_ROUND" )
    
            return
        }
    
        else
            g_rtv = false
    }

    else if( num > 1 )
    {
        if( pcv_lastround )
        {
            set_task( 90.0 - floatclamp( get_pcvar_float ( pcv_vote_time ), 10.0, 60.0 ), "initiateLastRound", 23478, "", 0, "d" )
            return
        }
    }

    set_task( 1.0, "delayMapChange" )
}

public initiateLastRound( )
{
    if( !get_pcvar_num( pcv_lastround ) ) return PLUGIN_CONTINUE

    if( !g_timelimit )
        g_timelimit = get_pcvar_float( pcv_mp_timelimit )

    g_lastround = true
    set_pcvar_float( pcv_mp_timelimit, 0.0 )

    say_hudmessage( 0, 100, 200, 0, 0.02, 0.21, 1, 20.0, 10.0, 0.5, 0.15, 4, "%L", AUTO_LANG, "FINAL_COMING" )

    return PLUGIN_CONTINUE
}

public evRoundStart( )
{
    if( !pcv_lastround ) return PLUGIN_CONTINUE

    if( !get_pcvar_num( pcv_lastround ) ) return PLUGIN_CONTINUE

    if( g_lastround )
    {
        g_changemap = true
        g_lastround = false

        say_hudmessage( 0, 210, 0, 0, 0.02, 0.21, 1, 20.0, 10.0, 0.5, 0.15, 4, "%L", AUTO_LANG, "FINAL_ROUND" )
    }
    
    else if( g_changemap )
    {
/*
        message_begin    ( MSG_ALL, SVC_INTERMISSION )
        message_end        ( )
*/

        set_pcvar_float( pcv_mp_timelimit, 0.01 )
    }

    return PLUGIN_CONTINUE
}

public mapChange ( )
{
    new Float:chattime = get_pcvar_float ( pcv_mp_chattime )

    if ( chattime < 3.0 )
    {
        chattime = 3.0
        set_pcvar_float ( pcv_mp_chattime, chattime )
    }

    set_task( chattime - 1.0, "delayMapChange" )

    return PLUGIN_CONTINUE
}

public delayMapChange( )
{
    new nextmap[32]
    get_pcvar_string( pcv_amx_nextmap, nextmap, charsmax( nextmap ) )
    server_cmd( "changelevel %s", nextmap )
}

loadSettings( filename[] )
{
    if( !file_exists( filename ) )
    {
        log_amx( "Mapcycle file ^"%s^" not found", filename )
        return 0
    }

    g_mapNums = 0

    new currentMap[32], map[32], string[256]
    get_mapname( currentMap, charsmax( currentMap ) )

    new file = fopen( filename, "r" )
    
    while( !feof( file ) )
    {
        fgets( file, string, charsmax( string ) )

        if
        (
            ( string[0] != ';' ) &&
            ( string[0] != '/' ) &&
            parse( string, map, charsmax( map ) ) &&
            isValidMap( map, charsmax( map ), currentMap ) &&
            isMapCycle( map ) == -1
        )
        {
            copy( g_mapName[g_mapNums++], charsmax( g_mapName[] ), map )
        }
    
    }

    fclose( file )

    return g_mapNums
}

stock bool:isValidMap( map[], const len, const currentMap[] )
{
    remove_quotes ( map )
    strtolower( map )

    while( replace( map, len, "/", "" ) ) {}
    while( replace( map, len, "\", "" ) ) {}
    while( replace( map, len, ":", "" ) ) {}
    while( replace( map, len, "*", "" ) ) {}
    while( replace( map, len, "?", "" ) ) {}
    while( replace( map, len, ">", "" ) ) {}
    while( replace( map, len, "<", "" ) ) {}
    while( replace( map, len, "|", "" ) ) {}
    while( replace( map, len, ".", "" ) ) {}

    if( is_map_valid( map ) && !equali( map, g_lastMap ) && !equali( map, currentMap ) ) return true

    return false
}

stock isMapCycle( map[] )
{
    for( new i; i < g_mapNums; i++ )
        if( equali( g_mapName[i], map ) ) return i

    return -1
}

public team_score( )
{
    new team[2]

    read_data( 1, team, 1 )
    g_teamScore[( team[0]=='C' ) ? 0 : 1] = read_data( 2 )
}

public pcvar_register( const pcvar_name[], const pcvar_value[] )
{
    new pcvar_index = get_cvar_pointer( pcvar_name )
    
    if( !pcvar_index )
        pcvar_index = register_cvar( pcvar_name, pcvar_value )

    return pcvar_index
}

stock say_hudmessage( id, red=255, green=255, blue=255, Float:x=0.05, Float:y=0.45, effects=0, Float:fxtime=6.0, Float:holdtime=5.0, Float:fadeintime=0.5, Float:fadeouttime=0.15, channel=4, msg[], any:... )
{
    new arg_num = numargs()
    new arg_langid[16], arg_langcount

    for( new i = 12; i < arg_num; i++ )
        if( getarg( i ) == AUTO_LANG )
            arg_langid[arg_langcount++] = i

    new players[32], player, num

    if( id )
    {
        players[0] = id
        num = 1
    }

    else
        get_players( players, num )

    set_hudmessage( red, green, blue, x, y, effects, fxtime, holdtime, fadeintime, fadeouttime, channel )

    new message[192]

    for( new i; i < num; i++ )
    {
        player = players[i]

        if( !is_user_connected( player ) ) continue

        for( new j; j < arg_langcount; j++ )
            setarg( arg_langid[j], 0, player )

        vformat( message, charsmax( message ), msg, 14 )
        show_hudmessage( player, message )
    }
}

public cmd_say_rtv( id )
{
    if( get_gametime( ) < ( get_pcvar_float( pcv_vote_delay ) * 60.0 ) )
    {
        new timeleft = floatround( get_pcvar_float( pcv_vote_delay ) * 60.0 - get_gametime( ) )

        client_print( id, print_chat, "%L", id, "RTV_NOTALLOWED", timeleft / 60, timeleft % 60 )
    }

    else
    {
        if( g_rtv_vote[id - 1] == id ) client_print( id, print_chat, "%L", id, "RTV_ALREADY" )

        else
        {
            g_rtv_vote[id - 1] = id
            g_rtv_count++
    
            static players[32], num
            get_players( players, num, "ch" )

            new Float:voteratio = floatclamp( get_pcvar_float ( pcv_votemap_ratio ), 0.0, 1.0 )

            num = floatround( voteratio * num )

            if( num <= g_rtv_count )
            {
                 g_rtv = true
                voteNextmap( )

                return PLUGIN_CONTINUE
            }

            static name[32]
            get_user_name( id, name, charsmax( name ) )
    
            client_print( 0, print_chat, "%L", LANG_PLAYER, "RTV_ADDVOTE", name, num - g_rtv_count, floatround( voteratio * 100.0 ) )
        }
    }

    return PLUGIN_CONTINUE
}

public client_disconnect( id )
{
    if( g_rtv_vote[id - 1] == id )
    {
        g_rtv_vote[id - 1] = 0
        g_rtv_count--
    }
}

public plugin_end( )
{
    if( g_timelimit )
        set_pcvar_float( pcv_mp_timelimit, g_timelimit )

    new current_map[32]
    get_mapname( current_map, charsmax( current_map ) )

    set_localinfo( "lastMap", current_map )

    return PLUGIN_CONTINUE
}

подскажите, хотя бы какие строчки и где нужно добавить)

Отредактировал: kupuk96, - 11.1.2011, 19:41
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя STR@TEG
сообщение 12.1.2011, 0:50
Сообщение #2
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

kupuk96,
Код
public countDown(timer)
{
    ...
    else
    {
        // Звук начала голосования.
        set_task(0.01, "showMenu")
    }
}

Код
public checkVotes()
{
    // Звук окончания голосования.
    new b = 0
    ...
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя kupuk96
сообщение 12.1.2011, 6:24
Сообщение #3


Стаж: 15 лет

Сообщений: 456
Благодарностей: 139
Полезность: 554

Цитата(STR@TEG @ 12.1.2011, 1:50) *
kupuk96,
Код
public countDown(timer)
{
    ...
    else
    {
        // Звук начала голосования.
        set_task(0.01, "showMenu")
    }
}

Код
public checkVotes()
{
    // Звук окончания голосования.
    new b = 0
    ...
}


дело в том, что знаний у меня в этом 0. я даже не знаю как воспроизводить звук.
что-то типо этого client_cmd(0, "spk mapchoose/golosovanie.wav") ?

Отредактировал: kupuk96, - 12.1.2011, 6:25
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GODZILLA
сообщение 12.1.2011, 18:36
Сообщение #4


Стаж: 18 лет

Сообщений: 1471
Благодарностей: 440
Полезность: 716

именно так
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя kupuk96
сообщение 12.1.2011, 18:48
Сообщение #5


Стаж: 15 лет

Сообщений: 456
Благодарностей: 139
Полезность: 554

то есть вот так:
Код
public countDown( timer )
{
    if( timer )
    {
        client_cmd( 0 ,"spk ^"fvox/%s^"", speak[timer-1] )
        say_hudmessage( 0, 64, 64, 64, 0.025, -1.0, 0, 0.0, 1.03, 0.0, 0.0, 4, "%L %L", AUTO_LANG, "CHOOSE_NEXTM", AUTO_LANG, "VOTE_COUNTER", timer, g_MENU )
        set_task(1.0, "countDown", --timer)
    }

    else
        client_cmd(0, "spk mapchooser/golosovanie.wav") // Звук начала голосования.
        set_task( 0.01, "showMenu" )
}

Код
public checkVotes( )
{
    client_cmd(0, "spk mapchoose/golosovanie_end.wav") // Звук конца голосования.
    new b = 0

    for( new a; a < g_mapVoteNum; ++a )
        if( g_voteCount[b] < g_voteCount[a] ) b = a
           ...
}

если не правильно, не бейте :)

ps.gif
Пробовал скомпилить, выдает пердупреждение:
Код
/home/groups/amxmodx/tmp3/phpJR0Dy6.sma(273) : warning 217: loose indentation
Header size:           1632 bytes
Code size:            17212 bytes
Data size:            26440 bytes
Stack/heap size:      16384 bytes; max. usage is unknown, due to recursion
Total requirements:   61668 bytes

1 Warning.
Done.


Отредактировал: kupuk96, - 12.1.2011, 18:54
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя NickLesNick
сообщение 12.1.2011, 18:56
Сообщение #6


Стаж: 16 лет

Сообщений: 355
Благодарностей: 153
Полезность: 680

Да, так.

ps.gif Это не ошибка, а предупреждение о неправильных отступах. Не обращай внимание.

Отредактировал: NickLesNick, - 12.1.2011, 18:58
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kupuk96
сообщение 12.1.2011, 18:59
Сообщение #7


Стаж: 15 лет

Сообщений: 456
Благодарностей: 139
Полезность: 554

Цитата(NickLesNick @ 12.1.2011, 19:56) *
Да, так.

Это не ошибка, а предупреждение о неправильных отступах.

только что изменил исходник, скомпилилось нормально.
было:
Код
else
        client_cmd(0, "spk mapchooser/golosovanie.wav") // Звук начала голосования.
        set_task( 0.01, "showMenu" )

я изменил:
Код
    else
    {
        client_cmd(0, "spk mapchooser/golosovanie.wav") // Звук начала голосования.
        set_task( 0.01, "showMenu" )
    }

буду проверять на работоспособность.
И что написать, чтобы эти файлы скачивались? (как-то через вот это public plugin_precache ( ) ? )

Отредактировал: kupuk96, - 12.1.2011, 19:17
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя NickLesNick
сообщение 12.1.2011, 19:31
Сообщение #8


Стаж: 16 лет

Сообщений: 355
Благодарностей: 153
Полезность: 680

Код
public plugin_precache()
{
  precache_sound("mapchooser/golosovanie.wav")
  precache_sound("mapchooser/golosovanie_end.wav")
}


Отсчёт (пять,четыре,три,два,один) вроде встроен уже:
Код
public countDown( timer )
{
    if( timer )
    {
        client_cmd( 0 ,"spk ^"fvox/%s^"", speak[timer-1] )
        say_hudmessage( 0, 64, 64, 64, 0.025, -1.0, 0, 0.0, 1.03, 0.0, 0.0, 4, "%L %L", AUTO_LANG, "CHOOSE_NEXTM", AUTO_LANG, "VOTE_COUNTER", timer, g_MENU )
        set_task(1.0, "countDown", --timer)
    }

    else
        set_task( 0.01, "showMenu" )
}


Отредактировал: NickLesNick, - 12.1.2011, 19:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя kupuk96
сообщение 12.1.2011, 19:50
Сообщение #9


Стаж: 15 лет

Сообщений: 456
Благодарностей: 139
Полезность: 554

Цитата(NickLesNick @ 12.1.2011, 20:31) *
Код
public plugin_precache()
{
  precache_sound("mapchooser/golosovanie.wav")
  precache_sound("mapchooser/golosovanie_end.wav")
}


Отсчёт (пять,четыре,три,два,один) вроде встроен уже:
Код
public countDown( timer )
{
    if( timer )
    {
        client_cmd( 0 ,"spk ^"fvox/%s^"", speak[timer-1] )
        say_hudmessage( 0, 64, 64, 64, 0.025, -1.0, 0, 0.0, 1.03, 0.0, 0.0, 4, "%L %L", AUTO_LANG, "CHOOSE_NEXTM", AUTO_LANG, "VOTE_COUNTER", timer, g_MENU )
        set_task(1.0, "countDown", --timer)
    }

    else
        set_task( 0.01, "showMenu" )
}

спасибо :)
но я уже сам нашел и сделал
public plugin_precache()
Код
{
  precache_sound("mapchooser/golosovanie.wav")
  precache_sound("mapchooser/golosovanie_end.wav")
}


звук воспроизводится только перед началом голосования, а когда голосование завершилось, звук не воспроизводится.
и почему-то карта сменилась сразу, хотя amx_lastround 1
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kupuk96
сообщение 12.1.2011, 20:08
Сообщение #10


Стаж: 15 лет

Сообщений: 456
Благодарностей: 139
Полезность: 554

УРА! Всё получилось :)
Только у меня осталось пару вопросов:
как изменить женский голос на мужской, когда идет отсчет
и как убрать звук "it's time to choose" (вроде так :D), а то два звука сразу воспроизводятся
Заранее спасибо)

*help me*

Отредактировал: kupuk96, - 12.1.2011, 20:31
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя STR@TEG
сообщение 12.1.2011, 20:55
Сообщение #11
Стаж: 16 лет

Сообщений: 4186
Благодарностей: 1763
Полезность: 837

Цитата(kupuk96 @ 12.1.2011, 21:08) *
как изменить женский голос на мужской, когда идет отсчет

Код
client_cmd( 0 ,"spk ^"fvox/%s^"", speak[timer-1] )
>>>
Код
client_cmd(0, "spk ^"vox/%s^"", speak[timer-1])


Цитата(kupuk96 @ 12.1.2011, 21:08) *
и как убрать звук "it's time to choose" (вроде так :D), а то два звука сразу воспроизводятся
Удали из исходника следующую строку:
Код
client_cmd( 0, "spk Gman/Gman_Choose%d", random_num( 1, 2 ) )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя kupuk96
сообщение 12.1.2011, 21:34
Сообщение #12


Стаж: 15 лет

Сообщений: 456
Благодарностей: 139
Полезность: 554

Спасибо большое!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя -=pypsic=-
сообщение 4.2.2011, 18:58
Сообщение #13


Стаж: 15 лет

Сообщений: 185
Благодарностей: 21
Полезность: < 0

kupuk96 мож выложить сюда .sma???
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя my_world243
сообщение 10.2.2011, 13:53
Сообщение #14
Стаж: 15 лет

Сообщений: 29
Благодарностей: 1
Полезность: 28

А можно то же самое сделать со стандартным mapchooser.sma?

Вот исходник:
mapchooser.sma

/* AMX Mod X
* Nextmap Chooser Plugin
*
* by the AMX Mod X Development Team
* originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, the author gives permission to
* link the code of this program with the Half-Life Game Engine ("HL
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
* L.L.C ("Valve"). You must obey the GNU General Public License in all
* respects for all of the code used other than the HL Engine and MODs
* from Valve. If you modify this file, you may extend this exception
* to your version of the file, but you are not obligated to do so. If
* you do not wish to do so, delete this exception statement from your
* version.
*/

#include <amxmodx>
#include <amxmisc>

#define SELECTMAPS 5

#define charsof(%1) (sizeof(%1)-1)

new Array:g_mapName;
new g_mapNums;

new g_nextName[SELECTMAPS]
new g_voteCount[SELECTMAPS + 2]
new g_mapVoteNum
new g_teamScore[2]
new g_lastMap[32]

new g_coloredMenus
new bool:g_selected = false

public plugin_init()
{
register_plugin("Nextmap Chooser", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("mapchooser.txt")
register_dictionary("common.txt")

g_mapName=ArrayCreate(32);

new MenuName[64]

format(MenuName, 63, "%L", "en", "CHOOSE_NEXTM")
register_menucmd(register_menuid(MenuName), (-1^(-1<<(SELECTMAPS+2))), "countVote")
register_cvar("amx_extendmap_max", "90")
register_cvar("amx_extendmap_step", "15")

if (cstrike_running())
register_event("TeamScore", "team_score", "a")

get_localinfo("lastMap", g_lastMap, 31)
set_localinfo("lastMap", "")

new maps_ini_file[64]
get_configsdir(maps_ini_file, 63);
format(maps_ini_file, 63, "%s/maps.ini", maps_ini_file);

if (!file_exists(maps_ini_file))
get_cvar_string("mapcyclefile", maps_ini_file, 63)
if (loadSettings(maps_ini_file))
set_task(15.0, "voteNextmap", 987456, "", 0, "b")

g_coloredMenus = colored_menus()

}

public checkVotes()
{
new b = 0

for (new a = 0; a < g_mapVoteNum; ++a)
if (g_voteCount[b] < g_voteCount[a])
b = a


if (g_voteCount[SELECTMAPS] > g_voteCount[b]
&& g_voteCount[SELECTMAPS] > g_voteCount[SELECTMAPS+1])
{
new mapname[32]

get_mapname(mapname, 31)
new Float:steptime = get_cvar_float("amx_extendmap_step")
set_cvar_float("mp_timelimit", get_cvar_float("mp_timelimit") + steptime)
client_print(0, print_chat, "%L", LANG_PLAYER, "CHO_FIN_EXT", steptime)
log_amx("Vote: Voting for the nextmap finished. Map %s will be extended to next %.0f minutes", mapname, steptime)

return
}

new smap[32]
if (g_voteCount[b] && g_voteCount[SELECTMAPS + 1] <= g_voteCount[b])
{
ArrayGetString(g_mapName, g_nextName[b], smap, charsof(smap));
set_cvar_string("amx_nextmap", smap);
}


get_cvar_string("amx_nextmap", smap, 31)
client_print(0, print_chat, "%L", LANG_PLAYER, "CHO_FIN_NEXT", smap)
log_amx("Vote: Voting for the nextmap finished. The nextmap will be %s", smap)
}

public countVote(id, key)
{
if (get_cvar_float("amx_vote_answers"))
{
new name[32]
get_user_name(id, name, 31)

if (key == SELECTMAPS)
client_print(0, print_chat, "%L", LANG_PLAYER, "CHOSE_EXT", name)
else if (key < SELECTMAPS)
{
new map[32];
ArrayGetString(g_mapName, g_nextName[key], map, charsof(map));
client_print(0, print_chat, "%L", LANG_PLAYER, "X_CHOSE_X", name, map);
}
}
++g_voteCount[key]

return PLUGIN_HANDLED
}

bool:isInMenu(id)
{
for (new a = 0; a < g_mapVoteNum; ++a)
if (id == g_nextName[a])
return true
return false
}

public voteNextmap()
{
new winlimit = get_cvar_num("mp_winlimit")
new maxrounds = get_cvar_num("mp_maxrounds")

if (winlimit)
{
new c = winlimit - 2

if ((c > g_teamScore[0]) && (c > g_teamScore[1]))
{
g_selected = false
return
}
}
else if (maxrounds)
{
if ((maxrounds - 2) > (g_teamScore[0] + g_teamScore[1]))
{
g_selected = false
return
}
} else {
new timeleft = get_timeleft()

if (timeleft < 1 || timeleft > 129)
{
g_selected = false
return
}
}

if (g_selected)
return

g_selected = true

new menu[512], a, mkeys = (1<<SELECTMAPS + 1)

new pos = format(menu, 511, g_coloredMenus ? "\y%L:\w^n^n" : "%L:^n^n", LANG_SERVER, "CHOOSE_NEXTM")
new dmax = (g_mapNums > SELECTMAPS) ? SELECTMAPS : g_mapNums

for (g_mapVoteNum = 0; g_mapVoteNum < dmax; ++g_mapVoteNum)
{
a = random_num(0, g_mapNums - 1)

while (isInMenu(a))
if (++a >= g_mapNums) a = 0

g_nextName[g_mapVoteNum] = a
pos += format(menu[pos], 511, "%d. %a^n", g_mapVoteNum + 1, ArrayGetStringHandle(g_mapName, a));
mkeys |= (1<<g_mapVoteNum)
g_voteCount[g_mapVoteNum] = 0
}

menu[pos++] = '^n'
g_voteCount[SELECTMAPS] = 0
g_voteCount[SELECTMAPS + 1] = 0

new mapname[32]
get_mapname(mapname, 31)

if ((winlimit + maxrounds) == 0 && (get_cvar_float("mp_timelimit") < get_cvar_float("amx_extendmap_max")))
{
pos += format(menu[pos], 511, "%d. %L^n", SELECTMAPS + 1, LANG_SERVER, "EXTED_MAP", mapname)
mkeys |= (1<<SELECTMAPS)
}

format(menu[pos], 511, "%d. %L", SELECTMAPS+2, LANG_SERVER, "NONE")
new MenuName[64]

format(MenuName, 63, "%L", "en", "CHOOSE_NEXTM")
show_menu(0, mkeys, menu, 15, MenuName)
set_task(15.0, "checkVotes")
client_print(0, print_chat, "%L", LANG_SERVER, "TIME_CHOOSE")
client_cmd(0, "spk Gman/Gman_Choose2")
log_amx("Vote: Voting for the nextmap started")
}
stock bool:ValidMap(mapname[])
{
if ( is_map_valid(mapname) )
{
return true;
}
// If the is_map_valid check failed, check the end of the string
new len = strlen(mapname) - 4;

// The mapname was too short to possibly house the .bsp extension
if (len < 0)
{
return false;
}
if ( equali(mapname[len], ".bsp") )
{
// If the ending was .bsp, then cut it off.
// the string is byref'ed, so this copies back to the loaded text.
mapname[len] = '^0';

// recheck
if ( is_map_valid(mapname) )
{
return true;
}
}

return false;
}

loadSettings(filename[])
{
if (!file_exists(filename))
return 0

new szText[32]
new currentMap[32]

new buff[256];

get_mapname(currentMap, 31)

new fp=fopen(filename,"r");

while (!feof(fp))
{
buff[0]='^0';

fgets(fp, buff, charsof(buff));

parse(buff, szText, charsof(szText));


if (szText[0] != ';' &&
ValidMap(szText) &&
!equali(szText, g_lastMap) &&
!equali(szText, currentMap))
{
ArrayPushString(g_mapName, szText);
++g_mapNums;
}

}

fclose(fp);

return g_mapNums
}

public team_score()
{
new team[2]

read_data(1, team, 1)
g_teamScore[(team[0]=='C') ? 0 : 1] = read_data(2)
}

public plugin_end()
{
new current_map[32]

get_mapname(current_map, 31)
set_localinfo("lastMap", current_map)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Chilly_Willy
сообщение 13.12.2011, 19:20
Сообщение #15


Стаж: 17 лет

Сообщений: 394
Благодарностей: 45
Полезность: 119

Цитата(-=pypsic=- @ 4.2.2011, 23:58) *
kupuk96 мож выложить сюда .sma???

присоединяюсь :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя I LOVE YOU...CS-1.6
сообщение 13.12.2011, 22:36
Сообщение #16
Стаж: 15 лет

Сообщений: 219
Благодарностей: 29
Полезность: 23

Цитата(Chilly_Willy @ 13.12.2011, 19:20) *
присоединяюсь :)

присоединяюсь crazy.gif blush2.gif clapping.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Chilly_Willy
сообщение 14.12.2011, 15:08
Сообщение #17


Стаж: 17 лет

Сообщений: 394
Благодарностей: 45
Полезность: 119

у него его уже нету sad.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя timonvoin
сообщение 17.6.2012, 20:09
Сообщение #18
Стаж: 13 лет

Сообщений: 37
Благодарностей: 1
Полезность: 23

аа подскажите,я сделал всё как вы сказали получилось классно)
но мне бы вставить свои звуки отчёта и убрать вот эти 2 звука golosovanie.wav и golosovanie_end.wav
подскажите пожалуста как всё это сделать???
вот сылка на исходник:
Прикрепленный файл  mapchooser.sma ( 16,15 килобайт ) Кол-во скачиваний: 56
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя 3ple
сообщение 24.7.2012, 14:29
Сообщение #19
Стаж: 13 лет

Сообщений: 74
Благодарностей: 7
Полезность: 8

А можно как нибудь сделать тоже самое на плагине umm? И еще как сделать так, чтобы во время голосования тоже играла музыка какая-нибудь.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: