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

LUA - Requêtes SQL avec des Boucles


Swice

Messages recommandés

Niveau requis Intermédiaire

Temps estimé : 30 minutes

Bonjour,

 

Aujourd'hui je viens vous présenter mon second tutoriel, qui vous expliquera comment créer un requête SQL à l'aide des boucles. Je vais commencer par redéfinir les requêtes avec des mots simples et facilement compréhensifs. C'est en quelques sortes une demande, on cherche à faire une action dans une base de données. Par exemple, une requête peut servir à sélectionner des informations en fonction de critères, à entrer des informations, à en modifier ou à en supprimer dans la base de données. Tout d'abord, je précise une chose. Il est préférable de faire une requête SQL à partir d'une boucle dans une fonction que l'on appellera dans la quête.

 

Révélation

 

Commençons par la base de données. On nommera la table "requête" et elle se trouvera dans la base de données "player". Admettons que nous ayons plusieurs champs tel que "id" (correspondant à l'id du personnage), "points_de_vie" et "points_de_magie". Au début de la quête, on aura une requête d'ajout, se trouvant dans une autre fonction (que vous pouvez appeler "start" par exemple), comme celle là (avec la valeur de 'id' définie par : id = pc.get_player_id()) :


mysql_query("INSERT INTO player.requete (id, points_de_vie, points_de_magie) VALUES ("..id..", 0, 0)")
La table se compose maintenant de 3 entrées : id, contenant l'id du joueur ; points_de_vie, contenant 0 ; points_de_magie, contenant 0. Je tiens à préciser que les deux derniers champs ne sont pas 'logiques' puisque le joueur doit avoir des points de vie et de magie. Je veux juste vous montrer comment faire une boucle pour ajouter des valeurs dans ces entrées. Je vais faire un tableau, à ajouter dans la quête ou dans le questlib.lua (attention, vous n'êtes en aucun cas obligé de faire des tableaux, mais je vous le conseil fortement pour ce type de fonction) :

tableau_requete_boucles = {vie, magie}
Passons à la boucles : Admettons que je souhaite mettre 600 points de vie et de magie à un joueur. Je vais faire ça :

function requete_boucle()
	local id = pc.get_player_id() // on prend l'id du joueur
	local req = "UPDATE player.requete SET " // on commence la requête
	for i = 1, table.getn(tableau_requete_boucles) do // pour 'i' allant de 1 à la taille du tableau 'tableau_requete_boucles', qui est de 2 ici, faire
		req = req.."points_de_"..tableau_requete_boucles[i][1] = 600..", " // on ajoute les morceaux de la requête avec la boucle
		req = string.sub(req, 1, string.len(req)-2) // on supprime les 2 dernieres caractères de la fonction, qui sont : , et un espace
		req = req.." WHERE id = "..id..";" // on ajoute la dernière partie de la requête
		mysql_query(req)
	end
end
Pour ce type de requête, qui est très courte, ce n'est pas très utile, mais préférez faire ceci lorsque vous faites de longues requêtes !

Voici la requête normale :


mysql_query("UPDATE player.requete SET points_de_vie = 600, points_de_magie = 600 WHERE id = "..id..";")
Ce système est bien sûr modifiable à volonté, à vous de lui trouver une utilité !

 

 

Cordialement,

Hey hey

  • Metin2 Dev 1
  • Love 1
Lien vers le commentaire
Partager sur d’autres sites

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

Meilleurs contributeurs dans ce sujet

  • 3 ans après...


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