[Кодинг] !!!Новый монстр!!!
|
|
Jack-Hang | Дата: Вт, 2007/01/30, 09:47 | Сообщение # 1 |
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
| В общем-то это самый лёгкий тутор который можно придумать. Ну чтож начнём.Я слышал что кто-то там просил обяснить как сделать чтобы монстры дружили или воевали с вами. ================= Часть 1 : Война или Мир ================= Как за пример мы будем брать Барни, ну во первых потому что у него самый лёгкий код, а во вторых кода в нём мало. . Так откроем Barney.cpp : Code | //========================================================= // Classify - indicates this monster's place in the // relationship table. //========================================================= int CBarney :: Classify ( void ) { return CLASS_PLAYER_ALLY; } | Code | return CLASS_PLAYER_ALLY; | Означает то что Барни будет тебя любить и уважать, пока ты в него невыстрелиш. Теперь поговорим о других переменных класса. У вояк эта переменная заменена на : Code | return CLASS_HUMAN_MILITARY; | А у хеадкраба : Code | return CLASS_ALIEN_PREY; | У bullsquid : Code | return CLASS_ALIEN_PREDATOR; | Ладно так мы их будем перечислять до бесконечности. Вот вам весь список классов : Code | // For CLASSIFY #define CLASS_NONE 0 #define CLASS_MACHINE 1 #define CLASS_PLAYER 2 #define CLASS_HUMAN_PASSIVE 3 #define CLASS_HUMAN_MILITARY 4 #define CLASS_ALIEN_MILITARY 5 #define CLASS_ALIEN_PASSIVE 6 #define CLASS_ALIEN_MONSTER 7 #define CLASS_ALIEN_PREY 8 #define CLASS_ALIEN_PREDATOR 9 #define CLASS_INSECT 10 #define CLASS_PLAYER_ALLY 11 #define CLASS_PLAYER_BIOWEAPON 12 // hornets and snarks.launched by players #define CLASS_ALIEN_BIOWEAPON 13 // hornets and snarks.launched by the alien menace #define CLASS_BARNACLE 99 // special because no one pays attention to it, and it eats a wide cross-section of creatures. | Ну надеюсь вы определились с классом. Переходим ко второй части собсно к самому коду Барника.
|
|
| |
Jack-Hang | Дата: Вт, 2007/01/30, 09:49 | Сообщение # 2 |
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
| ============================ Часть 2 : Барни, коденный и моделленый ============================ Тут главное умение копи-паистить. Открываем barney.cpp жмём CTRL+A потом CTRL+C. File->New->C++ Source File. Прописываем ему любое имя. Жмём ОК. Появляется пустое белое окно. Жмём CTRL+V и о чудо весь код барни оказался уже в другом файле. Ладно приступим к делу. Для начала вам придётся изменить все на Затем : мы заменим на А код : мы заменим на Code | monster_barney_dead_mad | Чуть незабыл!!! Изменим на Продолжение следует!!!!
|
|
| |
Jack-Hang | Дата: Вт, 2007/01/30, 09:50 | Сообщение # 3 |
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
| Я больше чем уверен что все умеют пользоватся Replace : придётся им воспользоваццо. Найдём : И заменим всё эти надписи на Далее найдём : и заменим на : Далее найдём : и заменим на : Далее найдём : и заменим на : Далее найдём : и заменим на : Далее найдём : и заменим на : Далее найдём : и заменим на : Далее найдём : и заменим на :
|
|
| |
Jack-Hang | Дата: Вт, 2007/01/30, 09:50 | Сообщение # 4 |
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
| ==================== Часть 3 : Изменение Модели ==================== Так всё если уже сейчас компилировать то Барни у нас работает. Но мы забыли самое главное!!! Модель!!!! Ну чтоже : В функции : Code | void CBarneyMad :: Spawn() | Есть строка Code | SET_MODEL(ENT(pev), "models/barney.mdl"); | Мы будем хитрее!!! Мы заменим эту строчку на вот такую : Code | if (pev->model) SET_MODEL(ENT(pev), STRING(pev->model)); //LRC else SET_MODEL(ENT(pev), "models/barney.mdl"); | А в функции Precache : Code | if (pev->model) PRECACHE_MODEL((char*)STRING(pev->model)); //LRC else PRECACHE_MODEL("models/barney.mdl"); | Я потом обьясню что нам это даст!!! В функции : Code | void CBarneyMad :: Precache() | Есть строка : Code | SET_MODEL(ENT(pev), "models/barney.mdl"); | Зделаем с ней тоже самое что и с первой. =============== Часть 4 : Заключение =============== Теперь обьясняю что нам это дало. Это дало нам возможность в самом редакторе карт менять модели барни, это значит что мы создаём мапу, задаём барни модель, компилируем мапу, и вот у нас уже не обычный барни а с другой моделью, это даёт возможность несоздавать слишком много новых монстров, например тоже самое я зделал с зомби, просто заменил им модель и вот у меня уже три новых зомбика вместо одного, ладно что-бы можно было на карту вставлять нашего барника нужна волшебная строчка. Откроем Half-Life.fgd он находится гдето в папке с Хаммером. И в конце файла добавим : Code | @PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) studio () = monster_barney_mad : "Barney" [ model(studio) : "Model" ] | Ну незнаю помойму это всё что нужно чтобы наш новый барни работал, я также думаю что кому-то этот тутор очень помог.
Сообщение отредактировал Jack-Hang - Пн, 2007/02/12, 22:02 |
|
| |
faiton | Дата: Ср, 2007/01/31, 12:11 | Сообщение # 5 |
Noob
Репутация: 2
Регистрация:2007/01/27
Сообщений: 7
Статус: Offline
| Спасибо за тутор, буду пробовать.
|
|
| |
Vetal | Дата: Ср, 2007/02/07, 15:21 | Сообщение # 6 |
Noob
Репутация: 1
Регистрация:2007/02/04
Сообщений: 7
Статус: Offline
| А где описаны события на допустим CLASS_HUMAN_MILITARY. Тупо парадировать монстра с другим обличием неохота. Хотябы добавить монстру избирательность на кого нападать, а от кого убегать...
CS 1.6 forewer!
|
|
| |
Jack-Hang | Дата: Ср, 2007/02/07, 15:28 | Сообщение # 7 |
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
| Тутор, это только пример создания монстра. Для полного понятия пробуйте эксперементировать с классами.И вообще этот тутор - описание создания нового монстра то есть клона монстра Если хотите я напишу тутор по описанию классов и о создании новых классов.
|
|
| |
Vetal | Дата: Чт, 2007/02/08, 01:42 | Сообщение # 8 |
Noob
Репутация: 1
Регистрация:2007/02/04
Сообщений: 7
Статус: Offline
| Вообще хотелось бы очень. Если время будет напиши тутор о создании новых классов. Уже неделю плохо сплю, немогу своего монстра научить грамотно сваливать от увечий. И еще если не трудно подскажи как у глока убрать поднятие прицела при стрельбе.
CS 1.6 forewer!
|
|
| |
Jack-Hang | Дата: Чт, 2007/02/08, 10:54 | Сообщение # 9 |
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
| В ev_hldm.cpp if ( EV_IsLocal( idx ) ) { cl_entity_s *view = gEngfuncs.GetViewModel(); gEngfuncs.pEventAPI->EV_WeaponAnimation( empty ? GLOCK_SHOOT_EMPTY : GLOCK_SHOOT, args->iparam1 ); EV_MuzzleFlash(); if(args->bparam2)//silence mode gEngfuncs.pEfxAPI->R_MuzzleFlash( (float *)&view->attachment[1], 17 ); else//normal flash gEngfuncs.pEfxAPI->R_MuzzleFlash( (float *)&view->attachment[0], 11 ); V_PunchAxis( 0, -2.0 ); V_PunchAxis( 0, -2.0 ); Измени на своё
|
|
| |
Vetal | Дата: Чт, 2007/02/08, 13:45 | Сообщение # 10 |
Noob
Репутация: 1
Регистрация:2007/02/04
Сообщений: 7
Статус: Offline
| Огромный respect тебе!!!
CS 1.6 forewer!
|
|
| |