главная профиль правила регистрация календарь народ F.A.Q поиск выход
Forum Half-Life.ru : Powered by vBulletin version 2.2.8 Forum Half-Life.ru > Ручная работа > Мастерская > Оптический прицел
  Предыдущая Тема   Следующая Тема
Автор
Тема Создать Новую Тему    Ответить
Ku2zofff
Старожил

Дата Регистрации: Apr 2007
Проживает: Почти что хорошо
Сообщений: 457

Рейтинг:
6 голос(ов)
[6 голос(ов)]

Question Оптический прицел

Не как не могу сотворить чёрный ободок у оптического прицела, например к арбалету...
Люди добрые, помогите кто чем может!

Сообщить модератору | IP: Записан
Сообщение: 214439

Старое Сообщение 15-04-2007 06:49
Ku2zofff в офлайне Посмотреть Профайл Ku2zofff Кликните для отправки Ku2zofff Приватного Сообщения Найти все Сообщения от Ku2zofff Добавить Ku2zofff в Список Друзей Редактировать/Удалить Сообщение Цитировать Ku2zofff
BUzer
Модератор хрум-хрум

Дата Регистрации: Dec 2002
Проживает: Владивосток
Сообщений: 9118
Выдал предупреждений: 151

Рейтинг:
135 голос(ов)
[135 голос(ов)]

Ты хоть опиши сначала, что за ободок, какие действия ты предпринял, и что именно не получилось.

Сообщить модератору | IP: Записан
Сообщение: 214452

Старое Сообщение 15-04-2007 08:16
BUzer в офлайне Посмотреть Профайл BUzer Кликните для отправки BUzer Приватного Сообщения Посетите сайт BUzer! Найти все Сообщения от BUzer Добавить BUzer в Список Друзей Редактировать/Удалить Сообщение Цитировать BUzer
Дядя Миша
Администратор Administrator

Дата Регистрации: Nov 2003
Проживает: Кубань
Сообщений: 13445
Выдал предупреждений: 408

Рейтинг:
136 голос(ов)
[136 голос(ов)]

Ku2zofff ну тут кодить надо вообщем-то
если студия есть и умеешь код в нужные места вставлять, на вот тебе:

Code:

#include "hud.h"
#include "triangleapi.h"
#include "r_studioint.h"
#include "com_model.h"

#include <string.h>
#include <stdio.h>
extern engine_studio_api_t IEngineStudio;

void DrawQuad(float xminfloat yminfloat xmaxfloat ymax)
{
    
//top left
    
gEngfuncs.pTriAPI->TexCoord2f(0,0);
    
gEngfuncs.pTriAPI->Vertex3f(xminymin0); 
    
//bottom left
    
gEngfuncs.pTriAPI->TexCoord2f(0,1);
    
gEngfuncs.pTriAPI->Vertex3f(xminymax0);
    
//bottom right
    
gEngfuncs.pTriAPI->TexCoord2f(1,1);
    
gEngfuncs.pTriAPI->Vertex3f(xmaxymax0);
    
//top right
    
gEngfuncs.pTriAPI->TexCoord2f(1,0);
    
gEngfuncs.pTriAPI->Vertex3f(xmaxymin0);
}

DECLARE_MESSAGE(m_ZoomZoomHUD)

int CHudZoom::Init()
{
    
m_iHudMode 0;
    
HOOK_MESSAGE(ZoomHUD);

    
m_iFlags |= HUD_ACTIVE;

    
gHUD.AddHudElem(this);
    return 
1;
}

int CHudZoom::VidInit()
{
    
m_hLines SPR_Load("sprites/snlines.spr");
    
m_hCrosshair SPR_Load("sprites/snzoom.spr");
    
m_iHudMode 0;
    return 
1;
}

int CHudZoom::MsgFunc_ZoomHUD (const char *pszName,  int iSizevoid *pbuf )
{
    
BEGIN_READpbufiSize );
    
m_iHudMode READ_BYTE();
    return 
1;
}

