Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...
  • 0

Ajouter une Commande Lau


Vinky

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 ..? 

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 2
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans cette question

Jours populaires

Meilleurs contributeurs dans cette question

2 réponses à cette question

Messages recommandés

  • 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 ! 

Modifié par Takuma

J'apprends à compter avec des nombres étranges 

A la recherche de dons pour s'enrichir.

Lien vers le commentaire
Partager sur d’autres 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 :)
 

Modifié par Vinky
Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 21

      Metin2 en 2020 peut-on en parler?

    2. 0

      METIN2Project

    3. 3

      Ressources - UnPack - Metin2 Client - Officiel

    4. 0

      Barre des tâches d'argent étendue

    5. 16

      Redémarrage automatique des channels

    6. 16

      Multi Logo GM / SGM / GA

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.