Русское сообщество по скриптингу

Создание различных эффектов

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

Модератор: Chuvi

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только обучающему материалу по AMX Mod X.

Создание различных эффектов

Сообщение Retro-kolt Lincoln » 08 мар 2014, 11:18

Код: Выделить всё
#define TE_BEAMPOINTS 0 // Луч между двумя точками (Beam effect between two points)
stock CREATE_BEAMPOINTS(Float:fStartOrigin[3], Float:fEndOrigin[3], pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMPOINTS);
        engfunc(EngFunc_WriteCoord, fStartOrigin[0]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[1]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[2]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[0]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[1]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[2]);
        write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)
        write_byte(iStartFrame);
        write_byte(iFrameRate); // 0.1's
        write_byte(iLife); // 0.1's
        write_byte(iWidth);
        write_byte(iAmplitude); // 0.01's
        write_byte(iRed);
        write_byte(iGreen);
        write_byte(iBlue);
        write_byte(iBrightness);
        write_byte(iScrollSpeed); // 0.1's
        message_end();
}
 
#define TE_BEAMENTPOINT 1 // Луч между точкой и объектом (Beam effect between point and entity)
stock CREATE_BEAMENTPOINT(iEntity, Float:fOrigin[3], pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMENTPOINT);
        write_short(iEntity);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)
        write_byte(iStartFrame);
        write_byte(iFrameRate); // 0.1's
        write_byte(iLife); // 0.1's
        write_byte(iWidth);
        write_byte(iAmplitude); // 0.01's
        write_byte(iRed);
        write_byte(iGreen);
        write_byte(iBlue);
        write_byte(iBrightness);
        write_byte(iScrollSpeed); // 0.1's
        message_end();
}
 
#define TE_GUNSHOT 2 // Частицы и звук рикошета (Particle effect plus ricochet sound)
stock CREATE_BEAMENTPOINT(Float:fOrigin[3], iReliable = 0)
{
        engfunc(EngFunc_MessageBegin, iReliable ? MSG_PAS_R : MSG_PAS, SVC_TEMPENTITY, fOrigin, 0);
        write_byte(TE_GUNSHOT);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        message_end();
}
 
#define TE_EXPLOSION 3 // Взрыв с подсветкой, звуком и частицами (Additive sprite, 2 dynamic lights, flickering particles, explosion sound, move vertically 8 pps)
 
#define TE_EXPLFLAG_NONE 0 // Все Флаги по умолчанию (All flags clear makes default Half-Life explosion)
#define TE_EXPLFLAG_NOADDITIVE 1 // Отключить прозрачность спрайта (Sprite will be drawn opaque (ensure that the sprite you send is a non-additive sprite))
#define TE_EXPLFLAG_NODLIGHTS 2 // Не создавать подсветку вокруг взрыва (Do not render dynamic lights)
#define TE_EXPLFLAG_NOSOUND 4 // Не воспроизводить звук взрыва (Do not play client explosion sound)
#define TE_EXPLFLAG_NOPARTICLES 8 // Не создавать частицы после взрыва (Do not draw particles)
 
stock CREATE_EXPLOSION
(Float:fOrigin[3], pSprite, iScale, iFrameRate = 0, iFlags = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_EXPLOSION);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)
        write_byte(iScale);
        write_byte(iFrameRate); // 0.1's
        write_byte(iFlags);
        message_end();
}
 
#define TE_TAREXPLOSION 4 // Звук взрыва и разлетающихся частиц (Quake1 "tarbaby" explosion with sound)
stock CREATE_TAREXPLOSION(Float:fOrigin[3], iReliable = 0)
{
        engfunc(EngFunc_MessageBegin, iReliable ? MSG_PAS_R : MSG_PAS, SVC_TEMPENTITY, fOrigin, 0);
        write_byte(TE_TAREXPLOSION);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        message_end();
}
 
#define TE_SMOKE 5 // Прозрачный спрайт, перемещающийся вертикально вверх, что-то наподобие клубов дыма (Alphablend sprite, move vertically 30 pps)
stock CREATE_SMOKE(Float:fOrigin[3], pSprite, iScale, iFrameRate = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_SMOKE);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)
        write_byte(iScale);
        write_byte(iFrameRate); // 0.1's
        message_end();
}
 
#define TE_TRACER 6 // Эффект трассирующего снаряда от точки до точки (Tracer effect from point to point)
stock CREATE_TRACER(Float:fStartOrigin[3], Float:fEndOrigin[3], iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_TRACER);
        engfunc(EngFunc_WriteCoord, fStartOrigin[0]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[1]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[2]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[0]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[1]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[2]);
        message_end();
}
 
#define TE_LIGHTNING 7 // Тоже самое что TE_BEAMPOINTS, только с упрощенными параметрами (TE_BEAMPOINTS with simplified parameters)
stock CREATE_LIGHTNING(Float:fStartOrigin[3], Float:fEndOrigin[3], iLife, iWidth, iAmplitude = 0, pSprite, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_LIGHTNING);
        engfunc(EngFunc_WriteCoord, fStartOrigin[0]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[1]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[2]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[0]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[1]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[2]);
        write_byte(iLife); // 0.1's
        write_byte(iWidth);
        write_byte(iAmplitude); // 0.01's
        write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)
        message_end();
}
 
#define TE_BEAMENTS 8 // Луч между двумя объектами (Beam effect between two entity)
stock CREATE_BEAMENTS(iEntityStart, iEntityEnd, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMENTS);
        write_short(iEntityStart);
        write_short(iEntityEnd);
        write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)
        write_short(iStartFrame);
        write_short(iFrameRate); // 0.1's
        write_byte(iLife); // 0.1's
        write_byte(iWidth);
        write_byte(iAmplitude); // 0.01's
        write_byte(iRed);
        write_byte(iGreen);
        write_byte(iBlue);
        write_byte(iBrightness);
        write_byte(iScrollSpeed); // 0.1's
        message_end();
}
 
#define TE_SPARKS 9 // Эффект замыкания или попадания пули в металл, искры одним словом (8 random tracers with gravity, ricochet sprite)
stock CREATE_SPARKS(Float:fOrigin[3], iReliable = 0)
{
        engfunc(EngFunc_MessageBegin, iReliable ? MSG_PVS_R : MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);
        write_byte(TE_SPARKS);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        message_end();
}
 
