Jeśli znasz jakieś języki programowania składnią podobne do Javascript, C++, PHP, Java a nawet Basic to nie będziesz miał problemu z przerzuceniem się na Expression 2. Sam język jest prosty składniowo i chyba najbardziej przypomina Javascrpit. Składnia: # ... - Komentarz jednoliniowy #[[ ... ]] - Komentarz wieloliniowy "omnomnom" - String jednoliniowy [[omnomnom]] - String wieloliniowy 0xBAADCODE - Zapis hexadecymalny liczb (duże litery) 8.123e5 - Notacja naukowa (to samo co 812300) Operatory: Przypisania: Zmienna = Wartsc - Przypisanie wartości do zmiennej Operatory warunkowe: Wartosc1 == Wartosc2 Wartosc1 != Wartosc2 Wartosc1 < Wartosc2 Wartosc1 <= Wartosc2 Wartosc1 > Wartosc2 Wartosc1 >= Wartosc2 Operatory logiczne: A | B - Jeśli A lub B (lub oba) są niezerowe wtedy ewaluuje się do 1 A & B - Jeśli A oraz B są niezerowe wtedy ewaluuje się do 1 !A - Jeśli A jest zerowe wtedy ewaluuje się do 1 Operatory arytmetyczne: A + B A - B A * B A / B A ^ B (potęga) Powyższe operatory moża stosować w ten sposób: A += B jest odpowiednikiem A = A+B A /= B jest odpowiednikiem A = A/B etc A++ - Inkrementacja A-- - Dekrementacja Operatory specyficzne do Expression2: ~ZmiennaWejsciowa - "Trigger check" - Sprawdzenie czy obecne wykonanie E2 zostało spowodowane zmianą wejścia. Więcej dowiesz się w praktycznej częsci. $TrwalaZmienna - Delta - Jak wysoka była ostatnia zmiana. Wyłącznie dla zmiennych numerycznych. Więcej dowiesz się w praktycznej częsci. ->ZmiennaWejsciowa- Ewaluuje się do 1 jeśli coś jest podłączone do wejścia. Podstawowe typy zmiennych: number (przy deklaracji nie dajemy typu) - 48-bitowa zmiena zmiennoprzecinkowa - 1 "gmodowy bajt" string - łańcuch znaków vector - wektor 3D, istieją wersje 2D i 4D (vector2 i vector4) angle - kąt wyrażony w 3 składowych (nazwanych Pitch, Yaw i Roll) array - tablica indeksowana numerami table - tablica indeksowana stringami entity - byt - Właściwie wszystko (każdy prop, grasz, broń, bramka czy cokolwiek poza światem) jest bytem, trzymając go w zmiennej możemy np. poruszyć bytem, pobrać jego pozycję, masę etc. Inne ważne typy zmiennych: ranger - Ranger Data - "promień" (raytrace) idący z jakiegoś miejsca w jakimś kierunku, mając go w zmiennej możemy odczytać pozycje uderzenia, kąt powierzchni etc. wirelink - Pozwala operować interfejsem HighSpeed (więcej kiedy indziej) oraz EGP EGP to ekran na którym możemy rysować za pomocą E2 (Expression Graphics Processor) matrix - Macierz 3x3 (są warianty 2x2 i 4x4 - matrix2 oraz matrix4) complex - Liczba zespolona quat - Kwaternion bone - Podobne do entity, z tym że odnosi się do "kości" ragdolla.