Наше комьюнити:   OpenGL Shader Lab  •  Half-Life FX  •  Форум  
HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Несколько вопросов о коддинге
Помогите новичку
Страницы (5): « 1 [2] 3 4 5 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
GuNsHiP
Sneekls!

Дата регистрации: Apr 2009
Проживает: Украина, Мариуполь
Сообщений: 348
Возраст: 26

Рейтинг



Проверь плиз


C++ Source Code:
//========= Copyright © 1996-2002, Valve LLC, All rights reserved. ============
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================

// Triangle rendering, if any

#include "hud.h"
//#include "gl_main.h"
#include "cl_util.h"

// Triangle rendering apis are in gEngfuncs.pTriAPI

#include "const.h"
#include "entity_state.h"
#include "cl_entity.h"
#include "triangleapi.h"

// Triangle rendering apis are in gEngfuncs.pTriAPI

#include "const.h"
#include "entity_state.h"
#include "cl_entity.h"
#include "triangleapi.h"
#include <windows.h>
#include <gl/gl.h>
//#include <gl/glext.h>
//#include <cg/cg.h>
//#include <cg/cgGL.h>

#define DLLEXPORT __declspec( dllexport )

extern "C"
{
    void DLLEXPORT HUD_DrawNormalTriangles( void );
    void DLLEXPORT HUD_DrawTransparentTriangles( void );
};

//#define TEST_IT
#if defined( TEST_IT )

/*
=================
Draw_Triangles

Example routine.  Draws a sprite offset from the player origin.
=================
*/


void Draw_Triangles( void )
{
    cl_entity_t *player;
    vec3_t org;
    
    // Load it up with some bogus data
    player = gEngfuncs.GetLocalPlayer();
    if ( !player )
        return;
    
    org = player->origin;
    
    org.x += 50;
    org.y += 50;
    
    if (gHUD.m_hsprCursor == 0)
    {
        char sz[256];
        sprintf( sz, "sprites/cursor.spr" );
        gHUD.m_hsprCursor = SPR_Load( sz );
    }
    
    if ( !gEngfuncs.pTriAPI->SpriteTexture( (struct model_s *)gEngfuncs.GetSpritePointer( gHUD.m_hsprCursor ), 0 ))
    {
        return;
    }
    
    // Create a triangle, sigh
    gEngfuncs.pTriAPI->RenderMode( kRenderNormal );
    gEngfuncs.pTriAPI->CullFace( TRI_NONE );
    gEngfuncs.pTriAPI->Begin( TRI_QUADS );
    // Overload p->color with index into tracer palette, p->packedColor with brightness
    gEngfuncs.pTriAPI->Color4f( 1.0, 1.0, 1.0, 1.0 );
    // UNDONE: This gouraud shading causes tracers to disappear on some cards (permedia2)
    gEngfuncs.pTriAPI->Brightness( 1 );
    gEngfuncs.pTriAPI->TexCoord2f( 0, 0 );
    gEngfuncs.pTriAPI->Vertex3f( org.x, org.y, org.z );
    
    gEngfuncs.pTriAPI->Brightness( 1 );
    gEngfuncs.pTriAPI->TexCoord2f( 0, 1 );
    gEngfuncs.pTriAPI->Vertex3f( org.x, org.y + 50, org.z );
    
    gEngfuncs.pTriAPI->Brightness( 1 );
    gEngfuncs.pTriAPI->TexCoord2f( 1, 1 );
    gEngfuncs.pTriAPI->Vertex3f( org.x + 50, org.y + 50, org.z );
    
    gEngfuncs.pTriAPI->Brightness( 1 );
    gEngfuncs.pTriAPI->TexCoord2f( 1, 0 );
    gEngfuncs.pTriAPI->Vertex3f( org.x + 50, org.y, org.z );
    
    gEngfuncs.pTriAPI->End();
    gEngfuncs.pTriAPI->RenderMode( kRenderNormal );
}

#endif

/*
=================
HUD_DrawNormalTriangles

Non-transparent triangles-- add them here
=================
*/

void DLLEXPORT HUD_DrawNormalTriangles( void )
{
    
    gHUD.m_Spectator.DrawOverview();
    
#if defined( TEST_IT )
    //  Draw_Triangles();
#endif
}

/*
=================
HUD_DrawTransparentTriangles

Render any triangles with transparent rendermode needs here
=================
*/