int CHudZoom:<img src="images/smilies/biggrin1.gif" border="0" alt="">raw(float flTime)
{
    if(!
IEngineStudio.IsHardware() || !m_hLines || !m_hCrosshair) return 0;

    if(!
m_iHudMode) return 0;//draw scope

    
gEngfuncs.pTriAPI->RenderMode(kRenderTransColor);
    
gEngfuncs.pTriAPI->Brightness(1.0);
    
gEngfuncs.pTriAPI->Color4ub(255255255255);
    
gEngfuncs.pTriAPI->CullFace(TRI_NONE);
    
float left = (ScreenWidth ScreenHeight)/2;
    
float right left ScreenHeight;
    
float centerx ScreenWidth/2;
    
float centery ScreenHeight/2;

    
gEngfuncs.pTriAPI->SpriteTexture((struct model_s *)gEngfuncs.GetSpritePointerm_hCrosshair ), 0);
    
gEngfuncs.pTriAPI->Begin(TRI_QUADS);
    
DrawQuad(left0centerxcentery);
    
gEngfuncs.pTriAPI->End();

    
gEngfuncs.pTriAPI->SpriteTexture((struct model_s *)gEngfuncs.GetSpritePointerm_hCrosshair ), 1);
    
gEngfuncs.pTriAPI->Begin(TRI_QUADS);
    
DrawQuad(centerx0rightcentery);
    
gEngfuncs.pTriAPI->End();

    
gEngfuncs.pTriAPI->SpriteTexture((struct model_s *)gEngfuncs.GetSpritePointerm_hCrosshair ), 2);
    
gEngfuncs.pTriAPI->Begin(TRI_QUADS);
    
DrawQuad(centerxcenteryrightScreenHeight);
    
gEngfuncs.pTriAPI->End();

    
gEngfuncs.pTriAPI->SpriteTexture((struct model_s *)gEngfuncs.GetSpritePointerm_hCrosshair ), 3);
    
gEngfuncs.pTriAPI->Begin(TRI_QUADS);
    
DrawQuad(leftcenterycenterxScreenHeight);
    
gEngfuncs.pTriAPI->End();

    
gEngfuncs.pTriAPI->RenderMode(kRenderNormal);
    
gEngfuncs.pTriAPI->SpriteTexture((struct model_s *)gEngfuncs.GetSpritePointerm_hLines ), 0);
    
gEngfuncs.pTriAPI->Begin(TRI_QUADS);
    
DrawQuad(00leftScreenHeight);
    
DrawQuad(right0ScreenWidthScreenHeight);
    
gEngfuncs.pTriAPI->End();

    return 
1;
}


Это нужно вставить в отдельный файлик, и назвать его, скажем zoom.cpp
куда-нибудь в Hud.h к аналогичным конструкциям:
Code:

class CHudZoom: public CHudBase
{
public:
    
int Initvoid );
    
int VidInitvoid );
    
int Draw(float flTime);
    
int MsgFunc_ZoomHUD(const char *pszName,  int iSizevoid *pbuf );
    
int m_iHudMode;
private:
    
HSPRITE m_hCrosshair;
    
HSPRITE m_hLines;
};


А немного ниже, в описании самого класса CHud
Code:

CHudAmmo        m_Ammo
;
    
CHudHealth    m_Health;
    
CHudGeiger    m_Geiger;
    
CHudBattery    m_Battery;
    
CHudTrain        m_Train;
    
CHudFlashlight    m_Flash;
    
CHudZoom        m_Zoom;//новая строчка


В самом hud.cpp
Code:

void CHud 
:: Initvoid )
{
    
InitMessages();
    
m_Ammo.Init();
    
m_Health.Init();
    
m_SayText.Init();
    
m_Geiger.Init();
    
m_Train.Init();
    
m_Battery.Init();
    
m_Flash.Init();
    
m_Zoom.Init();//новая строчка
[code]
По аналогии с вышеприведенным кодомнадо добавить в функцию CHud::VidInitvoid )
строчку     m_Zoom.VidInit();
Ну и наконец сделать такчтобы никакие обстоятельства не помешали нам рисовать наш прицелоткроем hud_redraw.cpp
и в функции int CHud 
:: Redrawfloat flTimeint intermission )
[
code]
    
