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

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

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

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

> Правила раздела

Перед созданием новой темы убедитесь, не искал ли кто-нибудь подобный плагин до вас, для этого следует воспользоваться поиском.

Все вновь созданные темы, с названием типа "Помогите найти", "А что это за плагин", "Ищу плагин", "Нужен плагин", "Подскажите пожалуйста название плагина" - будут удалены.
При создании темы постарайтесь максимально понятно сформулировать её заголовок так, чтобы он соответствовал функциям плагина который Вы ищите. В том случае, если Вам не удается сформулировать мысль и правильно расписать всё в теме, воспользуйтесь графическим редактором, к примеру Paint, что бы примерно изобразить функции нужного Вам плагина.

MapChooser

Статус пользователя Mikasa
сообщение 23.9.2013, 19:52
Сообщение #1
Стаж: 12 лет

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

Меценат Меценат

Нужен MapChooser для CSDM. Чтобы после голосования карта сразу менялась на другую (не нужно ждать, пока кончится/начнётся раунд).
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Keniski
сообщение 23.9.2013, 20:31
Сообщение #2
Стаж: 15 лет

Сообщений: 53
Благодарностей: 10
Полезность: 146

Цитата(TouchDev1l @ 23.9.2013, 19:52) *
Нужен MapChooser для CSDM. Чтобы после голосования карта сразу менялась на другую (не нужно ждать, пока кончится/начнётся раунд).

Galileo

galileo.cfg
Код
////////////////////////////////////////////////////////////////////////
// Ending a map on a new round after time has expired, for round-     //
// based mods, is a much nicer way of ending the current map than the //
// standard HL1 way, which is to suddenly end the map the second time //
// runs out.                                                          //
////////////////////////////////////////////////////////////////////////

// Indicates when a map should end when time runs out.
// 0 - end immediately when time runs out
// 1 - when time runs out, end after the current round
gal_endonround 0
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kenZZo
сообщение 23.9.2013, 20:37
Сообщение #3
Стаж: 14 лет

Сообщений: 64
Благодарностей: 6
Полезность: 75

давно ставил себе, должен пахать на ксдм без всяких... немнога от себя пофиксел)))

Скрытый текст

Код:

/*
Rebuilding by UFPS.Team
build #035
*/

#include <amxmodx>
#include <amxmisc>

#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_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_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_amx_nextmap
new pcv_mp_timelimit
new pcv_mp_winlimit
new pcv_mp_maxrounds

public plugin_init( )
{
register_plugin( "UFPS Nextmap Chooser", AMXX_VERSION_STR, "AMXX Dev Team" )

register_dictionary ( "common.txt" )
register_dictionary ( "mapchooser_ufps.txt" )

pcv_extendmap_max = register_cvar( "amx_extendmap_max", "90" )
pcv_extendmap_step = register_cvar( "amx_extendmap_step", "15" )

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( )

new MenuName[64]
formatex( MenuName, charsmax( MenuName ), "%L", LANG_SERVER, "CHOOSE_NEXTM" )
register_menucmd( register_menuid( MenuName ), ( -1 ^ ( -1 << ( SELECTMAPS + 2 ) ) ), "countVote" )

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" )
}

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( 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 )

format( g_MENU_title, charsmax( g_MENU_title ), g_coloredMenus ? "\y%L:\w^n^n" : "%L:^n^n", LANG_SERVER, "CHOOSE_NEXTM" )

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" )
format( g_MENU_name, charsmax( g_MENU_name ), "%L", "en", "CHOOSE_NEXTM" )
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 menu[512]
formatex( menu, charsmax( menu ), "%s%s", g_MENU_title, g_MENU )
show_menu( 0, g_MENU_keys, menu, 15, g_MENU_name )

set_task( 15.0, "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( num )
{
if( pcv_lastround )
{
set_task( 90.0, "initiateLastRound", 23478, "", 0, "d" )
}
}

else
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, 210, 0, 0, 0.05, 0.45, 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.05, 0.45, 1, 20.0, 10.0, 0.5, 0.15, 4, "%L", AUTO_LANG, "FINAL_ROUND" )
}

else if( g_changemap )
set_pcvar_float( pcv_mp_timelimit, 0.01 )

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 )
}

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 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
}




пробуй)

Отредактировал: kenZZo, - 23.9.2013, 20:42
Прикрепленные файлы:
Прикрепленный файл  mapchooser_ufps.txt ( 628 байт ) Кол-во скачиваний: 36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mikasa
сообщение 23.9.2013, 20:52
Сообщение #4
Стаж: 12 лет

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

Меценат Меценат

Keniski, http://prntscr.com/1t1ngc
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Keniski
сообщение 23.9.2013, 21:01
Сообщение #5
Стаж: 15 лет

Сообщений: 53
Благодарностей: 10
Полезность: 146

Цитата(TouchDev1l @ 23.9.2013, 21:52) *

Это не я тебе этот плагин скинул =)

Код
[ru]
CHO_FIN_EXT = Голосование завершено. Карта продлена на % минут.
CHO_FIN_NEXT = Голосование завершено. Следующая карта "%s"
CHOSE_EXT = %s выбрал продление карты
X_CHOSE_X = %s выбрал %s
CHOOSE_NEXTM = Выбор следующей карты
EXTED_MAP = Продление карты на %s
TIME_CHOOSE = Пора выбирать следующую карту...
FINAL_ROUND = Последний раунд
FINAL_COMING = Ожидается последний раунд
VOTE_COUNTER = через %i секунд:^n^n%s
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mikasa
сообщение 23.9.2013, 21:13
Сообщение #6
Стаж: 12 лет

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

Меценат Меценат

Ой pardon.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Mikasa
сообщение 28.9.2013, 9:56
Сообщение #7
Стаж: 12 лет

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

Меценат Меценат

kenZZo, квары напиши пожалуйста.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя winzh1
сообщение 28.9.2013, 10:01
Сообщение #8


Стаж: 14 лет

Сообщений: 1414
Благодарностей: 600
Полезность: 838

Цитата(TouchDev1l @ 28.9.2013, 14:56) *
kenZZo, квары напиши пожалуйста.

Напишу за kenZZo, квары такие:
amx_extendmap_max - максимальная длительность карты в минутах (по умолчанию 45)
amx_extendmap_step - время продления карты за 1 раз в минутах (по умолчанию 15)
amx_vote_time - длительность голосования в секундах (по умолчанию 15)
amx_vote_delay - отсрочка голосования в минутах от начала карты (по умолчанию 3)
amx_votemap_ratio - процент голосов для начала голосования (по умолчанию 0.6 или 60%)
amx_lastround - производить смену карты по окончании раунда (по умолчанию 1)


Установлю и настрою FreshBans, DopBan.
Писать в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: