Aller au contenu

Nouveau membre ?! Pense à te présenter pour accéder au contenu du forum !

New member ?! Introduce yourself to get access to the forum !

  • 0
Nightmaree

en cours Affichage d'une colonne dans player dans une quête.

Question

Bonjour,

 

J'ai un soucis niveau quête, j'aimerais afficher dans une quête les stats d'un joueur (quête statistique),

J'ai voulu afficher une colonne que j'ai crée (kill) dans player.player.

 

Recherches et tests effectué :

 

J'ai rajouté ça dans questlib :

 

- pc_index_table = {

['kill'] = pc.get_kill,

 

Puis ça dans quest_functions:

 

pc.get_kill

 

Et enfin dans la quête :

 

quest statjoueurr begin

state start begin

when letter begin

send_letter("Info Personnage")

end

when button or info begin

say_title("Statistique joueur")

say("Bonjour".." "..pc.get_name().."!")

say("")

say(" Kill : ".." "..pc.get_kill().."")

end

end

end

 

Résultat des recherches et tests :

 

Et voilà j'ai quoi : http://prntscr.com/a7pnv4

 

 

 

J'ai essayer plusieurs chose (modifié la quête etc...), mais rien ne change.

Si quelqu'un pourrait m'aider ? Merci d'avance. Happy

Partager ce message


Lien à poster
Partager sur d’autres sites

18 réponses à cette question

Messages recommandés

  • 0

Sauf erreur de ma part, la commande "pc.get_kill" n’existe pas dans les sources... De ce fait, je pense que le mieux serait d'utiliser un when kill et d'isoler la condition de l'empire rouge / bleu / jaune afin de ressortir uniquement le notre de mob tués

 

Il y a une quête ici et même un Killgui :)

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

KillGui je l'avais oublié. Merci je vais tester ça..

Pour mon test avec les quêtes je voulais pas afficher le nombre de mob tué mais le nombre de kill en PvP :)

Et c'était uniquement un test j'ai vu qu'on pouvait afficher dans le classement guilde les points, victoires etc... Mais si il faut ajouter la commande "pc.get_kill" dans les sources, tu peux me dire où précisément ( dans quel fichier ) ?

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Visiblement la commande existe déjà dans le questlua_pc

 

Sinon, comme je t'ai dit, tu fais un check si la victime est un rouge / bleu / jaune :

 

       when kill begin
           if npc.is_pc() then
               if npc.empire == 1 then
                   pc.setqf("rouge", pc.getqf("rouge") + 1)
               elseif npc.empire == 2 then
                   pc.setqf("jaune", pc.getqf("jaune") + 1)
               else
                   pc.setqf("bleu", pc.getqf("bleu") + 1)
               end
           else
               pc.setqf("mob", pc.getqf("mob") + 1)
           end
        end

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Je voulais juste afficher ce qu'il y avait dans une colonne d'une table et ça dans une quête.

Pas seulement les kills mais mais autre chose, comme les points gagnés en fonction des kills, le rang dans le classement, le nombre de tournois gagné, etc... Un peu comme la quête statistique de Impérial mais je sais pas comment ça fonctionne sur Impérial.

La quête statistique du lien de doberman affiche pas les valeurs exacte que celui qu'il y a dans les tables.. Et le soucis avec ce genre de quête est que si le joueur fait des kills et que la quête fonctionne pas, le nombre de kill sera différent dans le classement PvP et dans la quête.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

tu peux le faire avec un select exemple :

 

mysql_query("select nomcolonne from player.nomdetable where nomdujoueur =' "..pc.get_name().."' ")

 

je fais cela de tête, pour te guider, je pense que tu pourrais trouver des exemples de quête avec mysql_query. N'ayant pas réellement une quête avec l'insertion de tes kills dans la base de donnée, je peux pas trop t'aider avec précision, pour créer la fonction.

 

