Aller au contenu
Kronus

Recherche une Quête

Messages recommandés

Bonjour,

 

Je suis à la recherche d'une quête, qui lorsqu'on clique l'item X on peut choisir d'avoir soit bonus exp / soit bonus yang / soit bonus drop (je parle pas des bonus rate mais du bonus de compte qui se trouve en haut à gauche de l'écran de jeu). Le but c'est d'avoir un item qui nous donne les 3 bonus quand on clique dessus (une fois fait l'item disparait), la durée des bonus est de 30j voilà merci d'avance.

 

Cordialement,

Modifié par Kronus

Partager ce message


Lien à poster
Partager sur d’autres sites

Je pense que tu ne trouveras pas une quête comme ça sauf si quelqu'un a du temps a usé, si je la "trouve" je te partagerais la quête

Modifié par Yazoo

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Je ne sais pas si il y a automatiquement un objet te donnant ces bonus via les sources (je pense bien que si) mais en attendant tu as juste à effectuer une requête SQL via le module sql des quêtes pour simplement effectuer la query qui va remplir le champ dans la base de donnée. C'est dans la base de donnée account.

Si tu effectues un brouillon de la quête ou même la quête complète voire même si tu as besoin d'aide mais que tu montres une ébauche de ta quête actuelle je t'aiderai volontiers à la remplir :)

 

Je fais ça tout simplement car si je te donne la quête toute faite tu ne pourras pas progresser et ça ne t'aidera pas spécialement

 

Au plaisir de te revoir ici :D

Partager ce message


Lien à poster
Partager sur d’autres sites
quest bonus_compte begin
    state start begin
        function give_bonus_compte(account, count)
            mysql_query("UPDATE account.account SET money_drop_rate_expire=money_drop_rate_expire+'"..count.."' WHERE id='"..account.."'")
            syschat("Vous recevez "..count.." jours de bonus double drop yang.")
        end
        function give_bonus_compte(account, count)
            mysql_query("UPDATE account.account SET silver_expire=silver_expire+'"..count.."' WHERE id='"..account.."'")
            syschat("Vous recevez "..count.." jours de bonus double exp.")
        end
        function give_bonus_compte(account, count)
            mysql_query("UPDATE account.account SET gold_expire=gold_expire+'"..count.."' WHERE id='"..account.."'")
            syschat("Vous recevez "..count.." jours de bonus double drop item.")
        end
        when W.use or X.use or Y.use or Z.use begin
            local tableByVnum =
            {
                [W] = 7, -- 7 J
                [X] = 500, -- 15 J
                [Y] = 30, -- 30 J
                [Z] = 60 -- 60 J
            }
            bonus_compte.give_bonus_compte(pc.get_account_id(), tableByVnum[item.get_vnum()])
            item.remove()
        end
    end
end

Voilà j'étais parti la dessus donc si tu as une quête qui le fait et qui marche merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir,

 

Ta quête ne pouvait pas fonctionner à cause de différentes choses, voici déjà pourquoi :

  • 3 fonctions avec le même nom, je pense que ça peut poser soucis
  • Tu essaies de rajouter au champs du bonus la valeur actuelle qu'il possède ainsi qu'un entier. Tu ne peux pas rajouter un chiffre à un datetime.
  • Il faut faire une vérification du nombre de jours correspondant pour éviter les bugs

Voici donc la quête que je te propose, vu que dans ton exemple, un seul item augmente TOUS les bonus de X jours, j'ai décidé de faire pareil.

Le joueur doit attendre de ne plus avoir de bonus actif pour utiliser à nouveau l'objet.

 

Voici la quête commentée :

 

quest bonus begin
	state start begin
		function update_account_bonus(account, count) -- La seule fonction dont nous avons besoin.
			mysql_direct_query("UPDATE account.account SET gold_expire = DATE_ADD(CURDATE(), INTERVAL '"..count.."' DAY), silver_expire = DATE_ADD(CURDATE(), INTERVAL '"..count.."' DAY), money_drop_rate_expire = DATE_ADD(CURDATE(), INTERVAL '"..count.."' DAY) WHERE id = '"..account.."'") -- Aller dans account.account et changer la date des trois champs par X jours selon l'Item où l'id du joueurs est Y.
			syschat("Vos bonus de compte expireront dans "..count.." jours à partir de maintenant.") -- 
			pc.setqf("interval_time", count*86400); -- Temps d'interval en secondes
		end

		when W.use or X.use or Y.use or Z.use begin
			local interval_time = pc.getqf("interval_time");
			if (pc.getqf("last_time")+interval_time < get_time()) then -- Si les bonus ne sont plus présents ou si il n'y a pas eu d'utilisation des bonus alors
				pc.setqf("last_time", get_time()); -- Stocker le temps actuel
				local tableByVnum = -- ID de l'item - Jours
				{
					[W] = 7, -- 7 Jours
					[X] = 15, -- 15 Jours
					[Y] = 30, -- 30 Jours
					[Z] = 60 -- 60 Jours
				}

				bonus.update_account_bonus(pc.get_account_id(), tableByVnum[item.get_vnum()]) -- On envoie le compte du perso & le nombre de jours dans la fonction crée en haut
				item.remove() -- On enlève l'objet
			else -- Sinon
				syschat(string.format("[%s]: Vous devez attendre %s jours avant d'utiliser cet objet.", item_name(item.get_vnum()), math.floor(interval_time/86400))) -- On affiche le nombre de jours estant avant de pouvoir utiliser l'item
			end
		end
	end
end

 

Quête bien entendu Testée & Approuvé !

 

Preuve du fonctionnement :

 

En jeu après avoir utilisé l'objet :

7L4dAGtaSgulNFl2PVgfkg.png

 

Dans la base de donnée après avoir utilisé l'objet :

fU9FtiqiSXG3f3rIniGAEQ.png

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.