void DLLEXPORT HUD_DrawTransparentTriangles( void )
{
    
#if defined( TEST_IT )
    //  Draw_Triangles();
#endif
}

/*
=================
Real-Time TRON

Glow
=================
*/


#include "r_studioint.h"

extern engine_studio_api_t IEngineStudio;

bool g_bInitialised = false;

extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB;

CGcontext g_cgContext;
CGprofile g_cgVertProfile;
CGprofile g_cgFragProfile;

CGprogram g_cgVP_GlowDarken;
CGprogram g_cgFP_GlowDarken;

CGprogram g_cgVP_GlowBlur;
CGprogram g_cgFP_GlowBlur;

CGprogram g_cgVP_GlowCombine;
CGprogram g_cgFP_GlowCombine;

CGparameter g_cgpVP0_ModelViewMatrix;
CGparameter g_cgpVP1_ModelViewMatrix;
CGparameter g_cgpVP1_XOffset;
CGparameter g_cgpVP1_YOffset;
CGparameter g_cgpVP2_ModelViewMatrix;

unsigned int g_uiSceneTex;
unsigned int g_uiBlurTex;

bool LoadProgram(CGprogram* pDest, CGprofile profile, const char* szFile)
{
    const char* szGameDir = gEngfuncs.pfnGetGameDirectory();
    char file[512];
    sprintf(file, "%s/%s", szGameDir, szFile);
    
    *pDest = cgCreateProgramFromFile(g_cgContext, CG_SOURCE, file, profile, "main", 0);
    if (!(*pDest)) {
        MessageBox(NULL, cgGetErrorString(cgGetError()), NULL, NULL);
        return false;
    }
    
    cgGLLoadProgram(*pDest);
    
    return true;
}

void InitScreenGlow(void)
{
    if (IEngineStudio.IsHardware() != 1)
        return;
    
    gEngfuncs.pfnRegisterVariable("cg_blur_steps", "4", 0);
    
    // OPENGL EXTENSION LOADING
    
    glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)wglGetProcAddress("glActiveTextureARB");
    
    // TEXTURE CREATION
    
    unsigned char* pBlankTex = new unsigned char[ScreenWidth*ScreenHeight*3];
    memset(pBlankTex, 0, ScreenWidth*ScreenHeight*3);
    
    glGenTextures(1, &g_uiSceneTex);
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiSceneTex);
    glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB8, ScreenWidth, ScreenHeight, 0, GL_RGB8, GL_UNSIGNED_BYTE, pBlankTex);
    
    glGenTextures(1, &g_uiBlurTex);
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiBlurTex);
    glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB8, ScreenWidth/2, ScreenHeight/2, 0, GL_RGB8, GL_UNSIGNED_BYTE, pBlankTex);
    
    delete[] pBlankTex;
    
    g_bInitialised = true;
    
    // CG INITIALISATION
    
    g_cgContext = cgCreateContext();
    if (!g_cgContext) {
        MessageBox(NULL, "Couldn't make Cg context", NULL, NULL);
        return;
    }
    
    // VERTEX PROFILE
    
    g_cgVertProfile = cgGLGetLatestProfile(CG_GL_VERTEX);
    if (g_cgVertProfile == CG_PROFILE_UNKNOWN) {
        MessageBox(NULL, "Couldn't fetch valid VP profile", NULL, NULL);
        return;
    }
    
    cgGLSetOptimalOptions(g_cgVertProfile);
    
    // VP LOADING
    
    if (!LoadProgram(&g_cgVP_GlowDarken, g_cgVertProfile, "cgprograms/glow_darken_vp.cg"))
        return;
    
    if (!LoadProgram(&g_cgVP_GlowBlur, g_cgVertProfile, "cgprograms/glow_blur_vp.cg"))
        return;
    
    if (!LoadProgram(&g_cgVP_GlowCombine, g_cgVertProfile, "cgprograms/glow_combine_vp.cg"))
        return;
    
    // VP PARAM GRABBING
    
    g_cgpVP0_ModelViewMatrix = cgGetNamedParameter(g_cgVP_GlowDarken, "ModelViewProj");
    
    g_cgpVP1_ModelViewMatrix = cgGetNamedParameter(g_cgVP_GlowBlur, "ModelViewProj");
    g_cgpVP1_XOffset = cgGetNamedParameter(g_cgVP_GlowBlur, "XOffset");
    g_cgpVP1_YOffset = cgGetNamedParameter(g_cgVP_GlowBlur, "YOffset");
    
    g_cgpVP2_ModelViewMatrix = cgGetNamedParameter(g_cgVP_GlowCombine, "ModelViewProj");
    
    // FRAGMENT PROFILE
    
    g_cgFragProfile = cgGLGetLatestProfile(CG_GL_FRAGMENT);
    if (g_cgFragProfile == CG_PROFILE_UNKNOWN) {
        MessageBox(NULL, "Couldn't fetch valid FP profile", NULL, NULL);
        return;
    }
    
    cgGLSetOptimalOptions(g_cgFragProfile);
    
    // FP LOADING
    
    if (!LoadProgram(&g_cgFP_GlowDarken, g_cgFragProfile, "cgprograms/glow_darken_fp.cg"))
        return;
    
    if (!LoadProgram(&g_cgFP_GlowBlur, g_cgFragProfile, "cgprograms/glow_blur_fp.cg"))
        return;
    
    if (!LoadProgram(&g_cgFP_GlowCombine, g_cgFragProfile, "cgprograms/glow_combine_fp.cg"))
        return;
}
void DrawQuad(int width, int height)
{
    glBegin(GL_QUADS);
    
    glTexCoord2f(0,0);
    glVertex3f(0, 1, -1);
    glTexCoord2f(0,height);
    glVertex3f(0, 0, -1);
    glTexCoord2f(width,height);
    glVertex3f(1, 0, -1);
    glTexCoord2f(width,0);
    glVertex3f(1, 1, -1);
    
    glEnd();
}

