[СКРИПТ] Генератор листа карт

TolikCorp

Участник
Сообщения
874
Реакции
334
PHP:
#!/bin/bash/
####################################################   
   cd ./cstrike/maps
####################################################
# exclude_maplist - карты, исключаемые из списка
   exclude_maplist="background itemtest test_"
####################################################
   ls -1 *.bsp | sed 's/.bsp//g' > ./maplist.temp
   for now_grep in $exclude_maplist; do
      echo "Исключение из списка карт: $now_grep"
      sed -i "/$now_grep/d" ./maplist.temp
   done
   cat ./maplist.temp > ../mapcycle.txt
   cat ./maplist.temp > ../cfg/mapcycle.txt
   cat ./maplist.temp > ../maplist.txt
   cat ./maplist.temp > ../cfg/maplist.txt
   rm ./maplist.temp
####################################################
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Поудобнее для множества исключений было бы
PHP:
#! /bin/bash
cd ./cstrike/maps
ls
echo "Что исключить? используй копипаст через пробел, а потом ентер."
read exclude
for bad in $exclude; do
   ls -1 *.bsp | grep -v "$bad" | cut -d "." -f 1 >> /tmp/map.txt 
done
cat /tmp/map.txt > ...
{как у автора}
 

TolikCorp

Участник
Сообщения
874
Реакции
334
Tiger, твой скрипт не проверил, как мне кажется:

делаем трассировку

допустим 3 исключения: awp_ 35hp_ aim_

Пробегаем первый раз, получаем список всех карт, убираем awp_ из списка, отсекаем название то первой точки. Перенаправляем вывод в конец файла.

Пробегаем второй раз, получаем список из карт без 35hp_, но в списках будут awp_, далее то же самое. Перенаправляем в конец, получается уже в файле повторки появились, да еще и из списка не убралось ничего.

Пробегаем третий раз, там воще жесть в файле будет.



И кстати, лучше писать в каталог с картами сервера, чем в темп.
Вдруг сразу несколько серверов запускаются?

или использовать схему maplist_${game_port}.txt

Добавлено через 24 минуты
Затестил, зацени-ка:
PHP:
user@debian:~/hl2dm_1/hl2mp/maps$ ./1
dm_powerhouse.bsp  dm_sniper.bsp     graphs
dm_lockdown.bsp   dm_resistance.bsp  dm_steamlab.bsp   halls3.bsp
dm_overwatch.bsp  dm_runoff.bsp      dm_underpass.bsp
Что исключить? используй копипаст через пробел, а потом ентер.
halls3 dm_lock dm_runoff
user@debian:~/hl2dm_1/hl2mp/maps$ cat /tmp/map.txt
dm_lockdown
dm_overwatch
dm_powerhouse
dm_resistance
dm_runoff
dm_sniper
dm_steamlab
dm_underpass
dm_overwatch
dm_powerhouse
dm_resistance
dm_runoff
dm_sniper
dm_steamlab
dm_underpass
halls3
dm_lockdown
dm_overwatch
dm_powerhouse
dm_resistance
dm_sniper
dm_steamlab
dm_underpass
halls3
 
Последнее редактирование:

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Так надо исключать конкретные карты или карты по типу?
Все исключения указываются сразу как аргумент через пробел.
C-подобный:
./script de_dust2.bsp cs_italy.bsp
Но я думаю, что ввобще существование подобного скрипта не несет никакой нагрузки. Удобнее делать cfg файлы и выполнять exec mapcycle_something.txt при нужных режимах игры.

Да и вообще разница в методах исключения в grep -v "..." и sed "/.../d" Только sed нужен for в твоем случае, а egrep -v "(var1|var2|var3)" он не нужен
 

TolikCorp

Участник
Сообщения
874
Реакции
334
У меня убирает и по типу, и конкретные. Я лишь указал, что твой скрипт ничего не исключит, даже если карты целиком писать. Он просто N раз запишет в конец файла список карт.

Добавлено через 12 минут
Может быть, ты и прав. Свой скрипт проверен. А тот твой немного с багом, допили как надо свой чтобы и конкретные и по типу убирал, да выложи. Мб я нового узнаю чего.
 
Последнее редактирование:
Сверху Снизу