2024/04/20, Сб, 03:58 Приветствую Вас ---- | RSS
Регистрация
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Jack-Hang  
Форум » Основной раздел » Кодинг Статьи » [Кодинг] !!!Новый монстр!!! (Добавляем нового монстра)
[Кодинг] !!!Новый монстр!!!
Jack-HangДата: Вт, 2007/01/30, 09:47 | Сообщение # 1
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
В общем-то это самый лёгкий тутор который можно придумать. Ну чтож начнём.Я слышал что кто-то там просил обяснить как сделать чтобы монстры дружили или воевали с вами.

=================
Часть 1 : Война или Мир
=================
Как за пример мы будем брать Барни, ну во первых потому что у него самый лёгкий код, а во вторых кода в нём мало. biggrin . Так откроем 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
CBarney

на
Code
CBarneyMad

Затем :
Code
monster_barney

мы заменим на
Code
monster_barney_mad

А код :
Code
monster_barney_dead

мы заменим на
Code
monster_barney_dead_mad

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

Изменим на
Code
CDeadBarneyMad

Продолжение следует!!!!




 
Jack-HangДата: Вт, 2007/01/30, 09:50 | Сообщение # 3
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
Я больше чем уверен что все умеют пользоватся 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




 
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
Тутор, это только пример создания монстра. Для полного понятия пробуйте эксперементировать с классами.И вообще этот тутор - описание создания нового монстра то есть клона монстра wink Если хотите я напишу тутор по описанию классов и о создании новых классов.



 
VetalДата: Чт, 2007/02/08, 01:42 | Сообщение # 8
Noob
Репутация: 1
Регистрация:2007/02/04
Сообщений: 7
Статус: Offline
Вообще хотелось бы очень. Если время будет напиши тутор о создании новых классов. Уже неделю плохо сплю, немогу своего монстра научить грамотно сваливать от увечий. pinch И еще если не трудно подскажи как у глока убрать поднятие прицела при стрельбе.

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 тебе!!! wink

CS 1.6 forewer!
 
Форум » Основной раздел » Кодинг Статьи » [Кодинг] !!!Новый монстр!!! (Добавляем нового монстра)
  • Страница 1 из 1
  • 1
Поиск:

Сайт управляется системой uCoz Copyright by kiexStudio © 2009