#define TE_LAVASPLASH 10 // Эффект брызг крови или что-то вроде этого, в общем много красных частиц (Quake1 lava splash)
stock CREATE_LAVASPLASH(Float:fOrigin[3], iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_LAVASPLASH);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        message_end();
}
 
#define TE_TELEPORT 11 // Эффект телепортации, игрока или объекта (Quake1 teleport splash)
stock CREATE_TELEPORT(Float:fOrigin[3], iReliable = 0)
{
        engfunc(EngFunc_MessageBegin, iReliable ? MSG_PVS_R : MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);
        write_byte(TE_TELEPORT);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        message_end();
}
 
#define TE_EXPLOSION2 12 // Тоже самое что TE_TAREXPLOSION, только тут можно выставлять цвет частиц (Quake1 colormaped (base palette) particle explosion with sound)
stock CREATE_EXPLOSION2(Float:fOrigin[3], iStartColor = 0, iNumColors = 255, iReliable = 0)
{
        engfunc(EngFunc_MessageBegin, iReliable ? MSG_PAS_R : MSG_PAS, SVC_TEMPENTITY, fOrigin, 0);
        write_byte(TE_EXPLOSION2);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        write_byte(min(iStartColor, 255));
        write_byte(min(iNumColors, 255));
        message_end();
}
 
#define TE_BSPDECAL 13 // Рисует декали из файла .BSP, как я понял, может рисовать декали из карты которая сейчас запущена (Decal from the .BSP file)
stock CREATE_BSPDECAL(Float:fOrigin[3], pDecal, iEntity = 0, pModel = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BSPDECAL);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        write_short(pDecal); // Индекс декали из прекеша (index of precached decal)
        write_short(iEntity);
        if(iEntity) write_short(pModel); // Индекс модели объекта, если объект не равен нулю [то есть объект не карта] (index of model of above entity, only included if previous short is non-zero [not the world])
        message_end();
}
 
#define TE_IMPLOSION 14 // Частицы движущиеся к центру координат, в общем появляется круг из частиц и эти частицы движутся в центр (Tracers moving toward a point)
stock CREATE_IMPLOSION(Float:fOrigin[3], iRadius, iCount, iLife, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_IMPLOSION);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        write_byte(iRadius);
        write_byte(iCount);
        write_byte(iLife); // 0.1's
        message_end();
}
 
#define TE_SPRITETRAIL 15 // Создаёт спрайты которые могут сталкиваться с объектами, имеют гравитацию и физику (Line of moving glow sprites with gravity, fadeout, and collisions)
stock CREATE_SPRITETRAIL(Float:fStartOrigin[3], Float:fEndOrigin[3], pSprite, iCount, iLife, iScale, iVelocityAlongVector, iRandomVelocity, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_SPRITETRAIL);
        engfunc(EngFunc_WriteCoord, fStartOrigin[0]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[1]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[2]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[0]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[1]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[2]);
        write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)
        write_byte(iCount);
        write_byte(iLife); // 0.1's
        write_byte(iScale);
        write_byte(iVelocityAlongVector); // 10's
        write_byte(iRandomVelocity); // 10's
        message_end(); 
}
 
#define TE_BEAM 16 // Устаревший (obsolete)
 
#define TE_SPRITE 17 // Показ любого прозрачного спрайта, проигрывает 1 цикл всех кадров (Additive sprite, plays 1 cycle)
stock CREATE_SPRITE(Float:fOrigin[3], pSptite, iWidth, iBrightness, iReliable = 0)
{
        engfunc(EngFunc_MessageBegin, iReliable ? MSG_PVS_R : MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);
        write_byte(TE_SPRITE);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        write_short(pSptite); // Индекс спрайта из прекеша (index of precached sprite)
        write_byte(iWidth);
        write_byte(iBrightness);
        message_end();
}
 
#define TE_BEAMSPRITE 18 // Луч между двумя точками со спрайтом на конце (A beam with a sprite at the end)
stock CREATE_BEAMSPRITE(Float:fStartOrigin[3], Float:fEndOrigin[3], pSpriteBeam, pSpriteEnd, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMSPRITE);
        engfunc(EngFunc_WriteCoord, fStartOrigin[0]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[1]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[2]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[0]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[1]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[2]);
        write_short(pSpriteBeam); // Индекс спрайта из прекеша (index of precached sprite)
        write_short(pSpriteEnd); // Индекс спрайта из прекеша (index of precached sprite)
        message_end(); 
}
 
#define TE_BEAMTORUS 19 // Кольцо расширяющиеся до радиуса указанного в параметрах (Screen aligned beam ring, expands to max radius over lifetime)
stock CREATE_BEAMTORUS(Float:fOrigin[3], iRadius, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMTORUS);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2] + 16.0 + iRadius * 2);
        write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)
        write_byte(iStartFrame);
        write_byte(iFrameRate); // 0.1's
        write_byte(iLife); // 0.1's
        write_byte(iWidth);
        write_byte(iAmplitude); // 0.01's
        write_byte(iRed);
        write_byte(iGreen);
        write_byte(iBlue);
        write_byte(iBrightness);
        write_byte(iScrollSpeed); // 0.1's
        message_end();
}
 
#define TE_BEAMDISK 20 // Диск расширяющиеся до радиуса указанного в параметрах (Disk that expands to max radius over lifetime)
stock CREATE_BEAMDISK(Float:fOrigin[3], iRadius, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMDISK);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2] + 16.0 + iRadius * 2);
        write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)
        write_byte(iStartFrame);
        write_byte(iFrameRate); // 0.1's
        write_byte(iLife); // 0.1's
        write_byte(iWidth);
        write_byte(iAmplitude); // 0.01's
        write_byte(iRed);
        write_byte(iGreen);
        write_byte(iBlue);
        write_byte(iBrightness);
        write_byte(iScrollSpeed); // 0.1's
        message_end();
}
 
#define TE_BEAMCYLINDER 21 // Цилиндр расширяющиеся до радиуса указанного в параметрах (Cylinder that expands to max radius over lifetime)
stock CREATE_BEAMCYLINDER(Float:fOrigin[3], iRadius, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMCYLINDER);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2] + 16.0 + iRadius * 2);
        write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)
        write_byte(iStartFrame);
        write_byte(iFrameRate); // 0.1's
        write_byte(iLife); // 0.1's
        write_byte(iWidth);
        write_byte(iAmplitude); // 0.01's
        write_byte(iRed);
        write_byte(iGreen);
        write_byte(iBlue);
        write_byte(iBrightness);
        write_byte(iScrollSpeed); // 0.1's
        message_end();
}
 
#define TE_BEAMFOLLOW 22 // Линия исходящая от объекта, пока объект движется (Create a line of decaying beam segments until entity stops moving)
stock CREATE_BEAMFOLLOW(iEntity, pSptite, iLife, iWidth, iRed, iGreen, iBlue, iBrightness, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMFOLLOW);
        write_short(iEntity);
        write_short(pSptite);
        write_byte(iLife); // 0.1's
        write_byte(iWidth);
        write_byte(iRed);
        write_byte(iGreen);
        write_byte(iBlue);
        write_byte(iBrightness);
        message_end();
}
 
#define TE_GLOWSPRITE 23 // Светящийся спрайт, не знаю что это значит, пробуйте (Creates a glowing sprite)
stock CREATE_GLOWSPRITE(Float:fOrigin[3], pSptite, iScale, iSize, iBrightness, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_GLOWSPRITE);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        write_short(pSptite); // Индекс спрайта из прекеша (index of precached sprite)
        write_byte(iScale);
        write_byte(iSize);
        write_byte(iBrightness);
        message_end();
}
 
#define TE_BEAMRING 24 // Кольцо в центре первого объекта, расширяющиеся до радиуса на котором находится второй объект, когда второй объект приближается к первому, кольцо сужается (Connect a beam ring to two entities)
stock CREATE_BEAMRING(iStartEntity, iEndEntity, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_BEAMRING);
        write_short(iStartEntity);
        write_short(iEndEntity);
        write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)
        write_byte(iStartFrame);
        write_byte(iFrameRate); // 0.1's
        write_byte(iLife); // 0.1's
        write_byte(iWidth);
        write_byte(iAmplitude); // 0.01's
        write_byte(iRed);
        write_byte(iGreen);
        write_byte(iBlue);
        write_byte(iBrightness);
        write_byte(iScrollSpeed); // 0.1's
        message_end();
}
 
#define TE_STREAK_SPLASH 25 // Частицы разлетаются в разные стороны (Oriented shower of tracers)
stock CREATE_BEAMRING(Float:fOrigin[3], Float:fVector[3] = {-1.0, 1.0, 0.0}, iColor, iCount, iSpeed, iRandomVelocity, iReliable = 0)
{
        engfunc(EngFunc_MessageBegin, iReliable ? MSG_PVS_R : MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);
        write_byte(TE_STREAK_SPLASH);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        engfunc(EngFunc_WriteCoord, fVector[0]);
        engfunc(EngFunc_WriteCoord, fVector[1]);
        engfunc(EngFunc_WriteCoord, fVector[2]);
        write_byte(min(iColor, 255));
        write_short(iCount);
        write_short(iSpeed);
        write_short(iRandomVelocity);
        message_end();
}
 
#define TE_DLIGHT 27 // Создаёт динамичный свет (Dynamic light, effect world, minor entity effect)
stock CREATE_DLIGHT(Float:fOrigin[3], iRadius, iRed, iGreen, iBlue, iBrightness, iLife, iDecayRate = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_DLIGHT);
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        write_byte(iRadius);
        write_byte(iRed);
        write_byte(iGreen);
        write_byte(iBlue);
        write_byte(iBrightness);
        write_byte(iLife); // 0.1's
        write_byte(iDecayRate);
        message_end();
}
 
#define TE_ELIGHT 28 // Создаёт динамичный свет для объекта, не влияет на карту и другие объекты (Point entity light, no world effect)
stock CREATE_ELIGHT(iEntity, Float:fOrigin[3], iRadius, iRed, iGreen, iBlue, iBrightness, iLife, iDecayRate = 0, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_ELIGHT);
        write_short(iEntity)
        engfunc(EngFunc_WriteCoord, fOrigin[0]);
        engfunc(EngFunc_WriteCoord, fOrigin[1]);
        engfunc(EngFunc_WriteCoord, fOrigin[2]);
        write_coord(iRadius);
        write_byte(iRed);
        write_byte(iGreen);
        write_byte(iBlue);
        write_byte(iBrightness);
        write_byte(iLife); // 0.1's
        write_coord(iDecayRate);
        message_end();
}
 
#define TE_LINE 30
stock CREATE_LINE(Float:fStartOrigin[3], Float:fEndOrigin[3], iLife, iRed, iGreen, iBlue, iReliable = 0)
{
        message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);
        write_byte(TE_LINE);
        engfunc(EngFunc_WriteCoord, fStartOrigin[0]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[1]);
        engfunc(EngFunc_WriteCoord, fStartOrigin[2]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[0]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[1]);
        engfunc(EngFunc_WriteCoord, fEndOrigin[2]);
        write_short(iLife); // 0.1's
        write_byte(iRed);
        write_byte(iGreen);
        write_byte(iBlue);
        message_end();
}

Как считаете, продолжать статью, нужно это кому нибудь?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Retro-kolt Lincoln 08 мар 2014, 17:58, всего редактировалось 3 раз(а).
Предлагаю услуги гаранта. Написание плагинов на заказ.
Статус:
на заслуженном отдыхе
Отзывы: Нажми
Обратиться ко мне: Нажми

- - - - - - - - - - - - - - - -
Если ваше ЛС было проигнорировано мною, знайте, оно мне не интересно.
Аватара пользователя
Retro-kolt Lincoln
 
Сообщения: 1283
Зарегистрирован: 28 авг 2010, 19:16
Благодарил (а): 321 раз.
Поблагодарили: 581 раз.
Опыт программирования: Больше трех лет
Языки программирования: ╚►Counter-Strike 1.6

Re: Создание различных эффектов

Сообщение Retro-kolt Lincoln » 09 мар 2014, 14:11

Пока времени немного не хватает, скоро добавлю.
Предлагаю услуги гаранта. Написание плагинов на заказ.
Статус:
на заслуженном отдыхе
Отзывы: Нажми
Обратиться ко мне: Нажми

- - - - - - - - - - - - - - - -
Если ваше ЛС было проигнорировано мною, знайте, оно мне не интересно.
Аватара пользователя
Retro-kolt Lincoln
 
