Jump to content
×
×
  • Create New...
  • 0

Ajouter une Commande Lau


Vinky
 Share

Question

Bonjour, 

J'aurais aimé savoir comment créer une règle de vérification en lua ? 

Comme par exemple le pc.get_level qui permet de vérifier le level du joueurs! 

Par exemple, j'aimerais qu'avec la commande pc.get_prestige il vérifie le level du prestige qui ce trouve dans player => player (côté bdd, tous comme le level d'ailleurs) 

Exemple de quête de codage quête que j'aurais aimé avoir comme résultat : 

if pc.get_prestige() == 1 
   say:  Woua Félicitation t'es prestige 1
end 

Merci pour votre aide! 
PS : je me doute qui va falloir créer la commande également dans quest_function (source et file) mais dans les sources il faut bien mettre quelques chose ..? 

Link to comment
Share on other sites

  • Answers 2
  • Created
  • Last Reply

Top Posters For This Question

Popular Days

Top Posters For This Question

2 answers to this question

Recommended Posts

  • 0

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 ! 

Edited by Takuma

J'apprends à compter avec des nombres étranges 

A la recherche de dons pour s'enrichir.

Link to comment
Share on other sites

  • 0

Problème résolue! 
Dans questlua_pc.cpp
 

// J'ai rechercher

	int pc_get_level(lua_State* L)
	{
		lua_pushnumber(L, CQuestManager::instance().GetCurrentCharacterPtr()->GetLevel());
		return 1;
	}

// Et ajouter en dessous : 

	int pc_get_prestige(lua_State* L)
	{
		lua_pushnumber(L, CQuestManager::instance().GetCurrentCharacterPtr()->GetPrestige());
		return 1;
	}



Et tout à la fin :  

 

// J'ai trouvé ça : 

{ "get_level",		pc_get_level		},

// J'ai rajouté en dessous : 

{ "get_prestige",		pc_get_prestige		},


Dans le fichier Quest (Source) => Dossier QuestFunction => Rajouter pc.get_prestige (faire la même chose dans Quest (côté files)). 

Merci à vous :)
 

Edited by Vinky
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share



Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.