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

[PVP] Grade de guerre


Emulateur

Messages recommandés

Centre de Téléchargement

Hidden Content

    Give reaction to this post to see the hidden content.
( Interne )

Hello la communauté !

Je vous partage une quête que j'avais trouvé sur un forum turc et que j'ai testé sur mon serveur.

 

Explication de la quête :

 

Chaque joueurs pourra gagner des grades différents en fonction du nombre de kills qu'ils auront effectuer.

 

Exemple : Une fois que le joueur obtient 50 kills il accède au premier grade et donc il verra le grade (Tr) devant son pseudo.

Grades disponibles à 50kills, 150kills etc jusqu’à 3500 kills.

 

/!\ Le module mysql doit être installé sur votre serveur pour le bon fonctionnement de la quête /!\

 

Voici la quête :

(Partie mysql en pièce jointe)

quest gokhancarkacirutbev1 begin
	state start begin
		 when letter begin
	send_letter ("Grade de guerre")
		end
		when button or info begin
								say_title("Informations sur le système")
								say("")
								say("Bonjour "..pc.getname()..", les experts disent que vous voulez [ENTER]être un soldat?")

								local b=select("Oui", "Non")
									if 1==b then
								say_title("Informations sur le système")
								say("")
								say("Avec plaisir alors...[ENTER]Vous voulez que je vous donne quelques informations?")
								say("D'accord... Eh bien, écoutez-moi.")
								say("Pour distinguer chaque joueurs on a mit en place un")
								say("système de grades en fonction de vos kills.")
								say("Le premier grade est à 50kills.")
									wait()  
								say_title("Informations sur le système")
								say("")
								say("Un total de 9 grades à gagner pour prouver votre niveau.")
								say("Les grades seront devant votre pseudo une fois gagné.")
								say("Voici les grades qui peuvent être obtenu:")
								say("(Tr) Stagiaire à 50 Kills[ENTER](Sg) Sergent à 150 Kills[ENTER](Mt) Master à 250 Kills[ENTER](Cs) Commandant Sergent à 400 Kills[ENTER](Sl) Second Lieutenant à 600 Kills[ENTER](Fl) First Lieutenant à 800 Kills[ENTER]")
									wait ( )
								say_title("Informations sur le système")
								say("")
								say("(Ct) Capitaine à 1200 Kills[ENTER](Co) Colonel à 2000 Kills[ENTER](Or) Général à 3500 Kills")
								say("Plus de détails sur les grades:")
								say("Chaque grade obtenu sera actif 1 heure maximum après")
								say("l'avoir reçu et il sera ajouté automatiquement.")
								say("Chaque grade vous accompagne de différents bonus.")
								say("Bonne chance.")
									elseif 2==b then
								say("Hmm, vous n'êtes pas assez courageux !")
							end
						  end
						  
						  
			when kill with npc.is_pc() begin
					pc.setqf("blackforceqetqf", pc.getqf("blackforceqetqf")+1)
					local vid = npc.get_vid()
					local old_pc = pc.select(vid)
					if old_pc != 0 then
					local leveli = pc.get_level()
					local isimi = pc.get_name()
					pc.select(old_pc)
					syschat("Félicitations ! Vous gagnez des points pour votre grade.")


					if pc.getqf("blackforceqetqf") == 1 then
						syschat("Félicitations, vous allez combattre pour un grade.")
							syschat("Bonne chance sur GreatestMt2")
							syschat("Premier grade à 50 kills.")
							syschat("Système : Données sauvegardées.")
							syschat("")
							notice_all("Niveau"..pc.get_level().." " .. pc . get_name ( ) .. ", a kill Niveau"..leveli.." "..isimi.." sur GreatestMt2.")
							mysql_query("insert into player.gokhancarkaci values ('"..pc.get_account_id().."','"..pc.get_name().."','V1 versiyonu kullanmaktasiniz') ")
					elseif pc.getqf("blackforceqetqf") == 50 then
							syschat("Félicitations, vous avez reçu votre grade.")
							syschat("Votre pseudo va changer dans 1 heure maximum.")
							syschat("Grade gagné : (Tr) Stagiaire.")
							syschat("Récompense : +25 de vitesse de déplacement.")
							notice_all("" .. pc . get_name ( ) .. " a été promu (Tr)!")
							affect . add_collect ( apply . MOV_SPEED , 25 , 60 * 60 * 24 * 365 * 60 ) 
							local gcarkaci = mysql_query("SELECT adi FROM player.gokhancarkaci WHERE id = '"..pc.get_account_id().."' ")  
							local a = gcarkaci.adi[1] 
							mysql_query ( "UPDATE player.player SET name='(Tr)"..a.."' WHERE name='" .. pc . get_name ( ) .. "';" ) 
					elseif pc.getqf("blackforceqetqf") == 150 then
							syschat("Félicitations, vous avez reçu votre grade.")
							syschat("Votre pseudo va changer dans 1 heure maximum.")
							syschat("Grade gagné : (Sg) Sergent.")
							syschat("Récompense : +25 de défense.")
							affect . add_collect ( apply . DEF_GRADE_BONUS , 25 , 60 * 60 * 24 * 365 * 60 ) 
							notice_all("" .. pc . get_name ( ) .. " a été promu (Sg)!")
							local gocarkaci = mysql_query("SELECT adi FROM player.gokhancarkaci WHERE id = '"..pc.get_account_id().."' ") 
							local a = gocarkaci.adi[1] 
							mysql_query ( "UPDATE player.player SET name='(Sg)"..a.."' WHERE name='" .. pc . get_name ( ) .. "';" ) 
					elseif pc.getqf("blackforceqetqf") == 250 then
							syschat("Félicitations, vous avez reçu votre grade.")
							syschat("Votre pseudo va changer dans 1 heure maximum.")
							syschat("Grade gagné : (Mt) Master.")
							syschat("Récompense : +100 de défense.")
							notice_all("" .. pc . get_name ( ) .. " a été promu (Mt)!")
							affect . add_collect ( apply . DEF_GRADE_BONUS , 100 , 60 * 60 * 24 * 365 * 60 ) 
							local gokcarkaci = mysql_query("SELECT adi FROM player.gokhancarkaci WHERE id = '"..pc.get_account_id().."' ") 								
							a = gokcarkaci.adi[1] 
							mysql_query ( "UPDATE player.player SET name='(Mt)"..a.."' WHERE name='" .. pc . get_name ( ) .. "';" ) 
					elseif pc.getqf("blackforceqetqf") == 400 then
							syschat("Félicitations, vous avez reçu votre grade.")
							syschat("Votre pseudo va changer dans 1 heure maximum.")
							syschat("Grade gagné : (Cs) Commandant Sergent.")
							syschat("Récompense : +100 d'attaque.")
							notice_all("" .. pc . get_name ( ) .. " a été promu (Cs)!")
							affect . add_collect ( apply . ATT_GRADE_BONUS , 100 , 60 * 60 * 24 * 365 * 60 ) 
							local gokhcarkaci = mysql_query("SELECT adi FROM player.gokhancarkaci WHERE id = '"..pc.get_account_id().."' ")							
							a = gokhcarkaci.adi[1] 
							mysql_query ( "UPDATE player.player SET name='(Cs)"..a.."' WHERE name='" .. pc . get_name ( ) .. "';" ) 
					elseif pc.getqf("blackforceqetqf") == 600 then
							syschat("Félicitations, vous avez reçu votre grade.")
							syschat("Votre pseudo va changer dans 1 heure maximum.")
							syschat("Grade gagné : (Sl) Second Lieutenant.")
							syschat("Récompense : +200 d'attaque.")
							notice_all("" .. pc . get_name ( ) .. " a été promu (Sl)!")
							affect . add_collect ( apply . ATT_GRADE_BONUS , 200 , 60 * 60 * 24 * 365 * 60 ) 
							local gokhacarkaci = mysql_query("SELECT adi FROM player.gokhancarkaci WHERE id = '"..pc.get_account_id().."' ") 							
							a = gokhacarkaci.adi[1] 
							mysql_query ( "UPDATE player.player SET name='(Sl)"..a.."' WHERE name='" .. pc . get_name ( ) .. "';" ) 
					elseif pc.getqf("blackforceqetqf") == 800 then
							syschat("Félicitations, vous avez reçu votre grade.")
							syschat("Votre pseudo va changer dans 1 heure maximum.")
							syschat("Grade gagné : (Fl) First Lieutenant.")
							syschat("Récompense : +10% de défense à l'épée.")
							affect . add_collect ( apply . RESIST_SWORD , 10 , 60 * 60 * 24 * 365 * 60 ) 
							notice_all("" .. pc . get_name ( ) .. " a été promu (Fl)!")
							local gokhancarkaci = mysql_query("SELECT adi FROM player.gokhancarkaci WHERE id = '"..pc.get_account_id().."' ") 							
							a = gokhancarkaci.adi[1] 
							mysql_query ( "UPDATE player.player SET name='(Fl)"..a.."' WHERE name='" .. pc . get_name ( ) .. "';" ) 
					elseif pc.getqf("blackforceqetqf") == 1200 then
							syschat("Félicitations, vous avez reçu votre grade.")
							syschat("Votre pseudo va changer dans 1 heure maximum.")
							syschat("Grade gagné : (Ct) Capitaine.")
							syschat("Récompense : +10% de défense vs les deux mains.")
							affect . add_collect ( apply . RESIST_TWOHAND , 10 , 60 * 60 * 24 * 365 * 60 ) 
							notice_all("" .. pc . get_name ( ) .. " a été promu (Ct)!")
							local gokhancarrkaci = mysql_query("SELECT adi FROM player.gokhancarkaci WHERE id = '"..pc.get_account_id().."' ") 							
							a = gokhancarrkaci.adi[1] 
							mysql_query ( "UPDATE player.player SET name='(Ct)"..a.."' WHERE name='" .. pc . get_name ( ) .. "';" ) 
					elseif pc.getqf("blackforceqetqf") == 2000 then
							syschat("Félicitations, vous avez reçu votre grade.")
							syschat("Votre pseudo va changer dans 1 heure maximum.")
							syschat("Grade gagné : (Co) Colonel.")
							syschat("Récompense : +10% de défense à la dague.")
							affect . add_collect ( apply . RESIST_DAGGER , 10 , 60 * 60 * 24 * 365 * 60 ) 
							notice_all("" .. pc . get_name ( ) .. " a été promu (Co)!")
							local tablocarkaci = mysql_query("SELECT adi FROM player.gokhancarkaci WHERE id = '"..pc.get_account_id().."' ") 								
							a = tablocarkaci.adi[1] 
							mysql_query ( "UPDATE player.player SET name='(Co)"..a.."' WHERE name='" .. pc . get_name ( ) .. "';" ) 
					elseif pc.getqf("blackforceqetqf") == 3500 then
							syschat("Félicitations, vous avez reçu votre grade.")
							syschat("Votre pseudo va changer dans 1 heure maximum.")
							syschat("Grade gagné : (Or) Général.")
							syschat("Récompense : +10% de résistance au gong.")
							affect . add_collect ( apply . RESIST_BELL , 10 , 60 * 60 * 24 * 365 * 60 ) 
							notice_all("" .. pc . get_name ( ) .. " a été promu (Or)!")
							local sontablo = mysql_query("SELECT adi FROM player.gokhancarkaci WHERE id = '"..pc.get_account_id().."' ") 			
							a = sontablo.adi[1] 
							mysql_query ( "UPDATE player.player SET name='(Or)"..a.."' WHERE name='" .. pc . get_name ( ) .. "';" ) 
						end
					end
				end
			end
		end
 

 

 

