zEngin jest wyposażony w kilka efektów specjalnych, które mogą być wywoływane z poziomu VisualFX'ów. Są dość mało znane, niektóre nigdy nie użyte i do znalezienia tylko przeszukując kod silnika, dlatego może ten tutorial komuś się przyda. Sposób ich użycia jest dość prosty: tworząc nowy VFX (klasa CFx_Base) w visName_S podajemy po kropce kod efektu (eqk, fow, ltn, scx, slw, tga, trl) i za pomocą userString'ów podajemy ewentualne parametry. Przy ich tworzeniu korzystamy nadal ze standardowych parametrów vfx'ów, np czas trwania określamy za pomocą emFXLifeSpan (-1: permanentny).
Kilka efektów zostało wprowadzonych dopiero w wersji 2.6, dlatego w G1 są niedostępne.
1. Migotanie ekranu (screenblend/zCVobScreenFX) (g1 częściowo)visName_S: *.scx (standardowo "screenblend.scx", danie w nazwie _reverse odtwarza animację od tyłu)
userString[0]: czas trwania pętli (np 100000000000)
userString[1]: kolor (RGBA) (np 0 0 0 100)
userString[2]: czas zanikania (np 0.5)
userString[3]: tekstura (tylko g2nk) (np ScreenFX_Dem_a0)
userString[4]: fps animacji tekstury (tylko g2nk) (np 8)
2. Spowolnienie czasu (slowmotion) (tylko g2nk)visName_S: *.slw (standardowo "time.slw")
userString[0]: skala upływu czasu dla gracza (np 0.5)
userString[1]: skala upływu czasu dla świata (np 1.0)
3. Deformacja ekranu (fov morph) (tylko g2nk)visName_S: *.fov (standardowo "morph.fov")
userString[0]: siła efektu (np 0.8)
userString[1]: szybkość (np 1.0)
userString[2]: bazowa szerokość (puste: wartość domyślna) (np 120)
userString[3]: bazowa wysokość (puste: wartość domyślna) (np 90)
4. Wstrząsy kamery (earthquake/zCEarthquake)visName_S: *.eqk (standardowo "earthquake.eqk")
userString[0]: ? (np 1000)
userString[1]: ? (np 5)
userString[2]: ? (np 5 5 5)
5. Nieskończonej długości pas tekstury obrócony w kierunku kamery (lighting?)visName_S: nazwa_tekstury.ltn (np Lightning_Single.ltn = pas tekstury Lightning_Single.tga)
6. DecalvisName_S: nazwa_tekstury.tga (najprostszy z efektów, chyba nie trzeba tłumaczyć)
7. Elastyczna rozwijająca się wstęga tekstury (nigdy nie zastosowane, znalazłem w silniku g1, być może odpowiada też za ślady za bronią) (polystrip/zCPolyStrip)visName_S: nazwa_tekstury.trl (standardowe polystrip.trl = pas tekstury polystrip.tga)
userString[0]: ?
userString[1]: ?
userString[2]: ?
userString[3]: ?
userString[4]: ?
(eksperymentowałem z różnymi, np jak przyczepiłem do dłoni bohatera, to zostawiała taką dość szeroką, długaśną wstęgę która lekko się kołysała i stopniowo zanikała od końca)
Znaleźć to że teksturę można podawać za pomocą nazwy pomógł znaleźć Monk