Сообщения: 1283
Зарегистрирован: 28 авг 2010, 19:16
Благодарил (а): 321 раз.
Поблагодарили: 581 раз.
Опыт программирования: Больше трех лет
Языки программирования: ╚►Counter-Strike 1.6

Re: Создание различных эффектов

Сообщение Safety1st » 11 мар 2014, 19:52

Retro-kolt Lincoln, если вдруг надумаешь написать статью посерьёзнее - предлагаю тему 'оффсеты и с чем их едят'. Менюшечники будут пищать от восторга и наставят тебе кучу спасибок. Если будет хоть какая-то серьёзность и без глупого офейкметчивания - могу помочь с планом/идеями по статье.

Готовый текст для вступительного абзаца:
[spoiler]
https://forums.alliedmods.net/showpost.php?p=665719&postcount=17
All players have a 'data zone' which is used by the mod to store local information. This is called a player's private data. But as the name says,it's private,it's not exposed to us. So,the only way to access this data is knowing the position of an item relative to the data's start location. This is the so called offset. CS, for example, stores team information on this private zone. What the cstrike's cs_get_user_team() does is extract this data. This function does the same, it reads the players data in the given offset.
[/spoiler]
GoldSrc Gaming Community
Аватара пользователя
Safety1st
 
Сообщения: 1958
Зарегистрирован: 08 окт 2011, 05:41
Откуда: Moscow
Благодарил (а): 1690 раз.
Поблагодарили: 933 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

Re: Создание различных эффектов

Сообщение Retro-kolt Lincoln » 11 мар 2014, 20:46

Возможно, не как руки не дойдут доделать эту, но доделаю, обещал же.
Предлагаю услуги гаранта. Написание плагинов на заказ.
Статус:
на заслуженном отдыхе
Отзывы: Нажми
Обратиться ко мне: Нажми

- - - - - - - - - - - - - - - -
Если ваше ЛС было проигнорировано мною, знайте, оно мне не интересно.
Аватара пользователя
Retro-kolt Lincoln
 
Сообщения: 1283
Зарегистрирован: 28 авг 2010, 19:16
Благодарил (а): 321 раз.
Поблагодарили: 581 раз.
Опыт программирования: Больше трех лет
Языки программирования: ╚►Counter-Strike 1.6

Re: Создание различных эффектов

Сообщение Nixon133 » 11 мар 2014, 20:57

[spoiler][pawn]
  1.  

  2. #define TE_BEAMPOINTS 0 // Луч между двумя точками (Beam effect between two points)

  3. stock CREATE_BEAMPOINTS(Float:fStartOrigin[3], Float:fEndOrigin[3], pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_BEAMPOINTS);

  7.         engfunc(EngFunc_WriteCoord, fStartOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fStartOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fStartOrigin[2]);

  10.         engfunc(EngFunc_WriteCoord, fEndOrigin[0]);

  11.         engfunc(EngFunc_WriteCoord, fEndOrigin[1]);

  12.         engfunc(EngFunc_WriteCoord, fEndOrigin[2]);

  13.         write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)

  14.         write_byte(iStartFrame);

  15.         write_byte(iFrameRate); // 0.1's

  16.         write_byte(iLife); // 0.1's

  17.         write_byte(iWidth);

  18.         write_byte(iAmplitude); // 0.01's

  19.         write_byte(iRed);

  20.         write_byte(iGreen);

  21.         write_byte(iBlue);

  22.         write_byte(iBrightness);

  23.         write_byte(iScrollSpeed); // 0.1's

  24.         message_end();

  25. }

  26.  
[/pawn]

[pawn]
  1.  

  2. #define TE_BEAMENTPOINT 1 // Луч между точкой и объектом (Beam effect between point and entity)

  3. stock CREATE_BEAMENTPOINT(iEntity, Float:fOrigin[3], pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_BEAMENTPOINT);

  7.         write_short(iEntity);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  10.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  11.         write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)

  12.         write_byte(iStartFrame);

  13.         write_byte(iFrameRate); // 0.1's

  14.         write_byte(iLife); // 0.1's

  15.         write_byte(iWidth);

  16.         write_byte(iAmplitude); // 0.01's

  17.         write_byte(iRed);

  18.         write_byte(iGreen);

  19.         write_byte(iBlue);

  20.         write_byte(iBrightness);

  21.         write_byte(iScrollSpeed); // 0.1's

  22.         message_end();

  23. }

  24.  
[/pawn]

[pawn]
  1.  

  2. #define TE_GUNSHOT 2 // Частицы и звук рикошета (Particle effect plus ricochet sound)

  3. stock CREATE_BEAMENTPOINT(Float:fOrigin[3], iReliable = 0)

  4. {

  5.         engfunc(EngFunc_MessageBegin, iReliable ? MSG_PAS_R : MSG_PAS, SVC_TEMPENTITY, fOrigin, 0);

  6.         write_byte(TE_GUNSHOT);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         message_end();

  11. }

  12.  
[/pawn]

[pawn]
  1.  

  2. #define TE_EXPLOSION 3 // Взрыв с подсветкой, звуком и частицами (Additive sprite, 2 dynamic lights, flickering particles, explosion sound, move vertically 8 pps)

  3.  

  4. #define TE_EXPLFLAG_NONE 0 // Все Флаги по умолчанию (All flags clear makes default Half-Life explosion)

  5. #define TE_EXPLFLAG_NOADDITIVE 1 // Отключить прозрачность спрайта (Sprite will be drawn opaque (ensure that the sprite you send is a non-additive sprite))

  6. #define TE_EXPLFLAG_NODLIGHTS 2 // Не создавать подсветку вокруг взрыва (Do not render dynamic lights)

  7. #define TE_EXPLFLAG_NOSOUND 4 // Не воспроизводить звук взрыва (Do not play client explosion sound)

  8. #define TE_EXPLFLAG_NOPARTICLES 8 // Не создавать частицы после взрыва (Do not draw particles)

  9.  

  10. stock CREATE_EXPLOSION(Float:fOrigin[3], pSprite, iScale, iFrameRate = 0, iFlags = 0, iReliable = 0)

  11. {

  12.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  13.         write_byte(TE_EXPLOSION);

  14.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  15.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  16.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  17.         write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)

  18.         write_byte(iScale);

  19.         write_byte(iFrameRate); // 0.1's

  20.         write_byte(iFlags);

  21.         message_end();

  22. }

  23.  
