I think it's because you are resetting that returned value to 0 everytime - unless you click the last option, then that's the only one that isn't reset - because it's reset with...
IF V_LANGUAGE_E = 0 THEN V_MENU_CHOICE_E = f_TEXT_MENU("QUITTER",8,4)
IF V_LANGUAGE_E = 1 THEN V_MENU_CHOICE_E = f_TEXT_MENU("QUIT",8,4)
See V_MENU_CHOICE_E will always be reset to 0.
In the function, instead of resetting it to 0, reset it to the current value, but set it to -1 before calling any text functions so that you know when any menu item is clicked, maybe something like this:
Rem Project: MENU
Rem Created: Wednesday, May 19, 2010
rem by serge adjo
REM ==========================================================
REM THE PROBLEM IS THAT ONLY THE LAST OPTION / CHOICE RETURN THE CORRECT VALUE, SO, SEE WHAT YOU CAN DO TO FIX IT...
REM ==========================================================
Rem ***** Main Source File *****
SYNC ON
SYNC RATE 60
BACKDROP ON
REM MENUS VARIABLES :
REM V_LANGUAGE_E : 0 = FRENCH ; 1 = ENGLISH
GLOBAL V_LANGUAGE_E = 1
GLOBAL V_TEXT_SIZE_E
GLOBAL V_MENU_CHOICE_E
REM TEXT SIZE, FONT:
V_TEXT_SIZE_E = INT(SCREEN HEIGHT()/25)
SET TEXT FONT "Arial" : SET TEXT SIZE V_TEXT_SIZE_E
REM OUR MENU:
f_MAIN_MENU()
REM THE FUNCTIONS USED:
REM //////////////////////////////
FUNCTION f_MAIN_MENU()
SHOW MOUSE
DO
SET CURSOR 0,0
V_MENU_CHOICE_E=-1
PRINT "CHOICE / OPTION SELECTED: ";V_MENU_CHOICE_E
IF V_LANGUAGE_E = 0 THEN V_MENU_CHOICE_E = f_TEXT_MENU("TIREUR D'ELITE 3D: MENU PRINCIPAL",1,0)
IF V_LANGUAGE_E = 1 THEN V_MENU_CHOICE_E = f_TEXT_MENU("THE SHARPSHOOTER 3D: MAIN MENU",1,0)
IF V_LANGUAGE_E = 0 THEN V_MENU_CHOICE_E = f_TEXT_MENU("JOUER !",3,1)
IF V_LANGUAGE_E = 1 THEN V_MENU_CHOICE_E = f_TEXT_MENU("PLAY !",3,1)
IF V_LANGUAGE_E = 0 THEN V_MENU_CHOICE_E = f_TEXT_MENU("OPTIONS",4,2)
IF V_LANGUAGE_E = 1 THEN V_MENU_CHOICE_E = f_TEXT_MENU("OPTIONS",4,2)
IF V_LANGUAGE_E = 0 THEN V_MENU_CHOICE_E = f_TEXT_MENU("AIDE - COMMANDES",5,3)
IF V_LANGUAGE_E = 1 THEN V_MENU_CHOICE_E = f_TEXT_MENU("HELP - CONTROLS",5,3)
IF V_LANGUAGE_E = 0 THEN V_MENU_CHOICE_E = f_TEXT_MENU("QUITTER",8,4)
IF V_LANGUAGE_E = 1 THEN V_MENU_CHOICE_E = f_TEXT_MENU("QUIT",8,4)
SYNC
LOOP
ENDFUNCTION
REM //////////////////////////////
REM //////////////////////////////
FUNCTION f_TEXT_MENU(v_TEXT_$,v_LINE_E,v_OPTION_N_E)
v_CLICK_E = 0
REM CHANGE THE COLOR WHEN MOUSE IS OVER THE TEXT AND CHECK IF THE USER CLICKS;
IF INT(MOUSEY()/V_TEXT_SIZE_E) = v_LINE_E AND v_OPTION_N_E > 0
INK RGB(255,255,0),RGB(0,0,0)
IF MOUSECLICK()=1
v_CLICK_E = v_OPTION_N_E
ELSE
v_CLICK_E = V_MENU_CHOICE_E
ENDIF
ELSE
INK RGB(255,255,255),RGB(0,0,0)
ENDIF
REM AFFICHE TEXTE;
CENTER TEXT SCREEN WIDTH ( )/2,INT(v_LINE_E*V_TEXT_SIZE_E),v_TEXT_$
ENDFUNCTION v_CLICK_E
REM //////////////////////////////