-
Compteur de contenus
178 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Boutique
Calendrier
Tout ce qui a été posté par aminalibi1
-
Oui @"ASIKOO", la fonction mysql_query est publique mais la quête et l'idée de passer via mysql sont les miennes.
-
Avec plaisir @"ASIKOO"
-
Centre de Téléchargement Télécharger ( Interne ) Salut, Je vous partage une petite quete qui compte le nombre des kills selon la royaume de la personnage tuée et stock les données dans une table mysql : quest killselonempire begin state start begin when kill begin if npc.is_pc() then if npc.empire == 1 then local query = mysql_query("UPDATE player.player SET rouge_tuer=rouge_tuer+1 WHERE id='"..pc.get_player_id().."';") local rr = mysql_query("SELECT rouge_tuer from player.player WHERE id='"..pc.get_player_id().."' LIMIT 1") local rouge_tuer_p = rr[1][1] elseif npc.empire == 2 then local query = mysql_query("UPDATE player.player SET jaune_tuer=jaune_tuer+1 WHERE id='"..pc.get_player_id().."';") local rr = mysql_query("SELECT jaune_tuer from player.player WHERE id='"..pc.get_player_id().."' LIMIT 1") local jaune_tuer_p = rr[1][1] elseif npc.empire == 3 then local query = mysql_query("UPDATE player.player SET bleu_tuer=bleu_tuer+1 WHERE id='"..pc.get_player_id().."';") local rr = mysql_query("SELECT bleu_tuer from player.player WHERE id='"..pc.get_player_id().."' LIMIT 1") local bleu_tuer_p = rr[1][1] end else local query = mysql_query("UPDATE player.player SET pve=pve+1 WHERE id='"..pc.get_player_id().."';") local rr = mysql_query("SELECT pve from player.player WHERE id='"..pc.get_player_id().."' LIMIT 1") local pve_p = rr[1][1] end end end end Dans queslib.lua , ajoutez : 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) -- f? MySQL51 os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- f? 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 Ensuite , allez dans navicat , clic droite sur la base de donnée Player et choisissez "Console..". Collez : ALTER TABLE player ADD( rouge_tuer int(11), jaune int(11), bleu_tuer int(11), pve int(11) ); Et ENTRER.
-
Salut Taku , Non celle ci était sur Corpse.
-
Centre de Téléchargement Télécharger ( Interne ) Salut FE, Je vous partage l'instance glaciale (Nemeres) , modifiée par moi même et fonctionnelle. ---------------------- -- Corpse II : Nemeres ---------------------- quest snowdungeon begin state start begin when 20397.chat."Tour de Nemeres" begin say_title("Statue Roi de gheata") say("Le mal ravage notre monde depuis des années et cela de différentes manières.") say("son pouvoir est plus fort de jour en jour.") say("Nos Royaumes commencent à tomber, mais qui pour arrêter ce cauchemar ?") say("De simple personne lambda, n'écoutant que leurs courages !") if pc.get_level() >= 90 then if party.is_party() or pc.is_gm() then if party.is_leader() or pc.is_gm() then say_reward("Êtes-vous prêt à affronter le mal et faire face à vos destins ?") if select("Oui, nous croyons en nos forces !","Non, nous sommes bien trop faibles.") == 1 then pc.remove_item(30256,1) d.join(240) end else say_reward("Vous devez être le Chef du groupe.") end else say_reward("Vous devrez faire partie d'un groupe.") end else say_reward("Vous devez etre level 100.") end end when 20397.chat."La place de Nemeres" with d.getf("actual_round") == 9 begin if party.is_leader() or pc.is_gm() then say_title("Statue Roi de gheata") say("L'aventure fut longue et périlleuse mais finalement") say("Je suis arrivé à la source de la rivière.") say("Nemeres est de l'autre côté, allez le vaincre !") say_reward("Êtes-vous prêt à y faire face ?") if select("Oui, nous sommes toujours confiants !","Non, nous ne croyons plus en nos forces.") == 1 then if d.getf("used_statue", 0) then d.setf("used_statue", 1) syschat("Dans les 10 prochaines secondes, vous serez téléporté avec votre groupe !") timer("nextlevel",10) end end end end when login with pc.get_map_index() >= 2400000 and pc.get_map_index() <= 2405000 begin d.notice("[Tour de Nemeres] La bataille a commencé.") d.notice("[Tour de Nemeres] Exterminez les ennemies ! bonne chance.") if party.is_party() then if party.is_leader() then snowdungeon.start() end else if pc.is_gm() then snowdungeon.start() end end end when 20398.take begin if d.getf("actual_round") == 5 then if item.get_vnum() == 30332 then pc.remove_item(item.get_vnum(),1) npc.purge() d.setf("box_opened", d.getf("box_opened")+1) if d.getf("box_opened") == 6 then d.notice("[Tour de Nemeres] Les joints ont été ouverts") d.notice("[Tour de Nemeres] Vous allez jusqu'au 6ème étage !") snowdungeon.purge() timer("nextlevel",10) else d.notice("[Tour de Nemeres] Courage, Il vous reste "..6-d.getf("box_opened").." sceaux à ouvrir !") end end end end when 30331.use begin if d.getf("actual_round") == 2 then if pc.get_job() == 3 or pc.get_job() == 7 then if number(1,8) == 5 then d.notice("[Tour de Nemeres] La chance vous sourit. La clé était parfaite !.") d.notice("[Tour de Nemeres] Bientôt vous serez redirigé vers le prochain étage.") snowdungeon.purge() timer("nextlevel",10) else syschat("[Tour de Nemeres] Suite à son impuissance la clé s'est brisée.") syschat("[Tour de Nemeres] Trouvez une autre clé et réessayez.") pc.remove_item(30331,1) end else syschat("La clé ne peut être utilisé seulement par un puissant chaman.") end end end when 30333.use begin if pc.get_job() == 3 or pc.get_job() == 7 or pc.get_job() == 1 or pc.get_job() == 5 then if d.getf("actual_round") == 8 then if number(1,8) == 5 then d.notice("[Tour de Nemeres] La chance vous sourit. La clé était parfaite !.") d.notice("[Tour de Nemeres] Bientôt vous serez redirigé vers le prochain étage.") snowdungeon.purge() timer("nextlevel",10) else d.notice("[Tour de Nemeres] Suite à son impuissance la clé s'est brisée.") d.notice("[Tour de Nemeres] Trouvez une autre clé et réessayez.") pc.remove_item(30333,1) end else syschat("La clé ne peut être utilisé seulement par un puissant chaman ou un ninja.") end end end when kill with pc.get_map_index() >= 2400000 and pc.get_map_index() <= 2405000 begin if d.getf("actual_round") == 6 and npc.get_race() == 6109 then d.notice("[Tour de Nemeres] Félicitations, vous avez détruit la source de ses pouvoirs") d.notice("[Tour de Nemeres] Dans quelques instants, vous monterez au 7ème étage.") timer("nextlevel",10) end if d.getf("actual_round") == 7 and npc.get_race() == 6151 then d.notice("[Tour de Nemeres] Félicitations, tuant Le fidèle Nemeres, vous serez amené au 8ème étage .") snowdungeon.purge() timer("nextlevel",10) end if d.getf("actual_round") == 9 and npc.get_race() == 20399 then d.notice("[Tour de Nemeres] Le dernier pilier de sa défense a été démoli ") d.notice("[Tour de Nemeres] Le Lion de glace est apparu.") snowdungeon.purge() d.spawn_mob(20397, 848, 669) end if d.getf("actual_round") == 10 and npc.get_race() == 6191 then d.notice("[Tour de Nemeres] Félicitations, vous avez tuer Nemeres, vous êtes les combattants de la destinée !") notice_all("Avec un dernier souffle de chef de file de l'espoir "..pc.get_name().."") notice_all("Suivi par ses guerriers fidèles ont réussi à battre le redoutable Nemeres.") d.setf("actual_round","0") ------------------ local time = get_time() d.setqf2("snowdungeon","daily_nemeres_last_kill", time) d.setqf2("snowdungeon","daily_nemeres", 1) ------------------ d.clear_regen() d.kill_all() d.spawn_mob(9012, 928, 338) timer("exit_snow", 60) d.notice("En 60 secondes, vous serez téléporté en dehors.") end if d.getf("actual_round") == 1 then d.setf("kill_count_sd1",d.getf("kill_count_sd1") +1) if d.getf("kill_count_sd1") == d.getf("sd_kill_to_next") then d.notice("[Tour de Nemeres] Vous avez terminé le premier étage .") d.notice("[Tour de Nemeres] Dans quelques instants, vous montez au 2ème étage.") snowdungeon.purge() timer("nextlevel",10) end elseif d.getf("actual_round") == 2 then if number(1,50) == 1 then game.drop_item_with_ownership(30331,1) end elseif d.getf("actual_round") == 3 then d.setf("kill_count_sd3",d.getf("kill_count_sd3") +1) if d.getf("kill_count_sd3") == d.getf("sd3_kill_to_next") then snowdungeon.purge() d.notice("[Tour de Nemeres] Vous avez terminé le 3ème étage .") d.notice("[Tour de Nemeres] Dans quelques instants, vous montez au 4ème étage.") timer("nextlevel",10) end elseif d.getf("actual_round") == 4 then d.setf("kill_count_sd4",d.getf("kill_count_sd4") +1) if d.getf("kill_count_sd4") == d.getf("sd4_kill_to_next") then snowdungeon.purge() d.notice("[Tour de Nemeres] La 4ème vague a été détruite.") d.notice("[Tour de Nemeres] Dans quelques instants, vous montez au 5ème étage.") timer("nextlevel",10) end elseif d.getf("actual_round") == 5 then if number(1,100) == 1 then game.drop_item_with_ownership(30332,1) end elseif d.getf("actual_round") == 6 then d.setf("kill_count_sd6",d.getf("kill_count_sd6") +1) if d.getf("kill_count_sd6") == d.getf("sd6_kill_to_next") then d.notice("[Tour de Nemeres] Ce qui se produit ? Il voit un ciel bleu !?") snowdungeon.purge() timer("level7metin",5) end elseif d.getf("actual_round") == 8 then if number(1,50) == 1 then game.drop_item_with_ownership(30333,1) end end end when level7metin.timer begin if d.getf("actual_round") == 6 then d.spawn_mob(6109, 743, 495) end end when nextlevel.timer begin if d.getf("actual_round") == 1 then -- Niveau 2 d.jump_all(5120+421,1536+264) d.setf("actual_round",2) d.set_regen_file("data/dungeon/snowdungeon/nivel_2.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 2ème étage ") d.notice("[Tour de Nemeres] Cherchez la bonne clé pour avancer au niveau suivant.") elseif d.getf("actual_round") == 2 then -- Niveau 3 d.jump_all(5120+761,1536+268) d.setf("actual_round",3) d.setf("kill_count_sd3","0") d.setf("sd3_kill_to_next","300") d.set_regen_file("data/dungeon/snowdungeon/nivel_3.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 3ème étage") d.notice("[Tour de Nemeres] Exterminez l'armée de Nemeres jusqu'au dernier pour avancer.") elseif d.getf("actual_round") == 3 then -- NIVEL 4 d.jump_all(5120+174,1536+526) d.setf("actual_round",4) d.setf("kill_count_sd4","0") d.setf("sd4_kill_to_next","300") d.set_regen_file("data/dungeon/snowdungeon/nivel_4.txt") d.notice("[Tour de Nemeres] Vouz êtes montés au 4ème étage.") d.notice("[Tour de Nemeres] Détruisez-les tous pour avancer.") elseif d.getf("actual_round") == 4 then -- Niveau 5 d.jump_all(5120+421,1536+533) d.setf("actual_round",5) d.set_regen_file("data/dungeon/snowdungeon/nivel_5.txt") local sequence = {{1,2,3,4,5},{4,3,2,1,5},{4,5,3,1,2},{5,3,4,2,1},{5,1,3,4,2}} local n = number(1,5) local coords = {{391,490},{451,490},{463,455},{380,456},{420,422}} for i = 1, 5 do d.spawn_mob(20398, coords[i][1],coords[i][2]) end d.setf("box_opened", 1) d.setf("sequence",n) d.notice("[Tour de Nemeres] Vous êtes dans le 5ème étage") elseif d.getf("actual_round") == 5 then -- Niveau 6 d.jump_all(5120+746,1536+536) d.setf("actual_round",6) d.setf("kill_count_sd6","0") d.setf("sd6_kill_to_next","200") d.set_regen_file("data/dungeon/snowdungeon/nivel_6.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 6ème étage.") d.notice("[Tour de Nemeres] Ses troupes ont commencé à se désagréger.") elseif d.getf("actual_round") == 6 then -- Niveau 7 d.jump_all(5120+304,1536+719) d.setf("actual_round",7) d.regen_file("data/dungeon/snowdungeon/nivel_7.txt") d.spawn_mob(6109, 326, 657) elseif d.getf("actual_round") == 7 then -- Niveau 8 d.jump_all(5120+569,1536+642) d.setf("actual_round",8) d.set_regen_file("data/dungeon/snowdungeon/nivel_8.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 8ème étage.") elseif d.getf("actual_round") == 8 then -- Niveau 9 d.notice("[Tour de Nemeres] Vous êtes dans le 9ème étage.") d.jump_all(5120+848,1536+689) d.set_regen_file("data/dungeon/snowdungeon/nivel_9.txt") d.setf("actual_round",9) d.spawn_mob(20399, 849, 659) elseif d.getf("actual_round") == 9 then -- NIVEL 10 BOSS ROOM d.setf("used_statue", 0) d.spawn_mob(6191, 927, 323) d.jump_all(5120+928,1536+390) d.setf("actual_round",10) d.set_regen_file("data/dungeon/snowdungeon/nivel_10.txt") end snowdungeon.NoticeTime() end function start() d.set_regen_file("data/dungeon/snowdungeon/nivel_1.txt") d.setf("actual_round",1) d.setf("time", get_time()+60*60*1) d.setf("sd_kill_to_next",100) d.setf("kill_count_sd1",0) server_timer("snowdungeontime",3600,pc.get_map_index()) --server_loop_timer("snowdungeontimenotice",300) snowdungeon.NoticeTime() end when snowdungeontimenotice.server_timer begin if pc.get_map_index()<= 2405000 then snowdungeon.NoticeTime() end end function GetPillarID() if pc.get_local_x() >= 391 - 5 and pc.get_local_x() <= 391 + 5 and pc.get_local_y() >= 490 - 5 and pc.get_local_y() <= 490 + 5 then return 1 elseif pc.get_local_x() >= 451 - 5 and pc.get_local_x() <= 451 + 5 and pc.get_local_y() >= 490 - 5 and pc.get_local_y() <= 490 + 5 then return 2 elseif pc.get_local_x() >= 463 - 5 and pc.get_local_x() <= 463 + 5 and pc.get_local_y() >= 455 - 5 and pc.get_local_y() <= 455 + 5 then return 3 elseif pc.get_local_x() >= 380 - 5 and pc.get_local_x() <= 380 + 5 and pc.get_local_y() >= 456 - 5 and pc.get_local_y() <= 456 + 5 then return 4 elseif pc.get_local_x() >= 420 - 5 and pc.get_local_x() <= 420 + 5 and pc.get_local_y() >= 422 - 5 and pc.get_local_y() <= 422 + 5 then return 5 else return false end end when snowdungeontime.server_timer begin if d.select(get_server_timer_arg()) then d.notice("............!") d.exit_all() end end when exit_snow.timer begin d.exit_all() end function NoticeTime() local secondsLeft = (d.getf("time") - get_time()) local minutesLeft = math.ceil(secondsLeft / 60) d.notice("[Tour de Nemeres] Temps Restant: "..minutesLeft.." minutes.") end function purge() d.kill_all() d.clear_regen() end end end Installer une quête : ici Pour les regen.txt/quest_function/group.txt vous les trouverez :Ici
- 8 réponses
-
- 31
-
Bonjour , Juste une petite question , vous avez le lycan dans votre serveur ?
-
basic_weapon différent selon royaume
aminalibi1 a répondu à un(e) question de Ogmius dans Questions & Réponses
quest give_item_selon_empire begin state start begin when login begin if pc.getqf("basic_weapon") == 0 then pc.setqf("basic_weapon", 1) if pc.get_empire()==1 then --(Empire Rouge) pc.give_item2(id_item_1, quantité) pc.give_item2(id_item_2, quantité) elseif pc.get_empire()==2 then --(Empire Jaune) pc.give_item2(id_item_1, quantité) pc.give_item2(id_item_2) elseif pc.get_empire()==3 then --(Empire Bleu) pc.give_item2(id_item_1, quantité) pc.give_item2(id_item_2, quantité) end end end end end -
Lien C'est pas complet mais ça aide Si tu parles de créer une quête , elle va juste bloquer le pvp des joueurs du même royaume en désactivant le mode Pvp.
-
Pour un item porté juste par guerrier et ninja l'antiflag est : 48
-
quest anneau_magique begin state start begin when 40004.use begin say_title("Anneau d'Entrepôt/Banque") say("Veuillez choisir une fonction :") local a=select( "Banque" , "Entrepôt" , "Fermer" ) if a==3 then return end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion Banque -- ---------------------------------------------------------------------------------------------------------------------------------------- if a==1 then say_title("Banque") say("Veuillez choisir une fonction :") local s=select("Stocker des yangs", "Retirer des yangs", "Voir létat de mon compte", "Fermer") -- Stock yangs -- if s==1 then say_title("Banque") say("Combien de yangs voulez-vous stocker ?") say_reward("Vous avez : "..pc.gold.." yangs.") say("") i = tonumber(input()) if i <= 0 or i == "" then return end if i > pc.gold then i = pc.gold end j = i + pc.getqf("nb_yang") while j >= 1000000000 do pc.setqf("nb_milliard", pc.getqf("nb_milliard")+1) j = j - 1000000000 end pc.setqf("nb_yang", j) pc.change_gold(-i) syschat(i.." yangs stockés.") -- Retire et voir le compte -- elseif s==2 or s==3 then say_title("Banque") say("") say("Yangs sur votre compte :") a = "" c = "" if pc.getqf("nb_milliard") > 0 then a = pc.getqf("nb_milliard") b = 100000000 while b > pc.getqf("nb_yang") and b != 1 do c = c.."0" b = b/10 end end say_reward(a..""..c..""..pc.getqf("nb_yang")) say("") if s == 3 then return end say("Combien de yangs voulez-vous retirer ?") say("") i = tonumber(input()) if i <= 0 or i == "" then return end if i > pc.getqf("nb_milliard")*1000000000 + pc.getqf("nb_yang") then i = pc.getqf("nb_milliard")*1000000000 + pc.getqf("nb_yang") end if pc.gold + i > 1999999999999999 then syschat("Action impossible vous allez dépasser les 2 milliards.") return end pc.change_gold(i) if i >= 1000000000 then pc.setqf("nb_milliard", pc.getqf("nb_milliard")-1) i = i - 1000000000 end pc.setqf("nb_yang", pc.getqf("nb_yang")-i) if pc.getqf("nb_yang") < 0 then pc.setqf("nb_yang", pc.getqf("nb_yang")+1000000000) pc.setqf("nb_milliard", pc.getqf("nb_milliard")-1) end end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion Entrepot -- ---------------------------------------------------------------------------------------------------------------------------------------- elseif a==2 then say_title("Entrepôt") say("") say("Si cest la première fois que vous ouvrez") say("votre entrepot, rappeler vous que votre") say("code par default est 000000.") say("Voulez-vous ouvrir votre entrepôt ?") local v = select ( "Oui" , "Non", "Activer lentrepôt" ) -- Ouvrir Entrepot -- if 1==v then game.open_safebox() return -- Quitter -- elseif 2==v then return -- Activer Entrepot -- else say_title("Entrepôt") say("Voulez-vous activer votre entrepôt ?") local t = select ("Oui", "Non") if 1== tthen say_title("Entrepôt") say("Votre entrepôt à été activer avec succès !") --stash.setlevel(1) game.set_safebox_level(1) say(locale.stash.first_open) else return end end end end end end
-
Normalement , tu met "0" dans Lumitvalue0 est voila ..
-
[Hidden Content]
-
Bonjour , merci de nous envoyer les fichiers que t'as modifié.
-
Probleme implantion switch
aminalibi1 a répondu à un(e) question de FrancH dans Questions & Réponses
Merci de nous montrer le syserr.tx -
Bonjour FE, Je vous partage une quête qui permet de nettoyer les logs et sauvegarder les files automatiquement. quest savefiles begin state start begin when letter with pc.is_gm() begin send_letter("GM: savefiles") end when button or info begin say("Cliquez une fois après chaque redémarrage:") say("- Les logs seront supprimés toutes les 15 minutes.") say("- Les files seront sauvegardées toutes les 15 minutes.") server_timer("mex", 900) set_state(appcmd) end end state appcmd begin when mex.server_timer begin os.execute("cd /usr/metin2 && sh clear.sh &") --- Nettoyage des logs os.execute("cd /usr && tar cvzf save.tar.gz metin2") -- Sauvegarde des files server_timer("mex", 900) end end end - Pour la partie : Sauvegarde des files , si vous voulez passer par une commande : #!/bin/sh clear echo -e "\033[31m Opération en cous.\n Merci de patienter...\033[0m" cd /usr/metin2 && sh clear.sh cd /usr/metin2 && tar cvzf save.tar.gz metin2 clear echo -e "\033[31m Opération terminée\033[0m"
-
Hum..tu les as entouré ou ?
-
Bonsoir , un peu de précision , quels boutons et quel chat ?
-
Bonjour , 1 - Sql to txt :/topic/16451-convertisseur-sql-txt-files-2014/ 2- Avec dumpproto : Txt - itemproto client (Simple comme tu dis) x)
-
Bonjour , /topic/20707-convertisseur-xml-sql/
-
Locale/fr/mob_proto
-
Vérifie ton mob_proto Client/serveur , surtout qu'il est en "MOVE".
-
Bonjour, Syserr client stp .
-
Bonjour , Lien à jour ! x)
-
C++ - Magasin Hors-Ligne
aminalibi1 a répondu à un(e) sujet de History/Liberty dans Programmation & Développement / Codes
Merci pour la traduction x) -
[Résolu] Bug armure 115 officiel
aminalibi1 a répondu à un(e) question de Idek dans Questions & Réponses
Bonjour , Navicat---Player----Item_proto---Colonne Value3 x). Pareil pour la partie client , tu dois changer value3 dans itemproto client .