[/pawn]

[pawn]
  1.  

  2. #define TE_TAREXPLOSION 4 // Звук взрыва и разлетающихся частиц (Quake1 "tarbaby" explosion with sound)

  3. stock CREATE_TAREXPLOSION(Float:fOrigin[3], iReliable = 0)

  4. {

  5.         engfunc(EngFunc_MessageBegin, iReliable ? MSG_PAS_R : MSG_PAS, SVC_TEMPENTITY, fOrigin, 0);

  6.         write_byte(TE_TAREXPLOSION);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         message_end();

  11. }

  12.  
[/pawn]

[pawn]
  1.  

  2. #define TE_SMOKE 5 // Прозрачный спрайт, перемещающийся вертикально вверх, что-то наподобие клубов дыма (Alphablend sprite, move vertically 30 pps)

  3. stock CREATE_SMOKE(Float:fOrigin[3], pSprite, iScale, iFrameRate = 0, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_SMOKE);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)

  11.         write_byte(iScale);

  12.         write_byte(iFrameRate); // 0.1's

  13.         message_end();

  14. }

  15.  
[/pawn]

[pawn]
  1.  

  2. #define TE_TRACER 6 // Эффект трассирующего снаряда от точки до точки (Tracer effect from point to point)

  3. stock CREATE_TRACER(Float:fStartOrigin[3], Float:fEndOrigin[3], iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_TRACER);

  7.         engfunc(EngFunc_WriteCoord, fStartOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fStartOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fStartOrigin[2]);

  10.         engfunc(EngFunc_WriteCoord, fEndOrigin[0]);

  11.         engfunc(EngFunc_WriteCoord, fEndOrigin[1]);

  12.         engfunc(EngFunc_WriteCoord, fEndOrigin[2]);

  13.         message_end();

  14. }

  15.  
[/pawn]

[pawn]
  1.  

  2. #define TE_LIGHTNING 7 // Тоже самое что TE_BEAMPOINTS, только с упрощенными параметрами (TE_BEAMPOINTS with simplified parameters)

  3. stock CREATE_LIGHTNING(Float:fStartOrigin[3], Float:fEndOrigin[3], iLife, iWidth, iAmplitude = 0, pSprite, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_LIGHTNING);

  7.         engfunc(EngFunc_WriteCoord, fStartOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fStartOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fStartOrigin[2]);

  10.         engfunc(EngFunc_WriteCoord, fEndOrigin[0]);

  11.         engfunc(EngFunc_WriteCoord, fEndOrigin[1]);

  12.         engfunc(EngFunc_WriteCoord, fEndOrigin[2]);

  13.         write_byte(iLife); // 0.1's

  14.         write_byte(iWidth);

  15.         write_byte(iAmplitude); // 0.01's

  16.         write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)

  17.         message_end();

  18. }

  19.  
[/pawn]

[pawn]
  1.  

  2. #define TE_BEAMENTS 8 // Луч между двумя объектами (Beam effect between two entity)

  3. stock CREATE_BEAMENTS(iEntityStart, iEntityEnd, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_BEAMENTS);

  7.         write_short(iEntityStart);

  8.         write_short(iEntityEnd);

  9.         write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)

  10.         write_short(iStartFrame);

  11.         write_short(iFrameRate); // 0.1's

  12.         write_byte(iLife); // 0.1's

  13.         write_byte(iWidth);

  14.         write_byte(iAmplitude); // 0.01's

  15.         write_byte(iRed);

  16.         write_byte(iGreen);

  17.         write_byte(iBlue);

  18.         write_byte(iBrightness);

  19.         write_byte(iScrollSpeed); // 0.1's

  20.         message_end();

  21. }

  22.  
[/pawn]

[pawn]
  1.  

  2. #define TE_SPARKS 9 // Эффект замыкания или попадания пули в металл, искры одним словом (8 random tracers with gravity, ricochet sprite)

  3. stock CREATE_SPARKS(Float:fOrigin[3], iReliable = 0)

  4. {

  5.         engfunc(EngFunc_MessageBegin, iReliable ? MSG_PVS_R : MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);

  6.         write_byte(TE_SPARKS);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         message_end();

  11. }

  12.  
[/pawn]

[pawn]
  1.  

  2. #define TE_LAVASPLASH 10 // Эффект брызг крови или что-то вроде этого, в общем много красных частиц (Quake1 lava splash)

  3. stock CREATE_LAVASPLASH(Float:fOrigin[3], iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_LAVASPLASH);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         message_end();

  11. }

  12.  
[/pawn]

[pawn]
  1.  

  2. #define TE_TELEPORT 11 // Эффект телепортации, игрока или объекта (Quake1 teleport splash)

  3. stock CREATE_TELEPORT(Float:fOrigin[3], iReliable = 0)

  4. {

  5.         engfunc(EngFunc_MessageBegin, iReliable ? MSG_PVS_R : MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);

  6.         write_byte(TE_TELEPORT);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         message_end();

  11. }

  12.  
[/pawn]

[pawn]
  1.  

  2. #define TE_EXPLOSION2 12 // Тоже самое что TE_TAREXPLOSION, только тут можно выставлять цвет частиц (Quake1 colormaped (base palette) particle explosion with sound)

  3. stock CREATE_EXPLOSION2(Float:fOrigin[3], iStartColor = 0, iNumColors = 255, iReliable = 0)

  4. {

  5.         engfunc(EngFunc_MessageBegin, iReliable ? MSG_PAS_R : MSG_PAS, SVC_TEMPENTITY, fOrigin, 0);

  6.         write_byte(TE_EXPLOSION2);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         write_byte(min(iStartColor, 255));

  11.         write_byte(min(iNumColors, 255));

  12.         message_end();

  13. }

  14.  
[/pawn]

[pawn]
  1.  

  2. #define TE_BSPDECAL 13 // Рисует декали из файла .BSP, как я понял, может рисовать декали из карты которая сейчас запущена (Decal from the .BSP file)

  3. stock CREATE_BSPDECAL(Float:fOrigin[3], pDecal, iEntity = 0, pModel = 0, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_BSPDECAL);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         write_short(pDecal); // Индекс декали из прекеша (index of precached decal)

  11.         write_short(iEntity);

  12.         if(iEntity) write_short(pModel); // Индекс модели объекта, если объект не равен нулю [то есть объект не карта] (index of model of above entity, only included if previous short is non-zero [not the world])

  13.         message_end();

  14. }

  15.  
