Трали-вали,
тили-тили,
скриптов, что мы понаписали,
в ксаше нет и в волатиле.
Показываю рабочую версию скриптов для RenderSystem. Всё максимально просто и довольно интуитивно. Само собой - всё с комментариями. Пример отсортирован по наследованию: сверху параметры текущего класса - далее родительских (которые будут присутствовать в других системах и скриптах).
code:
// This file can contain several systems. They all are created and toggled simultaneously.
// Each system must be enclosed in "{}" braces, each key must have its proper value.
CPSCustom
{
// Brush contents in which particles cannot exist. Calculate as follows: m_iDrawContents |= (1 << abs(CONTENTS_WATER));
//"iDestroyContents" "0"
// Particle start scale range
"fScaleMin" "0.05"
"fScaleMax" "0.2"
// If defined, particles start randomly inside this sphere relatively to host entity origin
"fStartRadiusMin" "128"
"fStartRadiusMax" "256"
// If defined (and no radius), particles start randomly inside this box relatively to host entity origin
//"vStartMins" "-16 -16 -16"
//"vStartMaxs" "16 16 16"
// Velocity after reflection is multiplied by this value
"fBounceFactor" "0"
// Spread vector (for directed movement)
"vSpread" "0 0 0"
// Acceleration range
//"vAccelMin" "0 0 0"
//"vAccelMax" "0 0 0"
// Particle velocity.x = vDirection.x*RANDOM_FLOAT(fParticleSpeedMin, fParticleSpeedMax) + vSinMax.x*sin(t+i) + vCosMax.x*cos(t+i);
//"vSinMax" "0 0 0"
//"vCosMax" "0 0 0"
// Custom Particle flags
// PSCUSTOM_PFLAG_ORIENTED_START 1
// PSCUSTOM_PFLAG_ORIENTED_HIT_SURFACE 2
// PSCUSTOM_PFLAG_ORIENTED_HIT_LIQUID 4
// PSCUSTOM_PFLAG_LOOPFRAMES_HIT_SURFACE 8
// PSCUSTOM_PFLAG_LOOPFRAMES_HIT_LIQUID 16
// PSCUSTOM_PFLAG_HIT_FADEOUT 32
"iParticleFlags" "4"
// Trace flags (defines clipping behavior), 0 is the slowest option.
//PM_STUDIO_IGNORE 1// Skip studio models (faster)
//PM_STUDIO_BOX 2// Use boxes for non-complex studio models (even in traceline) (faster)
//PM_GLASS_IGNORE 4// Ignore entities with non-normal rendermode
//PM_WORLD_ONLY 8// Only trace against the world (fastest)
"iTraceFlags" "8"
// Concept: decreases every frame along life time of a particle: if brightness is decreasing, energy == brightness; energy == -brightness otherwise.
//"energystart" "1.0"
"iMaxParticles" "512"
// Linear speed range
"fParticleSpeedMin" "128"
"fParticleSpeedMax" "256"
// Particle start type:
// PSSTARTTYPE_POINT = 0,
// PSSTARTTYPE_SPHERE,
// PSSTARTTYPE_BOX,
// PSSTARTTYPE_LINE,
// PSSTARTTYPE_ENTITYBBOX
"iStartType" "4"
// Particle movement type:
// PSMOVTYPE_DIRECTED = 0,
// PSMOVTYPE_OUTWARDS,// explosion
// PSMOVTYPE_INWARDS,// implosion
// PSMOVTYPE_RANDOM
"iMovementType" "1"
// For movement type 0
"vDirection" "0 0 1"
// Overrides internal value
//"vOrigin" "0 0 0"
// System velocity (ignored because system moves with its host entity)
//"vVelocity" "0 0 0"
// Useless for now
//"vAngles" "0 0 0"
// Added every frame
//"anglesdelta"
// Offset from host entity origin (rotated according to entity orientation)
"vOffset" "0 0 16"
// Relative scale
"fScale" "1.0"
// Added every frame
"fScaleDelta" "40.0"
// Same as "a" in color
//"brightness" "1.0"
// Added every frame OBSOLETE: use "a" of colordelta
//"brightnessdelta" "0.0"
// Starting frame (useful with frame rate 0)
"iFrame" "0"
// Can be 0 to use specific frame of a sprite
"fFramerate" "20"
// Initial color (range minimum)
"Color4b" "0 0 0 255"
// Initial color (range maximum) Particle color = RANDOM(Color4b, ColorMax4b)
"ColorMax4b" "255 255 255 255"
// Added every frame
//"ColorDelta4f" "0.25 0.25 0.25 -0.25"
"ColorDelta4f" "1 1 1 -0.25"
// Particle dimensions (taken from sprite if == 0)
//"fSizeX" "0"
//"fSizeY" "0"
// Standard HL render mode
"iRenderMode" "5"
// Standard HL render fx (unused)
//"rendereffects" "0"
// Brush contents in which particles can exist. Calculate as follows: m_iDrawContents |= (1 << abs(CONTENTS_WATER));
"iDrawContents" "0"
// If true, faces are drawn double-sided
"iDoubleSided" "0"
// System flags (sum of all desired flags)
// RENDERSYSTEM_FLAG_RANDOMFRAME 1// random frame sequence
// RENDERSYSTEM_FLAG_CLIPREMOVE 2// remove upon touching architecture
// RENDERSYSTEM_FLAG_NOCLIP 4// persist inside architecture
// RENDERSYSTEM_FLAG_LOOPFRAMES 8// don't remove after displaying last frame (when no life time set)
// RENDERSYSTEM_FLAG_ADDPHYSICS 16// interact with world (bounce upon collisions, etc.)
// RENDERSYSTEM_FLAG_DRAWALWAYS 32// ignore visibility checks (draw behind walls, outside visible area)
// RENDERSYSTEM_FLAG_7 64// unused
// RENDERSYSTEM_FLAG_SIMULTANEOUS 128// emit all particles at start
// RENDERSYSTEM_FLAG_ADDGRAVITY 256// add world gravity to system acceleration
// RENDERSYSTEM_FLAG_ZROTATION 512// rotate around Z axis only (when parallel to viewport)
// RENDERSYSTEM_FLAG_NODRAW 1024// don't draw (but still update normally)
// RENDERSYSTEM_FLAG_INCONTENTSONLY 2048// remove outside desired contents (system or just praticles)
// 8+16+256
"iFlags" "280"
// CRenderSystem follow flags (sum of all desired flags), ICNF == "if cannot follow"
// RENDERSYSTEM_FFLAG_ICNF_KEEPSEARCHING 0// default: keep searching
// RENDERSYSTEM_FFLAG_ICNF_REMOVE 1// remove if can not find entity
// RENDERSYSTEM_FFLAG_ICNF_STAYANDFORGET 2// stop copying origin and just stay at last coordinates
// RENDERSYSTEM_FFLAG_ICNF_NODRAW 4// hide if can not find entity
// RENDERSYSTEM_FFLAG_CLIPREMOVE 8// remove upon touching architecture (even if entity still exists)
// RENDERSYSTEM_FFLAG_USEOFFSET 16// system origin = entity origin + offset
// RENDERSYSTEM_FFLAG_NOANGLES 32// don't copy angles
// RENDERSYSTEM_FFLAG_DONTFOLLOW 64// don't copy origin even if entity is found
"iFollowFlags" "52"
// Studio model attachment if host entity has it
"iFollowAttachment" "0"
// Sprite path relative to game mod directory in forward slash (URL/UNIX) format
"szTexture" "sprites/eshock.spr"
"szTextureHitLiquid" "sprites/xflare1.spr"
"szTextureHitSurface" "sprites/iexplo.spr"
}
Данный пример подключается к func_train'у и в его объёме генерирует разноцветные частицы, слегка подлетающие вверх, но быстро падающих под действием силы тяготения и при этом увеличивающихся в размере. При столкновении с твёрдыми телами они взрываются, а с жидкостями - образуют горизонтальные воронки. Всё это можно двигать, включать и выключать.
XF-Alien: а для тебя персонально и АИ в частности в RS есть весьма приятный сюрприз
Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.
Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.
(_-=ZhekA=-_)
Жил-был моддер Саша Любил страну он нашу
Он кушал манную кашу
И вылез он однажды
За лимиты ксаша...
~ X ~
А для чего RENDERSYSTEM_FLAG_7?
Если бы я юзал рендерсистем, то обязательно бы его ставил всем партиклям. Может, он для лучшей совместимости с Win7?
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.
Цитата:
XaeroX писал: А для чего RENDERSYSTEM_FLAG_7?
Нет, windows 7 это всё ещё NT6x. Вот когда выйдет настоящая вин7... А вообще - мистическо-магический флаг. Если его включаешь, можно ненароком угодить в Глубину.
Цитата:
XaeroX писал: В новой волатиле хочу завести не описательные, а исполняемые скрипты. Проблема, как водится, в редакторе - pfxEd не такой уж расширяемый, а новый писать некогда.
Ну да-да, исполняемый, с ОпенЦЛ, кластеризацией, SLI/CrossFire, поддержкой грид-расчётов... (9_9)
В халве достаточно параметрической ПС. Инфа 100%. Моддеры даже аврору с трудом осиливают, а там такоооое воображение потребуется.......
Кстати, надо на клиенте запилить CLI аналогично моему серверному, от которого прёцца thambs - searchRS <name> <show|set|del|info> <key> <value>. Для работы с энтитями оно себя зарекомендовало просто шикарно.
Всё ещё нужен способ генерить точки внутри бсп-брашей.
~ X ~ писал: В халве достаточно параметрической ПС. Инфа 100%.
В оригинальной халфе-то? Ну да, я знаю. Там партиклям можно калбэк назначать.
У халфовских партиклей всего один минус, но жирный - им нельзя поменять текстуру. Это всегда точка.
Добавлено 13-12-2015 в 22:41:
Цитата:
~ X ~ писал: Всё ещё нужен способ генерить точки внутри бсп-брашей.
При компиляции в халфовский бсп-формат информация о брашах, увы, теряется.
В ку2 и ку3 - нет, а в ку1 и халфе - увы и ах.