Recherche

jeudi 13 septembre 2012

La grande migration *Important*

Hola,

Comme vous le savez tous, il y a pasmal de choses brisées sur le serveur comme le crafting, les quests, les spawn et j'en passe. De plus, nous ne supportons pas Stygian Abyss ni High Sea (imbuing, mysticism, les gargoyles etc..)

Pourquoi? Parce que le lead dev de RunUO (Ryan) a quitté le projet RunUO il y a maintenant presque 2 ans et il était vraisemblablement entouré de chaudrons.

Heureusement, des crinkés ont repris le code du SVN et ont travaillé depuis 2 ans a une version améliorée, mieux spawnée et qui supporte SA et HS: Orbsydia.

La version 3.0 est sortie il y a deux semaines et nous prévoyons migrer le serveur la dessus pour le bien de tous.


Mais il y a un problème...


Le world, les mobiles et les items ne sont pas compatible avec Orbsydia, pour ceux qui veulent savoir pourquoi, c'est parce que les chaudrons de RunUO utilisent la sérialisation d'objets pour sauvegarder les trucs (transformer un objet direct en objet inscriptible sur le disque) au lieu de faire comme tout le putain de monde et d'utiliser du XML ou une db locale sqllite. </Fin du rant>.

J'ai ouvert le code et j'ai tenté un bon 15-14h de faire un tool pour migrer pour en venir à la conclusion que ça me prendrait autan de temps coder le tool que de migrer a bras.

David et mois avons donc décidé de procéder à une migration manuelle. La mauvaise nouvelle c'est qu'on pourra pas tout migrer, en particulier les items, car les propriétés sont trop complexes à refaire.

Après des discussions nous avons décidé de migrer les choses suivantes:

  • 3 Chars maximum par personne
    • Skills
    • Stats
    • Gold
    • House (Remboursée)
  • Les ressources
    • Leather
    • Scales
    • Ingots
  • Les items suivants
    • Bulk Order Deeds
    • Power Scrolls


C'est sur que c'est plate pour tout le monde (m'incluant, parce que j'ai 2 chars) Mais ça va être pasmal mieux après.

Nous ne savons pas encore quand ce sera fait, mais nous allons aretter le serveur  ~12-15 heures pour faire la job. On ne s'est pas encore entendu sur la date mais peut être le dimanche 23 septembre.


Ce qui va nous simplifier la vie:

  • Regroupez votre gold et vos ressources pas trop loin, soit dans votre house ou dans votre bank (si ça rentre). 
  • Dites nous si vous avez des comptes qu'on peut deleter
  • Dites nous les noms des persos que vous gardez et sous quels comptes
  • Souriez!





vendredi 24 août 2012

Correctifs 24 Août

Nouvelle ronde de patch:

  • Modification de l'installation de UO utilisée par RunUO pour aller vers la version de Stygian abyss. Le serveur roule maintenant avec les fichiers updatés.
  • Fix de new haven et des quelques spots dans les nouveau mondes où les joueurs restaient coincés
  • Ajout de quelques anks (on va finir par tout les faire :))

Encore défectueux:
  • Quests de new haven


mardi 21 août 2012

Correctifs 21 août 2012

Hola!

Nous avons appliqué quelques correctifs ce soir (Désolé pour les restarts, on est encore en beta!):

  1. Activation de Trammel pour les joueurs qui veulent jouer PvM
  2. Fix du skillgain sur Bushido pour correspondre aux valeurs OSI
  3. Fix des houses! Allez-y, vous pouvez dépenser.

++



lundi 20 août 2012

Monter ses stats comme un programmeur

Hola!