[/pawn]

[pawn]
  1.  

  2. #define TE_IMPLOSION 14 // Частицы движущиеся к центру координат, в общем появляется круг из частиц и эти частицы движутся в центр (Tracers moving toward a point)

  3. stock CREATE_IMPLOSION(Float:fOrigin[3], iRadius, iCount, iLife, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_IMPLOSION);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         write_byte(iRadius);

  11.         write_byte(iCount);

  12.         write_byte(iLife); // 0.1's

  13.         message_end();

  14. }

  15.  
[/pawn]

[pawn]
  1.  

  2. #define TE_SPRITETRAIL 15 // Создаёт спрайты которые могут сталкиваться с объектами, имеют гравитацию и физику (Line of moving glow sprites with gravity, fadeout, and collisions)

  3. stock CREATE_SPRITETRAIL(Float:fStartOrigin[3], Float:fEndOrigin[3], pSprite, iCount, iLife, iScale, iVelocityAlongVector, iRandomVelocity, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_SPRITETRAIL);

  7.         engfunc(EngFunc_WriteCoord, fStartOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fStartOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fStartOrigin[2]);

  10.         engfunc(EngFunc_WriteCoord, fEndOrigin[0]);

  11.         engfunc(EngFunc_WriteCoord, fEndOrigin[1]);

  12.         engfunc(EngFunc_WriteCoord, fEndOrigin[2]);

  13.         write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)

  14.         write_byte(iCount);

  15.         write_byte(iLife); // 0.1's

  16.         write_byte(iScale);

  17.         write_byte(iVelocityAlongVector); // 10's

  18.         write_byte(iRandomVelocity); // 10's

  19.         message_end();

  20. }

  21.  
[/pawn]

[pawn]
  1.  

  2. #define TE_BEAM 16 // Устаревший (obsolete)

  3. #define TE_SPRITE 17 // Показ любого прозрачного спрайта, проигрывает 1 цикл всех кадров (Additive sprite, plays 1 cycle)

  4. stock CREATE_SPRITE(Float:fOrigin[3], pSptite, iWidth, iBrightness, iReliable = 0)

  5. {

  6.         engfunc(EngFunc_MessageBegin, iReliable ? MSG_PVS_R : MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);

  7.         write_byte(TE_SPRITE);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  10.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  11.         write_short(pSptite); // Индекс спрайта из прекеша (index of precached sprite)

  12.         write_byte(iWidth);

  13.         write_byte(iBrightness);

  14.         message_end();

  15. }

  16.  
[/pawn]

[pawn]
  1.  

  2. #define TE_BEAMSPRITE 18 // Луч между двумя точками со спрайтом на конце (A beam with a sprite at the end)

  3. stock CREATE_BEAMSPRITE(Float:fStartOrigin[3], Float:fEndOrigin[3], pSpriteBeam, pSpriteEnd, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_BEAMSPRITE);

  7.         engfunc(EngFunc_WriteCoord, fStartOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fStartOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fStartOrigin[2]);

  10.         engfunc(EngFunc_WriteCoord, fEndOrigin[0]);

  11.         engfunc(EngFunc_WriteCoord, fEndOrigin[1]);

  12.         engfunc(EngFunc_WriteCoord, fEndOrigin[2]);

  13.         write_short(pSpriteBeam); // Индекс спрайта из прекеша (index of precached sprite)

  14.         write_short(pSpriteEnd); // Индекс спрайта из прекеша (index of precached sprite)

  15.         message_end();

  16. }

  17.  
[/pawn]

[pawn]
  1.  

  2. #define TE_BEAMTORUS 19 // Кольцо расширяющиеся до радиуса указанного в параметрах (Screen aligned beam ring, expands to max radius over lifetime)

  3. stock CREATE_BEAMTORUS(Float:fOrigin[3], iRadius, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_BEAMTORUS);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  11.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  12.         engfunc(EngFunc_WriteCoord, fOrigin[2] + 16.0 + iRadius * 2);

  13.         write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)

  14.         write_byte(iStartFrame);

  15.         write_byte(iFrameRate); // 0.1's

  16.         write_byte(iLife); // 0.1's

  17.         write_byte(iWidth);

  18.         write_byte(iAmplitude); // 0.01's

  19.         write_byte(iRed);

  20.         write_byte(iGreen);

  21.         write_byte(iBlue);

  22.         write_byte(iBrightness);

  23.         write_byte(iScrollSpeed); // 0.1's

  24.         message_end();

  25. }

  26.  
[/pawn]

[pawn]
  1.  

  2. #define TE_BEAMDISK 20 // Диск расширяющиеся до радиуса указанного в параметрах (Disk that expands to max radius over lifetime)

  3. stock CREATE_BEAMDISK(Float:fOrigin[3], iRadius, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_BEAMDISK);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  11.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  12.         engfunc(EngFunc_WriteCoord, fOrigin[2] + 16.0 + iRadius * 2);

  13.         write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)

  14.         write_byte(iStartFrame);

  15.         write_byte(iFrameRate); // 0.1's

  16.         write_byte(iLife); // 0.1's

  17.         write_byte(iWidth);

  18.         write_byte(iAmplitude); // 0.01's

  19.         write_byte(iRed);

  20.         write_byte(iGreen);

  21.         write_byte(iBlue);

  22.         write_byte(iBrightness);

  23.         write_byte(iScrollSpeed); // 0.1's

  24.         message_end();

  25. }

  26.  
[/pawn]

[pawn]
  1.  

  2. #define TE_BEAMCYLINDER 21 // Цилиндр расширяющиеся до радиуса указанного в параметрах (Cylinder that expands to max radius over lifetime)

  3. stock CREATE_BEAMCYLINDER(Float:fOrigin[3], iRadius, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_BEAMCYLINDER);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  11.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  12.         engfunc(EngFunc_WriteCoord, fOrigin[2] + 16.0 + iRadius * 2);

  13.         write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)

  14.         write_byte(iStartFrame);

  15.         write_byte(iFrameRate); // 0.1's

  16.         write_byte(iLife); // 0.1's

  17.         write_byte(iWidth);

  18.         write_byte(iAmplitude); // 0.01's

  19.         write_byte(iRed);

  20.         write_byte(iGreen);

  21.         write_byte(iBlue);

  22.         write_byte(iBrightness);

  23.         write_byte(iScrollSpeed); // 0.1's

  24.         message_end();

  25. }

  26.  