void DoBlur(unsigned int uiSrcTex, unsigned int uiTargetTex, int srcTexWidth, int srcTexHeight, int destTexWidth, int destTexHeight, float xofs, float yofs)
{
    cgGLBindProgram(g_cgVP_GlowBlur);
    cgGLBindProgram(g_cgFP_GlowBlur);
    
    glActiveTextureARB(GL_TEXTURE0_ARB);
    glEnable(GL_TEXTURE_RECTANGLE_NV);
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, uiSrcTex);
    
    glActiveTextureARB(GL_TEXTURE1_ARB);
    glEnable(GL_TEXTURE_RECTANGLE_NV);
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, uiSrcTex);
    
    glActiveTextureARB(GL_TEXTURE2_ARB);
    glEnable(GL_TEXTURE_RECTANGLE_NV);
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, uiSrcTex);
    
    glActiveTextureARB(GL_TEXTURE3_ARB);
    glEnable(GL_TEXTURE_RECTANGLE_NV);
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, uiSrcTex);
    
    cgGLSetParameter1f(g_cgpVP1_XOffset, xofs);
    cgGLSetParameter1f(g_cgpVP1_YOffset, yofs);
    
    glViewport(0, 0, destTexWidth, destTexHeight);
    
    DrawQuad(srcTexWidth, srcTexHeight);
    
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, uiTargetTex);
    glCopyTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, 0, 0, destTexWidth, destTexHeight, 0);
}

