AMX MOD X
Понедельник, 19.01.2026, 23:42:36



Приветствую Вас Гость | RSS
[ Главная ] [ Модификация deagsmapmanager - Страница 2 - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: slogic, AlMod  
Модификация deagsmapmanager
se7hДата: Понедельник, 23.06.2008, 23:11:13 | Сообщение # 16
Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Репутация: 13
Статус: Не в сети
set_task(180.0,"load_maps",0,_,_,"b")



Сообщение отредактировал se7h - Понедельник, 23.06.2008, 23:11:33
 
WhiteBearДата: Среда, 25.06.2008, 16:31:29 | Сообщение # 17
Подполковник
Группа: Пользователи
Сообщений: 132
Репутация: 2
Статус: Не в сети
Спс.
Просто пришел к выводу, что часть кода, отвечающая за карты считывает их только при загрузке карты/плагина.
Пытаюсь че нить придумать. чтобы список карт динамически изменялся.
По результатам отпишусь

Добавлено (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
Репутация: 2
Статус: Не в сети
Вроде бы добился желаемого.
Просьба с знатокам скрипта, кого не затруднить, просмотреть исходник/плагин на предмет возможных проблем (сбои в работе плагина/сервера. утечек память и т.п.) от добавленного кода (строки 476-495 добавлены, их небыло в оригинале)
Рассчитано на использование только файла mapcyclefile (переменная плагина в amxx.cfg dmap_strict = 1)
Исходник и плагин целиком
Прикрепления: deagsmapmanager.rar (16.7 Kb) · deagsmapmanager.zip (140.7 Kb)


Сообщение отредактировал WhiteBear - Пятница, 27.06.2008, 06:14:24
 
se7hДата: Пятница, 27.06.2008, 12:37:55 | Сообщение # 19
Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Репутация: 13
Статус: Не в сети
немного переделал твою функцию:
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
Репутация: 2
Статус: Не в сети
se7h прошу простить великодушно blush я не написал что плагин, который целиком, это оригинал bad

я добавил в начале функции 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 каких нить проблем.

Еще раз благодарю за трату времени на мою скромную персону blush

 
se7hДата: Пятница, 27.06.2008, 18:36:42 | Сообщение # 21
Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Репутация: 13
Статус: Не в сети
вместо set_task(0.1,"get_listing") можно просто указать функцию get_listing()

 
WhiteBearДата: Воскресенье, 29.06.2008, 05:04:26 | Сообщение # 22
Подполковник
Группа: Пользователи
Сообщений: 132
Репутация: 2
Статус: Не в сети
Спасибо!
Если я правильно понял, то указание функции, в данном случае, get_listing(), и варианта set_task(0.1,"get_listing"), вызывает ее выполнение, только во втором варианте с временной задержкой (тут 0,1).
А при вызове ее в другой функции, их выполнение организовано как? Сначала выполняется вызванная функция, потом продолжается основная, или они начинают выполняться одновременно?
 
se7hДата: Воскресенье, 29.06.2008, 10:45:00 | Сообщение # 23
Генерал-майор
Группа: Cупер-модеры
Сообщений: 424
Репутация: 13
Статус: Не в сети
Quote (WhiteBear)
А при вызове ее в другой функции, их выполнение организовано как? Сначала выполняется вызванная функция, потом продолжается основная, или они начинают выполняться одновременно?

скорее всего последовательно


 
WhiteBearДата: Вторник, 01.07.2008, 16:28:35 | Сообщение # 24
Подполковник
Группа: Пользователи
Сообщений: 132
Репутация: 2
Статус: Не в сети
Итоги: удалось достигнуть желаемого при добавлении кода
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
Репутация: 13
Статус: Не в сети
Quote (WhiteBear)
Большое СПАСИБО se7h за неоценимую помощь при модификации плагина, и DaTa за вносимые поправки!!!

всегда готов помочь ;)
рад что всё удалось


 
DragonДата: Понедельник, 07.07.2008, 17:12:24 | Сообщение # 26
Рядовой
Группа: Пользователи
Сообщений: 17
Репутация: 0
Статус: Не в сети
А как быть с allmaps.txt? при включении dmap_strict 1, список карт берется из mapcycle.txt
 
WhiteBearДата: Вторник, 08.07.2008, 01:24:10 | Сообщение # 27
Подполковник
Группа: Пользователи
Сообщений: 132
Репутация: 2
Статус: Не в сети
allmaps.txt генерируется автоматически и содержит список карт которые есть в папке с картами, поэтому, я так думаю. если его удалить, он все равно создасться.
dmap_strict 1 - это задумано специально - т.к. в плагине много ветвлений на выборку карт из того или иного файла - а так работаем только с одним типом - проще.
ps я плагин еще подмудрил, потому что оказалось что запуск голосования тоже проходит по двум ветвлениям + отключил обчитывание неиспользуемых списков карт (в нашем случае)
зы2 если надо, могу выложить переделанный исходник


Сообщение отредактировал WhiteBear - Вторник, 08.07.2008, 01:27:00
 
DragonДата: Вторник, 08.07.2008, 07:27:54 | Сообщение # 28
Рядовой
Группа: Пользователи
Сообщений: 17
Репутация: 0
Статус: Не в сети
я имел ввиду, что при dmap_strict 1, список карт командой "listmaps" теперь берется из mapcycle.txt. И понятное дело там, будут не все карты сервера. Исходник конечно выкладывай)
 
WhiteBearДата: Среда, 09.07.2008, 14:58:31 | Сообщение # 29
Подполковник
Группа: Пользователи
Сообщений: 132
Репутация: 2
Статус: Не в сети
вроде по 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 по дополнительному плагину думаю тут

Прикрепления: 4741747.rar (16.8 Kb)
 
DragonДата: Среда, 09.07.2008, 19:43:52 | Сообщение # 30
Рядовой
Группа: Пользователи
Сообщений: 17
Репутация: 0
Статус: Не в сети
все же хотелось, что listmaps брался из allmaps... кто-нибудь реализует?
зы: за модификацию спс


Сообщение отредактировал Dragon - Среда, 09.07.2008, 20:14:56
 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

AMX Mod X Russian Community © 2006-2026