10-11-2005, 12:27 | #1 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Разборки с BW
Буду выкладывать тут историю своих разборок с кодом BW Если есть, чем дополнить - просьба не стесняться
файл: badc_gen_2.pl, функция: get_sqdname параметры: $request Функция ищет в файле *aircrafts.data директивы, типа "rusfig=176IAP,3IAK,7IAP,4IAP;" или "gerjab=I_LG2,III_KG27a;" и возвращает имя эскадрильи в зависимости от параметра $request. Например, при $request = "rusfig" и строке "rusfig=176IAP,3IAK,7IAP,4IAP;" в файле *aircrafts.data, функция возвратит одно из названий: "176IAP", "3IAK", "7IAP", "4IAP", выбранное случайным образом. |
10-11-2005, 12:49 | #2 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
файл: badc_gen_2.pl, функция: build_grplsts
Может, конечно, я неправильно понял, но есть забавное условие: if ($clima>90){ # clima 91..100 : low visibility rain , thunder $fig_ai_skill=0; # Rookie #$fig_ai_skill=1; # Average #$fig_ai_skill=2; # veteran #$fig_ai_skill=3; # Ace ... Т.е. если погода жопа, то установить ботов-курсантов |
10-11-2005, 12:57 | #3 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Дефолтный уровень ботов-истребителей ставится в функции build_grplsts (файл badc_gen_2.pl).
Строка: my $fig_ai_skill=1; # 0=Rookie 1=Normal 2=veteran 3=Ace
__________________
Мотайте это себе на усы! У кого нет усов - мотайте на уши, вырастут усы - перемотаете! ҕљяҭҍ ӑḡңӥ ҟӓҫяқų ҥӑҳ Последний раз редактировалось RR_Spiro; 10-11-2005 в 13:32. |
10-11-2005, 13:27 | #4 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Климат в вылете задается двумя способами:
1) можно создать файл clima.txt следующего содержания: 10 6 68 1200 Первая строчка - часы Вторая строчка - минуты Третья строчка - погода (от 1 до 100, 100 - шторм) Четвертая строчка - высота облаков 2) Если такого файла нет, то климат задается автоматически случайным образом в файле badc_gen_2.pl Время - от 7:00 до 16:59 Погода - от 1 до 97 (шторма не будет) Высота облаков - от 500 до 1500 метров Нужные строчки: $hora=int(rand(10)+7); # hour : 7 ~ 16 $minutos=int(rand(60)); # minutes: 0 ~ 59 $clima=int(rand(98)); #1..97 this is a number to set weather $nubes=500+(int(rand(10))+1)*100; # 500 .. 1500 clouds |
10-11-2005, 15:16 | #5 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Логика работы функции get_flight (файл badc_gen_2.pl):
1) Если в реквесте задан тип самолета, а такого нет в файле *_aircrafts.data, то функция вываливается с ошибкой 2) Если в реквесте задан нелетабельный тип самолета для игрока, то функция вываливается с ошибкой 3) Если в реквесте не задан тип самолета, и доступен всего один тип, то функция выбирает этот тип и получает имя эскадрильи (get_sqdname) 4) Если в реквесте не задан тип самолета, и доступно несколько типов, то функция подсчитывает количество всех доступных самолетов ($plane_total), случайно выбирает один из них и получает имя эскадрильи Как я понял, выборка происходит случайным образом, в зависимости от того, что выдаст команда: my $select=int(rand($plane_total))+1 Т.е. последующий код, в котором этот $select сравнивается с количеством самолетов каждого типа $fly_matrix[$option][6] смысловой нагрузки особо не несет, потому что все зависит от того, чему будет равно значение $select. |
10-11-2005, 15:32 | #6 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Добавить перевод брифингов можно в функции print_briefing (файл badc_gen_2.pl).
|
11-11-2005, 12:59 | #7 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Файл badc_gen_2.pl
Строчки: if ($red_target =~ m/SUM-/ && $red_bom_attk_ai==1 && $red_bom_attk_type ne "Li-2" && $red_bom_attk_type ne "TB3-4M-34R") { $red_bom_attk_type="Li-2"; print GEN_LOG "Pid $$ : Red Ai suply set to Li-2\n"; } задают Ли-2 по дефолту в качестве саплая для красных ботов. Строчки: if ($blue_target =~ m/SUM-/ && $blue_bom_attk_ai==1 && $blue_bom_attk_type ne "JU-52" && $blue_bom_attk_type ne "ME-323") { $blue_bom_attk_type="JU-52"; print GEN_LOG "Pid $$ : Blue Ai suply set to blue_bom_attk_type\n"; } задают Ju-52 по дефолту в качестве саплая для синих ботов. |
14-11-2005, 13:00 | #8 |
Добрый Начуч
Администратор
Регистрация: Jul 2004
Адрес: Пермь, Россия
Сообщений: 3,102
|
Был вопрос, как в миссии снабжения рассчитывается уменьшение повреждений города, если миссия осуществляется живыми пилотами.
Вот формула: int(rand(3))+5 То есть случайным образом, минимум 5%, максимум 8% для каждого пилота. Для ботов начисляется всегда по 3% за каждого выжившего.
__________________
Too old to rock 'n' roll: too young to die! |
14-11-2005, 14:27 | #9 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Уровень ботов-бомберов и ботов-штурмов в движке bw указан не переменной (нефик ее искать ), а просто вбит напрямую в функции build_grplsts (файл badc_gen_2.pl),в строчках типа:
push(@red_def_grplst, "BD",$sqdname."00",$red_bom_def_planes,$red_bom_de f_ai,"2",@vuelo); Предпоследний аргумент как раз и означает уровень для бота: "0" - Курсант "1" - Нормальный "2" - Ветеран "3" - Ас |
27-11-2005, 15:48 | #10 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Однако ИМХО процедура выборки самолета должна быть примерно такой:
Код:
def select_plane(queue): count=0 for n in range(len(queue)): count+=queue[n] rnd = random.randint(1, count) next=0 for n in range(len(queue)): if next > rnd: return n else: next+=queue[n] return n В queue передается список количества самолетов, что-то типа: queue = [90, 2, 1, 5, 1, 1] Но выходе получаем индекс самолета. В данном случае функция почти всегда будет возвращать 1 (кол-во 90, т.е. самый распространенный самолет). Вот результат прогона после 100 вызовов: 1 1 1 1 1 2 1 1 5 1 1 1 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 4 1 5 1 1 1 1 1 5 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 4 2 1 1 1 1 1 1 1 5 1 1 P.s. написано на Питоне, из-за отсутствия Перла дома, на работе переведу |
03-02-2006, 14:32 | #11 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Тесты плейнсета
Это для красной армии, нелетабельные крафты для типа задачи "I"
Plane: LaGG-3IT => 128 Plane: P-40E => 5 Plane: MIG-3UD => 72 Plane: Hurricane-MkIIb-Fmod => 28 Plane: MIG-3UB => 86 Plane: LA-5 => 10 Plane: P40-M => 82 Plane: Yak-1 => 11 Plane: Yak-7B => 84 Plane: LaGG-3S29 => 93 Plane: Yak-9 => 178 Plane: Yak-1B => 110 Plane: LaGG-3S35 => 99 Plane: Mig3-ShvaK => 14 А это тоже самое, но крафты летабельные: Plane: LaGG-3IT => 114 Plane: P-40E => 4 Plane: Hurricane-MkIIb-Fmod => 30 Plane: MIG-3UD => 102 Plane: MIG-3UB => 82 Plane: LA-5 => 14 Plane: P40-M => 70 Plane: Yak-1 => 16 Plane: Yak-7B => 107 Plane: LaGG-3S29 => 70 Plane: Yak-9 => 147 Plane: Yak-1B => 116 Plane: LaGG-3S35 => 110 Plane: Mig3-ShvaK => 18 |
03-02-2006, 16:18 | #12 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
[vladimir@vladimir unit-tests]$ ./get_flight.pl
=================Test Start================= Test set: army: 1, task: BD, humn: 0 Plane: I-16t24 => 16 Plane: P-40E => 32 Plane: I-153-M62 => 4 Plane: P40-M => 22 Plane: PE-3BIS => 15 Plane: IL2 series3 => 4 Plane: IL-2M Early 1942 => 3 Plane: IL-2M Late 1942 => 18 Plane: IL-2 Field Mod => 89 Plane: I-153P => 797 =================Test End================= =================Test Start================= Test set: army: 1, task: BD, humn: 1 Plane: I-16t24 => 15 Plane: P-40E => 41 Plane: I-153-M62 => 14 Plane: P40-M => 21 Plane: IL-2M Early 1942 => 2 Plane: IL-2M Late 1942 => 19 Plane: IL-2 Field Mod => 91 Plane: I-153P => 797 =================Test End================= =================Test Start================= Test set: army: 1, task: I, humn: 0 Plane: LaGG-3IT => 120 Plane: P-40E => 6 Plane: Hurricane-MkIIb-Fmod => 25 Plane: MIG-3UD => 106 Plane: MIG-3UB => 80 Plane: LA-5 => 12 Plane: P40-M => 69 Plane: Yak-1 => 12 Plane: Yak-7B => 88 Plane: LaGG-3S29 => 84 Plane: Yak-9 => 162 Plane: Yak-1B => 119 Plane: LaGG-3S35 => 94 Plane: Mig3-ShvaK => 23 =================Test End================= =================Test Start================= Test set: army: 1, task: I, humn: 1 Plane: LaGG-3IT => 128 Plane: P-40E => 3 Plane: Hurricane-MkIIb-Fmod => 33 Plane: MIG-3UD => 79 Plane: MIG-3UB => 83 Plane: LA-5 => 13 Plane: P40-M => 78 Plane: Yak-1 => 16 Plane: Yak-7B => 108 Plane: LaGG-3S29 => 71 Plane: Yak-9 => 159 Plane: Yak-1B => 129 Plane: LaGG-3S35 => 88 Plane: Mig3-ShvaK => 12 =================Test End================= =================Test Start================= Test set: army: 1, task: EBD, humn: 0 Plane: LaGG-3IT => 107 Plane: P-40E => 7 Plane: I-16t24 => 22 Plane: MIG-3UD => 80 Plane: Hurricane-MkIIb-Fmod => 158 Plane: MIG-3UB => 61 Plane: LA-5 => 8 Plane: P40-M => 71 Plane: Yak-1 => 16 Plane: Yak-7B => 61 Plane: LaGG-3S29 => 77 Plane: Yak-9 => 150 Plane: Yak-1B => 85 Plane: LaGG-3S35 => 81 Plane: Mig3-ShvaK => 16 =================Test End================= =================Test Start================= Test set: army: 1, task: EBD, humn: 1 Plane: LaGG-3IT => 84 Plane: I-16t24 => 21 Plane: P-40E => 8 Plane: Hurricane-MkIIb-Fmod => 173 Plane: MIG-3UD => 83 Plane: MIG-3UB => 64 Plane: LA-5 => 17 Plane: P40-M => 66 Plane: Yak-7B => 73 Plane: Yak-1 => 12 Plane: LaGG-3S29 => 77 Plane: Yak-9 => 125 Plane: Yak-1B => 107 Plane: LaGG-3S35 => 63 Plane: Mig3-ShvaK => 27 =================Test End================= =================Test Start================= Test set: army: 1, task: BA, humn: 0 Plane: PE-2 S110 => 13 Plane: SB2-M103 => 15 Plane: PE-3BIS => 117 Plane: IL-4-DB3B => 31 Plane: IL-2M Early 1942 => 14 Plane: TB3-4M-34R => 15 Plane: IL2 series3 => 9 Plane: IL-2M Late 1942 => 123 Plane: IL-2 Field Mod => 500 Plane: B-25J1 => 74 Plane: PE-2 S84 => 89 =================Test End================= =================Test Start================= Test set: army: 1, task: BA, humn: 1 Plane: IL2 series3 => 14 Plane: TB3-4M-34R => 100 Plane: IL-2M Early 1942 => 27 Plane: IL-2M Late 1942 => 173 Plane: IL-2 Field Mod => 686 =================Test End================= =================Test Start================= Test set: army: 1, task: R, humn: 0 Plane: Not found => 1000 =================Test End================= =================Test Start================= Test set: army: 1, task: R, humn: 1 Plane: Not found => 1000 =================Test End================= =================Test Start================= Test set: army: 1, task: ET, humn: 0 Plane: LaGG-3IT => 105 Plane: P-40E => 5 Plane: I-16t24 => 22 Plane: MIG-3UD => 89 Plane: Hurricane-MkIIb-Fmod => 136 Plane: MIG-3UB => 74 Plane: LA-5 => 15 Plane: P40-M => 72 Plane: Yak-1 => 7 Plane: Yak-7B => 76 Plane: LaGG-3S29 => 78 Plane: Yak-9 => 125 Plane: Yak-1B => 109 Plane: LaGG-3S35 => 67 Plane: Mig3-ShvaK => 20 =================Test End================= =================Test Start================= Test set: army: 1, task: ET, humn: 1 Plane: LaGG-3IT => 94 Plane: I-16t24 => 23 Plane: P-40E => 8 Plane: MIG-3UD => 69 Plane: Hurricane-MkIIb-Fmod => 158 Plane: MIG-3UB => 56 Plane: LA-5 => 13 Plane: P40-M => 61 Plane: Yak-1 => 10 Plane: Yak-7B => 86 Plane: LaGG-3S29 => 75 Plane: Yak-9 => 152 Plane: Yak-1B => 107 Plane: LaGG-3S35 => 76 Plane: Mig3-ShvaK => 12 =================Test End================= =================Test Start================= Test set: army: 1, task: EBR, humn: 0 Plane: Not found => 1000 =================Test End================= =================Test Start================= Test set: army: 1, task: EBR, humn: 1 Plane: Not found => 1000 =================Test End================= =================Test Start================= Test set: army: 1, task: EBA, humn: 0 Plane: LaGG-3IT => 103 Plane: P-40E => 4 Plane: I-16t24 => 24 Plane: MIG-3UD => 85 Plane: MIG-3UB => 83 Plane: LA-5 => 8 Plane: P40-M => 75 Plane: Hurricane-MkIIb-FMod => 146 Plane: Yak-1 => 18 Plane: Yak-7B => 73 Plane: LaGG-3S29 => 77 Plane: Yak-9 => 117 Plane: Yak-1B => 94 Plane: LaGG-3S35 => 79 Plane: Mig3-ShvaK => 14 =================Test End================= =================Test Start================= Test set: army: 1, task: EBA, humn: 1 Plane: LaGG-3IT => 102 Plane: P-40E => 9 Plane: I-16t24 => 23 Plane: MIG-3UD => 80 Plane: MIG-3UB => 75 Plane: LA-5 => 13 Plane: P40-M => 63 Plane: Hurricane-MkIIb-FMod => 146 Plane: Yak-7B => 73 Plane: Yak-1 => 13 Plane: LaGG-3S29 => 76 Plane: Yak-9 => 128 Plane: Yak-1B => 106 Plane: LaGG-3S35 => 80 Plane: Mig3-ShvaK => 13 =================Test End================= =================Test Start================= Test set: army: 1, task: ESU, humn: 0 Plane: LaGG-3IT => 87 Plane: P-40E => 6 Plane: I-16t24 => 20 Plane: MIG-3UD => 70 Plane: MIG-3UB => 64 Plane: LA-5 => 19 Plane: P40-M => 88 Plane: Hurricane-MkIIb-FMod => 160 Plane: Yak-7B => 86 Plane: Yak-1 => 17 Plane: LaGG-3S29 => 73 Plane: Yak-9 => 128 Plane: Yak-1B => 99 Plane: LaGG-3S35 => 72 Plane: Mig3-ShvaK => 11 =================Test End================= =================Test Start================= Test set: army: 1, task: ESU, humn: 1 Plane: LaGG-3IT => 94 Plane: P-40E => 2 Plane: I-16t24 => 23 Plane: MIG-3UD => 72 Plane: MIG-3UB => 68 Plane: LA-5 => 13 Plane: P40-M => 70 Plane: Hurricane-MkIIb-FMod => 152 Plane: Yak-1 => 13 Plane: Yak-7B => 86 Plane: LaGG-3S29 => 72 Plane: Yak-9 => 145 Plane: Yak-1B => 101 Plane: LaGG-3S35 => 70 Plane: Mig3-ShvaK => 19 =================Test End================= =================Test Start================= Test set: army: 2, task: BD, humn: 0 Plane: BF-110C4B => 221 Plane: JU-87B2 => 102 Plane: JU-87D3 => 70 Plane: BF-109E7B => 607 =================Test End================= =================Test Start================= Test set: army: 2, task: BD, humn: 1 Plane: JU-87B2 => 210 Plane: JU-87D3 => 86 Plane: BF-109E7B => 704 =================Test End================= =================Test Start================= Test set: army: 2, task: I, humn: 0 Plane: BF-109G2 => 157 Plane: BF-109F4 => 843 =================Test End================= =================Test Start================= Test set: army: 2, task: I, humn: 1 Plane: BF-109G2 => 126 Plane: BF-109F4 => 874 =================Test End================= =================Test Start================= Test set: army: 2, task: EBD, humn: 0 Plane: BF-109G2 => 133 Plane: BF-109F4 => 867 =================Test End================= =================Test Start================= Test set: army: 2, task: EBD, humn: 1 Plane: BF-109G2 => 146 Plane: BF-109F4 => 854 =================Test End================= =================Test Start================= Test set: army: 2, task: BA, humn: 0 Plane: HE-111H2 => 63 Plane: JU-88A4 => 295 Plane: HE-111H6 => 66 Plane: BF-110C4B => 277 Plane: JU-87B2 => 239 Plane: JU-87D3 => 60 =================Test End================= =================Test Start================= Test set: army: 2, task: BA, humn: 1 Plane: HE-111H2 => 385 Plane: HE-111H6 => 80 Plane: JU-87B2 => 458 Plane: JU-87D3 => 77 =================Test End================= =================Test Start================= Test set: army: 2, task: R, humn: 0 Plane: Not found => 1000 =================Test End================= =================Test Start================= Test set: army: 2, task: R, humn: 1 Plane: Not found => 1000 =================Test End================= =================Test Start================= Test set: army: 2, task: ET, humn: 0 Plane: BF-109G2 => 90 Plane: BF-109E7B => 717 Plane: BF-109F4 => 193 =================Test End================= =================Test Start================= Test set: army: 2, task: ET, humn: 1 Plane: BF-109G2 => 87 Plane: BF-109E7B => 729 Plane: BF-109F4 => 184 =================Test End================= =================Test Start================= Test set: army: 2, task: EBR, humn: 0 Plane: Not found => 1000 =================Test End================= =================Test Start================= Test set: army: 2, task: EBR, humn: 1 Plane: Not found => 1000 =================Test End================= =================Test Start================= Test set: army: 2, task: EBA, humn: 0 Plane: BF-109G2 => 122 Plane: BF-109F4 => 878 =================Test End================= =================Test Start================= Test set: army: 2, task: EBA, humn: 1 Plane: BF-109G2 => 158 Plane: BF-109F4 => 842 =================Test End================= =================Test Start================= Test set: army: 2, task: ESU, humn: 0 Plane: BF-109G2 => 156 Plane: BF-109F4 => 844 =================Test End================= =================Test Start================= Test set: army: 2, task: ESU, humn: 1 Plane: BF-109G2 => 151 Plane: BF-109F4 => 849 =================Test End================= |
03-02-2006, 16:46 | #13 |
Добрый Начуч
Администратор
Регистрация: Jul 2004
Адрес: Пермь, Россия
Сообщений: 3,102
|
Это у тебя с тем генератором и плэйнсетом, что я тебе прислал?
__________________
Too old to rock 'n' roll: too young to die! |
03-02-2006, 18:01 | #14 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Да, плейнсет перекодирован.
|
12-05-2006, 16:15 | #15 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Файл badc_par_2.pl, функция print_mis_objetive_result. Похоже, что в ней забито время на атаку сектора (40 минут) и количество танков, которое надо уничтожить (7), чтобы сектор считался захваченным:
Время на атаку: Код:
if ( (get_segundos($1)-get_segundos($stime_str)) <= 2400 ){ # 40 minutos Код:
$tank_dead_limit=7; Код:
if ($2==1 || $1>=$TTL_SUPPLYED) { # CON suministro $tank_dead_limit=4; # matan 5 taques y no se gana el sector } |
14-01-2008, 03:00 | #16 | |
불친절한 한국어 사기꾼™ True хохол
Администратор
Регистрация: Jul 2004
Адрес: 54°43' с.ш. 20°30' в.д.
Сообщений: 7,247
|
Цитата:
__________________
|
|
14-01-2008, 10:08 | #17 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Уже должно быть в движке, я туда этот кусок запихивал.
|
14-01-2008, 12:29 | #18 |
불친절한 한국어 사기꾼™ True хохол
Администратор
Регистрация: Jul 2004
Адрес: 54°43' с.ш. 20°30' в.д.
Сообщений: 7,247
|
это не функция get_flight?
кстати, ты говорил ее отдельно можно прогнать - как?
__________________
|
14-01-2008, 15:56 | #19 |
Flying Officer
Регистрация: Mar 2005
Сообщений: 831
|
Ага, она. Глянь если в коде есть русские коменты, то моя.
Для тестов есть отдельный скрипт - get_flight.pl. Рядом с этим скриптом надо положить файлик planes.data, со списком самолетов. Потом просто запустить, он выдаст результаты в читабельном виде. Наверное |
15-01-2008, 23:03 | #20 | |
불친절한 한국어 사기꾼™ True хохол
Администратор
Регистрация: Jul 2004
Адрес: 54°43' с.ш. 20°30' в.д.
Сообщений: 7,247
|
Цитата:
Немного поколдовал, сделал гибрид из твоего скрипта и оригинального генератора. Вроде пашет в соответствии с прописанными шансами на выпадение в файле *.data. Потестим на войне.
__________________
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
Опции просмотра | |
|
|