Salut. J'espère avoir compris ce que tu demandes...
Oui il faudra que tu touches aux sources. Cependant la méthode va dépendre de comment est codé ton système de prestige. Si ton prestige est un attribut propre d'un joueur (char.h), alors tu pourras très certainement suivre exactement la même structure que pour ce qui existe avec le niveau (regarde le fichier questlua_pc.cpp). Si c'est fait moins proprement... Comme une requête SQL qui actualise en tant réel et le prestige et qu'il n'est pas directement intégré au personnage : tu devras faire de même et faire une requête SQL à chaque utilisation de la fonction pour l'obtenir.
Pour te donner quelques indications, la fonction classique pour récupéré le niveau est :
int pc_get_level(lua_State* L)
{
lua_pushnumber(L, CQuestManager::instance().GetCurrentCharacterPtr()->GetLevel());
return 1;
}
Pour la requête en direct c'est un peu plus compliqué... Tu devras sûrement faire quelque chose du genre :
int pc_get_prestige(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
char szQuery[1024];
snprintf(szQuery, sizeof(szQuery), "SELECT prestige FROM player%s WHERE name='%s'", get_table_postfix(), ch->GetName());
std::unique_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery(szQuery));
if (pmsg->Get()->uiNumRows > 0)
{
MYSQL_ROW row = mysql_fetch_row(pmsg->Get()->pSQLResult);
int prestige = 0;
str_to_number(prestige, row[0]);
lua_pushnumber(L, prestige);
return 1;
}
lua_pushnumber(L, -1);
return 1;
}
(C'est du nom testé, ça va dépendre de tes files, ta base de données etc...)
Et pour ajouter la fonction : oui tu devras l'ajouter dans ta liste de fonction, mais aussi à la fin de ton fichier questlua_pc.cpp tu trouveras une liste avec les fonctions déjà bien remplie (luaL_reg pc_functions[]).
Bon courage !