Pour ceux qui sont avec nous depuis la semaine dernière, vous avez surement remarquer que le stat gain est particulièrement pénible (et c'est tant mieux comme ça!). Comment faire alors pour se donner un petit "edge" et monter ses stats sans tricher mais de façon optimale? C'est facile, en lisant le code!

Comme vous le savez déjà, RunUO, notre émulateur, est Open Source. On peut donc consulter celui-ci et tenter de comprendre comment il fonctionne. Si vous vous dirigez par exemple vers le dossier .\Scripts\Skills\ ou .\Scripts\Spells, vous trouverez plusieurs fichiers régissant le fonctionnement des spells et des skills du jeu.

Si vous prennez le temps d'en regarder quelques uns, vous allez remarquer qu'ils appellent tous à un moment où a un autre la methode CheckSkill(...) de l'objet qui représente le joueur utilisant le skill. On pourra donc lire à certains endroits "m.CheckSkill(...)" ou from.CheckSkill(...). Ce sont tous des appels à la même méthode.

Par exemple, pour Hiding:



Comme nous sommes pressés, nous allons utiliser la fonction de recherche dans les fichiers de Notepad++ pour trouver les endroits où sont définis les méthode CheckSkill et tenter de deviner laquelle est utilisée par l'objet Mobile.

En regardant les résultats, nous tombons sur ce fichier:


.\Scripts\Misc\Skillcheck.cs défini la méthode CheckSkill(...), c'est donc le bon fichier!

En localisant la méthode, nous remarquons rapidement que beaucoup de code sert à déterminer le facteur de gain qui sera utilisé. Cependant, rien au début de la méthode n'active de gain de skills. Si on regarde un peu plus bas par contre, on peut voir cette ligne juste avant la fin:


Cette méthode est très intéressante, elle détermine à l'aide des conditions suivante si la méthode calculant le gain devrait être apellée ou non:


  • Est-ce que le joueur est en vie?
    • Si OUI:
      • Est-ce que le facteur de gain calculé juste avant est plus grand qu'un nombre aléatoire?
      • ET
      • Est-ce que le gain est permis (d'autre critères comme le target, antimacro, etc..)
      • SINON
      • Est-ce que le skill en question est plus bas que 10.0
Il y a déjà beaucoup d'information ici. Premièrement on apprend que peu importe ce qui arrive, il doit y avoir une condition aléatoire qui survient, que nous ne pouvons malheureusement contrôler. Cependant, et c'est le point intéressant, si le gain est fait sur un skill dont la valeur est inférieure a 10.0, on gagne automatiquement! C'est donc le premier élément de l'équation:

Si le skill est en bas de 10.0, on entre dans la méthode de gain.

Nous trouvons maintenant dans le même fichier la méthode Gain(...). Cette méthode est plus complexe car c'est elle qui détermine les détails du gain, si on devrait ou non gagner, par exemple si le skill est en Locked, ou si on devrait perdre du skill, si il est DOWN. 

Tout au bas de cette méthode se trouve un morceau croustillant:



C'est ici que le gain de STATS survient. Même si l'appel semble simple, il est tout de même intéressant car en le regardant bien, on découvre que l'appel se fait dans un block "else-if". Ceci nous apprend 3 choses principales
  1. Il est impossible de gagner plus d'un type de stats à la fois
  2. Il existe une priorité sur le gain (STR, DEX, INT)
  3. Il est possible de choisir cette priorité en "lockant" la bonne stat. Par exemple, si on lock STR, l'execution ira directement sur DEX.
  4. On doit encore passer un autre calcul aléatoire qui s'ajoute à celui des skills, c'est ce qui explique qu'on ne gagne pas toujours de stats à chaque fois que l'on gagne dans un skill.
  5. On ne peut que suivre 1 seul chemin d'éxécution par gain.
On retiens donc d'autres conditions pour notre équation:

Il existe une priorité que l'on peut contrôler pour déterminer quel stat va monter.

Il ne peut y avoir qu'un seul chemin d'exécution suivi par gain.

Dirigeons-nous maintenant vers la méthode GainStat(...). 

En lisant le code de cette méthode, on remarque rapidement que c'est le point principal de calcul des stats. Tout dans cette méthode est important à commencer par ces deux constantes juste avant la définition:

On y reviendra...

En analysant le code, on remarque que les 3 stat fonctionnent de la même façon, soit par exemple le STR:


L'algorithme suivant est utilisé:
  • Si la cible est une BaseCreature (vivant)
  • ET
  • Si la cible est un animal contrôlé par le joueur
  • ALORS
    • SI on a gagné de ce stat depuis moins de 5 minutes, il n'y a pas de gain
  • SINON SI la cible est un animal autre (monstre)
    • SI on a gagné de ce stat depuis moins de 15 minutes, il n'y a pas de gain
  • SINON
    • Gain.

On apprend donc 2 choses très importantes:

On doit attendre 5 minutes entre chaque gain de chaque type de stats si on target un animal que l'on contrôle

On doit attendre 15 minutes entre chaque gain de type de stats si on target un monstre


Alors, en utilisant les éléments obtenus, les conditions idéales pour un gain de stats sont les suivantes:

1. Assurez-vous d'utiliser un skill qui vous donne en priorité ce que vous désirez obtenir (uoguide stats)
2. Toujours tenter de faire un gain sur un skill sous 10.0, cela va TOUJOURS apeller la méthode de calcul des stats
3. Idéalement, vous devez avoir 700 total skills car cela vous permettra de faire baisser un skill sous la barre des 10.0 pour le réutiliser (expérimentez)
4. Toujours tenter de vous entrainer sur des animaux que vous possédez si c'est un skill qui s'utilise contre un animal (oubliez mining par exemple, ce sera toujours 15 minutes)
5. Si vous venez de gagner un point de STR, lockez STR pour les 5 ou 15 prochaines minutes pour éviter que GainSkill soit apellé sur STR et qu'il ne puisse pas monter du au timer. Vous gagnerez ainsi rapidement de la DEX. Même chose avec INT en respectant la priorité STR, DEX, INT.
6. Prennez une pause si vos 3 stats ont augmenté dans les 5 ou 15 dernieres minutes.

Voilà, j'espère que vous aurez plus de plaisir!




jeudi 16 août 2012

Identifiez les macroteurs et gagnez 15k

Voici un petit event "offline".  Voici 4 macroteurs qui ne sont pas devant leur écran, identifiez les tous et gagnez 15k.  Le premier a fournir les réponses gagne.

Individu #1

Individu #2

Individu #3





Individu #4

Je veux les noms des personnages.

Banque de Britain, so far..



Petit powertrip de GM à la banque de Britain.  À vous d'en juger.

À venir : Ankhs à l'entré de tous les dungeons & cimetieres.

To be continued..

mercredi 15 août 2012

Projet lancé.

Pour ceux qui veulent tester ce soir, le ip c'est 74.59.255.76 et le guide d'installation c'est : http://zveightuo.blogspot.ca/p/guide-dinstallation-pour-zveight-uo.html

Aussi, pour les accounts, vous n'avez qu'a vous logger et l'account va se creer automatiquement.

Normalement on ne devrais pas supprimer les account au vrai serveur, a moins d'un bug majeur, donc vous pouvez commencer a jouer!

Enjoy folks.