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 !

Snobi

 tutoriel / partage Courrier hors ligne ! By profStof EB

Messages recommandés

Source : EB 

Alors j'ai refait tous le travail, testé et ça marche à 100%

 

 

 

Une image: 

Contenu Masqué !

    Donnez un like à l'auteur afin de pouvoir visualiser tout le contenu.

 

 

 

Notre petit système est basé sur une quête et une table SQL

 

Replacer ID_PNJ par l'ID du PNJ que vous voulez utiliser (ligne 33)
 
-----------------------------------

-- Système de message hors ligne --

-- Par: Prof-Stof                --

-----------------------------------

quest courrier begin

	state start begin

		when login begin

            loop_timer("check_msg", 7200) 	-- Vérifier tout les 2 heures, vous pouvez le changer :)

        end

		when login or check_msg.timer begin

			local inbox = mysql_query("select * from player.inbox where reciever = '"..pc.get_name().."' ")

			local inbox_table = {}

			for i = 1,table.getn(inbox),1 do

				table.insert(inbox_table,inbox.objet[i])

			end

			table.insert(inbox_table,"Fermer")	

			if(table.getn(inbox) != 0) then

				say_title("Notification:")

				say("")

				say("")

				say("")

				say("")

				say("")

				say("  Vous avez un message, regardez votre courrier ! ")

				say("")

				say("")

				say("")

				say("")

				say("")

				wait()

			end

		end

		when ID_PNJ.chat."Courrier" begin

			say_title(mob_name(npc.get_race())..":")

			say("")

			---

			say("Salut "..pc.name)

			say("Qu'est ce que tu veux faire ? ")

			say("")

			local s = select("Voir mes courriers","Envoyer un courrier","Fermer")

			if(s == 1) then

				say_title(mob_name(npc.get_race())..":")

				say("")

				---

				local inbox = mysql_query("select * from player.inbox where reciever = '"..pc.get_name().."' ")

				local inbox_table = {}

				for i = 1,table.getn(inbox),1 do

					table.insert(inbox_table,inbox.objet[i])

				end

				table.insert(inbox_table,"Fermer")


				if(table.getn(inbox) == 0) then

					say("")

					say("")

					say("Votre boite de reception est vide ! ")

					say("")

					say("")

					return

				end


				local m = select_table(inbox_table)

				if(table.getn(inbox_table) == s) then

					return

				elseif(table.getn(inbox_table) >= s) then

					say_title(inbox.sender[m]..": ")

					say("")

					---

					say(inbox_table,inbox.message[m])

					mysql_query("UPDATE player.inbox SET lu='1' WHERE id = '"..inbox.id[m].."'; ")

					say("")

					say_reward("Voulez-vous supprimer ce message ? ")

					local q = select(locale.yes,locale.no)

					if(q == 2) then

						return

					end

					mysql_query("DELETE FROM player.inbox WHERE id = '"..inbox.id[m].."'; ")

					say_title(mob_name(npc.get_race())..":")

					say("")

					---

					say("Message supprime avec succes. ")

					say("Merci. ")

					say("")

				end

			elseif(s == 2) then

				say_title(mob_name(npc.get_race())..":")

				say("")

				---

				say("A qui vous allez envoyer le message ? ")

				say("Ecrivez son nom ici. ")

				local sname = input()

				if sname == "" then

				---                                                   l

					say_title(mob_name(npc.get_race())..":")

					say("Euh ... il faudrait me dire le nom de la personne !")

					say("Recommencez si vous voulez.")

					npc.unlock()

					return

				end

				local sp = pc.select(sname)

				local l = pc.get_player_id()

				pc.select(sp)

				say_title(mob_name(npc.get_race())..":")	

				say("")

				say("Veuillez saisir l'objet:")

				say("")

				say("")

				local objet = input()

				if objet == "" then

				---                                                   l

					say_title(mob_name(npc.get_race())..":")

					say("Vous devez saisir l'objet !")

					say("Recommencez si vous voulez.")

					npc.unlock()

					return

				end

				say_title(mob_name(npc.get_race())..":")

				say("")

				say("Ecrivez votre message ici: ")

				local message1 = input()

				say_title(mob_name(npc.get_race())..":")

				say("")

				say("Ecrivez votre message ici: ")

				say("Laissez vide si vous avez termine !")

				local message2 = input()

				say_title(mob_name(npc.get_race())..":")

				say("")

				say("Ecrivez votre message ici: ")

				say("Laissez vide si vous avez termine !")

				local message3 = input()

				say_title(mob_name(npc.get_race())..":")

				say("")

				say("Ecrivez votre message ici: ")

				say("Laissez vide si vous avez termine !")

				local message4 = input()

				say_title(mob_name(npc.get_race())..":")

				say("")

				say("Ecrivez votre message ici: ")

				say("Laissez vide si vous avez termine !")

				local message5 = input()

				say_title(mob_name(npc.get_race())..":")

				say("")

				say("Ecrivez votre message ici: ")

				say("Laissez vide si vous avez termine !")

				local message6 = input()

				say_title(mob_name(npc.get_race())..":")

				say("")

				---

				if(tostring(message1) == nil or message1 == "") then

					say("Ecrivez votre message ! ")

					return

				end

				mysql_query("INSERT INTO player.inbox (sender, reciever, objet, message) VALUES ('"..pc.name.."','"..sname.."','"..objet.."','"..message1.." "..message2.." "..message3.." "..message4.." "..message5.." "..message6.."'); ")

				say("Message envoye avec succes. ")

				say("Merci. ")

			end

		end

	end

end

 

La table SQL à créer dans la base Player

 

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for `inbox`

-- ----------------------------

DROP TABLE IF EXISTS `inbox`;

CREATE TABLE `inbox` (

 `id` int(16) NOT NULL auto_increment,

 `sender` varchar(50) NOT NULL,

 `reciever` varchar(50) NOT NULL,

 `objet` varchar(50) NOT NULL,

 `message` varchar(20000) NOT NULL,

 `lu` int(10) NOT NULL default '0',

 PRIMARY KEY  (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=27 DEFAULT CHARSET=latin1;

Un petit merci ne tue pas ;) 

Modifié par FrancH

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut, déjà merci pour cette quêtes mais malheureusement, quand je veux lire le courrier qu'un joueur m'envoie celà ne me l'affiche pas... Une solution?o.O

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

×

Information importante

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