Alle 3 Beispiele sind falsch. Richtig wäre z.B.

i = ((int*)(engine_getvar("IntArray", &varType)))[1];

Aber Ihre Funktion wird sowieso immer 0 liefern. Warum, das lasse ich hier mal wieder als kleine Denksportaufgabe stehen .