Registrierung - oder - Hineingehen
Portal 2 | MemoriesPortal 2 | Memories

Memories...

25/02/2013

В общем-то это самый лёгкий тутор который можно придумать.


  • Beschreibung
  • Einstellung

Новый монстр

В общем-то это самый лёгкий тутор который можно придумать.


Der Autor der Lektion : Jack-Hang
Der Durchsichten : 923 ( +1 )
Heruntergeladen : 0
Hochgeladen von : Streit
Erstellt : 04/07/2011 5:48:35 PM
Source : http://www.hang-over.ucoz.ru
Wertung :
 ( 0 ) 
Aktie :


Es gibt die folgenden Sprachen : | russisch |

В общем-то это самый лёгкий тутор который можно придумать. Ну чтож начнём.Я слышал что кто-то там просил обяснить как сделать чтобы монстры дружили или воевали с вами.

Часть 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.

Ну надеюсь вы определились с классом. Переходим ко второй части собсно к самому коду Барника.

Часть 2 : Барни, коденный и моделленый

Тут главное умение копи-паистить. Открываем barney.cpp жмём CTRL+A потом CTRL+C. File→New→C++ Source File. Прописываем ему любое имя. Жмём ОК. Появляется пустое белое окно. Жмём CTRL+V и о чудо весь код барни оказался уже в другом файле. Ладно приступим к делу. Для начала вам придётся изменить все

Code:

CBarney

на

Code:

CBarneyMad

Затем :

Code:

monster_barney

мы заменим на

Code:

monster_barney_mad

А код :

Code:

monster_barney_dead

мы заменим на

Code:

monster_barney_dead_mad

Чуть незабыл!!!

Code:

CDeadBarney

Изменим на

Code:

CDeadBarneyMad

Я больше чем уверен что все умеют пользоватся Replace : придётся им воспользоваццо. Найдём :

Code:

tlIdleBaStand

И заменим всё эти надписи на

Code:

tlIdleMaStand

Далее найдём:

Code:

slIdleBaStand

и заменим на :

Code:

slIdleMaStand

Далее найдём :

Code:

tlBaFaceTarget

и заменим на :

Code:

tlMaFaceTarget

Далее найдём :

Code:

slBaFaceTarget

и заменим на :

Code:

slMaFaceTarget

Далее найдём :

Code:

tlBarneyEnemyDraw

и заменим на :

Code:

tlMadEnemyDraw

Далее найдём :

Code:

slBarneyEnemyDraw

и заменим на :

Code:

slMadEnemyDraw

Далее найдём :

Code:

tlBaFollow

и заменим на :

Code:

tlMaFollow

Далее найдём :

Code:

slBaFollow

и заменим на :

Code:

slMaFollow

Так всё если уже сейчас компилировать то Барни у нас работает. Но мы забыли самое главное!!! Модель!!!! Ну чтоже : В функции :

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 CDeadBarneyMad :: Spawn( )

Есть строки :

Code:

PRECACHE_MODEL("models/barney.mdl");
SET_MODEL(ENT(pev), "models/barney.mdl");

Зделаем с ними тоже самое что и с первой и второй.

Code:

if (pev->model)
{
   PRECACHE_MODEL((char*)STRING(pev->model));
   SET_MODEL(ENT(pev), STRING(pev->model));
}
else
{
   PRECACHE_MODEL("models/barney.mdl");
   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"
]

Ну незнаю помойму это всё что нужно чтобы наш новый барни работал, я также думаю что кому-то этот тутор очень помог.



Die Ähnlichen1. Разбираемся в коде пушки МР5 - По просьбам трудящихся коментирую код МР5
2. Исходный код ножа - weapon_knife (Нож) с двумя режимами атаки: Slash и Stab.
3. Переключение оружия a la HL2 - Мне не нравится, как переключается оружие в ХЛ. Может, кому-то и интересно тыкать по менюшкам худа, но мне больше нравится реализация переключения в Unreal RTN, Quake Mission Packs и HL2
4. Неработающие двери :) - Как сделать, чтоб двери не открывались, когда нет света и рядом с ними был индикатор (красн. зел.)
5. Создание сценариев - Для создания сценариев (aka скриптов) в Half-Life существуют две энтити: scripted_sequence и scripted_sentence. Первая отвечает за движения, выполняемые монстром/персонажем, будь то ходьба, бег, нажатие кнопки, тряска автомата с газировкой или почёсывание подбородка. Вторая служит для того, чтобы персонаж произнес какую-то фразу. При этом его голова повернётся в сторону слушателя, и рот будет открываться в соответствии с амплитудой звука.
6. Water Splash - Добавляем брызги при выстреле по воде
Ссылки на объект
Полная ссылка на текущем языке :
Короткая ссылка :
Ссылка на превью-картинку :
Ссылка на картинку в полном размере :
Ссылка для вашего форума или сайта
BB код ссылка:
BB код ссылка с картинкой :
BB код картинки :
HTML код ссылка:
HTML код ссылка с картинкой :
HTML код картинки :
Sie können nicht kommentieren, da Sie sind nicht registriert.
    Tar-21 with Heartbeat Sensor (CoD: MW2)
    The SpecialistsTar-21 with Heartbeat Sensor (CoD: MW2)
    Steyr AUG A1 HD (only v_)
    The SpecialistsSteyr AUG A1 HD (only v_)
    Crysis 2 Feline
    The SpecialistsCrysis 2 Feline
    MP5 (FAR CRY 3) only v_
    The SpecialistsMP5 (FAR CRY 3) only v_