[/pawn]

[pawn]
  1.  

  2. #define TE_BEAMFOLLOW 22 // Линия исходящая от объекта, пока объект движется (Create a line of decaying beam segments until entity stops moving)

  3. stock CREATE_BEAMFOLLOW(iEntity, pSptite, iLife, iWidth, iRed, iGreen, iBlue, iBrightness, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_BEAMFOLLOW);

  7.         write_short(iEntity);

  8.         write_short(pSptite);

  9.         write_byte(iLife); // 0.1's

  10.         write_byte(iWidth);

  11.         write_byte(iRed);

  12.         write_byte(iGreen);

  13.         write_byte(iBlue);

  14.         write_byte(iBrightness);

  15.         message_end();

  16. }

  17.  
[/pawn]

[pawn]
  1.  

  2. #define TE_GLOWSPRITE 23 // Светящийся спрайт, не знаю что это значит, пробуйте (Creates a glowing sprite)

  3. stock CREATE_GLOWSPRITE(Float:fOrigin[3], pSptite, iScale, iSize, iBrightness, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_GLOWSPRITE);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         write_short(pSptite); // Индекс спрайта из прекеша (index of precached sprite)

  11.         write_byte(iScale);

  12.         write_byte(iSize);

  13.         write_byte(iBrightness);

  14.         message_end();

  15. }

  16.  
[/pawn]

[pawn]
  1.  

  2. #define TE_BEAMRING 24 // Кольцо в центре первого объекта, расширяющиеся до радиуса на котором находится второй объект, когда второй объект приближается к первому, кольцо сужается (Connect a beam ring to two entities)

  3. stock CREATE_BEAMRING(iStartEntity, iEndEntity, pSprite, iStartFrame = 0, iFrameRate = 0, iLife, iWidth, iAmplitude = 0, iRed, iGreen, iBlue, iBrightness, iScrollSpeed = 0, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_BEAMRING);

  7.         write_short(iStartEntity);

  8.         write_short(iEndEntity);

  9.         write_short(pSprite); // Индекс спрайта из прекеша (index of precached sprite)

  10.         write_byte(iStartFrame);

  11.         write_byte(iFrameRate); // 0.1's

  12.         write_byte(iLife); // 0.1's

  13.         write_byte(iWidth);

  14.         write_byte(iAmplitude); // 0.01's

  15.         write_byte(iRed);

  16.         write_byte(iGreen);

  17.         write_byte(iBlue);

  18.         write_byte(iBrightness);

  19.         write_byte(iScrollSpeed); // 0.1's

  20.         message_end();

  21. }

  22.  
[/pawn]

[pawn]
  1.  

  2. #define TE_STREAK_SPLASH 25 // Частицы разлетаются в разные стороны (Oriented shower of tracers)

  3. stock CREATE_BEAMRING(Float:fOrigin[3], Float:fVector[3] = {-1.0, 1.0, 0.0}, iColor, iCount, iSpeed, iRandomVelocity, iReliable = 0)

  4. {

  5.         engfunc(EngFunc_MessageBegin, iReliable ? MSG_PVS_R : MSG_PVS, SVC_TEMPENTITY, fOrigin, 0);

  6.         write_byte(TE_STREAK_SPLASH);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         engfunc(EngFunc_WriteCoord, fVector[0]);

  11.         engfunc(EngFunc_WriteCoord, fVector[1]);

  12.         engfunc(EngFunc_WriteCoord, fVector[2]);

  13.         write_byte(min(iColor, 255));

  14.         write_short(iCount);

  15.         write_short(iSpeed);

  16.         write_short(iRandomVelocity);

  17.         message_end();

  18. }

  19.  
[/pawn]

[pawn]
  1.  

  2. #define TE_DLIGHT 27 // Создаёт динамичный свет (Dynamic light, effect world, minor entity effect)

  3. stock CREATE_DLIGHT(Float:fOrigin[3], iRadius, iRed, iGreen, iBlue, iBrightness, iLife, iDecayRate = 0, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_DLIGHT);

  7.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  10.         write_byte(iRadius);

  11.         write_byte(iRed);

  12.         write_byte(iGreen);

  13.         write_byte(iBlue);

  14.         write_byte(iBrightness);

  15.         write_byte(iLife); // 0.1's

  16.         write_byte(iDecayRate);

  17.         message_end();

  18. }

  19.  
[/pawn]

[pawn]
  1.  

  2. #define TE_ELIGHT 28 // Создаёт динамичный свет для объекта, не влияет на карту и другие объекты (Point entity light, no world effect)

  3. stock CREATE_ELIGHT(iEntity, Float:fOrigin[3], iRadius, iRed, iGreen, iBlue, iBrightness, iLife, iDecayRate = 0, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_ELIGHT);

  7.         write_short(iEntity)

  8.         engfunc(EngFunc_WriteCoord, fOrigin[0]);

  9.         engfunc(EngFunc_WriteCoord, fOrigin[1]);

  10.         engfunc(EngFunc_WriteCoord, fOrigin[2]);

  11.         write_coord(iRadius);

  12.         write_byte(iRed);

  13.         write_byte(iGreen);

  14.         write_byte(iBlue);

  15.         write_byte(iBrightness);

  16.         write_byte(iLife); // 0.1's

  17.         write_coord(iDecayRate);

  18.         message_end();

  19. }

  20.  
[/pawn]

[pawn]
  1.  

  2. #define TE_LINE 30

  3. stock CREATE_LINE(Float:fStartOrigin[3], Float:fEndOrigin[3], iLife, iRed, iGreen, iBlue, iReliable = 0)

  4. {

  5.         message_begin(iReliable ? MSG_ALL : MSG_BROADCAST, SVC_TEMPENTITY);

  6.         write_byte(TE_LINE);

  7.         engfunc(EngFunc_WriteCoord, fStartOrigin[0]);

  8.         engfunc(EngFunc_WriteCoord, fStartOrigin[1]);

  9.         engfunc(EngFunc_WriteCoord, fStartOrigin[2]);

  10.         engfunc(EngFunc_WriteCoord, fEndOrigin[0]);

  11.         engfunc(EngFunc_WriteCoord, fEndOrigin[1]);

  12.         engfunc(EngFunc_WriteCoord, fEndOrigin[2]);

  13.         write_short(iLife); // 0.1's

  14.         write_byte(iRed);

  15.         write_byte(iGreen);

  16.         write_byte(iBlue);

  17.         message_end();

  18. }

  19.  
