Мануалы по маппингу, Наши советы, переводы туториалов, статей |
|
Здравствуйте, гость ( Вход | Регистрация )
Мануалы по маппингу, Наши советы, переводы туториалов, статей |
4.1.2008, 13:23
Сообщение
#21
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Туториалы by Astrol (печатается с его письменного разрешения)
Текстовые листы Итак в игре мы можем часто увидеть всякие разные таблички, листы которые содержат текст. Сегодня мы сделаем то же самое. Итак для начала в Radiante создайте: item --> item_clipboard В нем пишем следующие ключи: Сначала ставим галочку в параметре Persistant Далее пишем: key: popup Volume: testtext В этот параметр мы ввели название нашего листка все находятся в ui/clipboard.menu Теперь заходим туда и копируем любой блокнот я взял вот этот: Код //////////////////////////////// abook1 /////////////////////////////////// itemDef { group clip_abook1 name clip_abook1 rect 0 0 340 440 style 3 background "gfx/clipboard/letter1.tga" visible 0 decoration } itemDef { name clip_abook1 rect 18 78 280 322 group clip_abook1 textfile "text/EnglishUSA/abook.txt" textscale .18 forecolor .1 .1 .1 .9 visible 0 autowrapped decoration } itemDef { name clip_abook1 rect 18 78 280 322 group clip_gold2 textfile "text/EnglishUSA/abook.txt" textscale .18 forecolor .1 .1 .1 .6 visible 0 autowrapped decoration } Теперь открываем папку с текстом там создаем блокнот в TXT формате в нем пишем текст любой я напишу ТЕСТ сохраняем, я сохраню как test.txt теперь идем снова в блокноты там заменяем параметр текста textfile "text/EnglishUSA/abook.txt на textfile "text/EnglishUSA/test.txt Так же можно ещё по экперементировать с другими параметрами Теперь заменяем вот это: Код name clip_abook1[/code на [code] name clip_testtext У нас должно получиться так (исходный скрипт) Код //////////////////////////////// abook1 /////////////////////////////////// itemDef { group clip_testtext name clip_testtext rect 0 0 340 440 style 3 background "gfx/clipboard/letter1.tga" visible 0 decoration } itemDef { name clip_testtext rect 18 78 280 322 group clip_abook1 textfile "text/EnglishUSA/abook.txt" textscale .18 forecolor .1 .1 .1 .9 visible 0 autowrapped decoration } itemDef { name clip_testtext rect 18 78 280 322 group clip_gold2 textfile "text/EnglishUSA/test.txt" textscale .18 forecolor .1 .1 .1 .6 visible 0 autowrapped decoration } Вот так, теперь сохраняем и идем любуемся в игру. Создаем лестницы (спиральные) 1. Создайте 4 браша и сделайте их как крест. Как показано на рисунке. 2. Выделим все 4 браша и нажмем пробел при копировании они должны были сместиться. 3. Теперь активируй инструмент Free Rotation (клавиша R) и поверни браши, пока у вас не получиться круг как показано на рисунке ниже. 4. Далее выделим один из брашей и спустим его вниз, затем следующий и так по порядку пока у ваc не получиться как на рисунке. Я инструментом Free Rotation не пользуюсь вообще. Работает он крайне не корректно, браши искажаются, частенько образуются браши не правильной формы при пользовании этим инструментом. Как следствие - на большой карте возникают баги, и найти их потом, когда вся карта постороена подобным образом - крайне сложно. Поэтому лучше ручками порезать брашики и всё сделать ровно и красиво с самого начала. Да, это займёт немного больше времени. Но это не сравнимо с тем, сколько времени потом прийдётся убить на поиски кривых брашей и их исправление. Создаем огонь от которого отнимаются жизни. Для начала создайте сам огонь создайте браш затем дайте ему текстуру SFX-->>>flame4 можно и другую у меня получилось так: 2. Теперь создайте ещё один браш сделайте его в огне тоесть засуньте и дайте ему текстуру common--->trigger. 3. Выделим этот браш и даем ему функцию trigger--->>trigger_hurt. 4. Теперь выделим его и открываем его свойста, там пишем следующие: Key: dmg volume: 10 // сколько процентов жизней у вас отнимит после как вы наступите на него. Все наш огонь наносящий урон готов. Создаем зеркало 1. Создайте браш который будет вашим зеркалом и дайте ему текстуру common-->>nodraw 2. Выделите одну из сторон браша CTRL+SHIFT которая будет отражать и дайте ей текстуру common-->>dirtymirror. 3. Теперь щелкните на 2D вид и выберите меню misc--->>misc_portal_surface и поставьте его перед зеркалом как показано на рисунке. Все зеркало готово. Создаем секретные комнаты на примере Итак, для начала создайте саму комнату и возможно где ни будь вход, у меня будет просто дыра Далее с размером дыры создайте браш и натяните на него текстуру common--->trigger И задайте ему функцию ai--->>ai_trigger Далее откройте его свойства и там прописываем следующие: Key: ainame volume: player // это говорит о том, что только player может активировать эту зону Key: target volume: secret1 // это название активации он нужен для прописанные в блокноте Все теперь работа в Rdiante закончена, сохраняем и открываем name_map.ai Там пишем следующие: Код trigger secret1 \\ название нашего триггера. { foundsecret \\ функция секрета вам выдаст сообщение при входе, и зачитывают в конце игры. } Все наша секретная комната готова Создаем конец карты Конец карты есть на каждой карте без конца мы не сможем попасть в следующий уровень Итак, приступим. Сначала создайте место, где будет финишная прямая. Далее где вы хотите чтобы игрок заканчивал создайте браш с размеров всей ширины и высоты комнаты, либо помещения толщина здесь не грает роли, и натяните на него текстуру common-->> trigger Задайте ему функцию ai--->>ai_trigger Теперь заходим в его свойства и там прописываем следующие: Key: target Volume: endmap \\ можно брать произвольное, это значение нужно для скрипта. Key: ainame Volume: player \\ Это говорит о том, что только player может войти в зону. Все работа в Rdiante закончена, теперь открываем ваш name_map.ai Там прописываем: Код trigger endmap \\ название нашего триггера { changelevel next_map persistent \\ здесь говорится о том, в какой уровень мы переместимся \\дальше, тут стоит next_map, bsp не нужно прописывать. } Все конец карты готов Создаем объект при стрельбе которым шел дым, вода или черный дым (нефть) как в карте xlabs. Для начала создайте объект в который вы будите стрелять и он будет например дымить. Просто любой браш, я создал трубу , на него натяните текстуру common-->> trigger Должно получиться так: Заметьте что у меня существует ещё одна такая же труба просто я создал ей видимую текстуру, а вторая всегда должна быть тригером. Теперь на трубу которая с тригером задайте функцию func_leaky Откройте его свойства и введите следующие: Key: type volume: 3 1 - Нефть 2 - Вода 3 - Дым В моем случаe дым. Все, теперь когда вы будите стрелять в трубу будет звук дыма и конечно он сам. Сообщение отредактировал WSCreator - 4.1.2008, 13:27 |
|
|
4.1.2008, 13:39
Сообщение
#22
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Туториалы by Astrol ч.2
Создаем защиту с помощью шутеров. Такой метод тоже используется в карте xlabs вспомните как электрические лучи не дают пройти нам через дверь, так сейчас мы создадим точно такую же, можно использовать огонь, ракеты, гранаты и т.д место электрических лучей. Описывать буду только новое, а как создавать кнопки и другое все описано выше. Итак для начала создайте три шутера shooter--->>>shooter_tesla вы можете выбрать другое. Так же можете создать и два и один как вам угодно. Далее создайте info-->>info_notnull тоже три и над каждым шутером как показано на рисунке. Теперь создаем target-->>target_speaker это делает звук, который мы укажем позже, поставьте его возле ваших шотеров. И наконец, создайте браш с размером всех трех шотеров и высатой ваших нулов как показазно на рисунке и дайте ему текстуру common-->>trigger. Затем задайте ему функцию trigger-->>trigger_hurt. Теперь займемся свойствами этих объектов. Сначала выделите все три шутера и откроем их свойства. Там вводим следующeе: Код Key: targetname Volume: t1 Key: random \\ случайность лучей. Volume: 10 Key: sticktime \\ Время паузы лучей. 0.1 - не заметно. Volume: 0.1 Key: width \\ Ширина лучей, 10 - нормальная. Volume: 10 Key: count \\ Счет. Volume: 1 Здесь все. Далее выделяем target speaker, открываем его свойства и вводим: Key: noise \\ звук воспроизведение лучей (Вкл) Volume: sound/scenaric/xlabs/tesla_field_loop.wav Далее выделяем триггер Открываем свойства и пишем. Key: dmg \\ Сколько отнимается жизней при столкновении с лучами, 500 - умираешь сразу. Volume: 500 Все, теперь осталось создать кнопку и соединить все как нужно. Создайте кнопку (любую) и соедините ее с тригером, тремя шyтерами и спикером. Далее каждые шyтера соедините с нулами (info_notnull) 1 к 1, 2 к 2, 3 к 3. Вот все соединения: Все, теперь при нажатии кнопки вы не сможете пройти будь то там проход, либо дверь. Вот результат: Создаем шлагбаум с помощью функции door_rotating Вообще шлагбаум можно создать много из чего, например через скрипт мувер, но подумайте сколько вам нужно сделать дела, реле, изменения скрипта файла (это не удобный способ). Итак приступаем к создания шлагбаума. Для начала создайте палку (тоесть что будет подниматься) и ось тоесть origin примерно вот так должно получиться: Заметьте я выделил origin браш чтобы вы видели где его нужно располагать. Теперь создайте обычную кнопку, и займемся свойствами объектов. Выделите шлагбаум и origin и задайте им функцию door rotating. Откройте их свойства и введите следующие: Код Key: degrees // будет повышаться на 60 градусов. Volume: 60 Key: type // звук при открытии и закрытие 1- как бы дверь. Volume: 1 Теперь вкл следующие галочки: Код x_axis // будет открываться на ось X toogle // будет стоять открытым пока вы не нажмете на кнопку. reverse // перемена. force // ну тоесть наш шлагбаум откроется даже если ты блокируешь его. Все. теперь выделяем ваш рубильник и соединяем его со шлагбаумом. Теперь шлагбаум готов. target_smoke. Target_smoke применяется для создания дыма. Например если вы создали печь в доме то в трубе нужна сделать эффект дыма. Итак сейчас мы создадим с вами дым и расмотрим его свойства. Для начала создайте его. Target-->>target_smoke Теперь будем работать и изучать его свойства. Откройте их. Сначала разберем все галочки: Black (дым будет идти черный) White (дым будет идти белый) smokeon (первоночально дым будет идти) gravity (Дым будет идти неприрывно) Теперь разберем все ключи: Key: delay // Задержка дыма Valume: 100 - каждую секунду он будет выпускаться. (В милисекундах). Key: time // Время его нового положения Valume: 500 - каждые 5 секунд он будет менять положение. (В милисекундах). Key: duration // продолжительность перед дымом начинается к alpha Valume: 200 - каждые 2 секунды (В милисекундах). Key: start_size // Стартовый размер дыма Valume: 50 Key: end_size // Конечный размер дыма Valume: 50 Key: wait // Время через которое дым начнет действовать Valume: 10 Теперь вы сможете создать дым, любых размеров и свойств. Target_effect Итак само название говорит что это создает эффект, давайте рассмотрим его. Его пример можно посмотреть в карте end где генрих, когда сыпатся камни и наносят вам ущерб, это и есть target_effect. Давайте создадим точно такой же только камни будут сыпаться при включении рубульника. Для начала создайте его target-->>target_effect Теперь создайте info-->>info_notnull И перемистите его, где вы хотите создать точку падения комней. Теперь создайте target-->target_realy, и рубильник. А теперь займемся свойствами объектов. Мы имеем infi_notnull, target_relay, target_effect и рубильник. Теперь откроем свойства target_effect и разберем их. Сначала кнопочки. Эти кнопки указывают какой объект будет сыпаться. TNT - Типо базуки. Explode - Граната (обычно этот метод применяется для эксплодирования радио). Smoke - Дымовой эффект. Rubbie - Падение камней (Как в карте end). Gore - Падения крови с костями. (Жуть ). Lowgrav - Что то плохое. Debris - эффект взрывной гранаты. Теперь рассмотрим ключи: Key: mass // от массы зависит ущерб (Например камни с весов 75 отнимают по 15 жизней) Valume: 75 Key: dmg // Радиус уничтожения. Volume: 0 - по умолчанию Key: Type // какой звук будет издовать при начале падения. Volume: rock Glass - Стекло Wood - Дерево Metal - Металл Gibs - Гибс Rock - Полы Brick - Кирпичи Fabric - Стены Далее нужно связать все правильно. Выделим target_effect и соединим с info_notnull Теперь target_relay с target_effect И ваш рубильник с target_effect. Все проверьте должно получиться так: А вот что получилось в игре: Сообщение отредактировал WSCreator - 4.1.2008, 13:42 |
|
|
4.1.2008, 17:04
Сообщение
#23
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Спасибо креатор все мои статьи перенес =)
Некоторые советы при маппинге карт: 1. Не используйтесь функции HOLLOW, ROTATING они приводят к мелким брашам, которые замедляют компиляцию и приводят к плохому FPS в игре FPS - число кадров в секунду. 2. Все невидимые грани поверхности обрисовывайте текстурами сaulk из common-->caulk для улучшения компиляции и FPS в игре. 3. Мелкие браши делайте деталями (Для этого выделите ваш маленький браш и нажмите на правую кнопку там выберите Make detail) для улучшения компиляции и FPS в игре. Сообщение отредактировал Astrol - 4.1.2008, 17:06 |
|
|
4.1.2008, 20:08
Сообщение
#24
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Цитата Спасибо креатор все мои статьи перенес =) Я еще орфографические и прочие ошибки пофиксил ;)
|
|
|
9.1.2008, 11:24
Сообщение
#25
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
АИ скриптинг: двойной кольт
Небольшая вводная На карте sfm нам даются 2 кольта. Суперская вещь, правда? Один мой друган прошел с dual кольтами всю оставшуюсю игру (по крайней мере он мне так сказал). Как же его заскриптить? Давайте вместе разбираться. Ход работы Двойной кольт у игрока Создаем для карты mapa файл mapa.ai (хоть тем же блокнотом). И вводим скрипт: Код player { spawn { } playerstart { mu_fade 0 1500 mu_start sound/music/m_tension giveinventory key_binocs // [b] бинокль[/b] // Weapons giveweapon weapon_colt //[B]кольт[/B] giveweapon weapon_colt // [B]еще один кольт[/B] // Ammo setammo ammo_45cal 300 //[b]патроны 45-го калибра: кольт и томпсон setclip weapon_colt 8 // [B]патроны к кольту №1[/B] setclip weapon_akimbo 8 //[B]патроны в обойме к[/B] // [B] кольту №2[/B] selectweapon weapon_akimbo //[B]переключение на 2 кольта[/B] } Теперь посняю. Согласно даже примитивной логике. Чтобы получить двойной кольт нужно либо найти кольт и еще кольт; либо набрать чит /give colt 2 раза. Чтобы включиить этот двойной кольт, нужно нажать кнопку альт. огня. В аи-скрипте 2-ой кольт называется akimbo. Т.е. при selectweapon weapon_colt включается один кольт, а при selectweapon weapon_akimbo - двойной кольт. Но может быть такая бяка, что у второго кольта будет 0 патронов в магазине, а у обычного - 8. Тогда дело решается перезарядкой. Боты Вообще-то ботам я рекомендую ставить один кольт. Это связано с кривой анимацией с двойным кольтом. Если Вы хотите лично в этом убедиться - пишите: Код nazi1 { attributes { aim_accuracy 0.3 starting_health 30 fov 120 aggression 1.6 } spawn { setammo ammo_grenades 1 statetype alert wait 200 giveweapon weapon_colt giveweapon weapon_colt setammo ammo_45cal 999 selectweapon weapon_akimbo } И далее, какая будет у Вас фантазия. Идем в игру и смотрим Сообщение отредактировал WSCreator - 9.1.2008, 11:24 |
|
|
9.1.2008, 13:43
Сообщение
#26
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Ты бы написал что обозначает каждая строка, например:
giveweapon weapon_colt \\ Добавляет указанное оружие giveweapon weapon_colt \\ Добавляет указанное оружие (В нашем случаи копию надо писать для 2 кольтов) setammo ammo_45cal 999 \\ Добавляет указанные патроны selectweapon weapon_akimbo \\ Выделяет указанное оружие (Которое будет стоять первоночально) Когда я был еще новеньким мапером мне все, что ты там написал было бы непонятно. Что касается wait 200 совсем ненужно, как и setammo ammo_grenades 1 и statetype alert. И вообще данная статья неимеет к мапингу никого отношения, все статьи по редактированию и созданию АИ наверху. Сообщение отредактировал Astrol - 9.1.2008, 13:45 |
|
|
9.1.2008, 14:24
Сообщение
#27
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Astrol, как раз-таки имеет. Это частный случай АИ-программинга, с которым могут возникнуть трудности.Может быть, кому-то захочется вооружить ботов двойным кольтом. Так что - без претензий.
Сообщение отредактировал WSCreator - 9.1.2008, 14:25 |
|
|
13.12.2008, 21:10
Сообщение
#28
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Как сделать качественное радио
1.Мы создадим браш более-менее похожий на радио. 2. Поставте брашу радио функция разрушения func_explosive. Теперь нажмите N (Entity) поставте галочки в окошках noblockaas и useshader, далее пишите: Key: health Value: 10 Key: mass Value: 30 Key: type Value: metal Напоминаю что параметр health - это значение жизней ( по умолчанию 100) Ключ mass - это сколько будет оставаться останков от нашего радио ( по умолчанию 75) Ключ type - это тип в нашем случае это метал ( по умолчанию дерево) 3. Создайте target_relay и поставте неподалёку от радио ( неважно где оно будет это для удобства) 4.Теперь выделете радио, затем реле и нажмите Ctrl + K, мы связали объекты в такой последовательности: Радио-->Реле. Стрелка должна быть от радио до реле, если у вас наоборот, то вы не правельно связали объекты. 5.Хорошо пол дела мы сделали теперь мы поставим target_effect (поставте рядом с реле), теперь нажмите N и поставте галку в окошке explode (это будет означать что мы поставили эффект взрыва). 6. Последнее наше действие свяжите target_relay-->target_effect. После того как мы связали выделете эффект и поставте его в середину радио. Если вы хотите более реалистичного радио, тогда выполняйте следущие пункты: 1. Создайте target_speaker, нажмите N и поставте галку looped_on это будет означать что наш звук будет бесконечно повторятся. Вводите следущее: Key: noise Value: sound\world\amb_radio_03.wav 2. Свяжите так: target_relay-->target_speaker. Теперь у нас получилось радио которое разбивается и взрывается, но пока оно не разбилось издаёт звуки. Идите в игру и любуйтесь!!! Manual by uXeGen Сообщение отредактировал uXeGen - 17.5.2009, 22:01 |
|
|
11.11.2009, 15:53
Сообщение
#29
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Помогите люди плизз !!! У меня в ентити нету таких папок как NPC и FX !
(Тоесть немогу создавать Нпс) Это у меня редактор левый или я что-то не доделал ? |
|
|
26.11.2009, 21:45
Сообщение
#30
|
|
Группа: Сообщений: 0 Регистрация: -- Пользователь №: |
Там нет такой штуки. Все npc хранятся в разделе ai
|
|
|
Текстовая версия | Сейчас: 22.9.2024, 13:00 |