void RenderScreenGlow(void)
{
    if (IEngineStudio.IsHardware() != 1)
        return;
    
    if (!g_bInitialised)
        InitScreenGlow();
    
    if ((int)gEngfuncs.pfnGetCvarFloat("cg_blur_steps") == 0)
        return;
    
    // STEP 1: Grab the screen and put it into a texture
    
    glActiveTextureARB(GL_TEXTURE0_ARB);
    glEnable(GL_TEXTURE_RECTANGLE_NV);
    
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiSceneTex);
    glCopyTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, 0, 0, ScreenWidth, ScreenHeight, 0);
    
    // STEP 2: Set up an orthogonal projection
    
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();
    
    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    glOrtho(0, 1, 1, 0, 0.1, 100);
    
    glColor3f(1,1,1);
    
    // STEP 3: Initialize Cg programs and parameters for darkening mid to dark areas of the scene
    
    cgGLEnableProfile(g_cgVertProfile);
    cgGLEnableProfile(g_cgFragProfile);
    
    cgGLBindProgram(g_cgVP_GlowDarken);
    cgGLBindProgram(g_cgFP_GlowDarken);
    
    cgGLSetStateMatrixParameter(g_cgpVP0_ModelViewMatrix, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY);
    
    // STEP 4: Render the current scene texture to a new, lower-res texture, darkening non-bright areas of the scene
    
    glViewport(0, 0, ScreenWidth/2, ScreenHeight/2);
    
    glActiveTextureARB(GL_TEXTURE0_ARB);
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiSceneTex);
    
    DrawQuad(ScreenWidth, ScreenHeight);
    
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiBlurTex);
    glCopyTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGB, 0, 0, ScreenWidth/2, ScreenHeight/2, 0);
    
    // STEP 5: Initialise Cg programs and parameters for blurring
    
    cgGLBindProgram(g_cgVP_GlowBlur);
    cgGLBindProgram(g_cgFP_GlowBlur);
    
    cgGLSetStateMatrixParameter(g_cgpVP1_ModelViewMatrix, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY);
    
    // STEP 6: Apply blur
    
    int iNumBlurSteps = (int)gEngfuncs.pfnGetCvarFloat("cg_blur_steps");
    for (int i = 0; i < iNumBlurSteps; i++) {
        DoBlur(g_uiBlurTex, g_uiBlurTex, ScreenWidth/2, ScreenHeight/2, ScreenWidth/2, ScreenHeight/2, 1, 0);
        DoBlur(g_uiBlurTex, g_uiBlurTex, ScreenWidth/2, ScreenHeight/2, ScreenWidth/2, ScreenHeight/2, 0, 1);
    }
    
    // STEP 7: Set up Cg for combining blurred glow with original scene
    
    cgGLBindProgram(g_cgVP_GlowCombine);
    cgGLBindProgram(g_cgFP_GlowCombine);
    
    cgGLSetStateMatrixParameter(g_cgpVP2_ModelViewMatrix, CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY);
    
    glActiveTextureARB(GL_TEXTURE0_ARB);
    glEnable(GL_TEXTURE_RECTANGLE_NV);
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiSceneTex);
    
    glActiveTextureARB(GL_TEXTURE1_ARB);
    glEnable(GL_TEXTURE_RECTANGLE_NV);
    glBindTexture(GL_TEXTURE_RECTANGLE_NV, g_uiBlurTex);
    
    // STEP 8: Do the combination, rendering to the screen without grabbing it to a texture
    
    glViewport(0, 0, ScreenWidth, ScreenHeight);
    
    DrawQuad(ScreenWidth/2, ScreenHeight/2);
    
    // STEP 9: Restore the original projection and modelview matrices and disable rectangular textures on all units
    
    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();
    
    cgGLDisableProfile(g_cgVertProfile);
    cgGLDisableProfile(g_cgFragProfile);
    
    glActiveTextureARB(GL_TEXTURE0_ARB);
    glDisable(GL_TEXTURE_RECTANGLE_NV);
    
    glActiveTextureARB(GL_TEXTURE1_ARB);
    glDisable(GL_TEXTURE_RECTANGLE_NV);
    
    glActiveTextureARB(GL_TEXTURE2_ARB);
    glDisable(GL_TEXTURE_RECTANGLE_NV);
    
    glActiveTextureARB(GL_TEXTURE3_ARB);
    glDisable(GL_TEXTURE_RECTANGLE_NV);
    
    glActiveTextureARB(GL_TEXTURE0_ARB);
}

void DLLEXPORT HUD_DrawNormalTriangles( void )
{
    if (g_HardwareCapable)
    {
        glPushAttrib(GL_ALL_ATTRIB_BITS);
        glActiveTextureARB(GL_TEXTURE1_ARB);
        glClientActiveTextureARB(GL_TEXTURE1_ARB);
        
        glDisable(GL_TEXTURE_2D);
        
        glActiveTextureARB(GL_TEXTURE0_ARB);
        glClientActiveTextureARB(GL_TEXTURE0_ARB);
        
        GL_Render(false);
        
        glPopAttrib();
    }
    
    gHUD.m_Spectator.DrawOverview();
}

/*
=================
HUD_DrawTransparentTriangles

Render any triangles with transparent rendermode needs here
=================
*/

void DLLEXPORT HUD_DrawTransparentTriangles( void )
{
    if (g_HardwareCapable)
        GL_Render(true);
}

За это сообщение GuNsHiP получил предупреждение за оверквотинг

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

Старое сообщение 13-04-2009 15:21
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 21904
Нанёс повреждений: 360 ед.

Рейтинг



йолки-моталки. ну сколько раз говорено: большой исходник - в аттач.