m_iIntermission intermission;//уже существующий код
    // zoom hud stuff
    
if(m_Zoom.m_iHudMode 0)
    {
        
m_Zoom.DrawflTime );
        return 
1;
    }


С этим на клиенте все, осталось лишь послать мессагу с сервера, которая будет изменять переменную m_iHudMode на еденичку и обратно
ЗЫ. спрайты в аттаче

Вложение: sniper.zip (3 Кб)
Это вложение было скачано 202 раз.

Сообщить модератору | IP: Записан
Сообщение: 214453

Старое Сообщение 15-04-2007 08:19
Дядя Миша в офлайне Посмотреть Профайл Дядя Миша Кликните для отправки Дядя Миша Приватного Сообщения Найти все Сообщения от Дядя Миша Добавить Дядя Миша в Список Друзей Редактировать/Удалить Сообщение Цитировать Дядя Миша
sania_3
Пролетарий

Дата Регистрации: Nov 2006
Проживает: везде, где смогу.
Сообщений: 1232

Рейтинг:
27 голос(ов)
[27 голос(ов)]

Code:

<img src="images/smilies/biggrin1.gif" border="0" alt="">

= смайл , вместо этого надо поставить :D

Добавлено 15-04-2007 в 13:41:

ЗЫ: это в строке 54 из zoom.cpp.

__________________
B.C.Rich Warbeast standart USER; Behringer C-1U USER; Digitech RP70 USER; SansAmp GT2 USER; FL9 USER;
ZiD Pilot 50cm3 Cross USER, Хочу КТМ SX 250;
Mastech MS-200 USER; Luckey 701 USER; HTC HD mini USER;
Mozgi USER

Сообщить модератору | IP: Записан
Сообщение: 214457

Старое Сообщение 15-04-2007 09:38
sania_3 в офлайне Посмотреть Профайл sania_3 Кликните для отправки sania_3 Приватного Сообщения Найти все Сообщения от sania_3 Добавить sania_3 в Список Друзей Редактировать/Удалить Сообщение Цитировать sania_3
Centurion2
в поисках пароля.....

Дата Регистрации: May 2006
Проживает: Узбекистан
Сообщений: 94

Рейтинг:
4 голос(ов)
[4 голос(ов)]

Дядя Миша, а что если без кодинга, заменить существуещий прицел на черный круг с перекрестием(поменять его в соответствующем спрайте, и поставить на соответствующее место) ?
Ой, или кажись его размер зарание ограничен?

__________________
Даааааа, не пустят на банкет,
когда в кармане баксов НЕТ!

Сообщить модератору | IP: Записан
Сообщение: 214481

Старое Сообщение 15-04-2007 13:18
Centurion2 в офлайне Посмотреть Профайл Centurion2 Кликните для отправки Centurion2 Приватного Сообщения Найти все Сообщения от Centurion2 Добавить Centurion2 в Список Друзей Редактировать/Удалить Сообщение Цитировать Centurion2
Дядя Миша
Администратор Administrator

Дата Регистрации: Nov 2003
Проживает: Кубань
Сообщений: 13445
Выдал предупреждений: 408

Рейтинг:
136 голос(ов)
[136 голос(ов)]

Centurion2 ну так возъми и попробуй
но учти, что максимальный размер спрайта в халфе 256х256

Сообщить модератору | IP: Записан
Сообщение: 214491

Старое Сообщение 15-04-2007 15:36
Дядя Миша в офлайне Посмотреть Профайл Дядя Миша Кликните для отправки Дядя Миша Приватного Сообщения Найти все Сообщения от Дядя Миша Добавить Дядя Миша в Список Друзей Редактировать/Удалить Сообщение Цитировать Дядя Миша
BUzer
Модератор хрум-хрум

