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

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

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

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

2 страниц V   1 2

Поиск карты в списке

Статус пользователя MiXa
сообщение 21.1.2015, 1:32
Сообщение #1


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

как найти название карты в maps.ini и сравнить ее с той которорая сейчас на сервере стоит?

Код:
    new q_map[32]
get_mapname(q_map, 31) // узнаем какая карта стоит на сервере

if(!equal(q_map, q_check))
{
// если в maps.ini прописана данная карта. то выполнить этот код
}

хочу сделать вип на определенной карте с помощью плагина, конфиги и создавать файлы в configs/maps не предлагать, этот способ я знаю)

спасибо

Отредактировал: MiXa, - 21.1.2015, 1:36


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
magis1337
сообщение 21.1.2015, 1:38
Сообщение #2
Стаж: 11 лет
Город: Odessa

Сообщений: 2782
Благодарностей: 1535
Полезность: 918

host5.ru
Меценат Меценат

MiXa, кроме способа, config/maps
не знаю даже=)) тебе к скриптерам
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 21.1.2015, 1:40
Сообщение #3


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

Цитата(magis1337 @ 21.1.2015, 1:38) *
MiXa, кроме способа, config/maps
не знаю даже=)) тебе к скриптерам

буду ждать ответа ) просто с помощью этой функции еще много чего можно сделать )


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
magis1337
сообщение 21.1.2015, 1:52
Сообщение #4
Стаж: 11 лет
Город: Odessa

Сообщений: 2782
Благодарностей: 1535
Полезность: 918

host5.ru
Меценат Меценат

MiXa, Удачи:) в поисках
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
voed
сообщение 21.1.2015, 2:09
Сообщение #5
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Код:
new file[ 128 ], line, textsize

file = "путь к файлу, начиная от папки cstrike"
if( file_exists( file ) )
{
static text[ 128 ]
while( read_file( file, line, text, charsmax( text ), textsize ) )
{
if(equali(text, mapname)) //text = строка с названием карты из maps.ini, mapname - название карты, с которым нужно сравнивать
...
line++// считываем следующую строку
}
}


Отредактировал: voed, - 21.1.2015, 2:10
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 21.1.2015, 2:26
Сообщение #6


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

voed,
error 033: array must be indexed (variable "q_file")

Код:
public plugin_check_no_player( )
{
new q_map_check[32], Hours[3]
get_mapname(q_map_check, 31) // узнаем какая карта стоит на сервере

get_time("%H", Hours, 2)
new iHours = str_to_num(Hours)

if (get_pcvar_num(q_start_nightmode) <= iHours <= get_pcvar_num(q_stop_nightmode)) return;

new q_file[ 128 ], line, textsize
new q_vsr_map[32]
get_mapname(q_vsr_map, 31) // узнаем какая карта стоит на сервере

q_file = fopen("addons/amxmodx/configs/maps_noplayers.ini","r")
if( file_exists( q_file ) )
{
static text[ 128 ]
while( read_file( q_file, line, text, charsmax( text ), textsize ) )
{
if(equali(string, q_vsr_map)) //text = строка с названием карты из maps.ini, mapname - название карты, с которым нужно сравнивать
{
if( get_playersnum(1) <= get_pcvar_num(q_players))
{
log_to_file("vsf_map.log", "На сервере меньше ^"%d игроков || Идет карта %s || Начинаем голосование^"", get_pcvar_num(q_players) , q_map_check)
g_rtv = true
voteNextmap( )
}
}
line++// считываем следующую строку
}
}
}


что не так?


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 21.1.2015, 2:29
Сообщение #7
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

