Nyu, je bosse sur un moteur de shmup depuis un moment et j'aimerais intégrer LUA pour le scriptage (qui est pour l'instant en XML). J'ai télécharger les sources, compilé et commencé a jouer avec la bête. Petit problème je suis vraiment paumé sur certain point (et argh toute la doc est en anglais). J'ai bien sur regardé les jolies tuto sur developpez.com.


Bon trêve de blabla voici mon problème, j'aimerais charger mes scripts a l'avance et les lancer plus tard. Donc pour tester j'ai fait un exemple bidon.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
    lua_State * state;
    state = lua_open();
    luaopen_string(state);
    luaopen_math(state);
 
 
 
    if (luaL_dostring (state, "test=math.cos(1)") == 1)
        cout << "erreur \n";
 
    lua_pushstring(state,"test");
    lua_gettable(state,LUA_GLOBALSINDEX);
    double result = lua_tonumber(state,-1);
    cout << "Value of result is "<< result << endl;
 
 
    if(luaL_loadstring(state, "test= test + math.cos(1)") != 0)
            cout << "erreur " << endl;;
 
    lua_CFunction test = lua_tocfunction (state, -1);
    if(test == 0)
        cout << "erreur " << endl;
    else
        for (int n =0; n < 100; n++)
        {
            lua_pushcfunction(state, test);
            lua_pcall (state, 0, LUA_MULTRET, 0);
        }
 
    lua_pushstring(state,"test");
    lua_gettable(state,LUA_GLOBALSINDEX);
    result = lua_tonumber(state,-1);
    cout << "Value of result is "<< result << endl;
    lua_close(state);

Problème lua_tocfunction me renvoie 0, j'en conclue que la méthode est mauvaise, seulement comment récupérer le dernier script chargé ?