Jump to content

Theboost

Member
  • Content Count

    92
  • Joined

  • Last visited

  • Points

    4,780 [ Donate ]

Community Reputation

5 Neutre

About Theboost

  • Rank
    Vigie

Recent Profile Visitors

876 profile views
  1. Le script de MT2CMS adapté sur un ancien design, c'est pas mauvais Mais à noter que le code PHP utilisé par Rubinum est différent de celui-ci, donc c'est pas vraiment la même chose. Très beau partage sinon.
  2. Salut, Si je me trompe pas, ça doit être à cause de la version FreeBSD qui est trop élevée. Essayes avec une version inférieure comme la 10 ou la 11. Autrement, le seul qui propose des files compatibles FreeBSD 12 sont celles d’ASIKOO, mais il effectue encore des corrections dessus donc je ne sais pas si ce serait une bonne idée de les utiliser...
  3. Salut, T'as pas besoin de payer pour ce genre de choses (sauf peut-être le shop offline, mais il faut faire attention au vendeur). Si tu peux débloquer ta messagerie, je t'enverrai les liens vers les tutoriels (c'est d'autres forums, je ne sais pas si c'est autorisé de les publier ici directement...)
  4. Une fois le fichier en question modifié, il te faut recompiler le game. Une fois fait, tu devras prendre ce nouveau game et le placer sur ton dédié dans /usr/metin2/share Pour le portail, essayes de m’envoyer un screen car je ne visualise pas...
  5. Bonjour, Question 4 : Oui Pour pouvoir compiler sur ton dédié, il te faudrait créer tout un environnement de compilation (gmake, gcc etc), ce qui serait assez compliqué et long à réaliser, avec par ailleurs gcc4 qui est utilisé par le makefile des files 2016, n'est pas téléchargeable avec les pkg sur FreeBSD11 que tu dois certainement utilisé sur ton dédié. C'est pourquoi, si tu souhaites compiler tes sources serveur, créer un serveur local en utilisant directement le VDI qui est préparé pour la compilation, tu n'auras alors aucun soucis pour faire tes modifcations Question 1 : cd /usr/src/ && tar xvf mainline.tgz Si tu ne l'extraits pas, tu ne risques rien, c'est à utiliser simplement si tu souhaites effectuer des modifications sur les sources serveur. Question 3 : Si j'ai bien compris, tu parles du portail qui est à côté du téléporteur, pas loin du garde de la tour du démon ? Si oui, je pense qu'il est possible de déplacer cela dans le fichier npc.txt de la map en question (/usr/metin/share/local/france/map). Tu peux ici retrouver la relation des map avec leur ID : Cordialement,
  6. Sur le topic, il est mentionné le retrait du stric_strans_table après l'installation de MySQL dans le fichier my.cnf. L'as-tu effectué ? A titre d'indication, voici le chemin du my.cnf pour mysql 5.6 : /usr/local/my.cnf Autrement, j'aimerais savoir quel VDI tu utilises, sauf si tu as fait toi-même l'installation de ta VM.
  7. Tu as bien modifié tes configs directement sur winscp (ou filezilla selon ce que tu utilises) ? J’avais déjà eu un problème en modifiant un seul config puis en le transférant sur les autres. Pour t’assurer que ça vient pas de ça, essayes de ré-extraire les files et de créer l’utilisateur de base, puis de lancer tes files. Car ici on voie clairement qu’aucun core ne s’ouvre.
  8. Salut, Il semble y avoir un problème de connexion de ton utilisateur local qu'on remarque grâce à cette erreur : Je suis allé voir du côté de ses files, et aucun VDI n'est fourni, il faut donc obligatoirement effectuer ces commandes pour être en adéquation avec son CONFIG. Essayes donc d'entrer toutes ces commandes sur ta VM. mysql -uroot -p(ton mot de passe) (sans inclure les parenthèses) mysql GRANT ALL PRIVILEGES ON *.* TO 'core'@localhost IDENTIFIED BY 'starfoul' WITH GRANT OPTION; flush privileges; quit Cordialement,
  9. Salut, petite information à ajouter dans le tutoriel pour la ligne 53 et 54, celle qu'il faut ajouter un _BONUS pour que ce soit fonctionnel. Ex :  APPLY_ATT_GRADE doit devenir  APPLY_ATT_GRADE_BONUS Le cas contraire, le bonus ne marchera pas et vous aurez un syserr.
  10. Pourquoi ne pas passer directement aux files 2016 FE version saw ou saejin ? Tu auras un syserr clean et un ensemble plus propre en général. Sinon penses à vérifier si tu as bien placé les fichiers que tu as téléchargé car normalement ça devrait te permettre de nettoyer presque l'intégralité de ton syserr actuel.
  11. 10 ans comme le nombre d'années auxquelles je joue à metin2
  12. J'avais utilisé le code que tu avais partagé auparavant pour les files 2014 FE, dans lequel il y avait 3 bool de comprise, dont le mob_proto. Je viens de remplacer ce code par l'initial et tous les problèmes concernant les 3 bool ont disparues. Merci beaucoup pour ton code, après l'avoir essayé, il a réussi à régler le problème spécifique à la ligne 188. Pour le problème du vnumSet, il m'a suffit d'ajouter <int> pour régler le problème dans le code du mob_proto. Problème résolu, je laisse le code opérationnel ci-dessous en espérant que le tutoriel soit adapté. Code mob_proto : bool CClientManager::InitializeMobTable() { char query[2048]; fprintf(stderr,"Loading mob_proto from MySQL "); snprintf(query, sizeof(query), "SELECT vnum,name,%s,rank,type,battle_type,level,size,ai_flag,mount_capacity,setRaceFlag,setImmuneFlag," "empire,folder,on_click,st,dx,ht,iq,damage_min,damage_max,max_hp,regen_cycle,regen_percent,gold_min," "gold_max,exp,def,attack_speed,move_speed,aggressive_hp_pct,aggressive_sight,attack_range,drop_item," "resurrection_vnum,enchant_curse,enchant_slow,enchant_poison,enchant_stun,enchant_critical,enchant_penetrate," "resist_sword,resist_twohand,resist_dagger,resist_bell,resist_fan,resist_bow,resist_fire,resist_elect," "resist_magic,resist_wind,resist_poison,dam_multiply,summon,drain_sp,mob_color,polymorph_item,skill_level0," "skill_vnum0,skill_level1,skill_vnum1,sp_berserk,sp_stoneskin,sp_godspeed,sp_deathblow,sp_revive,skill_level2," "skill_vnum2,skill_level3,skill_vnum3,skill_level4,skill_vnum4 FROM mob_proto%s" ,g_stLocaleNameColumn.c_str(), GetTablePostfix()); std::auto_ptr<SQLMsg> pkMsg(CDBManager::instance().DirectQuery(query)); SQLResult * pRes = pkMsg->Get(); if (!pRes->uiNumRows) return false; if (!m_vec_mobTable.empty()) { sys_log(0, "RELOAD: mob_proto"); m_vec_mobTable.clear(); } int size = pRes->uiNumRows; m_vec_mobTable.resize(size); memset(&m_vec_mobTable[0], 0, sizeof(TMobTable) * m_vec_mobTable.size()); TMobTable * mob_table = &m_vec_mobTable[0]; MYSQL_ROW data; //return true; set <int>vnumSet; while ((data = mysql_fetch_row(pRes->pSQLResult))) { /* "SELECT vnum,name,locale_name,rank,type,battle_type,level,size,ai_flag,mount_capacity,setRaceFlag,setImmuneFlag," "empire,folder,on_click,st,dx,ht,iq,damage_min,damage_max,max_hp,regen_cycle,regen_percent,gold_min," "gold_max,exp,def,attack_speed,move_speed,aggressive_hp_pct,aggressive_sight,attack_range,drop_item," "resurrection_vnum,enchant_curse,enchant_slow,enchant_poison,enchant_stun,enchant_critical,enchant_penetrate," "resist_sword,resist_twohand,resist_dagger,resist_bell,resist_fan,resist_bow,resist_fire,resist_elect," "resist_magic,resist_wind,resist_poison,dam_multiply,summon,drain_sp,mob_color,polymorph_item,skill_level0," "skill_vnum0,skill_level1,skill_vnum1,sp_berserk,sp_stoneskin,sp_godspeed,sp_deathblow,sp_revive,skill_level2," "skill_vnum2,skill_level3,skill_vnum3,skill_level4,skill_vnum4 FROM mob_proto%s */ int col = 0; str_to_number(mob_table->dwVnum, data[col++]); if(mob_table->dwVnum ==0) continue; strlcpy(mob_table->szName,data[col++] , sizeof(mob_table->szName)); strlcpy(mob_table->szLocaleName, data[col++], sizeof(mob_table->szLocaleName)); str_to_number(mob_table->bRank,data[col++]); str_to_number(mob_table->bType,data[col++]); str_to_number(mob_table->bBattleType,data[col++]); str_to_number(mob_table->bLevel,data[col++]); str_to_number(mob_table->bSize,data[col++]); //AI_FLAG mob_table->dwAIFlag = get_Mob_AIFlag_Value(data[col++]); //mount_capacity; col++; //RACE_FLAG mob_table->dwRaceFlag = get_Mob_RaceFlag_Value(data[col++]); //IMMUNE_FLAG mob_table->dwImmuneFlag = get_Mob_ImmuneFlag_Value(data[col++]); mob_table->bEmpire = atoi(data[col++]); strlcpy(mob_table->szFolder, data[col++], sizeof(mob_table->szFolder)); mob_table->bOnClickType = atoi(data[col++]); mob_table->bStr = atoi(data[col++]); mob_table->bDex = atoi(data[col++]); mob_table->bCon = atoi(data[col++]); mob_table->bInt = atoi(data[col++]); mob_table->dwDamageRange[0] = atoi(data[col++]); mob_table->dwDamageRange[1] = atoi(data[col++]); mob_table->dwMaxHP = atoi(data[col++]); mob_table->bRegenCycle = atoi(data[col++]); mob_table->bRegenPercent = atoi(data[col++]); mob_table->dwGoldMin = atoi(data[col++]); mob_table->dwGoldMax = atoi(data[col++]); mob_table->dwExp = atoi(data[col++]); mob_table->wDef = atoi(data[col++]); mob_table->sAttackSpeed = atoi(data[col++]); mob_table->sMovingSpeed = atoi(data[col++]); mob_table->bAggresiveHPPct = atoi(data[col++]); mob_table->wAggressiveSight = atoi(data[col++]); mob_table->wAttackRange = atoi(data[col++]); str_to_number(mob_table->dwDropItemVnum, data[col++]); //32 str_to_number(mob_table->dwResurrectionVnum, data[col++]); for (int i = 0; i < MOB_ENCHANTS_MAX_NUM; ++i) str_to_number(mob_table->cEnchants[i], data[col++]); for (int i = 0; i < MOB_RESISTS_MAX_NUM; ++i) str_to_number(mob_table->cResists[i], data[col++]); str_to_number(mob_table->fDamMultiply, data[col++]); str_to_number(mob_table->dwSummonVnum, data[col++]); str_to_number(mob_table->dwDrainSP, data[col++]); //Mob_Color ++col; str_to_number(mob_table->dwPolymorphItemVnum, data[col++]); str_to_number(mob_table->Skills[0].bLevel, data[col++]); str_to_number(mob_table->Skills[0].dwVnum, data[col++]); str_to_number(mob_table->Skills[1].bLevel, data[col++]); str_to_number(mob_table->Skills[1].dwVnum, data[col++]); str_to_number(mob_table->Skills[2].bLevel, data[col++]); str_to_number(mob_table->Skills[2].dwVnum, data[col++]); str_to_number(mob_table->Skills[3].bLevel, data[col++]); str_to_number(mob_table->Skills[3].dwVnum, data[col++]); str_to_number(mob_table->Skills[4].bLevel, data[col++]); str_to_number(mob_table->Skills[4].dwVnum, data[col++]); str_to_number(mob_table->bBerserkPoint, data[col++]); str_to_number(mob_table->bStoneSkinPoint, data[col++]); str_to_number(mob_table->bGodSpeedPoint, data[col++]); str_to_number(mob_table->bDeathBlowPoint, data[col++]); str_to_number(mob_table->bRevivePoint, data[col++]); //?A?ˇ vnum ?ß°ˇ vnumSet.insert(mob_table->dwVnum); //fprintf(stderr, "MOB #%d %s %s level: %u rank: %u empire: %d\n", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire); sys_log(0, "MOB #%-5d %-24s %-24s level: %-3u rank: %u empire: %d", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire); ++mob_table; } fprintf(stderr," Complete! %d/%d Mobs loaded.\r\n",size,vnumSet.size()); sort(m_vec_mobTable.begin(), m_vec_mobTable.end(), FCompareVnum()); return true; }
  13. Merci, je cherchais justement cette fonctionnalité quand j'ai placé mon code, mais j'arrivais pas à la trouver^^
×
×
  • 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.