while( read_file( q_file, line, text, charsmax( text ), textsize ) )
{
if(equali(string, q_vsr_map))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 21.1.2015, 2:33
Сообщение #8


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

voed, поправил, но ошибка та же:

Код:
public plugin_check_no_player( )
{
new q_map_check[32], Hours[3]
get_mapname(q_map_check, 31) // узнаем какая карта стоит на сервере

get_time("%H", Hours, 2)
new iHours = str_to_num(Hours)

if (get_pcvar_num(q_start_nightmode) <= iHours <= get_pcvar_num(q_stop_nightmode)) return;

new q_file[ 128 ], line, textsize
new q_vsr_map[32]
get_mapname(q_vsr_map, 31) // узнаем какая карта стоит на сервере

q_file = fopen("addons/amxmodx/configs/vsf_map/vsf_map_noplayers.ini","r")
if( file_exists( q_file ) )
{
static text[ 128 ]
while( read_file( q_file, line, text, charsmax( text ), textsize ) )
{
if(equali(text, q_vsr_map)) //text = строка с названием карты из maps.ini, mapname - название карты, с которым нужно сравнивать
{
if( get_playersnum(1) <= get_pcvar_num(q_players))
{
log_to_file("vsf_map.log", "На сервере меньше ^"%d игроков || Идет карта %s || Начинаем голосование^"", get_pcvar_num(q_players) , q_map_check)
g_rtv = true
voteNextmap( )
}
}
line++// считываем следующую строку
}
}
}


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 21.1.2015, 2:39
Сообщение #9
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

fopen не нужно, read_file сам открывает файл, в q_file надо указать только путь к файлу

и if( get_playersnum(1) <= get_pcvar_num(q_players)) лучше выполнять перед циклом
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 21.1.2015, 2:55
Сообщение #10


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

voed, не работает

if(equali(text, q_vsr_map))
не работает, есть карта, или нет, всеровно код выполняется(


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 21.1.2015, 2:58
Сообщение #11
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(MiXa @ 21.1.2015, 2:55) *
voed, не работает

if(equali(text, q_vsr_map))
не работает, есть карта, или нет, всеровно код выполняется(

Выведи лог всех строк файла
Код:
while( read_file( q_file, line, text, charsmax( text ), textsize ) )
{
if(equali(text, q_vsr_map)) //text = строка с названием карты из maps.ini, mapname - название карты, с которым нужно сравнивать
{
log_to_file("vsf_map.log", text)
}
line++// считываем следующую строку
}

может я напутал что-то @_@
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 21.1.2015, 3:01
Сообщение #12


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

voed,
log_to_file("vsf_map.log", text)
файл vsf_map.log не создался,значит text пуст


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 21.1.2015, 3:01
Сообщение #13
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

И да, после выполнения условия можно спокойно убивать цикл
Код:
log_to_file("vsf_map.log", "На сервере меньше ^"%d игроков || Идет карта %s  || Начинаем голосование^"", get_pcvar_num(q_players) , q_map_check)
g_rtv = true
voteNextmap( )
break
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 21.1.2015, 3:10
Сообщение #14
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(MiXa @ 21.1.2015, 3:01) *
voed,
log_to_file("vsf_map.log", text)
файл vsf_map.log не создался,значит text пуст


Сделал так, нормально выводит
Функция точно выполняется?
//там maps.ini

Отредактировал: voed, - 21.1.2015, 3:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 21.1.2015, 3:18
Сообщение #15


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

voed,
if(equal(text, q_vsr_map)) неправильно работает...

функция выполняется когда de_dust2_2x2 есть в text и в q_vsr_map, а мне надо если например у меня список карт:
список
Код
$2000$
35hp_2
aim_headshot
awp_india
cs_assault
de_dust2_2x2
de_inferno_2x2
de_mirage_2x2
de_nuke_up
de_nuke
de_tuscan_2x2
fy_pool_day
fy_snow

если на сервере стоит de_dust2_2x2 и плагин ее находит в списке, то ничего не делать, если стоит de_dust2 , и ее нет в списке карт, тогда выполнять код

пробовал так:
Код:
if(!equal(text, q_vsr_map))

тогда она всегда работает, наверно мне спать надо идти...)

Отредактировал: MiXa, - 21.1.2015, 3:19


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 21.1.2015, 3:19
Сообщение #16
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

MiXa, ну дык замени if(equal(text, q_vsr_map)) на if(!equal(text, q_vsr_map))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 21.1.2015, 3:31
Сообщение #17


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

Цитата(voed @ 21.1.2015, 3:19) *
MiXa, ну дык замени if(equal(text, q_vsr_map)) на if(!equal(text, q_vsr_map))

if(!equal(text, q_vsr_map)) работает постоянно почему то, странно как то


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 21.1.2015, 3:48
Сообщение #18
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Lol, понял, завтра напишу
Если забуду - напиши в пм
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 21.1.2015, 3:50
Сообщение #19


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

voed, первый раз такое BooM.gif

спасибо )


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 21.1.2015, 13:25
Сообщение #20
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Чет я вчера совсем сонный был
Код:
	if( file_exists( q_file ) && (get_playersnum(1) <= get_pcvar_num(q_players)))
{
static text[ 128 ]
while( read_file( q_file, line, text, charsmax( text ), textsize ) )
{
if(equal(text, q_vsr_map)) //text = строка с названием карты из maps.ini, mapname - название карты, с которым нужно сравнивать
{
return
}
line++// считываем следующую строку
}
}


log_to_file("vsf_map.log", "На сервере меньше ^"%d игроков || Идет карта %s || Начинаем голосование^"", get_pcvar_num(q_players) , q_map_check)
g_rtv = true
voteNextmap( )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: