2024/04/19, Пт, 11:03 Приветствую Вас ---- | RSS
Регистрация
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Jack-Hang  
Форум » Основной раздел » Кодинг Статьи » [Кодинг] Добавление новых классов для монстров. (Тутор)
[Кодинг] Добавление новых классов для монстров.
Jack-HangДата: Пн, 2007/02/12, 21:58 | Сообщение # 1
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
И так я вырвался на чуток и решил написать тутор правда я его не писал а просто узнал, но откуда секрет wink

Мы будем добавлять новый класс Блэк Опс из Оппосинг Форс, все помнят что они были против всех biggrin ну вот и менно это я и буду обьяснять.

Откроем cbase.h и найдем там :

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 ...
#define CLASS_ALIEN_BIOWEAPON 13 // hornets and snarks ...
#define CLASS_BARNACLE 99 // special because ...

после
Code
#define CLASS_BARNACLE 99 // special because ...

добавим
Code
#define CLASS_BLACK_OP 14 // <-- Блэк Опы!

Теперь он у нас задекларирован. Пошли дальше в monsters.cpp :

Code
static int iEnemy[14][14] =

И так нашли, теперь изменим
Code
iEnemy[14][14]
на
Code
iEnemy[15][15]

и теперь после
Code
/*ABIOWEAPON*/    { R_NO    ,R_NO    ,R_DL    ,R_DL    ,R_DL    ,R_AL    ,R_NO    ,R_DL    ,R_DL    ,R_NO    ,R_NO    ,R_DL,    R_DL,    R_NO    }

Добавте вот такую вот строчечку :
Code
    /*BLKOP*/  { R_NO    ,R_NO    ,R_DL    ,R_DL    ,R_DL    ,R_AL    ,R_NO    ,R_DL    ,R_DL    ,R_NO    ,R_NO    ,R_DL,    R_DL,    R_NO,    R_NO    }

И в самой таблице в конце добавте ещё одну строчку, должно выглядеть вот так :

Code
static int iEnemy[15][15] =
{    //   NONE  MACH  PLYR  HPASS  HMIL  AMIL  APASS  AMONST    APREY  APRED  INSECT    PLRALY    PBWPN    ABWPN    BLKOP
/*NONE*/  { R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO,    R_NO,    R_NO,    R_NO    },
/*MACHINE*/  { R_NO    ,R_NO    ,R_DL    ,R_DL    ,R_NO    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_NO    ,R_DL,    R_DL,    R_DL,    R_DL    },
/*PLAYER*/  { R_NO    ,R_DL    ,R_NO    ,R_NO    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_NO    ,R_NO,    R_DL,    R_DL,    R_DL    },
/*HUMANPASSIVE*/{ R_NO    ,R_NO    ,R_AL    ,R_AL    ,R_HT    ,R_FR    ,R_NO    ,R_HT    ,R_DL    ,R_FR    ,R_NO    ,R_AL,    R_NO,    R_NO,    R_NO    },
/*HUMANMILITAR*/{ R_NO    ,R_NO    ,R_HT    ,R_DL    ,R_NO    ,R_HT    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_NO    ,R_HT,    R_NO,    R_NO,    R_NO    },
/*ALIENMILITAR*/{ R_NO    ,R_DL    ,R_HT    ,R_DL    ,R_HT    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_DL,    R_NO,    R_NO,    R_NO    },
/*ALIENPASSIVE*/{ R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO,    R_NO,    R_NO,    R_NO    },
/*ALIENMONSTER*/{ R_NO    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_DL,    R_NO,    R_NO,    R_NO    },
/*ALIENPREY   */{ R_NO    ,R_NO    ,R_DL    ,R_DL    ,R_DL    ,R_NO    ,R_NO    ,R_NO    ,R_NO    ,R_FR    ,R_NO    ,R_DL,    R_NO,    R_NO,    R_NO    },
/*ALIENPREDATO*/{ R_NO    ,R_NO    ,R_DL    ,R_DL    ,R_DL    ,R_NO    ,R_NO    ,R_NO    ,R_HT    ,R_DL    ,R_NO    ,R_DL,    R_NO,    R_NO,    R_NO    },
/*INSECT*/  { R_FR    ,R_FR    ,R_FR    ,R_FR    ,R_FR    ,R_NO    ,R_FR    ,R_FR    ,R_FR    ,R_FR    ,R_NO    ,R_FR,    R_NO,    R_NO,    R_NO    },
/*PLAYERALLY*/    { R_NO    ,R_DL    ,R_AL    ,R_AL    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_NO    ,R_NO,    R_NO,    R_NO,    R_NO    },
/*PBIOWEAPON*/    { R_NO    ,R_NO    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_DL    ,R_NO    ,R_DL,    R_NO,    R_DL,    R_DL    },
/*ABIOWEAPON*/    { R_NO    ,R_NO    ,R_DL    ,R_DL    ,R_DL    ,R_AL    ,R_NO    ,R_DL    ,R_DL    ,R_NO    ,R_NO    ,R_DL,    R_DL,    R_NO,    R_NO    },
/*BLKOP*/  { R_NO    ,R_NO    ,R_DL    ,R_DL    ,R_DL    ,R_AL    ,R_NO    ,R_DL    ,R_DL    ,R_NO    ,R_NO    ,R_DL,    R_DL,    R_NO,    R_NO    }
  } ;