Je te conseille au passage, de créer une table indépendante de player.player, où tu pourras remplir correctement tes champs via ta quête ( ex: id, nom du joueur, etc, en fonction de l'information que tu souhaites avoir). La table player.player est fragile à modifier comme tu l'as fait. C'est un conseil pas une obligation ^^"

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Plus simple, sur le site mon classement PvP affiche les kills de chaque personnage, à partir d'une colonne crée (kills) dans la table player.player, je cherche à faire la même chose IG dans une quête si possible.

 

Exemple dans la quête :

Votre rang : 1

Nombre total de Kill : 500

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Tu ne peux pas mettre de fonctions dans une valeur de table.

 

De plus, si tu passes par "pc." tu dois obligatoirement faire ça en C++ (car toutes les fonctions pc. sont déclarées dans questlua_pc.cpp)

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Plus simple, sur le site mon classement PvP affiche les kills de chaque personnage, à partir d'une colonne crée (kills) dans la table player.player, je cherche à faire la même chose IG dans une quête si possible.

 

Exemple dans la quête :

Votre rang : 1

Nombre total de Kill : 500

 

Ah, ok, j'avais un peu mal compris ce que tu souhaitais. Pour récupérer l'information qu'il y a dans ta colonne, tu peux utiliser mysql_query comme je te l'ai dit avant.

 

Tu réalises ta requête mysql dans une fonction, exemple "function point_kill", et lors de ton affichage de texte, tu vas récupérer l'information de ta colonne, grâce au nom de la fonction.

 

Et aussi je me pose la question, dans ton exemple tu donnes

 

Votre rang : 1 ( c'est la place du joueur dans ton classement?)

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Plus simple, sur le site mon classement PvP affiche les kills de chaque personnage, à partir d'une colonne crée (kills) dans la table player.player, je cherche à faire la même chose IG dans une quête si possible.

 

Exemple dans la quête :

Votre rang : 1

Nombre total de Kill : 500

 

Ah, ok, j'avais un peu mal compris ce que tu souhaitais. Pour récupérer l'information qu'il y a dans ta colonne, tu peux utiliser mysql_query comme je te l'ai dit avant.

 

Tu réalises ta requête mysql dans une fonction, exemple "function point_kill", et lors de ton affichage de texte, tu vas récupérer l'information de ta colonne, grâce au nom de la fonction.

 

Et aussi je me pose la question, dans ton exemple tu donnes

 

Votre rang : 1 ( c'est la place du joueur dans ton classement?)

 

J'ai mis rang 1 comme exemple en gros ce que je veux faire comme tu l'as dis plus haut c'est récupérer l'information qu'il y a dans une des colonnes que j'ai crée, puis l'afficher dans une quête tout simplement.

 

Habituellement, les classements pvp avec rang se font avec des qf pour ne pas  surcharger le dédié.

 

Envoie-moi un message privé, je te donnerai ma quête (qui gère aussi 'vous avez fait X kills d'affilée' à partir de 4) + la partie website pour que tu vois à quoi ça ressemble

 

Oui j'ai fais une quête du genre aussi qui compte les kills et gères d'affilée. Et la partie web aussi.

Pour faire simple, comme je l'ai dis à Sanya, je veux récuprer l'information qu'il y a dans une des colonnes que j'ai crée puis l'afficher.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

D'accord, je reste de l'avis de tout le monde en te disant, que cela va faire tu travailles les requêtes, et l'idéal et d'utiliser les setqf et getqf, tu sais donner le bout de ta quête, pour adapter ta demande?

 

Aussi, si tu veux afficher le rang, en fonction du classement de ton site web, cela sera encore plus lourd, car tu aurais deux, voir 3 requêtes sql, ce que je te déconseille encore plus :P

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

D'accord, je reste de l'avis de tout le monde en te disant, que cela va faire tu travailles les requêtes, et l'idéal et d'utiliser les setqf et getqf, tu sais donner le bout de ta quête, pour adapter ta demande?

 

Aussi, si tu veux afficher le rang, en fonction du classement de ton site web, cela sera encore plus lourd, car tu aurais deux, voir 3 requêtes sql, ce que je te déconseille encore plus :P

 

 

 

Oui le rang j'allais pas le faire c'est simplement pour vous montrez ce que je voulais.

Enfin bref, je vais essayer une autre méthode et voir si ça fonctionne.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Et bah tu la récupère avec mysql_query :

local recuperer = mysql_query("SELECT etc.")
say(recuperer)

 

Si c'est pas ça je comprends pas du tout ta demande

 

Si c'est ce que je voulais, mais quand j'ai tester ça, rien s'afficher.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

quest test begin

state start begin

when letter begin

send_letter("testmessage")

end

when button or info begin

local s = select ("test", "Retour")

if s == 1 then

say_title("test:")

local recup = mysql_query("SELECT kills from player.player where name='"..pc.get_name().."'")

say("")

say(recup)

say("")

end

end

end

end

 

 

 

 

résultat :

 

http://prntscr.com/ab3vqe

 

 

La quête fonctionne si je met que du texte

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

J'ai essayé ça aussi fonctionne pas :huh:

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

tu as bien la fonction mysql_query déclaré dans ton questlib, si non, une recherche te donnera directement la fonction

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

tu as bien la fonction mysql_query déclaré dans ton questlib, si non, une recherche te donnera directement la fonction

 

Oui la fonction est déclaré, par contre je viens de remarquer un petit soucis sur putty :

 

mysql: ambiguous option '--e=SELECT ...

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

           local recup = mysql_query("SELECT player.kills from player.player where player.name = '"..pc.get_name().."'")
           say(""..recup.."")

 

=>

 

           local recup = mysql_query("SELECT player.kills from player.player where player.name = '"..pc.get_name().."'")
           say(recup[1][1])

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Parfait ça fonctionne.

Merci Ant0k et les autres. :)

 

Je change la balise.

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.

×

Information importante

By using this site, you agree to our Conditions d’utilisation.