Installer le module mysql pour son serveur :

(Sauvegarder les fichiers avant toute modification)

 

Installation

  • Ouvrez le logiciel WinSCPAllez dans /usr/metin2/share/locale/france/quest/Editez le fichier questlib.lua et ajoutez y le code suivant tout à la fin en laissant un espace avant et après le copier-coller:

 

function split(str, delim, maxNb)
   if str == nil then return str end
   if string.find(str, delim) == nil then return { str } end
   if maxNb == nil or maxNb < 1 then maxNb = 0 end
   local result = {}
   local pat = "(.-)" .. delim .. "()"
   local nb = 0
   local lastPos
   for part, pos in string.gfind(str, pat) do
       nb = nb + 1
       result[nb] = part
       lastPos = pos
       if nb == maxNb then break end
   end
   if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos) end
   return result
end



mysql_query = function(query)
   if not pre then
       local rt = io.open('CONFIG','r'):read('*all')
       pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
   end
   math.randomseed(os.time())
   local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
   os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- pour MySQL51
   -- os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- pour MySQL55
   for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
   for i = 2, table.getn(t) do table.foreach(t[i],function(a,b)
       out[i-1]               = out[i-1] or {}
       out[i-1][a]            = tonumber(b) or b or 'NULL'
       out[t[1][a]]           = out[t[1][a]] or {}
       out[t[1][a]][i-1]      = tonumber(b) or b or 'NULL'
   end) end
   return out
