Jump to content

Search the Community

Showing results for tags 'tutoriel / partage'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Espace Communautaire
    • Funky Emulation
    • Services
    • Bureau de la Communauté
    • Espace Premium
  • Emulation & Co
    • Suggest a Release / Tutorial
    • M2 Project
  • Emulation de jeux
    • Metin2
    • Metin2 Dev
    • Minecraft
    • Dofus
    • World of Warcraft
    • Voir plus...
  • Espace Divers
  • PassionDev's Forum
  • The Tarkov Singleplayer Project's Liens importants
  • The Tarkov Singleplayer Project's Discussions

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Nationality


Sexe


Discord


Skype


Site


Steam ID


Minecraft


Dofus


Metin2


RaiderZ


X


World of Warcraft


Aion


Habbo


GTA


Roblox


Wakfu


PHP


SQL


HTML


CSS


JavaScript


Java


LUA


Python


VisualBasic


C++


c#


C


3D


2D


Mapper


PHP

Found 651 results

  1. Bonjour, Bonsoir Je vous présente aujourd'hui, un petit partage, qui vous permettra d'ajouter des emplacements pour vos personnages. Ceci est mon premier partage, donc toutes critiques ou autres seront une source d'améliorations. Le tutoriel se base sur l'ordre suivant : Serveur/Client/MySQL Fini de parler, passons au tutoriel : /!\ Serveur /!\ Rendez-vous dans Common/length.h Cherchez : PLAYER_PER_ACCOUNT = 4, Remplacez par : PLAYER_PER_ACCOUNT = 8, Rendez-vous maintenant dans Game/src/locale_service.cpp Cherchez : static void __CheckPlayerSlot(const std::string& service_name) { if (PLAYER_PER_ACCOUNT != 4) { printf(" PLAYER_PER_ACCOUNT = %d\n", PLAYER_PER_ACCOUNT); exit(0); } } Remplacez par : static void __CheckPlayerSlot(const std::string& service_name) { if (PLAYER_PER_ACCOUNT != 8) { printf(" PLAYER_PER_ACCOUNT = %d\n", PLAYER_PER_ACCOUNT); exit(0); } } Maintenant, allez dans Game/src/char_change_empire.cpp Cherchez : snprintf(szQuery, sizeof(szQuery), "SELECT id, pid1, pid2, pid3, pid4 FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u AND empire=%u", get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); std::auto_ptr msg(DBManager::instance().DirectQuery(szQuery)); Remplacez par : snprintf(szQuery, sizeof(szQuery), "SELECT id, pid1, pid2, pid3, pid4, pid5, pid6, pid7, pid8 FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u OR pid5=%u OR pid6=%u OR pid7=%u OR pid8=%u AND empire=%u", get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); std::auto_ptr msg(DBManager::instance().DirectQuery(szQuery)); Toujours dans char_change_empire.cpp Cherchez : MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult); str_to_number(dwAID, row[0]); str_to_number(dwPID[0], row[1]); str_to_number(dwPID[1], row[2]); str_to_number(dwPID[2], row[3]); str_to_number(dwPID[3], row[4]); Remplacez par : MYSQL_ROW row = mysql_fetch_row(msg->Get()->pSQLResult); str_to_number(dwAID, row[0]); str_to_number(dwPID[0], row[1]); str_to_number(dwPID[1], row[2]); str_to_number(dwPID[2], row[3]); str_to_number(dwPID[3], row[4]); str_to_number(dwPID[4], row[5]); str_to_number(dwPID[5], row[6]); str_to_number(dwPID[6], row[7]); str_to_number(dwPID[7], row[8]); cherchez ensuite : snprintf(szQuery, sizeof(szQuery), "UPDATE player_index%s SET empire=%u WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u AND empire=%u", get_table_postfix(), empire, GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); std::auto_ptr msg(DBManager::instance().DirectQuery(szQuery)); Remplacez par : snprintf(szQuery, sizeof(szQuery), "UPDATE player_index%s SET empire=%u WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u OR pid5=%u OR pid6=%u OR pid7=%u OR pid8=%u AND empire=%u", get_table_postfix(), empire, GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); std::auto_ptr msg(DBManager::instance().DirectQuery(szQuery)); Cherchez : DWORD CHARACTER::GetAID() const { char szQuery[1024+1]; DWORD dwAID = 0; snprintf(szQuery, sizeof(szQuery), "SELECT id FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u AND empire=%u", get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); SQLMsg* pMsg = DBManager::instance().DirectQuery(szQuery); Remplacez par : DWORD CHARACTER::GetAID() const { char szQuery[1024+1]; DWORD dwAID = 0; snprintf(szQuery, sizeof(szQuery), "SELECT id FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u OR pid5=%u OR pid6=%u OR pid7=%u OR pid8=%u AND empire=%u", get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire()); SQLMsg* pMsg = DBManager::instance().DirectQuery(szQuery); Maintenant, rendez-vous dans db/src/clientmanager.cpp Cherchez : void CClientManager::QUERY_EMPIRE_SELECT(CPeer * pkPeer, DWORD dwHandle, TEmpireSelectPacket * p) { char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "UPDATE player_index%s SET empire=%u WHERE id=%u", GetTablePostfix(), p->bEmpire, p->dwAccountID); delete CDBManager::instance().DirectQuery(szQuery); sys_log(0, "EmpireSelect: %s", szQuery); { snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4 FROM player_index%s WHERE id=%u", GetTablePostfix(), p->dwAccountID); std::auto_ptr pmsg(CDBManager::instance().DirectQuery(szQuery)); SQLResult * pRes = pmsg->Get(); Remplacez par : void CClientManager::QUERY_EMPIRE_SELECT(CPeer * pkPeer, DWORD dwHandle, TEmpireSelectPacket * p) { char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "UPDATE player_index%s SET empire=%u WHERE id=%u", GetTablePostfix(), p->bEmpire, p->dwAccountID); delete CDBManager::instance().DirectQuery(szQuery); sys_log(0, "EmpireSelect: %s", szQuery); { snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, pid5, pid6, pid7, pid8 FROM player_index%s WHERE id=%u", GetTablePostfix(), p->dwAccountID); std::auto_ptr pmsg(CDBManager::instance().DirectQuery(szQuery)); SQLResult * pRes = pmsg->Get(); Cherchez : void CClientManager::ChangeMonarchLord(CPeer * peer, DWORD dwHandle, TPacketChangeMonarchLord* info) { char szQuery[1024]; snprintf(szQuery, sizeof(szQuery), "SELECT a.name, NOW() FROM player%s AS a, player_index%s AS b WHERE (a.account_id=b.id AND a.id=%u AND b.empire=%u) AND " "(b.pid1=%u OR b.pid2=%u OR b.pid3=%u OR b.pid4=%u)", GetTablePostfix(), GetTablePostfix(), info->dwPID, info->bEmpire, info->dwPID, info->dwPID, info->dwPID, info->dwPID); SQLMsg * pMsg = CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER); Remplacez par : void CClientManager::ChangeMonarchLord(CPeer * peer, DWORD dwHandle, TPacketChangeMonarchLord* info) { char szQuery[1024]; snprintf(szQuery, sizeof(szQuery), "SELECT a.name, NOW() FROM player%s AS a, player_index%s AS b WHERE (a.account_id=b.id AND a.id=%u AND b.empire=%u) AND " "(b.pid1=%u OR b.pid2=%u OR b.pid3=%u OR b.pid4=%u OR b.pid5=%u OR b.pid6=%u OR b.pid7=%u OR b.pid8=%u)", GetTablePostfix(), GetTablePostfix(), info->dwPID, info->bEmpire, info->dwPID, info->dwPID, info->dwPID, info->dwPID, info->dwPID, info->dwPID, info->dwPID, info->dwPID); SQLMsg * pMsg = CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER); Rendez-vous ensuite dans db/src/clientmanagerlogin.cpp Cherchez : void CClientManager::QUERY_LOGIN_BY_KEY(CPeer * pkPeer, DWORD dwHandle, TPacketGDLoginByKey * p) Ensuite, trouvez les lignes : sys_log(0, "LOGIN_BY_KEY success %s %lu %s", r.login, p->dwLoginKey, info->ip); char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), r.id); CDBManager::instance().ReturnQuery(szQuery, QID_LOGIN_BY_KEY, pkPeer->GetHandle(), info); Remplacez par : sys_log(0, "LOGIN_BY_KEY success %s %lu %s", r.login, p->dwLoginKey, info->ip); char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, pid5, pid6, pid7, pid8, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), r.id); CDBManager::instance().ReturnQuery(szQuery, QID_LOGIN_BY_KEY, pkPeer->GetHandle(), info); Cherchez ensuite : void CClientManager::RESULT_LOGIN_BY_KEY(CPeer * peer, SQLMsg * msg) Trouvez les lignes : if (msg->Get()->uiNumRows == 0) { DWORD account_id = info->pAccountTable->id; char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), account_id); std::auto_ptr pMsg(CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER)); Et remplacez par : if (msg->Get()->uiNumRows == 0) { DWORD account_id = info->pAccountTable->id; char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, pid5, pid6, pid7, pid8, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), account_id); std::auto_ptr pMsg(CDBManager::instance().DirectQuery(szQuery, SQL_PLAYER)); Maintenant, cherchez : void CClientManager::RESULT_PLAYER_INDEX_CREATE(CPeer * pkPeer, SQLMsg * msg) Trouvez les lignes : char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), info->pAccountTable->id); CDBManager::instance().ReturnQuery(szQuery, QID_LOGIN_BY_KEY, pkPeer->GetHandle(), info); Remplacez par : char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT pid1, pid2, pid3, pid4, pid5, pid6, pid7, pid8, empire FROM player_index%s WHERE id=%u", GetTablePostfix(), info->pAccountTable->id); CDBManager::instance().ReturnQuery(szQuery, QID_LOGIN_BY_KEY, pkPeer->GetHandle(), info); /!\ Client /!\ Rendez-vous dans Client/UserInterface/Packet.h Cherchez : PLAYER_PER_ACCOUNT3 = 3, PLAYER_PER_ACCOUNT4 = 4, Remplacez par : PLAYER_PER_ACCOUNT3 = 7, PLAYER_PER_ACCOUNT4 = 8, Rendez-vous maintenant dans Pack/root/introselect.py Cherchez : SLOT_COUNT = 4 Remplacez par : SLOT_COUNT = 8 Cherchez : SLOT_ROTATION = [135.0, 225.0, 315.0, 45.0] Remplacez par : SLOT_ROTATION = [135.0, 180.0, 225.0, 270.0, 315.0, 360.0, 45.0, 90.0] Cherchez : chr.DeleteInstance(0) chr.DeleteInstance(1) chr.DeleteInstance(2) chr.DeleteInstance(3) Remplacez par : chr.DeleteInstance(0) chr.DeleteInstance(1) chr.DeleteInstance(2) chr.DeleteInstance(3) chr.DeleteInstance(4) chr.DeleteInstance(5) chr.DeleteInstance(6) chr.DeleteInstance(7) Cherchez : indexArray = (3, 2, 1, 0) Remplacez par : indexArray = (8, 7, 6, 5, 4, 3, 2, 1, 0) Cherchez : def OnKeyDown(self, key): if 1 == key: self.ExitSelect() if 2 == key: self.SelectSlot(0) if 3 == key: self.SelectSlot(1) if 4 == key: self.SelectSlot(2) if 5 == key: self.SelectSlot(3) Remplacez par : def OnKeyDown(self, key): if 1 == key: self.ExitSelect() if 2 == key: self.SelectSlot(0) if 3 == key: self.SelectSlot(1) if 4 == key: self.SelectSlot(2) if 5 == key: self.SelectSlot(3) if 6 == key: self.SelectSlot(4) if 7 == key: self.SelectSlot(5) if 8 == key: self.SelectSlot(6) if 9 == key: self.SelectSlot(7) /!\ MySQL /!\ Rendez-vous dans Player/Player_index Modifiez : `id` int(11) NOT NULL DEFAULT '0', `pid1` int(11) NOT NULL DEFAULT '0', `pid2` int(11) NOT NULL DEFAULT '0', `pid3` int(11) NOT NULL DEFAULT '0', `pid4` int(11) NOT NULL DEFAULT '0', `empire` tinyint(4) NOT NULL DEFAULT '0', Par : `id` int(11) NOT NULL DEFAULT '0', `pid1` int(11) NOT NULL DEFAULT '0', `pid2` int(11) NOT NULL DEFAULT '0', `pid3` int(11) NOT NULL DEFAULT '0', `pid4` int(11) NOT NULL DEFAULT '0', `pid5` int(11) NOT NULL DEFAULT '0', `pid6` int(11) NOT NULL DEFAULT '0', `pid7` int(11) NOT NULL DEFAULT '0', `pid8` int(11) NOT NULL DEFAULT '0', `empire` tinyint(4) NOT NULL DEFAULT '0', Voilà, vous venez d'ajouter des emplacements supplémentaire sur vos comptes. Aperçu ? Le screen du système comporte les 8 emplacements. Je vous conseil de mettre 6 emplacements pour éviter une "surcharge" des personnages. Bien entendu, si quelqu'un souhaite modifier/corriger les codes, je suis d'accord car je ne suis pas trop calé niveau sources. Source : Turkmmo
  2. Bonjours, Je vous partage une partie d'un système pvp que j'utilise : Coté navicat : Player.player <== editer cette table en cliquand dessus avec le bouton droit et cliquer sur design table ou editer table Puis ajouter comme ici : Maintenant , niveau winscp/filezilla: Aller dans le dossier quest (metin2/share/locale/france/quest) puis crée un fichier pvpadd.quest et remplissez comme sa : quest killadd begin state start begin when kill with npc.is_pc() begin mysql_query("UPDATE player.player SET kills = kills+1 WHERE account_id ='"..pc.get_account_id()"';") end end end enregistrer la quête et maintenant allez éditer le local_list puis ajouter a la fin pvpadd.quest en ajoutant une entrée après votre deniere quête. Ensuite , allez sur putty/virtual box et faite un remake des quest : sh quest.sh ensuite allez ig et reload q Et voila votre système pvp coté server est fait ! Desolé pour les fautes d'orthographe!
  3. Niveau requis : Intermédiaire Temps estimé : 10 minutes Ré-écrit par @Gurgarath Bonjour, Grâce à ce tutoriel, vous pourrez, voir les PV et les PM de votre adversaire lors d'un duel. En contrepartie, il pourra voir les vôtres ! Plus de tricherie possible lors d'un duel grâce à ça Pré-Requis : L'accès au fichier root dépacké Un accès aux files serveur (quêtes) I. Installation (Partie client) II. Installation (Partie serveur -> quêtes) III. Potentielles remarques Source : ElitePvPers Cordialement,
  4. Bonjour, Ce tutoriel-partage va vous aidez à fix le bug de pouvoir switch les bonus d'un équipement déjà équiper et du coup fix l'accumulation des bonus. Rendez vous dans dans le fichier char_item.cpp Cherchez : if (ITEM_COSTUME == item2->GetType()) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ĽÓĽşŔ» şŻ°ćÇŇ Ľö ľř´Â ľĆŔĚĹŰŔÔ´Ď´Ů.")); return false; } if (item2->IsExchanging()) return false; Ajoutez en dessous : if (item2->IsEquipped()) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("no.switch")); return false; } /!\ Attention à bien mettre les tabulations /!\ Dans le même fichier cherchez : case 71052 : // ÁøÀç°æ { // À¯·´, ½Ì°¡Æú, º£Æ®³² ÁøÀç°¡ »ç¿ë±ÝÁö //if (LC_IsEurope() || LC_IsSingapore() || LC_IsVietnam()) //return false; LPITEM item2; if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell))) return false; if (item2->IsExchanging() == true) return false; if (item2->GetAttributeSetIndex() == -1) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¼Ó¼ºÀ» º¯°æÇÒ ¼ö ¾ø´Â ¾ÆÀÌÅÛÀÔ´Ï´Ù.")); return false; } if (item2->ChangeRareAttribute() == true) { char buf[21]; snprintf(buf, sizeof(buf), "%u", item2->GetID()); LogManager::instance().ItemLog(this, item, "CHANGE_RARE_ATTR", buf); item->SetCount(item->GetCount() - 1); } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("º¯°æ ½Ãų ¼Ó¼ºÀÌ ¾ø½À´Ï´Ù")); } } Entre "if (item2->GetAttributeSetIndex() == -1)" et "if (item2->ChangeRareAttribute() == true)" Ajoutez ceci : if (item2->IsEquipped()) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("no.switch")); return false; } /!\ Attention à bien mettre les tabulations /!\ Partie source c'est fini ! Ensuite rendez vous ici => /usr/metin2/share/locale/france/locale_string.txt/ Et ajoutez à la fin du fichier : "no.switch"; "Vous ne pouvez pas switch les bonus d'un équipement équiper"; /!\ Attention à bien laisser une ligne vide à la fin du fichier /!\ Source : Just4Metin et moi
  5. ATTENTION Trojan détécté par Microsoft Security sur Windows 10 ! Bonjour, En effectuant des traveaux d'organisation et d'optimisations sur les sources metin2, je suis tombé sur ce travail déjà tout fait en ce qui concerne le lanceur du client. Reboot, l'auteur de ce travail admiratif m'a autorisé de vous le partager et en voici la preuve: Explications: Binary => Endroit où sont placé les exe après la compilation extern => Vous vous en rendrez compte seulement... source => Contient les sources (.cpp et .h) vs_files => Nécessaires à Visual Studio client.sln => Projet Visual Studio (pour compiler) Version Python: 2.2 ENABLE_COSTUME_SYSTEM ENABLE_ENERGY_SYSTEM ENABLE_DRAGON_SOUL_SYSTEM ENABLE_BELT_SYSTEM Cryptopp 5.6.2 boost 1.55 *Normalement, aucune erreur à la génération de la solution. Version de Visual Studio: 2012 ou 2013 Lien (original): sur Zippyshare Source: Metin2Dev Cordialement, Ioio --- Download
  6. Bonjour, aujourd'hui je vous partage une API dont j'en suis l'auteur. Cette API sert pour tout ce qui est sur le client de jeu Dofus 1.29, c'est-à-dire : Les news RSS Inscription via le client de jeu Affichage du captcha qui peut-être regénéré Affichage des réponses de "Comment avez-vous connu Dofus ?" Les cadeaux (les Dofus sur la connexion sont des cadeaux d'abonnement à la base) Le statut des serveurs L'API gère aussi les différentes communautés du jeu, j'entends par la la gestion des langues (FR, EN, DE, ES, IT, PT, NL) qui sont présentes dans le client. Les news RSS Inscription via le client de jeu Les cadeaux Le statut des serveurs Pour utiliser cette API il vous faut avoir composer, composer est un gestionnaire de dépendances qui vous servira pour importer les bibliothèques nécessaire au fonctionnement de l'API. Il vous aussi posséder une base de données MySQL ou MariaBD, ces deux systèmes de base de données sont "identiques". Il vous faut activer la ré-écriture d'url sur votre serveur web. Une documentation est disponible sur le dépôt de l'API. L'API ainsi que les sources sont disponibles sur le dépôt github.com. --- Download
  7. Salut à tous, Ici Kaikina . Donc je suis là pour vous présenter mon tutoriel pour rediriger vos swf. Il n'est, certes, pas parfait, mais je vous invite à le critiquer afin que je puisse l'améliorer ; Exposez vos problèmes malgré ce tutoriel, afin que je puisse rajouter comment ne pas les avoir. Le voici: Pour commencer, si cela n'est déjà fait, télécharger vos swf. Lien pack Il faut que vous ayez wamp, téléchargez-le si ce n'est pas le cas. Installez-le et cliquez sur la petite icône en bas à gauche puis "Démarrer les services", et vous avez deux possibilité : - Il devient blanc, tout va bien et on peut continuer. Ou alors vert pour les nouvelles versions. - Il devient jaune, ou orange pour les nouvelles versions, il y a quatre solutions : Fermez Skype, ou soit si vous ne voulez pas, changez le port de Skype. Pour ce faire, Skype=>Outils=>avancé=>connexion=> décochez la case qui dit d'utiliser le port 80. Panneau de configuration --> Outils d'administration--> Services : cherchez Apache 2.2, clique droit dessus, "Arrêter". Cherchez ensuite MySQL, clique droit dessus, "Arrêter". Cherchez wampapache, clique droit dessus "Démarrer", puis cherchez wampmysqld, clique droit dessus "Démarrer". Si vous ne trouvez pas ce répertoire, allez dans votre panneau de configuration et cherchez un peu partout jusqu'à trouver "Services". Fermez le logiciel "Teamwiever". Allez au répertoire suivant: wamp/bin/apache/apache2.xxxx/conf/ et modifiez le fichier "http.conf". Faites ctrl+f et cherchez "80" une fois la recherche faite, remplacez le "80" du texte par "81" et relancez la recherche jusqu'à remplacer tous les "80" en "81". Relancez Wamp. Ensuite wamp devient blanc normalement ou vert. (Attention, si vous avez fait une base de données alors que wamp était jaune ou orange, votre base de données ne sera accessible que quand vos swf ne seront pas redirigés(wamp jaune ou orange), si c'est le cas, dumpez vos databases,puis quand wamp est blanc ou vert, exécutez les sauvegardes.) Avant de continuer le tutoriel assurez-vous bien que wamp est en ligne. Passez la souris par dessus l'icône. S'il est hors ligne, cliquez sur "Passer en ligne". Ensuite il faut placer vos fichiers SWF. Allez au dossier www par une des manières : Clic droit sur l'icône wamp en bas à droite, puis Répertoire www Démarrer=> Poste de travail=> C:\ => wamp=> www Maintenant que vous êtes dans le dossier "www", placez-y le dossier dofus fraîchement téléchargé.. Vous devez donc avoir le chemin suivant: Wamp\www\dofus\lang\swf\ Et là tous vos fichiers SWF Avec hébergement Web Allez dans votre serveur web (là où se trouve vos dossiers hebergés). Allez soit dans "www" ou "public_html" ça ne changera rien. Maintenant que vous êtes dans le dossier "www" ou "public_html", Mettez-y le dossier dofus que je vous ai fait télécharger _______________________________________________________________________________________ Ceci est une config correcte, c'est la config.xml de votre dossier Dofus (le jeu). <config> <delay value="500"/> <rdelay value="3000"/> <rcount value="10"/> <conf name="En ligne"> <dataserver url="[Hidden Content]" priority="4" /> <dataserver url="data/" type="local" priority="3" /> <dataserver url="[Hidden Content] us/" priority="1" /> <dataserver url="[Hidden Content]" priority="0" /> </conf> <conf name="En ligne (TEST)" type="test"> <dataserver url="data/" type="local" priority="3" /> <dataserver url="[Hidden Content] ustest/" priority="1" /> <dataserver url="[Hidden Content]" priority="0" /> </conf> <cacheasbitmap> <cache element="ExternalContainer/InteractionCell" value="false" /> <cache element="ExternalContainer/Ground" value="false" /> <cache element="ExternalContainer/Object1" value="false" /> <cache element="ExternalContainer/Object2" value="false" /> <cache element="ExternalContainer/Zone" value="false" /> <cache element="ExternalContainer/Select" value="false" /> <cache element="ExternalContainer/Grid" value="false" /> <cache element="ExternalContainer/Pointer" value="false" /> <cache element="GAPI/UI" value="false" /> <cache element="GAPI/UITop" value="false" /> <cache element="GAPI/Popup" value="false" /> <cache element="GAPI/UIUltimate" value="false" /> <cache element="GAPI/Cursor" value="false" /> <cache element="mapHandler/BACKGROUND" value="false" /> <cache element="mapHandler/Cell/Ground" value="false" /> <cache element="mapHandler/Cell/Object1" value="false" /> <cache element="mapHandler/Cell/Object2" value="false" /> <cache element="mapHandler/Cell/ObjectExternal" value="false" /> <cache element="Zone/Zone" value="true" /> <cache element="Zone/Pointers" value="true" /> </cacheasbitmap> </config> lien d'accès aux fichiers = Pour hamachi : adresse IP d'hamachi suivie de /dofus/ (Ex : [Hidden Content]) En local : adresse IP locale suivie de /dofus/ (Ex : [Hidden Content]) Avec un hébergement web : lien de votre site suivi de /dofus/ (Ex : [Hidden Content]) Maintenant, allez chercher votre fichier lang_fr_786.swf et ouvrez-le avec le logiciel "Sothink SWF Quicker". Allez dans l'onglet "Action" et cherchez ces lignes. C.SERVER_NAME = ["213.248.126.11"]; C.SERVER_PORT = [443, 5555]; Remplacez l'IP de C.SERVER_NAME par celle où est herbergé votre serveur : Pour hamachi : Votre IP hamachi (Ex : C.SERVER_NAME = ["5.125.54.542"] En local : Votre IP locale (Ex : C.SERVER_NAME = ["127.0.0.1"]; Sur un dédié : L'IP du dédié (Ex : C.SERVER_NAME = ["128.88.548.21"]; Remplacez les ports de C.SERVER_PORT par vos ports de jeu (GAME_PORT et REALM_PORT). Cliquez sur "Exporter", remplacez l'ancien fichier, et quittez sans sauvegarder. Maintenant essayez de vous connecter en jeu (avec le serveur ON bien sûr), si vous arrivez à vous connecter, votre serveur est bien redirigé. J'espère que ce tutoriel vous a aidé, si vous avez des questions n'hésitez pas, si ça ne marche toujours pas mp moi. Ce tutoriel provient de l'utilisateur "Kaikina". Le partage de ce tutoriel est possible en citant l'auteur.
  8. Bonsoir ! Après une semaine à essayer de compiler le client de metin2, je vous fait un petit tutoriel. Tout d'abord, il vous faut les sources de metin : ICI Pour compiler le client, je vous conseille la branche novaline mais vous pouvez très bien utiliser la branche mainline. Ensuite, vous conseille Visual Studio 2013, car le 2008 est foireux et vous risquez d'avoir des erreurs dans votre compilation (je parle en connaissance de cause ) Vous pouvez le télécharger ici: [Hidden Content] Etape 1, préparez son environnement Une fois les sources et le logiciel téléchargé, ouvrez le. Cliquez sur l'icône ouvrir un fichier et choisissez ce sln: Metin2Client_VC90.sln Il se trouve dans Srcs\Client ----------------------------------------------------------------------- Maintenant, créez un dossier lib et include où vous voulez. Vous pouvez le faire à la racine de votre disque dur, sur le bureau, peu importe. On va dans chaque dossier, mettre les fichiers nécessaire au code source. DOSSIER LIB Srcs\Tools\WorldEditor\extern\lib Mettez le contenu de ce dossier, dans le dossier lib que vous avez créé. Srcs\Extern\lib Mettez le contenu de ce dossier, dans le dossier lib que vous avez créé. DOSSIER INCLUDE Srcs\Tools\WorldEditor\extern\include Mettez le contenu de ce dossier, dans le dossier include que vous avez créé. Srcs\Extern\include Mettez le contenu de ce dossier, dans le dossier include que vous avez créé. !/ N'hésitez surtout pas à remplacer /! ------------------------------------------------------------------------ Avant de lier vos dossier à votre code, je vous conseille de changer le mode de compilation. Personnellement, j'utilise le mod Release qui me permet d'avoir un lanceur d’environ 3200Ko Pour changer le mod de compilation, faites un clic droit sur votre solution (votre .sln) dans visual studio puis cliquez sur propriété. Allez dans Propriétés de configuration ---> Configuration. Cliquez sur Gestionnaire de Configuration et dans configuration de la solution active, vous choisissez Release. Vos projets vont se mettre en Release, il vous reste juste à fermer la fenêtre et cliquer sur OK. ------------------------------------------------------------------------ Maintenant, il faut lier chaque projet de votre solution à vos dossiers. Faites un clic droit sur UserInterface puis cliquez sur Propriété. Allez dans Configuration ---> Vc++ et dans répertoire include, vous choisissez votre dossier include, comme sur le screen. Dans Répertoires de bibliothèques, vous choisissez votre dossier lib. Vous faites exactement la même chose pour les 15 autres projets (EterPack, EterLib, etc ...) ------------------------------------------------------------------------ Maintenant il vous suffit juste d'appuyer sur ces touches pour compiler (en même temps): CTRL + SHIFT + B Pour recompiler le client, faites un clic droit sur la solution puis: Régénérer la solution Malheureusement, la compilation est assez longue. Le .exe final se trouvera dans le dossier /UserInterface/Release Les erreurs fréquentes Impossible d'ouvrir mon sln Votre sln n'utilise juste pas le bonne version. Vous pouvez résoudre ce problème tout simplement. Éditez avec NotePad votre SLN et à la place de: Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 Mettez(si vous utilisez Visual 2008): Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2008 Ca varie en fonction de la version de votre IDE, pensez à bien le retenir 16>.AffectFlagContainer.cpp(68 ) : error C2440: 'initializing' : cannot convert from 'CAffectFlagContainer::Element' to 'char &' 16>.\AffectFlagContainer.cpp(68 ) : error C2440: 'initializing' : cannot convert from 'CAffectFlagContainer::Element' to 'char &' Cliquez deux fois sur CAffectFlagContainer et cela va vous amener à un BYTE. Faites clic droit sur BYTE et cliquez sur Atteindre la définition Il suffit juste de remplacer char par unsigned char. 6>.PythonGraphic.cpp(294) : error C2664: 'CPythonGraphic::SaveJPEG' : cannot convert parameter 2 from 'char *' to 'LPBYTE' 6>.\PythonGraphic.cpp(294) : error C2664: 'CPythonGraphic::SaveJPEG' : cannot convert parameter 2 from 'char *' to 'LPBYTE' Double cliquez sur l'erreur et ça va vous amener sur la ligne de l'erreur. Effacez cette ligne et mettez: bool bSaved = SaveJPEG(c_pszFileName, (LPBYTE)pbyBuffer, uWidth, uHeight); Erreur Python Il arrive parfois, si vous utilisez Python-2.2, vous ayez une erreur. La même chose pour Python2.7. Trouvez donc dans un premier temps, l'erreur qui concerne cette ligne: PyAPI_FUNC(struct symtable *) PySymtable_Build(mod_ty, const char *, PyFutureFeatures *); Et commentez la. (Pour commenter: //commentaire) module' object has no attribute 'EQUIPMENT_RING1 Erreur Sysser 'module' object has no attribute 'EQUIPMENT_RING1' Dans le fichier: Locale_inc.h. Vous supprimez tout et vous mettez: #define LOCALE_SERVICE_SINGAPORE #define ENABLE_COSTUME_SYSTEM #define ENABLE_ENERGY_SYSTEM #define ENABLE_DRAGON_SOUL_SYSTEM #define ENABLE_NEW_EQUIPMENT_SYSTEM 16>cryptlib-5.6.1MTd.lib(iterhash.obj) : error LNK2001: unresolved external symbol \"void __cdecl std::_Xbad_alloc(void)" ([email protected]@@YAXXZ) 16>cryptlib-5.6.1MTd.lib(iterhash.obj) : error LNK2001: unresolved external symbol "void __cdecl std::_Xbad_alloc(void)" ([email protected]@@YAXXZ) Si vous avez des erreurs avec la lib Cryptlib-5.6.1MT, il faut recompiler cette lib. Pour se faire, avec Visual Studio, ouvrez le fichier cryptlib.2008.sln qui se trouve dans le dossier: Srcs\Extern\cryptopp Vous importez la solution, vous compilez avec CTRL + SHIFT + B et une fois terminé, la lib se trouvera dans Srcs\Extern\lib. Sous le nom de: cryptlib-5.6.1MTd.lib Attention ! Il faut compiler la lib en MT et sur le même toolset que le client ! Dans tous les cas, vous pouvez très simplement trouver cette lib avec la date du fichier. 5>mss32.lib(mss32.dll) : error LNK2026: module unsafe pour l'image SAFESEH. 5>mss32.lib(mss32.dll) : error LNK2026: module unsafe pour l'image SAFESEH. Il suffit de désactiver / SAFESEH. Pour cela, clique droit sur UserInterface, propriétés puis cliquez sur éditeur de liens, allez dans avancé puis sur la ligne Image avec gestionnaire d'exceptions sécurisés, vous mettez non. Vous régénérez la solution, et le tour est joué TraceBack - Error: Bad magic number in lib libtraceback.pyc L'erreur dans la fenêtre LOG: TraceBack - Error: Bad magic number in lib lib\traceback.pyc Le soucis vient du fait que votre lanceur est dans une certaine version de python alors que vos libs (Dans client, le dossier lib) utilisent une autre version de Python. En fait, on peut appeler le magic number, une clé pong mais avec un contexte bien différent. Vos libs, quand vous les éditez en HEXA, contiennent le nombre magique correspondant à votre python.dll python27.dll a son propre magic number tout comme python22. C'est une sorte de laison. Pour résoudre ce problème, vous avez deux choix: Passez vos libs client à la version python de votre lanceur ou alors compiler votre lanceur avec la version Python correspondant à votre client. TraceBack Hé oui, vous pouvez aussi avoir une fenêtre d'erreur mais juste avec l'erreur TraceBack. Cela signifie qu'un de votre dossier pack n'est pas apte à prendre en compte ce lanceur compilé (je simplifie, sinon j'écris un topic sur cette erreur). En gros c'est que vos fichiers n'utilisent pas les bonnes fonctions. Dans ce cas, je vous conseille de télécharger ce client: ICI Vous essayez de prendre les fichiers root et voir si votre client se lance sans cette erreur. (vous faites vos modif après) Si root ne fonctionne pas, essayé locale_* ou alors essayez uiscript. Il y en a bien un qui va résoudre votre soucis. La plus part du temps, c'est root. LoginWindow.__LoadScript.LoadObject - :Python int too large to convert to C long À l'entête du fichier: PythonUtils.cpp, ajoutez: #define PyLong_AsLong PyLong_AsLongLong #define PyLong_AsUnsignedLong PyLong_AsUnsignedLongLong Vous pouvez apprendre à passer de Python 2.2 à Python 2.7 grâce à ce tutoriel : ICI Source: Moi et en m'aidant de m2d pour la correction de certaines erreurs
  9. Bonjour a tous, Je vous propose un CMS par Defura. Il est développé en PHP ! Merci à lui Le site est en allemand avec les .PSD. Téléchargment : ICI --- Download
  10. Bonjour, Pour tout les fans des erreurs windows et des bruit MSN écoutez sa: Erreur Windows Remix Source YouTube
  11. Asuras Continent Version 1.00.3 Téléchargement : [Hidden Content] Cordialement, --- Download
  12. Salut à tous, Dans les codes sources du jeu, vous avez peut-être trouvé quelques fichiers dans un dossier "Tools". Petites explications sur leur utilité, par ordre alphabétique ! Builder Contient des fichiers utiles pour compiler, très peu utilisé, il vaut mieux partir directement sur la commande "gmake" plutôt que de se compliquer la vie avec ça. DumpProto Permet de convertir les item_proto.txt et mob_proto.txt du serveur en item_proto et mob_proto pour le client. Metin2MsaMaker Les .msa sont des petits fichiers que vous avez dû croiser dans les dossiers des mobs, des PNJ, ou des armures : Ces fichiers sont des informations concernant les animations, et permet au jeu de lire certains .gr2 Cet outil permet de les générer automatiquement ! Metin2PackMaker Permet de créer des .eix et .epk, et de les protéger avec toutes les protections du client officiel : Panama, CryptoPP, les deux combinés, stockage simple, compressé, etc ... RAD Game Tools Contient les Source Development Kit (des outils pour faire du codage) du Granny Engine et de Miles. Le Granny Engine est le système 3D utilisé par Metin2 (les .gr2) Miles, c'est tout le son du jeu (musiques, sons, etc ...) Ce dossier est surtout utile pour mettre à jour votre version du Granny Engine et celle de Miles, ou d'ajouter de nouvelles fonctionnalités ! Regen Générateur de regen automatique ! J'ai fais un tutoriel dessus, ici : [Tutoriel] Le Regen Maker TorrentPatch Ancien patcheur torrent officiel d'Ymir. WorldEditor Un des outils les plus importants ! Il permet de modifier, créer les maps de Metin2. Entre autres, vous pouvez modifier les textures de la carte, leur placement, les arbres, les bâtiments, le relief, l'eau, etc... Calypso & Natsuryu ont fait un petit tutoriel là-dessus : [Mapping] Utilisation de Word Editor
  13. Bonjour, Petit tutoriel pour vous aider dans la configuration de votre serveur privé Aion et notamment dans la modification du nombre de joueurs en ligne maximum autorisé et dans la modification des rates. Ouvrez le fichier suivant : "gameserver/config/gameserver.properties" de votre core Aion. Modifier le nombre de joueurs maximum en ligne : Cherchez la ligne suivante et modifiez "100" par le nombre de joueurs en ligne maximum autorisé que vous voulez : # Maximum online players on the server gameserver.network.client.maxplayers=100 Modifier les rates : Cherchez les lignes suivantes : #---------------------------- #Rates config's: #---------------------------- #Experience gain gameserver.rate.xp=1 #Experience gain for group gameserver.rate.groupxp=1 #Item drop chance multiplier gameserver.rate.drop=1 #Quest XP rate gameserver.rate.quest.xp=1 #Quest Kinah rate gameserver.rate.quest.kinah=1 Explications : Quand on modifie les rates de son serveur, cela veux dire que vous changez par rapport à l'officiel (X * l'officiel). gameserver.rate.xp=1 Modifie le gain d'XP. gameserver.rate.groupxp=1 Modifie le gain d'XP pour le groupe. gameserver.rate.drop=1 Modifie la chance de ramasser les objets. gameserver.rate.quest.xp=1 Modifie le gain d'XP des quêtes. gameserver.rate.quest.kinah=1 Modifie le gain de Kinah reçu dans les quêtes. J'espère que ce tutoriel vous aura été utile ! En cas de questions, de problèmes ou autres, merci d'utiliser la section Aide / Questions / Support prévue à cette effet Cordialement, SgT-Fatality
  14. Voila les commandes admin utilisées dans l’émulateur Aion-Engine|Lightning, pour les autres émulateurs, Aion-core, ... c'est les mêmes à quelques commandes près. Note : Il n'y as pas de majuscules dans les commandes ou les paramètres. Une commande c'est : //commande On n’écrit pas les < > Il faut avoir un compte de rang supérieur à 0( 3 pour super admin). Commandes : Un merci c'est gratuit Cordialement,
  15. Bonjour a tous. Dofus Version 1.17.1 (February 2007) Téléchargement : [Hidden Content] Cordialement, Defura. --- Download
  16. Niveau requis : Débutant Temps estimé : 15 minutes Réécriture by Xayah Ce tutoriel aura pour but de vous aider à installer le SwitchBot sur votre Client Metin2. Pré-requis : L'archive suivante : ICI ou ICI ou FE I. Installation Pour continuer: Si vous avez un soucis, n'hésitez pas à faire une demande d'aide dans l'AQS
  17. Bonjour, Voici donc quatre maps après une très soudaine absence. Du faite que ces dernière sont très petite, elle ne sont pas très adaptés au combats, et devrons donc faire office de map de départ ou de map shop. Les triggers n'ont pas été fait, je suis navré. Téléchargement : ICI Cordialement, --- Download
  18. Salut Salut !! J'ai hésité à mettre ce mini-tuto dans la partie programmation, mais vu que celui pour .shop est dans cette partie, alors je fait pareil ! Donc, comme le dit le titre, je vais vous expliquer dans mon deuxième tuto comment créer une commande .vote, permettant d'afficher un lien pour vote. Le truc parfait pour les flemmards quoi ! Et vu qu'il y en as pas mal, ça peut être bien pour inciter à voter ~ Pré-Requis ~ • Eclipse • Vos Sources ~ Étapes ~ 1 • Ouvrez Eclipse • Ouvrez le dossier "Sources => src => game => GameThread" • Faites Ctrl + F, collez : if(msg.length() => Recherchez 2 Vous devrez tomber sur : if(msg.length() > 7 && msg.substring(1, 8).equalsIgnoreCase("command")) { SocketManager.GAME_SEND_MESSAGE(_perso, "Commandes Disponibles : \n.start\n.infos \n.save\n.shop\n.vote", Ancestra.CONFIG_MOTD_COLOR); return; } Ne faites pas attention si j'ai des commandes en plus. Bref je n'ai jamais vraiment étudié le java sur des tutos [Mais je compte le faire] donc je ne vais pas pouvoir vous dire à quoi tout correspond. Prenons cette ligne: if(msg.length() > 7 && msg.substring(1, 8).equalsIgnoreCase("command")) "7" = Nombre de lettres composant la commande sans le "." "1" = Toujours 1 : le petit "." "8" = Nombre de lettres composant la commande avec le "." "command" = Nom de la commande En résumé: Si ("if" en début de ligne) un mot comprenant un point suivit d'un mot "command" composé de 7 lettres, et donc si le tout fait 8 lettres, est tapé, alors ... "Alors" représente la suite encadrée de "{ - }" : { SocketManager.GAME_SEND_MESSAGE(_perso, "Commandes Disponibles : \n.start\n.infos \n.save\n.shop\n.vote", Ancestra.CONFIG_MOTD_COLOR); return; } Tout ce qui part de "SocketManager.GAME,etc..." sont (on va dire) les instructions à exécuter. Elles sont TOUJOURS entre les "{ - }" ===================================== Si vous voulez en savoir plus, -Walaka- explique beaucoup mieux que moi ici. Bref, a la suite de la commande .command par exemple, collez: if(msg.length() > 4 && msg.substring(1, 5).equalsIgnoreCase("vote")) { } Pas la peine de ré-expliquer, vous avez compris je pense. Maintenant, il faut mettre les "instructions" ! Où ça ? Donc, on veux afficher un lien.Les codes pour cela sont (vous l'aurez compris si vous avez examiné la commande .command) : SocketManager.GAME_SEND_MESSAGE(_perso, " Texte à afficher", Ancestra.CONFIG_MOTD_COLOR); Sachant que Ancestra.CONFIG_MOTD_COLOR Correspond à la couleur avec laquelle le message doit être écrit (couleur changeable dans la config.txt à la ligne "MOTD_COLOR" ; les codes de couleurs sont dispos sur le net ), trouvable dans la config d'Ancestra (Ancestra.CONFIG) 3 En résumé: if(msg.length() > 4 && msg.substring(1, 5).equalsIgnoreCase("vote")) { SocketManager.GAME_SEND_MESSAGE(_perso, " Vive Funky'Emu ! ", Ancestra.CONFIG_MOTD_COLOR); return; } Maintenant, le lien ! Une fois encore, c'est un code qu'il faut pour afficher le lien, et non les simples : [url]adresse[/url] Mais plutôt: texte Ce qui nous donne : if(msg.length() > 4 && msg.substring(1, 5).equalsIgnoreCase("vote")) { SocketManager.GAME_SEND_MESSAGE(_perso, "Votez pour nous ! => ICI ", Ancestra.CONFIG_MOTD_COLOR); return; } Voilà Voilà ! Si vous voulez vous pouvez rajouter à la suite du texte de la commande .command "\n.vote"; de cette façon la commande sera affichée lors de l'exécution de l'autre commande ".command". Un peux compliqué ? C'est bien ça vous fait réfléchir Petit Bonus Pour personnaliser un poil l'écriture: Met en gras \n : saute une ligne Pour tout problème MP moi, n'hésitez pas a critiquer du moment que c'est fondé Je vous laisse distribuer ce petit tutoriel explicatif du moment que vous mettez mon nom ...
  19. Bonjour à tous ! Je vais vous expliquer comment changer les rates des mobs et du forgeron ainsi que les caractéristiques des mobs. Pour changer les rates des mobs(monstres) il faut aller dans votre bd puis ouvrir la base de donnée player et ouvrir mob_proto. Dans mob_proto vous pouvez changer les drop de yang,d'xp et et probabilité de drop d'objets en changeant les valeurs dans les colonnes comme sur ce screenshot qui montre comment changer le drop (exp,drop yangs plus bas): ASTUCE pour ne pas modifier n'importe quel monstre allez dans la colonne folder et tout les monstres son classé de haut en bas /!\ Si vous voulez modifier le rates X de tout les monstre vous serez obligé de changer toute la colonne! Ici le drop d'argent au minimum est au maximun avec l'exp. Attention: mettre 99999999 d'exp ne vous en donnera pas forcément 99999999 mais vous en donnera plus que si vous mettez 44444444 cela vous en donnera environs 15% d'exp je dirais (j'ai pas vérifié) le maximun est de 4294967295. Le drop de yang se fait pour tout un groupe de mobs. Exemple: vous avez mis 9999999 et vous avez de tas de pieces ces de tas auront une valeur de 3333333 yangs .Voici le screen qui vous permettra de mieux vous reperez dans la table de modification: Pour modifier les rates du forgeron (selon Legolas) allez dans votre db/player/refine_proto, mettez 100 pour avoir 100% de chance de réussite et 9999 fais la meme chose mais c'est le chiffre maximum que l'on peut mettre, voici le screen: [Rajouté parce-que vous le valez bien ] Pour changer ou enlever des items du forgeron, tout ce passe ici, ici ,ici et ici pendant que moi j'attaquerais par l'..... euh :blush: Tout ce passe dans les première colonne c'est à dire VnumX countX (X représentant un chiffre) Vnum sert à mettre l'objet nécessaire à l'up et count le nombre d'unités. Exemple: Vnum0 count0 19 10 =il faut 10 épée lvl +9 pour up l'objet. Pour enlever les objets vous mettez zéro dans les colonnes (qui sont par couples comme vous avez remarqué ... certainement...) donc vous mettez zéro dans toutes (ou certaines si vous voulez juste en enlever quelques un) VnumX et countX. Pour en rajouter vous changez le nombre dans count et si il reste de la place dans certaines colonne Vnum et count vous mettez un Vnum de l'objet que vous voulez dans la colonne Vnum et dans sa soeur count le nombre. Pour changer le ou les objets... Vous allez voir dans la colonne Vnum seulement et vous changez le vnum. Ze screen Je vous conseille de cliquer sur l'image pour aller la voir de plus prêt avec une bonne qualité largement supérieure à celle-ci (je ne m'attendais pas à un si mauvais résultats... pardonnez ma pauvre âme damnée) Revenons en au mobs.Je vais maintenant vous dire comment modifier leurs stats comme: 0 de défense, 1 pv sensible/insensible/résistance a l'épée à deux mains/épée à une main probabilité de stunt (assomement) ,etc,... Pour ce qui et de la résistance si vous voulez que le mob ai pour faiblesse l'épée mettez dans la colonne correspondante -X pour qu'il résiste ne mettez pas le "-" devant (bien entendu "X" représente le chiffre que vous allez mettre:)) voila le premier screen (il y en a 5 en tout): ET n'oubliez pas de rebooter votre serveur quand vous avez fini vos modifications grâce à la commande reboot et de sauvegarder vos modifications dans Navicat grâce à la commande Export registry file... En espérant avoir aidé ! Voila! Pour toutes questions, rendez-vous dans la catégorie Aide/Questions/Support Source : zebigboss512
  20. Bonjour à tous ! Pack contient : SWF de la map Position de combat Tutoriel d'insertion de la map. (C'est pas trop un tuto'. Enfin... Un tuto' très vite fais !) [Hidden Content] Screenshot : --- Download
  21. Bonjour, Encore un petit tutoriel dans ma lancée pour vous filer un petit script SQL a placer dans votre base de donnée, vous pourrez ensuite effectuer une suppression d'un personnage déjà créé ! CREATE FUNCTION check_communicate_lock(uname TEXT) RETURNS integer AS 'select 1;' LANGUAGE SQL IMMUTABLE RETURNS NULL ON NULL INPUT;
  22. Alors, avant de parler de quoi que ce soit : De nombreux MenuAdmin existent pour AncestraR, seulement, certains sont mal organisés ou pas suffisamment complet. J'espère que celui ci pourra palier ces problèmes. Je pense qu'une petite explication des trois versions n'est pas de trop. La v1 possède deux commandes sur le menu principal : Signaler sa présence au staff et Signaler sa présence aux joueurs. Le premier lance sur le chat : /q viens de se connecter. Ainsi tout les joueurs GM1 ou plus pourront le lire. Le deuxième lance sur la console : nammounce viens de se connecter. Ainsi tout les joueurs ayant le canal vert ouvert pourront lire le message. La v2 possède la deuxième commande sur le menu principal. La première commande se trouve dans le StartUp et sera lancée automatiquement à la connexion du joueur. La v3 possède les deux commandes dans le StartUp et elles seront lancées automatiquement à la connexion du joueur. Ce MenuAdmin sera mis à jour suivant vos critiques et remarques et a chaque nouvelle commandes implantables. Menu Principal => (Version2) Téléchargement : [Hidden Content] ___ Voici pour la présentation du MenuAdmin. Je suis disponible pour vos remarques/idées via les messages privé de Funky-Emu ou via [email protected] Merci de respecter mon travail. --- Download
  23. Niveau requis : Débutant Temps estimé : 20 minutes Bonjour à tous ! Aujourd'hui, petites explications sur la compilation: pourquoi compiler son propre game/db/lanceur? Comment ça se passe? C'est compliqué? Pré-requis: Aucun I. Les codes sources, kesako? II. La compilation III. Les avantages de la compilation Voilà, ce petit tutoriel est fini, n’hésitez pas à laisser un commentaire si quelque chose manque, ou que vous avez besoin d'éclaircissements !
  24. Bonjour / Bonsoir à tous . Partage de donjon avec les modifications suivantes : - Dialogue Officiel des PNJ (Clef nécessaire pour entrer dans le donjon). - MobGroupfix dans toutes les salles (Groupes de Mobs identique à l'officiel). - Endfight_action parfaitement créé (Identique à l'officiel ou presque). - Emplacement identique à l'officiel (Ou presque). Ajout de quelques Donjons ! --- Download
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.