|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
|
Модификация deagsmapmanager
|
|
| se7h | Дата: Понедельник, 23.06.2008, 23:11:13 | Сообщение # 16 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| set_task(180.0,"load_maps",0,_,_,"b")
Сообщение отредактировал se7h - Понедельник, 23.06.2008, 23:11:33 |
| |
|
|
| WhiteBear | Дата: Среда, 25.06.2008, 16:31:29 | Сообщение # 17 |
|
Подполковник
Группа: Пользователи
Сообщений: 132
Статус: Не в сети
| Спс. Просто пришел к выводу, что часть кода, отвечающая за карты считывает их только при загрузке карты/плагина. Пытаюсь че нить придумать. чтобы список карт динамически изменялся. По результатам отпишусьДобавлено (2008-06-24, 1:07 Pm) --------------------------------------------- Фокус не удался Получил только подвешивание сервера каждые три минуты... а списки стало брать откуда попало.... Добавлено (2008-06-25, 4:31 Pm) --------------------------------------------- продолжаю мудрить =)) загрузку вышеуказанного блока вернул на место. добавил set_cvar_string ( "mapcyclefile","mapcycle1.txt" ) с изменением от количества игроков включил параметр "использовать карты только из mapcyclefile Вроде меняется при пустом сервере, завтра проверю с игроками.
|
| |
|
|
| WhiteBear | Дата: Пятница, 27.06.2008, 06:10:12 | Сообщение # 18 |
|
Подполковник
Группа: Пользователи
Сообщений: 132
Статус: Не в сети
| Вроде бы добился желаемого. Просьба с знатокам скрипта, кого не затруднить, просмотреть исходник/плагин на предмет возможных проблем (сбои в работе плагина/сервера. утечек память и т.п.) от добавленного кода (строки 476-495 добавлены, их небыло в оригинале) Рассчитано на использование только файла mapcyclefile (переменная плагина в amxx.cfg dmap_strict = 1) Исходник и плагин целиком
Сообщение отредактировал WhiteBear - Пятница, 27.06.2008, 06:14:24 |
| |
|
|
| se7h | Дата: Пятница, 27.06.2008, 12:37:55 | Сообщение # 19 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| немного переделал твою функцию: Code public rock_it_now(){ new inum,players[32],i new temprocked=hasbeenrocked hasbeenrocked=1 new timeleft = get_timeleft() new Float:minutesleft=float(timeleft)/60.0 new Float:minutesplayed=get_cvar_float("mp_timelimit") - minutesleft counttovote=0
if(task_exists(459200)) remove_task(459200) if(task_exists(459100)) remove_task(459100)
new Float:timelimit=float(minutesplayed)+1.5 if(timelimit>0.4) { oldtimelimit=get_cvar_float("mp_timelimit") istimeset=1 set_cvar_f loat("mp_timelimit", timelimit) if(quiet!=2) console_print(0,"%L",LANG_PLAYER,"DMAP_TIMELIMIT_CHANGED", get_cvar_num("mp_timelimit")) log_to_file(logfilename,"Time limit changed to %d To enable vote to occur now", get_cvar_num("mp_timelimit")) }else{ console_print(0,"%L",LANG_PLAYER,"DMAP_TIMELIMIT_NOTCHANGED") log_to_file(logfilename,"Will not set a timelimit of %d, vote is not rocked, seconds left on map:%d",floatround(timelimit),timeleft) get_players(players,inum,"c") for(i=0; i<inum; ++i) rocked[i]=0 rocks=0 hasbeenrocked=temprocked return PLUGIN_HANDLED } inprogress=1 mselected=false if(quiet!=2){ set_hudmessage(0, 222,50, -1.0, 0.23, 1, 6.0, 6.0, 1.0, 1.0, 4) show_hudmessage(0,"%L",LANG_PLAYER,"DMAP_START_MAPVOTE") }else client_print(0,print_chat,"%L",LANG_PLAYER,"DMAP_START_MAPVOTE") i f(quiet==0) client_cmd(0,"spk ^"get red(e80) ninety(s45) to check(e20) use _comma(e10) bay(s18) mass(e42) cap(s50)^"")
set_task(3.5,"getready",459100) set_task(10.0,"startthevote")
if(task_exists(454500)) remove_task(454500) if(tas k_exists(459100)) remove_task(459100)
rocks=0 get_players(players,inum,"c") for(i=0 ;i<inum; ++i) { rocked[i]=0 } set_task(2.18,"calculate_custom")
return PLUGIN_HANDLED }
|
| |
|
|
| WhiteBear | Дата: Пятница, 27.06.2008, 14:34:44 | Сообщение # 20 |
|
Подполковник
Группа: Пользователи
Сообщений: 132
Статус: Не в сети
| se7h прошу простить великодушно я не написал что плагин, который целиком, это оригинал я добавил в начале функции public rock_it_now() Code if(get_playersnum(1)>10) { set_cvar_string ( "mapcyclefile","mapcycle1.txt" ) } else if(get_playersnum(1)<3) { set_cvar_string ( "mapcyclefile","mapcycle2.txt" ) } else { set_cvar_string ( "mapcyclefile","mapcycle3.txt" ) } set_task(0.1,"get_listing") //reloads mapcycle / allmaps.txt И если я правильно понял, ты оптимизировал функцию оригинала, т.е. мою добавку можно точно также прицепить к началу. Или можно set_task(0.1,"get_listing") убрать совсем? И еще, почему я добавил set_task - путем экспериментов пришел к выводу, что список карт считывается при загрузке карты и в последствии не обновляется. Т.к. от скриптинга я очень далек, то решил насильственно перезапускать блок считывания карт (который завязан на macyclefile), привязав перезапуск к блоку запуска голосования, куда и воткнул смену маплиста от числа игроков. В итоге меня волнует, не вызовет ли дополнительная команда set_task каких нить проблем. Еще раз благодарю за трату времени на мою скромную персону 
|
| |
|
|
| se7h | Дата: Пятница, 27.06.2008, 18:36:42 | Сообщение # 21 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| вместо set_task(0.1,"get_listing") можно просто указать функцию get_listing()
|
| |
|
|
| WhiteBear | Дата: Воскресенье, 29.06.2008, 05:04:26 | Сообщение # 22 |
|
Подполковник
Группа: Пользователи
Сообщений: 132
Статус: Не в сети
| Спасибо! Если я правильно понял, то указание функции, в данном случае, get_listing(), и варианта set_task(0.1,"get_listing"), вызывает ее выполнение, только во втором варианте с временной задержкой (тут 0,1). А при вызове ее в другой функции, их выполнение организовано как? Сначала выполняется вызванная функция, потом продолжается основная, или они начинают выполняться одновременно?
|
| |
|
|
| se7h | Дата: Воскресенье, 29.06.2008, 10:45:00 | Сообщение # 23 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| Quote (WhiteBear) А при вызове ее в другой функции, их выполнение организовано как? Сначала выполняется вызванная функция, потом продолжается основная, или они начинают выполняться одновременно? скорее всего последовательно
|
| |
|
|
| WhiteBear | Дата: Вторник, 01.07.2008, 16:28:35 | Сообщение # 24 |
|
Подполковник
Группа: Пользователи
Сообщений: 132
Статус: Не в сети
| Итоги: удалось достигнуть желаемого при добавлении кода Code switch(get_playersnum(1)) { case 1..10: set_cvar_string ( "mapcyclefile","mapcycle1.txt" ) //spisok s 10 spaunam i bolee case 11..16: set_cvar_string ( "mapcyclefile","mapcycle2.txt" ) //spisok s 16 spaunam i bolee case 17..20: set_cvar_string ( "mapcyclefile","mapcycle3.txt" ) //spisok s 20 spaunam i bolee case 21..24: set_cvar_string ( "mapcyclefile","mapcycle4.txt" ) //spisok s 24 spaunam i bolee case 25..32: set_cvar_string ( "mapcyclefile","mapcycle.txt" ) //spisok s 32 spaunam i bolee } get_listing() //reloads mapcycle / allmaps.txt после строки public rock_it_now(){ кроме того, необходимо переменную плагина в amxx.cfg dmap_strict поставить 1 (чтобы использования только mapcyclefile), удалить файлы mapchoice.ini, standardmaps.ini в папке configs, и создать файлы mapcycle.txt mapcycle1.txt mapcycle2.txt т.д. в папке cstrike со списком карт для требуемого количества игроков. Большое СПАСИБО se7h за неоценимую помощь при модификации плагина, и DaTa за вносимые поправки!!!
|
| |
|
|
| se7h | Дата: Вторник, 01.07.2008, 18:06:24 | Сообщение # 25 |
 Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Статус: Не в сети
| Quote (WhiteBear) Большое СПАСИБО se7h за неоценимую помощь при модификации плагина, и DaTa за вносимые поправки!!! всегда готов помочь рад что всё удалось
|
| |
|
|
| Dragon | Дата: Понедельник, 07.07.2008, 17:12:24 | Сообщение # 26 |
|
Рядовой
Группа: Пользователи
Сообщений: 17
Статус: Не в сети
| А как быть с allmaps.txt? при включении dmap_strict 1, список карт берется из mapcycle.txt
|
| |
|
|
| WhiteBear | Дата: Вторник, 08.07.2008, 01:24:10 | Сообщение # 27 |
|
Подполковник
Группа: Пользователи
Сообщений: 132
Статус: Не в сети
| allmaps.txt генерируется автоматически и содержит список карт которые есть в папке с картами, поэтому, я так думаю. если его удалить, он все равно создасться. dmap_strict 1 - это задумано специально - т.к. в плагине много ветвлений на выборку карт из того или иного файла - а так работаем только с одним типом - проще. ps я плагин еще подмудрил, потому что оказалось что запуск голосования тоже проходит по двум ветвлениям + отключил обчитывание неиспользуемых списков карт (в нашем случае) зы2 если надо, могу выложить переделанный исходник
Сообщение отредактировал WhiteBear - Вторник, 08.07.2008, 01:27:00 |
| |
|
|
| Dragon | Дата: Вторник, 08.07.2008, 07:27:54 | Сообщение # 28 |
|
Рядовой
Группа: Пользователи
Сообщений: 17
Статус: Не в сети
| я имел ввиду, что при dmap_strict 1, список карт командой "listmaps" теперь берется из mapcycle.txt. И понятное дело там, будут не все карты сервера. Исходник конечно выкладывай)
|
| |
|
|
| WhiteBear | Дата: Среда, 09.07.2008, 14:58:31 | Сообщение # 29 |
|
Подполковник
Группа: Пользователи
Сообщений: 132
Статус: Не в сети
| вроде по listmaps в любом случае берет из allmaps.txt. Точно сейчас сказать не могу, завтра проверю. Вот исходник. Модификации (версия оригинала 3.1): строки/пояснение 105 - добавлено - прописана фукнция pre_ 390, 469 - изменено - номер task 476-480, 1201-1204 - добавлено - функции pre_ (разные) 494 - добавлено - удаление task 531, 589, 1231, 1235 - изменено - имя вызываемой функции на pre_ 1888-1895 - добавлено - блок который отвечает за само изменение mapcyclefile от числа игроков 2120 - изменено - замена вызова функции load_maps на get_listing (т.к. используем только мапцикл, то загрузка списка из стандартмап и чойсе не нужна) 2168 удалена строка вызова get_listing (т.е. она переехала на 2120) 3113 - изменено - закоментировано выполнение задачи. Сейчас, по схеме, смена мапцикла происходит (при наличии условий) при загрузке карты, а также при запуске голосованияДобавлено (2008-07-09, 1:40 Pm) --------------------------------------------- зы Dragon, ты прав, при dmap_strict 1 команда listmaps берет список карт из текущего mapcycle. Меня в принципе это то же устраивает и вписывается в изначальную идею модификации плагина - по крайней мере народ, кто карты не знает, не заноминирует карту с меньшим числом spawn =) я еще попросил народ в написании плагина, который сверял бы количество spawn с maxplayers и при превышении последнего автоматом запускал голосование ) Добавлено (2008-07-09, 2:58 Pm) --------------------------------------------- ps по дополнительному плагину думаю тут
|
| |
|
|
| Dragon | Дата: Среда, 09.07.2008, 19:43:52 | Сообщение # 30 |
|
Рядовой
Группа: Пользователи
Сообщений: 17
Статус: Не в сети
| все же хотелось, что listmaps брался из allmaps... кто-нибудь реализует? зы: за модификацию спс
Сообщение отредактировал Dragon - Среда, 09.07.2008, 20:14:56 |
| |
|
|
 | AMX Mod X Russian Community © 2006-2026  |  |
|
| |