Дата Регистрации: Dec 2002
Проживает: Владивосток
Сообщений: 9118
Выдал предупреждений: 151

Рейтинг:
135 голос(ов)
[135 голос(ов)]

quote:
int CHudZoom:<img src="images/smilies/biggrin1.gif"

Ого, подумал я, читая эту строчку - какой-то новый метод загрузки спрайтов а-ля хтмл..

Сообщить модератору | IP: Записан
Сообщение: 214557

Старое Сообщение 15-04-2007 23:35
BUzer в офлайне Посмотреть Профайл BUzer Кликните для отправки BUzer Приватного Сообщения Посетите сайт BUzer! Найти все Сообщения от BUzer Добавить BUzer в Список Друзей Редактировать/Удалить Сообщение Цитировать BUzer
Ku2zofff
Старожил

Дата Регистрации: Apr 2007
Проживает: Почти что хорошо
Сообщений: 457

Рейтинг:
6 голос(ов)
[6 голос(ов)]

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

Для примера: в Opposing Force у снайперки этого эффекта нет, в Retribution тоже, а вот в Invasion и Counter-Strike есть.

Действия я предпринимал вот какие:
Пробовал использовать систему Tri-Scope(Нашёл на сайте Wavelength) и пробовал использовать в самом коде снайперки
pev->body.
Вообще-то я ещё в кодинге не очень.

Сообщить модератору | IP: Записан
Сообщение: 214565

Старое Сообщение 16-04-2007 04:43
Ku2zofff в офлайне Посмотреть Профайл Ku2zofff Кликните для отправки Ku2zofff Приватного Сообщения Найти все Сообщения от Ku2zofff Добавить Ku2zofff в Список Друзей Редактировать/Удалить Сообщение Цитировать Ku2zofff
Дядя Миша
Администратор Administrator

Дата Регистрации: Nov 2003
Проживает: Кубань
Сообщений: 13445
Выдал предупреждений: 408

Рейтинг:
136 голос(ов)
[136 голос(ов)]

Ku2zofff я тебе выложил код именно того, о чем ты говорил. Учись кодить (вернее копи-пастить для начала) и вставляй новый прицел.

Сообщить модератору | IP: Записан
Сообщение: 214603

Старое Сообщение 16-04-2007 11:29
Дядя Миша в офлайне Посмотреть Профайл Дядя Миша Кликните для отправки Дядя Миша Приватного Сообщения Найти все Сообщения от Дядя Миша Добавить Дядя Миша в Список Друзей Редактировать/Удалить Сообщение Цитировать Дядя Миша
Centurion2
в поисках пароля.....

Дата Регистрации: May 2006
Проживает: Узбекистан
Сообщений: 94

Рейтинг:
4 голос(ов)
[4 голос(ов)]

Дядя Миша, никогда не задумывался, но чем создаются спрайты? у меня есть sprites explorer, может им?

__________________
Даааааа, не пустят на банкет,
когда в кармане баксов НЕТ!

Сообщить модератору | IP: Записан
Сообщение: 214633

Старое Сообщение 16-04-2007 13:42
Centurion2 в офлайне Посмотреть Профайл Centurion2 Кликните для отправки Centurion2 Приватного Сообщения Найти все Сообщения от Centurion2 Добавить Centurion2 в Список Друзей Редактировать/Удалить Сообщение Цитировать Centurion2
Ku2zofff
Старожил

Дата Регистрации: Apr 2007
Проживает: Почти что хорошо
Сообщений: 457

Рейтинг:
6 голос(ов)
[6 голос(ов)]

Да-да, Дядя Миша, только нифига, не выходит... Или я такой тупой или в коде ошибка, что маловероятно.

Вот ошибка:

zoom.cpp
zoom.cpp(26) : error C2065: 'm_Zoom' : undeclared identifier
zoom.cpp(26) : error C2065: 'ZoomHUD' : undeclared identifier
zoom.cpp(28) : error C2448: '<Unknown>' : function-style initializer appears to be a function definition
zoom.cpp(28) : fatal error C1004: unexpected end of file found