[/pawn][/spoiler]

Поместил каждый по отдельности.
Retro-kolt, глянешь, вдруг немного не так сделал :zzz:
скуйп - legaalize
Аватара пользователя
Nixon133
 
Сообщения: 476
Зарегистрирован: 13 ноя 2012, 12:20
Благодарил (а): 107 раз.
Поблагодарили: 56 раз.
Опыт программирования: Больше трех лет
Языки программирования: C, Pawn

Re: Создание различных эффектов

Сообщение WaterBall » 06 апр 2014, 17:23

Аватара пользователя
WaterBall
 
Сообщения: 554
Зарегистрирован: 27 май 2011, 10:04
Благодарил (а): 4 раз.
Поблагодарили: 182 раз.
Языки программирования: Counter-Strike 1.6

Re: Создание различных эффектов

Сообщение D34by » 21 апр 2014, 15:14

[pawn]
  1. #define TE_PARTICLEBURST 122 //  Эффект разлета частиц из центра сферы(или куба) к краям

  2. stock CREATE_PARTICLEBURST(Float:FOrigin[3], radius, color, duration)

  3. {

  4.         engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, FOrigin, 0)

  5.         write_byte(TE_PARTICLEBURST)

  6.         engfunc(EngFunc_WriteCoord, FOrigin[0])

  7.         engfunc(EngFunc_WriteCoord, FOrigin[1])

  8.         engfunc(EngFunc_WriteCoord, FOrigin[2])

  9.         write_short(radius) // радиус

  10.         write_byte(color) // цвет

  11.         write_byte(duration) // продолжительность

  12.         message_end()

  13. }
[/pawn]
Палитра эффекта (click to open)
Work with Zombie Plague ver. 4|5, Biohazard, Zombie Engine, Public, Weapon System
Аватара пользователя
D34by
 
Сообщения: 537
Зарегистрирован: 13 фев 2014, 12:45
Благодарил (а): 15 раз.
Поблагодарили: 192 раз.
Опыт программирования: Больше трех лет
Языки программирования: пешка
сишка

Re: Создание различных эффектов

Сообщение Safety1st » 22 апр 2014, 14:46

Ввиду отсутствия общей статьи по SVC_TEMPENTITY, было бы чудесно запилить небольшой экскурс здесь: основные особенности (существуют только на клиенте, свой лимит в 500 энтитей, можно создавать только для конкретных игроков), способы отправки (MSG_*) и как ловить отправку самому (register_event( 23, "MsgTempEntity" / register_message( 23, "MsgTempEntity" ) // SVC_TEMPENTITY). И конкретно по эффектам - как ограничивать время жизни (TE_KILLBEAM для <...>, TE_KILLPLAYERATTACHMENTS для TE_PLAYERATTACHMENT и время жизни для остальных).
Часть из перечисленного я описал Вы должны зарегистрироваться, чтобы видеть ссылки. с расчётом на обновление статьи)
GoldSrc Gaming Community
Аватара пользователя
Safety1st
 
Сообщения: 1958
Зарегистрирован: 08 окт 2011, 05:41
Откуда: Moscow
Благодарил (а): 1690 раз.
Поблагодарили: 933 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

Re: Создание различных эффектов

Сообщение Apofis » 23 апр 2014, 19:23

Developer писал(а):Ввиду отсутствия общей статьи по SVC_TEMPENTITY, было бы чудесно запилить небольшой экскурс здесь: основные особенности (существуют только на клиенте, свой лимит в 500 энтитей, можно создавать только для конкретных игроков), способы отправки (MSG_*) и как ловить отправку самому (register_event( 23, "MsgTempEntity" / register_message( 23, "MsgTempEntity" ) // SVC_TEMPENTITY). И конкретно по эффектам - как ограничивать время жизни (TE_KILLBEAM для <...>, TE_KILLPLAYERATTACHMENTS для TE_PLAYERATTACHMENT и время жизни для остальных).
Часть из перечисленного я описал Вы должны зарегистрироваться, чтобы видеть ссылки. с расчётом на обновление статьи)


Поддерживаю, не плохо бы было глянуть на примерчик
Я конечно посмотрел про TE_BEAMENTS, и SVC_TEMPENTITY, но мало чего понял :(
Аватара пользователя
Apofis
 
Сообщения: 223
Зарегистрирован: 07 сен 2013, 13:09
Благодарил (а): 145 раз.
Поблагодарили: 3 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Создание различных эффектов

Сообщение Safety1st » 23 апр 2014, 20:58

Для TE_BEAMENTS есть готовый код в шапке, просто воспользуйтесь.

Убрать луч - отправить всем игрокам, кому был показан луч ранее, инфу про обоих игроков:
[pawn]
  1. message_begin( receiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, SVC_TEMPENTITY, .player = receiver )

  2. write_byte(TE_KILLBEAM)

  3. write_short(id)

  4. message_end()
[/pawn]receiver - получатель месседжа; = 0, если отправка всем, если определённым - выполняйте в цикле;
id - один из игроков с лучом, для открепления луча от второго такой же месседж, но с id второго. Хотя второй месседж может и не понадобиться, надо посмотреть на практике)
GoldSrc Gaming Community
Аватара пользователя
Safety1st
 
Сообщения: 1958
Зарегистрирован: 08 окт 2011, 05:41
Откуда: Moscow
Благодарил (а): 1690 раз.
Поблагодарили: 933 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

Re: Создание различных эффектов

Сообщение Nixon133 » 20 дек 2014, 14:57

Возможно ли воспроизвести звук выстрела?
К примеру звук оружия АК-47?
скуйп - legaalize
Аватара пользователя
Nixon133
 
Сообщения: 476
Зарегистрирован: 13 ноя 2012, 12:20
Благодарил (а): 107 раз.
Поблагодарили: 56 раз.
Опыт программирования: Больше трех лет
Языки программирования: C, Pawn

Пред.

Вернуться в Статьи / фрагменты кода

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9