__________________
В действительности всё может оказаться иначе, чем оно есть на самом деле

My Projects: download page

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

Старое сообщение 13-04-2009 15:37
-
GuNsHiP
Sneekls!

Дата регистрации: Apr 2009
Проживает: Украина, Мариуполь
Сообщений: 348
Возраст: 26

Рейтинг



Прошу свои извинения, в следующий раз - учту

Добавлено 13-04-2009 в 20:43:

Ладно, глоу не нужен...

Главное это как сделать базуку без прицела и
как сделать так, чтобы оружие стреляло только там, где есть небо


И ещё, добавил в раздел туториалы - туториал по созданию ПлазмаГана

Вложение: glow.zip (5.7 кб)
Этот файл был скачан 340 раз.

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

Старое сообщение 13-04-2009 16:43
- За что?
FiEctro
Диванные войска

Группа: Опытный
Дата регистрации: Aug 2006
Проживает: Зеленый форум
Сообщений: 8701
Возраст: 27

Рейтинг



//#include <cg/cg.h>
//#include <cg/cgGL.h>

Это зря закоментил. У тебя есть glow_darken_fp.cg , glow_blur_fp.cg , glow_combine_fp.cg файлы ?

__________________
Для организации коллектива надо уметь ссать в уши виртуозно (с) Raid

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

Старое сообщение 13-04-2009 17:14
- За что?
GuNsHiP
Sneekls!

Дата регистрации: Apr 2009
Проживает: Украина, Мариуполь
Сообщений: 348
Возраст: 26

Рейтинг



Нет ниодного...если у тебя есть, скинь.(и скажи куда их вставлять)

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

Старое сообщение 13-04-2009 17:20
- За что?
Ku2zoff
Юзер (типа моддер)

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 4618
Возраст: 27

Рейтинг



Имхо глоу нафиг не надо, я например на эту фигню забил. У меня впечатление, что FiEctro всё ещё пытается что-то замутить с граф.рендерером Паранойи, который я изуродовал

Цитата:
#include "gl_main.h"
Точно не знаю, можно ли провести проверку на присутствие неба в точке стрельбы, но если сделать некий триггер, при нахождении игрока в котором пушка стреляет, а вне него нет, то такой
вариант вполне реализуем.

__________________
Вы всё ещё не пьёте? Тогда мы идём к вам!

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

Старое сообщение 13-04-2009 18:01
- За что?
GuNsHiP
Sneekls!

Дата регистрации: Apr 2009
Проживает: Украина, Мариуполь
Сообщений: 348
Возраст: 26

Рейтинг



Да, с глоу покончено....Мне и на этих длл подходит
Но всё вавно FiEctro спасибо

Ku2zoff
Кстати, ты мне напомнил - помнишь ты(или нет) искал исходники паработов на хл1.Ты их себе ставил?Если да, то как. Я скачал исходники и что с ними делать не имею представления.

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

Старое сообщение 13-04-2009 18:10
- За что?
FiEctro
Диванные войска

Группа: Опытный
Дата регистрации: Aug 2006
Проживает: Зеленый форум
Сообщений: 8701
Возраст: 27

Рейтинг



Ku2zoff
Ничего я не пытаюсь. Это из исходников Оттис мода еще.

__________________
Для организации коллектива надо уметь ссать в уши виртуозно (с) Raid

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

Старое сообщение 13-04-2009 18:18
- За что?
GuNsHiP
Sneekls!

Дата регистрации: Apr 2009
Проживает: Украина, Мариуполь
Сообщений: 348
Возраст: 26

Рейтинг



Так что, кто-нибудь знает как добавить ботов в Халф-лайф1?

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

Старое сообщение 13-04-2009 18:43
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 21904
Нанёс повреждений: 360 ед.

Рейтинг



Цитата:
Точно не знаю, можно ли провести проверку на присутствие неба в точке стрельбы

теоретически возможно писать некую инфу в амбиентные звуки лифов, которые в хл не используются. Но дело в том, что звук не отвечает за прямую видимость, soundpvs.cpp придется серъезно переписать

__________________
В действительности всё может оказаться иначе, чем оно есть на самом деле

My Projects: download page

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

Старое сообщение 13-04-2009 20:09
-
Ku2zoff
Юзер (типа моддер)

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 4618
Возраст: 27

Рейтинг