Выглядит так будто чего-то не хватет в hud.cpp или в другом файле. А может быть код устарел(под SDK 2.2 например...)
Но это тоже навряд ли...

Кстати, Centurion2, Sprite Explorer очень удобен для создания спрайтов.

Сообщить модератору | IP: Записан
Сообщение: 214639

Старое Сообщение 16-04-2007 13:53
Ku2zofff в офлайне Посмотреть Профайл Ku2zofff Кликните для отправки Ku2zofff Приватного Сообщения Найти все Сообщения от Ku2zofff Добавить Ku2zofff в Список Друзей Редактировать/Удалить Сообщение Цитировать Ku2zofff
Дядя Миша
Администратор Administrator

Дата Регистрации: Nov 2003
Проживает: Кубань
Сообщений: 13445
Выдал предупреждений: 408

Рейтинг:
136 голос(ов)
[136 голос(ов)]

Ku2zofff потому что пихаешь не туда.

Сообщить модератору | IP: Записан
Сообщение: 214654

Старое Сообщение 16-04-2007 14:53
Дядя Миша в офлайне Посмотреть Профайл Дядя Миша Кликните для отправки Дядя Миша Приватного Сообщения Найти все Сообщения от Дядя Миша Добавить Дядя Миша в Список Друзей Редактировать/Удалить Сообщение Цитировать Дядя Миша
Ku2zofff
Старожил

Дата Регистрации: Apr 2007
Проживает: Почти что хорошо
Сообщений: 457

Рейтинг:
6 голос(ов)
[6 голос(ов)]

Согласен. Вроде-бы всё правильно сделал. Всё что до строчки

Это нужно вставить в отдельный файлик, и назвать его, скажем zoom.cpp

вставил в zoom.cpp

Вот это дело:

class CHudZoom: public CHudBase
{
public:
int Init( void );
int VidInit( void );
int Draw(float flTime);
int MsgFunc_ZoomHUD(const char *pszName, int iSize, void *pbuf );
int m_iHudMode;
private:
HSPRITE m_hCrosshair;
HSPRITE m_hLines;
};


вставил в hud.h после class CHudFlashlight: public CHudBase

и дальше всё по инструкции.




Добавлено 16-04-2007 в 19:56:

Всё, всё, всё, я разобрался!
Последний вопрос: какое сообщение должно посылаться с сервера для включения прицела и как?

Отредактировано Ku2zofff 16-04-2007 в 15:56

Сообщить модератору | IP: Записан
Сообщение: 214658

Старое Сообщение 16-04-2007 14:57
Ku2zofff в офлайне Посмотреть Профайл Ku2zofff Кликните для отправки Ku2zofff Приватного Сообщения Найти все Сообщения от Ku2zofff Добавить Ku2zofff в Список Друзей Редактировать/Удалить Сообщение Цитировать Ku2zofff

Переводчик
транслита

Прикрепить Файл:
Максимальный Размер: 524288 байт

Допустимое расширение Файлов: gif jpg png txt zip jpeg rmf bsp rar
Время GMT. Текущее Время 14:41. Создать Новую Тему    Ответить
  Предыдущая Тема   Следующая Тема
Версия для Печати | Отправить страницу по Email | Подписаться на эту Тему

Перейти на:
Оценить эту Тему:

Правила Форума:
Вы Не можете Создавать Новые Темы
Вы Не можете Отвечать
Вы Не можете Прикреплять Файлы
Вы Не можете Редактировать Свои Сообщения
HTML код ВЫКЛ
vB код ВКЛ
Смайлики ВКЛ
[IMG] код ВКЛ
 



Copyright ©1999-2021 Half-Life.ru
Все права защищены Законодательством РФ.
Перепечатка материалов (в любом виде) с данного сайта
без письменного разрешения авторов запрещена.
HL DM Style for vBulletin © by: anno
Тех. площадка: Join-Stock Company "BIG Telecom"