Мы почти закончили! biggrin в monsters.h : найдем строчечку
Code
// monster to monster relationship types
и что же мы там увидим те же странные надписи R_DL, R_NO, R_HT, а сбоку описание той или иной строчки. По желанию вы можете изменить строчку с Блэк Опами на своё, и запомните это был только пример как это делается.






Сообщение отредактировал Jack-Hang - Ср, 2007/02/14, 13:58
 
Jack-HangДата: Ср, 2007/02/14, 14:00 | Сообщение # 2
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
Вот я отметил те места которые я добавил :
Наглядное изображение
Ну вот и всё я думаю!






Сообщение отредактировал Kie - Пн, 2007/06/18, 12:57
 
VetalДата: Вт, 2007/02/27, 20:45 | Сообщение # 3
Noob
Репутация: 1
Регистрация:2007/02/04
Сообщений: 7
Статус: Offline
Это означает что в классах нет того что я искал. Жаль. Тут только указывается на какой класс нападать, а какому помогать....и т.д.

А что означает R_FR у INSECT?

В общем самое простое описание своего монстра я сделал так:

//=========================================================
// W
//=========================================================

#include "extdll.h"
#include "util.h"
#include "cbase.h"
#include "monsters. h"
#include "schedule.h"
#include "soundent.h"
#include "decals.h"

class CW : public CBaseMonster
{
public:
void Spawn( void );
void Precache( void );
float m_flNextSmellTime;
int Classify ( void );
void SetYawSpeed ( void );
};

LINK_ENTITY_TO_CLASS( monster_w, CW );

int CW :: Classify ( void )
{
return CLASS_HUMAN_MILITARY;
}

void CW :: Spawn()
{
Precache( );

SET_MODEL(ENT(pev), "models/worm.mdl");
UTIL_SetSize( pev, Vector( 0, 0, 0 ), Vector( 10, 10, 30 ) );
pev->solid = SOLID_SLIDEBOX; /// solid пер.
pev->movetype = MOVETYPE_STEP;
m_bloodColor = BLOOD_COLOR_RED;
pev->effects = 0;
pev->health = 100;

MonsterInit();
pev->view_ofs = Vector ( 0, 0, 25 );// position of the eyes relative to monster's origin.
pev->takedamage = DAMAGE_YES;
m_flNextSmellTime = gpGlobals->time;
m_MonsterState = MONSTERSTATE_IDLE;

}

void CW :: Precache()
{
PRECACHE_MODEL("models/worm.mdl");

}

void CW :: SetYawSpeed ( void )
{
int ys;

ys = 120;

pev->yaw_speed = ys;
}

Этот червь полностью дееспособен по CLASS_HUMAN_MILITARY. Увидев меня он и идет ко мне(вернее бежит), и дойдя до расстояния с которого военные стреляют он начинает осуществлять атаку! Но у него нету же оружия и бьет он кулаком....

А вопрос такой:
1 Когда он меня видет включается MONSTERSTATE_COMBAT? (в общем события с файла monsterstate)???
2 И где написано что он именно с этой дистанции должен атаковать?(Для удара кулаком офигительно далеко!)

Столько вопросов только из-за незнания что означают переменные....есть ли где нибудь их описания? Я смотрел на английском, но просто ничего не могу понять не на родном языке!!! sad


CS 1.6 forewer!
 
Jack-HangДата: Вс, 2007/05/27, 23:56 | Сообщение # 4
Hang-Overed
Репутация: 5
Регистрация:2006/08/20
Сообщений: 84
Статус: Offline
Quote (Vetal)
Этот червь полностью дееспособен по CLASS_HUMAN_MILITARY. Увидев меня он и идет ко мне(вернее бежит), и дойдя до расстояния с которого военные стреляют он начинает осуществлять атаку! Но у него нету же оружия и бьет он кулаком....
Делается проверка как на кик! Где военный бьет ногой!!!




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

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