GuNsHiP ставил я паработов. Если мод чисто сетевой, то вполне можно навесить их внешней дллкой. А вот если мод ещё и сингловый, то тут трабла: глюки после сохранения и последующей загрузки, тогда их надо интегрировать в дллку мода, а это трудновато для новичка, хотя бы потому, что придётся переписывать "обертки" для некоторых движковых функций, в основном использующихся для передачи мессаг на клиент.

__________________
Вы всё ещё не пьёте? Тогда мы идём к вам!

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

Старое сообщение 14-04-2009 03:43
- За что?
AlMod
Ленивый кодер

Дата регистрации: Jun 2008
Проживает: Саратов
Сообщений: 172
Возраст: 28

Рейтинг



По поводу неба - я уже не помню как в сдк, но в AMXX была функция TraceLine. Так вот, все что на самом деле нужно это пустить трейс вертикально вверх и проверить текстуру потолка - SKY = Улица, другая текстура - помещение. Вариант не идеален (под навесами на улице например не будет работать) но я думаю сгодится

__________________
Сайт поддержки кодеров на AMX Mod X

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

Старое сообщение 14-04-2009 05:19
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Новосибирск
Сообщений: 28051
Нанёс повреждений: 466 ед.
Возраст: 32

Рейтинг



Награды
 
[1 награда]


Не только под навесами, но и вот, скажем, под лампой фонаря. Тогда хотя бы трейса 4 пускать со слегка разными отклонениями от "вверх".

__________________
So she began again: 'Où est ma chatte?' which was the first sentence in her French lesson-book. The Mouse gave a sudden leap out of the water, and seemed to quiver all over with fright. 'Oh, I beg your pardon!' cried Alice hastily, afraid that she had hurt the poor animal's feelings. 'I quite forgot you didn't like cats.'

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

Старое сообщение 14-04-2009 05:29
-
AlMod
Ленивый кодер

Дата регистрации: Jun 2008
Проживает: Саратов
Сообщений: 172
Возраст: 28

Рейтинг



2XaeroX, согласен - 4 трейса безусловно будет пустить лучше

add к посту моему:
вот нашел немного кода

code:
PassAimTest(id) { new origin[3] new Float:Orig[3] get_user_origin(id, origin, 3) Orig[0]=float(origin[0]) Orig[1]=float(origin[1]) Orig[2]=float(origin[2]) new AimAt = PointContents(Orig) if (AimAt == CONTENTS_SKY && !get_cvar_num("batgirl_hooksky")) { client_print(id,print_chat,"[SH](BatGirl) You cannot hook to the sky") return false } return true }


из одного плагина

__________________
Сайт поддержки кодеров на AMX Mod X

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

Старое сообщение 14-04-2009 05:42
- За что?
GuNsHiP
Sneekls!

Дата регистрации: Apr 2009
Проживает: Украина, Мариуполь
Сообщений: 348
Возраст: 26

Рейтинг



Цитата:
GuNsHiP ставил я паработов. Если мод чисто сетевой, то вполне можно навесить их внешней дллкой. А вот если мод ещё и сингловый, то тут трабла: глюки после сохранения и последующей загрузки, тогда их надо интегрировать в дллку мода, а это трудновато для новичка, хотя бы потому, что придётся переписывать "обертки" для некоторых движковых функций, в основном использующихся для передачи мессаг на клиент.


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

Цитата:
вот нашел немного кода


Расскажите подробней о том как мне интегрировать код в код обычной гранаты(на этом принципе будет основано оружие),тоесть граната взрывалась только там, где есть небо. Возможно это будет SatchelCharge.

А ещё лучше, если бы в руках был пульт.При нажатии на кнопку под игроком создавалсь объект,который через 10 сек. взрывался.

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

Цитата:
client_print(id,print_chat,"[SH](BatGirl) You cannot hook to the sky")


Вот и отлично, если б граната "говорила", что здесь нет неба

Обещаю выложить туториал этого оружия, если мы его сделаем.
А пока могу выложить туториал взрывов в ХЛ1(таких как у меня).

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

Старое сообщение 14-04-2009 17:05
- За что?
Тема: (Опционально)
Ваш ответ:



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


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 01:20. Новая тема    Ответить
Страницы (5): « 1 [2] 3 4 5 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Несколько вопросов о коддинге
Помогите новичку
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

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

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Chain Studios © 2005-2018

Рейтинг@Mail.ru