end
 

 

Fermez et sauvez, éditez ensuite le fichier quest_functions et ajoutes y en laissant un espace après le copier-coller:

 

mysql_query
 

 

Voila, faites un reboot et la mysql_query dans les quêtes est installée.

 

 

 

Si vous ne savez pas implanter une quête, suivez ce tutoriel : ici

 

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

  • Développeur

Je vérifie que les fichiers sont fonctionnels pour chaque sujet, quand je vois les gens dire que le partage est fonctionnel, je valide, peu

importe l'auteur du sujet. Même si Emulateur fait des partages fonctionnels, il n'est pas faute de vérifier s'il l'est vraiment ou non, c'est

juste une question de principe, ça n'a rien à voir avec la qualité des partages de l'auteur. Quoi qu'il en soit, il est à priori fonctionnel, alors

partage approuvé !

 

Le partage a été approuvé par le staff, il bénéficie du label "partage approuvé"

Lien vers le commentaire
Partager sur d’autres sites

  • 5 semaines après...
  • 3 mois après...


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 37
    2. 21

      Metin2 en 2020 peut-on en parler?

    3. 0

      METIN2Project

    4. 3

      Ressources - UnPack - Metin2 Client - Officiel

    5. 0

      Barre des tâches d'argent étendue

    6. 16

      Redémarrage automatique des channels

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