Auteur : Ted Nasmith
 
Menu

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.

Voir les contributions Menu

Messages - Heralios

#1


LES ITEMS SIMPLES


Les objets simples sont les objets courants que nous pouvons voir en grande quantité sur les serveurs (mur, rabot, , pièce d'or, bourse...). Ces objets, même s'ils sont simples doivent être définis selon plusieurs attributs, les voici : (Si j'en oublie, merci de m'en faire part!)

[ITEMDEF x]
DEFNAME=x
ID=x
NAME=x
WEIGHT=x
TYPE=x
RESOURCES=x
SKILLMAKE=x
VALUE=x
TDATA1=x
TDATA2=x
TDATA3=x
TDATA4=x
DUPELIST=x
DUPEITEM=x
CATEGORY=x
SUBSECTION=x
DESCRIPTION=x


[ITEMDEF x]
Ceci dit à Sphere "Je veux créer un nouvel objet avec comme définition x". En gros, Sphere utilisera les prochaines lignes pour définir chaque attribut de l'objet, c'est ce qui suivra. Vous pourrez faire apparaitre cet objet grâce à la commande ".add x". Il est recommandé de commencer votre nom avec "i" comme dans l'exemple "i_roche" pour montrer que c'est un objet ordinaire. Les objets de type "memory" commenceront avec "m"... etc.

DEFNAME=x
Cette ligne est purement inutile, sauf si vous voulez utiliser un deuxième nom pour votre objet. Vous pourrez utiliser le x de ITEMDEF ou celui de DEFNAME pour faire un ".add". Si vous ne voulez pas un deuxième nom, supprimez cette ligne.

ID=x
Cette ligne donnera tout simplement forme à votre objet. Il vous faudra de ce fait connaître exactement le ID que vous voulez. Par exemple, x=0475 donnera un foyer, x=0dfc donnera un ciseau... etc. Dans les fichiers "sphereitem", vous pourrez les trouver.

NAME=x
Sans vous étonner, x sera ni plus ni moins que le nom qu'aura cet objet.

WEIGHT=x
x sera le poids de l'objet. Faites tout de même attention car Sphere prend les décimales même si vous n'en mettez pas. Donc x=2 ou x=0.2 donnera la même chose. Si vous voulez un poids de 50, mettez x=50.0 ou x=500.

TYPE=x
x sera le type de votre objet. Chaque type d'objet réagit différemment aux événements comme double-click, click, step, à la magie, etc. Par exemple, le type "t_door" réagit par défaut au double click en ouvrant la porte, le type "t_armor" réagit par défaut au double click en équippant cette armure. Il est tout à fait possible de redéfinir le ON = @DCLICK sur un objet t_armor pour que l'objet ne s'équippe pas, mais lance une éclair par exemple, mais tout cela sera vu dans un autre guide. En gros, ce que vous devez savoir, c'est que la définition du type sert uniquement à ce que Sphere sache quoi faire avec un objet lorsqu'un événement survient. Dans le cas contraire, il renvoit un message style "Vous ne savez pas utiliser cet objet". Tous les types sont notés dans le fichier "spheredefs.scp"

RESSOURCES=x
Ici seront inscrits toutes les ressources qui devront être en possession du joueur pour produire cet objet. Si plus d'une ressource est nécessaire à sa construction, ces ressources devront être séparés par une virgule. Par exemple, un instrument de musique pourrait avoir "RESOURCES=5 i_buche_de_bois, 3 i_fil_de_fer". Ceci veut dire que ca prendrait 5 buches de bois ainsi que 3 fils de fer pour produire cet instrument. (Tout ce qui est inscrit ici sera détruit lors de la création de l'objet)

SKILLMAKE=x
Ici seront inscrits tout ce que le joueur devra avoir en sa possession pour produire cet objet comme les skills et les outils. Chaque skill ou outil différent doivent être séparés par des virgules. Par exemple, un instrument de musique pourrait avoir "SKILLMAKE=TINKERING 50.0, MUSICIANSHIP 80.0, t_tinker_tools". Ceci veut dire qu'il faudrait que son skill en bricolage soit de 50.0, en musique de 80.0 et qu'il possède un objet de type "t_tinker_tools", ce qui est un outil de bricoleur. (Tout ce qui est inscrit ici ne sera pas détruit lors de la création de l'objet)

VALUE=x
Ici sera noté la valeur marchande de l'objet en pièces d'or. Si aucune valeur n'est entrée, l'objet sera quand même de valeur égale à la somme de ses "RESSOURCES=x". Si cet objet n'a aucune ressource avec de la valeur ou qu'il n'y a aucune ressource, alors l'objet ne vaudra rien. Faites attention, c'est dans ce cas que les objets disparaissent sur les vendeurs!

TDATA1=x
TDATA2=x
TDATA3=x
TDATA4=x
Ici seront notés des donnée utiles pour certains types d'objet. Par exemple, le type "t_ore" utilise TDATA1 comme objet en quoi le minerai sera transformé, le type "t_door" utilise TDATA1 comme son que fera la porte lorsqu'elle est ouverte ou fermée... etc.

DUPELIST=x
Une liste de tous les items qui partagent ses propriétés. Les items doivent être séparés par des virgules.

DUPEITEM=x
L'objet prendra les propriétés de ce parent.

CATEGORY=x
SUBSECTION=x
DESCRIPTION=x
Tout ceci est pour classer vos items avec Axis. Vous verrez ainsi aisément la catégorie, la classe et la description de chacun des items présent dans vos scripts. Vous pourriez avoir comme catégory "Portes", comme subsection "metal" et description "Porte en metal NE".


Ceci conclut pour les objets simples, il y'a beaucoup d'autres propriétés qui restent à voir, surtout dans les armures, armes et memories. Certaines de ces propriétés sont inclus via l'événement ON = @CREATE qui est appelée quand l'objet est créé.


















Prérequis : Objets simple

Les triggers sont essentiels si vous désirez mettre un peu de vie sur votre serveur.

En effet, ils permettront aux joueurs d'interragir avec les objets et les npc que vous allez créer. Avant d'avancer dans les détails, voici un petit exemple d'un objet qui se trouve être un bâton de téléportation qui vous demande de sélectionner un joueur et ensuite un endroit pour le téléporter.

[ITEMDEF i_baton_teleportation]
NAME=Baton de teleportation
ID=i_staff_black
WEIGHT=50

//QUAND L'OBJET EST CRÉÉ, CECI EST EXÉCUTÉ
ON=@CREATE
COLOR=0481
HITPOINTS={5 10}
ATTR=attr_newbie|attr_move_never|attr_magic

//QUAND UN JOUEUR DOUBLE CLICK L'OBJET CECI EST EXÉCUTÉ
ON=@DCLICK
LINK=04fffffff
TARGET Select the player you would like to move.
RETURN 1

//QUAND UN ITEM EST SÉLECTIONNÉ, CECI EST EXÉCUTÉ
ON=@TARGON_ITEM
SRC.SYSMESSAGE You cannot move <SRC.TARG.NAME> or any other item.
RETURN 1

//QUAND UN PERSONNAGE EST SÉLECTIONNÉ,  CECI EST EXÉCUTÉ
ON=@TARGON_CHAR
LINK=<SRC.TARG.UID>
TARGETG Where would you like to move <SRC.TARG.NAME>?
RETURN 1

//QUAND UNE PARTIE DU DECOR EST SÉLECTIONNÉ, CECI EST EXÉCUTÉ
ON=@TARGON_GROUND
LINK.GO <SRC.TARGP>
LINK=04fffffff
RETURN 1

Il y'a ci-dessus 5 triggers différents, mais il en existe beaucoup d'autres! Certains sont utilisés que sur des objets, d'autres que sur des personnages et d'autres sur les deux. Chaque type d'objet a son trigger prédéfini (une armure s'équipe lorsqu'on double click, une pioche demande de sélectionner le sol pour creuser... etc), mais il est possible de :
1. Les laisser tel quel en ne les scriptant pas.
2. De les écraser en retournant "1" à la fin.
3. De faire une action quelconque avant d'utiliser la fonction prédéfinie en retournant "0" à la fin
Exemple :
Supposons que nous insérons ce script à l'intérieur de l'armure.

//RIEN N'EST AJOUTÉ
==> L'armure va s'équipper comme d'habitude.

ON=@DCLICK
RETURN 0
==> L'armure va s'équipper comme d'habitude. À noter que seulement retourner 0 fait exactement la même chose que de ne rien mettre du tout.

ON=@DCLICK
RETURN 1
==> L'armure ne va pas s'équipper et ne fera rien du tout lorsqu'un joueur va double cliquer dessus. Notez cependant qu'il pourra quand même l'équipper en la glissant sur sa feuille de personnage !

ON=@DCLICK
SRC.SYSMESSAGE Vous équippez l'armure et elle vous va a ravir !
RETURN 0
==> Le joueur recoit un message et ensuite l'armure s'équippe.

ON=@DCLICK
SRC.SYSMESSAGE Vous tentez d'équipper l'armure, mais sans succes !
RETURN 1
==> Le joueur recoit un message, mais l'armure ne s'équippe pas.


Events sur personnages & objets

Le ON=@CLICK
==>Il est utilisé lorsqu'on fait un simple click sur l'objet ou le personnage.
[] = Objet ou personnage se faisant cliquer dessus.
SRC = Celui qui click

ex : affiche simplement le nom de l'objet
ON=@CLICK
MESSAGE <NAME>
RETURN 1

ex : affiche le nom de l'objet suivi de "[verrouillee]". Utile pour un type d'objet dont vous voulez afficher clairement qu'il est verrouillé, telle une porte ou un coffre.
ON=@CLICK
MESSAGE <NAME>[verrouillee]
RETURN 1

ex : le script utilisé sur les ailes pour éviter le vol. Il vérifie premièrement si le joueur a les ailes sur lui, et ensuite vérifie si le LINK de l'objet est bien ce joueur là. Si tel n'est pas le cas, on remet les ailes à son propriétaire. Dans tous les cas, on RETURN 0, donc le nom des ailes sera affiché.
ON=@CLICK
IF <TOPOBJ.UID>==<SRC.UID>
  IF !(<LINK> == <SRC.UID>)
    CONT=<LINK.UID>
  ENDIF
ENDIF
RETURN 0

Le ON=@DCLICK
==>Il est utilisé lorsqu'on fait un double click sur l'objet ou le personnage
[] = Objet ou personnage se faisant double cliquer dessus
SRC = Celui qui double click

ex : conteneur de potion.
ON=@DCLICK
IF !<SRC.FINDID.m_anti_popotage>
  TARGET Sur quelle bouteille voulez-vous utiliser le conteneur?
ELSE
  SRC.SYSMESSAGE Vous devez attendre avant de reutiliser le conteneur
ENDIF
RETURN 1

ex : script de gemme qui demande sur quelle arme on veut le sertir.
ON=@DCLICK
IF <TOPOBJ.UID>==<SRC.UID>
  IF <SRC.FINDID.i_outils_de_sertissage>
    SRC.SYSMESSAGEUA 0481 1 1 0 Quelle arme souhaitez vous sertir de cette gemme ?
    TARGET
  ELSE
    SRC.SYSMESSAGEUA 0481 1 1 0 Vous ne pouvez pas manipuler la gemme sans outils de sertissage
   ENDIF
ELSE
  SRC.SYSMESSAGEUA 0481 1 1 0 Vous devez equiper la gemme avant de l'utiliser !
ENDIF
RETURN 1

ex : Une dalle de teleport qui lorsque le maitre de jeu double click dessus, les coordonnees de teleportation sont enregistrees a l'endroit où il se trouve. Croyez moi, ca facilite grandement la vie quand vous avez un gros labyrinthe à faire...
IF <SRC.ACCOUNT.PLEVEL> > 6
  MOREP=<SRC.P>
  SRC.SYSMESSAGEUA 0481 1 1 0 Coordonnee enregistree pour teleportation
  RETURN 1
ENDIF
RETURN 0

Le ON=@CREATE
==>Il est utilisé lors de la création de l'objet ou du personnage.
[] = L'objet en cours de création
SRC = Celui qui crée l'objet
SRC.ACT = L'objet en cours de création

ex : création d'une amulette. On y met sa couleur ainsi que sa solidité.
ON=@Create
HITPOINTS=1000
COLOR=00ae4
RETURN 0

ex : Lors de la création du banquier. Divers paramètres sont mis comme l'invincibilité, assez de force, lui mettre le bon "brain", des cheveux... etc.
ON=@Create
COLOR=colors_skin
STR=2000
DEX=1
INT=1
INVUL
NPC=BRAIN_BANKER
NEED=i_gold
ITEMNEWBIE=random_male_hair
COLOR=colors_hair
ITEMNEWBIE=random_facial_hair
COLOR=match_hair
RETURN 0

ex : un memory du poker hold'em qui met un timer de 1 seconde lorsque c'est le tour de jouer pour lui faire apparaître un interface.
ON=@CREATE
TIMER=1
RETURN 0

Le ON=@SPELLEFFECT
==> Il est utilisé lorsqu'un joueur ou un objet est "victime" d'un sort. RETURN 1 ignore la magie, tandis qu'avec un RETURN 0, le personnage/item recoit la magie en pleine gueule!
[] = Objet ou personnage qui recoit le sort
SRC = Celui qui a lancé le sort
SRC.ACT = Objet ou personnage qui recoit le sort (Utilisez [])
ARGN = #ID du sort (ex : bless = 17 ; recall = 32... etc)
ARGN2 = Puissance du sort qui est lancé (égal par défaut à la magie du SRC)

ex : Item ou NPC insensible aux sorts
ON=@SPELLEFFECT
RETURN 1

ex : livre de runes qui emmagasine les charges de recall et de gate.
ON=@SPELLEFFECT
//RECALL
IF <ARGN> == 32
  IF <TAG.RECALL_RESTANT> >= 50
    SRC.SYSMESSAGEUA 0481 1 1 0 <NAME> a atteint le nombre maximum de charges de recall !
  ELSE
    EMOTE briller
    TAG.RECALL_RESTANT = <EVAL 0<TAG.RECALL_RESTANT> + 1>
  ENDIF
//GATE
ELSEIF <ARGN> == 52
  IF <TAG.GATE_RESTANT> >= 10
    SRC.SYSMESSAGEUA 0481 1 1 0 <NAME> a atteint le nombre maximum de charges de gate !
  ELSE
    EMOTE briller
    TAG.GATE_RESTANT = <EVAL 0<TAG.GATE_RESTANT> + 1>
  ENDIF
ENDIF
RETURN 0

Le ON=@DROPON_SELF
==> Il est utilisé quand un objet tombe sur un conteneur (personnage ou contenant). RETURN 1 Empêche l'objet d'être glissé dans le contenant.
[] = Contenant
SRC = Celui qui glisse l'objet dedans
ARGO = Objet glissé

ex : Empêcher un joueur de mettre des contenants sur des vendeurs ou mettre un objet qui n'a aucun prix.
ON=@DROPON_SELF
OBJ <ARGO.UID>
IF <OBJ.TYPE>==T_CONTAINER
  SRC.SYSMESSAGE @026 Vous ne pouvez pas vendre des contenants sur des vendeurs.
  RETURN 1
ELSEIF <OBJ.VALUE> == 0
  SRC.SYSMESSAGE @026 Vous ne pouvez pas vendre un objet sans valeur sur des vendeurs.
  RETURN 1
ENDIF
RETURN 0



Events sur les objets seulement

Le ON=@TIMER
==>Il est utilisé quand le timer de l'objet tombe à 0.
[] = L'objet
SRC = Le Serveur...

ex : Script de guérison. Un memory à chaque seconde redonne des points de vie au joueur.
ON=@TIMER
IF <CONT.HITS> < <CONT.STR>
  CONT.HITS = <EVAL <CONT.HITS> + <CONT.HEALING>/1000>
  IF <CONT.HITS> > <CONT.STR>
    CONT.HITS = <CONT.STR>
  ENDIF
ENDIF
TIMER=1
RETURN 1

ex : objet qui disparait quand son timer atteint 0.
ON=@TIMER
REMOVE
RETURN 1

ex : Quand un joueur ne répond pas au test de macrotage... à noter que le LINK est le membre du staff qui vous a eu :D
ON=@TIMER
LINK.SYSMESSAGEUA 0481 1 1 0 <NAME> n'a pas repondu au test de macrotage !
REMOVE
RETURN 1

ex : memory qui teleport le joueur après un certain timer. C'est utilisé dans le livre de rune.
ON=@TIMER
CONT.EFFECT 2,i_fx_gate,0,15
CONT.P <MOREP>
CONT.UPDATE
CONT.EVENTS -e_casse_recall
REMOVE
RETURN 1

Le ON=@STEP
==> Il est utilisé quand un personnage marche dessus l'objet.
[] = L'objet en question
SRC = Personnage qui marche sur l'objet

ex : dalle de teleport. À noter qu'un joueur n'a pas de BRAIN :D
ON=@STEP
IF !<SRC.BRAIN>
  SRC.GO <MOREP>
ENDIF
RETURN 1

ex : une mine. 
ON=@STEP
SRC.SYSMESSAGE Vous sautez sur une mine !
SRC.KILL
RETURN 1

ex : dalle créatrice de monstre dans le dongeon 5.
ON=@STEP
IF (!<SRC.BRAIN>) && (<TAG.STREUM>==1)
    TIMER=60
    TAG.STREUM=0
    SRC.NEWNPC c_damne_d_air
    SRC.ACT.P=<P>
    TAG.UIDMONSTRE=<SRC.ACT.UID>
    SRC.NEWITEM=i_vire_creature
    SRC.ACT.CONT=<TAG.UIDMONSTRE>
ENDIF
RETURN 1

Le ON=@EQUIP
==> Il est utilisé lorsqu'un personnage équippe cet objet (Lorsqu'il tente de l'équipper car on peut lui en empêcher). Lorsqu'on RETURN 0, l'objet s'équippe, mais il ne s'équippe pas lorsqu'on RETURN 1. L'objet va par contre s'équipper quand même avec un double click, mais pas lorsqu'on glisse l'objet sur sa feuille de personnage... le mieux est de carrément appeler UNEQUIP si vous ne voulez pas que le joueur équip l'objet, un exemple est présenté ci-bas.
[] = L'objet en question
SRC = Joueur qui équippe l'objet

ex : arme d'estoc enchantée. Si le joueur n'a pas la force nécessaire, l'arme se UNEQUIP. Il est à noter ici qu'on fait appel à 2 fonctions pour les boosts au lieu de copier-coller chaque fois tout ce qu'elles font. Les 2 fonctions appellées font 130 lignes... multipliez 130 par le nombre d'armes sur APO et vous verrez que le nombre de lignes gagnées est très important.
ON=@EQUIP
SRC.BONUSARMEFENCE1
IF <EVAL <SRC.TAG.FORPURE>> <24
    UNEQUIP
ENDIF
BONUS_ARME_GEMME_EQUIP
RETURN 0

ex : cape de résistance à la magie
ON=@EQUIP
IF <EVAL 0<SRC.TAG.RENAISSANCE>> == 0
    SRC.MagicResistance=<EVAL <SRC.MagicResistance> + <SRC.TAG.MAGICRESISTANCEPURE> * 2>
    IF (<EVAL <SRC.TAG.INTPURE>> <50) || (<EVAL <SRC.TAG.MAGIEPURE>> <105)
        UNEQUIP
    ENDIF
ELSE
    UNEQUIP
ENDIF
RETURN 0


Le ON=@UNEQUIP
==>Lorsqu'un joueur déséquippe cet objet. Même principe que le EQUIP, mais RETURN 0 ou 1 ne va pas empêcher le joueur de se déséquipper de l'objet.
[] = L'objet déséquippé
SRC = Le personnage qui déséquippe l'objet

ex : dague rouillée enchantée... même principe que le premier exemple de EQUIP. On sauve avec les fonctions plus de 130 lignes par arme.
ON=@UNEQUIP
SRC.ENLEVEBONUSFENCE
BONUS_ARME_GEMME_UNEQUIP
RETURN 0

ex : Comme le 2e exemple de EQUIP, mais à l'envers.
ON=@UNEQUIP
IF <EVAL 0<SRC.TAG.RENAISSANCE>> == 0
  SRC.MagicResistance=<EVAL <SRC.MagicResistance> - <SRC.TAG.MAGICRESISTANCEPURE> * 2>
ENDIF
RETURN 0

Le ON=@DAMAGE
==>Il est utilisé lorsque celui portant l'arme frappe un autre personnage avec.
[] = L'arme utilisée
SRC = Ennemi qui est frappé
TOPOBJ ou CONT = Celui qui frappe

Le ON=@TARGON_ITEM
==>Il est utilisé lorsqu'un joueur sélectionne un objet à l'aide de la fonction TARGET.
[] = L'objet qui sert à target
SRC = Le joueur qui sélectionne
SRC.TARGET = L'objet que le joueur sélectionne

ex : baton de téléportation (suite avec TARGON_CHAR et TARGON_GROUND)
ON=@DCLICK
LINK=04fffffff
IF 0<SRC.ACCOUNT.PLEVEL><2
  REMOVE
ELSE
  TARGET Select the player you would like to move.
ENDIF
RETURN 1

ON=@TARGON_ITEM
SRC.SYSMESSAGE You cannot move <SRC.TARG.NAME> or any other item.
RETURN 1

Le ON=@TARGON_CHAR
==> Il est utilisé lorsqu'un joueur sélectionne un personnage à l'aide de la fonction TARGET.
[] = L'objet qui sert à target
SRC = Le joueur qui sélectionne
SRC.TARGET = L'objet que le joueur sélectionne

ex : baton de téléportation (suite)
ON=@TARGON_CHAR
LINK=<SRC.TARG.UID>
TARGETG Where would you like to move <SRC.TARG.NAME>?
RETURN 1

Le ON=@TARGON_GROUND
==>Il est utilisé lorsqu'un joueur sélectionne le sol à l'aide de la fonction TARGETG.
[] = L'objet qui sert à target
SRC = Le joueur qui sélectionne
SRC.TARGP = Coordonnées où le joueur a cliqué.

ex : bâton de téléportation (suite #2)
ON=@TARGON_GROUND
LINK.GO <SRC.TARGP>
LINK=04fffffff
RETURN 1

Events sur les personnages seulement

Le ON=@LOGOUT
==>Il est utilisé lorsqu'un joueur se déconnecte du serveur.
SRC = Le joueur qui déconnecte

ex : Envoyer un message à tous disant que le joueur se déconnecte
ON=@LOGOUT
SERV.B <SRC.NAME> se deconnecte du serveur
RETURN 0

ex : Lorsque le joueur se déconnecte, il faut le retirer de l'équipe !
ON=@LOGOUT
IF <SRC.FINDID.m_exp_equipe>
  TRYP 0 UID.<SRC.FINDID.m_exp_equipe.MORE2>.MESSAGE_TEAM <SRC.NAME> s'est <SRC.SEX deconnecte/deconnectee> et quitte l'equipe
  SRC.FINDID.m_exp_equipe.QUITTER_TEAM
ENDIF
RETURN 0

Le ON=@LOGIN
==> Même principe que pour le LOGOUT. C'est utilisé quand le joueur se connecte. À noter que un RETURN 0 connecte le joueur, mais RETURN 1 empêche le joueur de se connecter disant que son compte est bloqué. (même s'il ne l'est pas)
[] = Le joueur qui se connecte
SRC = Le joueur qui se connecte

ex : Message qui affiche à tous que le joueur se connecte.
ON=@LOGIN
SERV.B <SRC.NAME> se connecte sur le serveur !
RETURN 0

ex : Calcul du % de participation et déconnecter ceux qui n'ont pas assez de ba :D
ON=@LOGIN
IF <EVAL 0<SRC.TAG.HEURESJOUEES>> <1
  SRC.TAG.PARTICIPATION=0
ELSE
  SRC.TAG.PARTICIPATION=<EVAL ((0<SRC.TAG.VERIFCLICK>*400)/(0<SRC.TAG.HEURESJOUEES>))>
ENDIF
//Systeme de delestage
SRC.ANTILAG
RETURN 0

Le ON=@DEATH
==> Il est utilisé quand le personnage meurt.
[] = La victime
SRC = La victime
ACT = L'agresseur
SRC.ACT = L'agresseur

ex : perte de la moitié de l'exp lorsque le joueur se fait tuer par un personnage non joueur et obtient l'anti rez kill lorsque c'est par un joueur.
ON=@DEATH
IF ((<SRC.ACT.BRAIN>) || (0<SRC.ACT.TAG.DEBUTANT> == 0))
  IF !(<SRC.TAG.MILLEXP>==0)
    SRC.TAG.MILLEXP=<EVAL <SRC.TAG.MILLEXP>/2>
  ENDIF
  IF !(<SRC.TAG.XP>==0)
    SRC.TAG.XP=<EVAL <SRC.TAG.XP>/2>
  ENDIF
ELSE
  IF !<SRC.FINDID.m_anti_rez_kill>
    SRC.NEWITEM m_anti_rez_kill
    SRC.ACT.CONT = <SRC.UID>
  ENDIF
ENDIF
RETURN 0

Le ON=@DEATHCORPSE
==>Il est utilisé quand le personnage est mort et qu'il devient fantôme en créant un corps.
[] = Le mort
SRC = Le mort
ACT = Le tueur
SRC.ACT = Le tueur

ex : Pour que le joueur ne soit pas transformé en fantôme et qu'il revienne automatiquement en vie À Minoc.
ON=@DEATHCORPSE
RESURRECT
EFFECT 2,i_fx_explode,0,26
NEWITEM i_tombe
ACT.COLOR=<COLOR>
ACT.ATTR=00012
ACT.NAME Tombe de <NAME>
ACT.P=<P>
P=2458,518,16
UPDATE

Le ON=@GETHIT
==> Il est utilisé lorsqu'un personnage se fait frapper (Par un autre personnage ou un objet). RETURN 1 ignore le coup.
[] = Victime
SRC = Agresseur
SRC.ACT = Victime

ex : Empecher un joueur de frapper un autre joueur dans une zone no-pvp ou s'il a un anti rez-kill.
ON=@GETHIT
IF ((<SRC.ACT.REGION.FLAGS>&08000) || (<SRC.REGION.FLAGS>&08000))
  IF !<SRC.BRAIN>
    SRC.SYSMESSAGEUA 0481 1 1 0 Vous ne pouvez pas effectuer cette action en ces lieux !
  ENDIF
  EFFECT 3,i_fx_glow,0,15
  RETURN 1
ELSEIF (<SRC.ACT.FINDID.m_anti_rez_kill> || <SRC.FINDID.m_anti_rez_kill>)
  IF (!(<SRC.BRAIN>) && (0<SRC.TAG.DEBUTANT> == 1))
    SRC.REZ <SRC.ACT.NAME>
    RETURN 1
  ENDIF
ENDIF
RETURN 0

ex : système d'exp sur un monstre.
ON=@GETHIT
IF <SRC.ISCHAR>
  IF <EVAL 0<SRC.ACT.TAG.TAPER>> > 0
    SRC.ACT.TAG.TAPER=<EVAL <SRC.ACT.TAG.TAPER> - 1>
    VAR.EXPGAIN=<EVAL <SRC.ACT.TAG.XPCOUP>>
    SRC.GAIN_EXP <SRC.ACT.TAG.NIVEAU>
  ENDIF
ENDIF
RETURN 0

ex : rendre insensible aux coups un NPC
ON=@GetHit
HITS=2000
RETURN 1

ON=@HIT
==> Il est utilisé lorsqu'un personnage en frappe un autre.
[] = L'agresseur
ACT = L'agressé
SRC = L'agressé

ex : Un démon qui terrrorise sa proie en l'immobilisant.
ON=@HIT
IF (<EVAL(RAND(8))>==0)
  ACT.STAM=0
  ACT.HITS=1
  ACT.SYSMESSAGEUA 0481 1 1 0 <NAME> vous terrorise !
  RETURN 1
ENDIF
RETURN 0

ex : un monstre du dongeon 7 qui se guérit tout en vous buchant :D
ON=@HIT
IF <EVAL <HITS> + <STR>/100> > <EVAL <STR>>
  HITS=<STR>
ELSE
  HITS = <EVAL <HITS> + <STR>/100 >
ENDIF
RETURN 0

Le ON=@NPCRESTOCK
==> Il es utilisé dans un temps régulier par sphere et lorsque le NPC est créé. Vous pouvez donc créer facilement des objets pour dropper sur les monstres.
[] = NPC
SRC = Le serveur

ex : Une créature ayant une chance de dropper une perle ainsi que l'épée de la rose noire. Pour les malins, j'ai modifié les chiffres :p
ON=@NPCRestock
ITEM={ i_stats_dropp 2300 i_perle_enchantement 3 i_epee_de_la_rose_noire 1 }
RETURN 0

ex : un vendeur de fruits
ON=@NPCRestock
ITEMNEWBIE=i_maillot_manches_longues
COLOR=020
ITEMNEWBIE=i_gants_en_cuir
COLOR=0b36
ITEMNEWBIE=i_pantalon
COLOR=0750
ITEMNEWBIE=i_casquette
COLOR=020
ITEMNEWBIE=i_chaussures
COLOR=0b36
SELL=VENDOR_S_FRUITS
RETURN 0

Le ON=@SPELLCAST
==>Il est utilisé lorsqu'un personnage lance un sort. (Quand il commence à le lancer, pas lorsqu'il est lancé!). RETURN 1 empêche le personnage de lancer le sort.
[] = Celui qui lance le sort
SRC = Celui qui lance le sort
ACT = Cible du sort (Le caster pour les sorts sans target)
SRC.ACT = Cible du sort (Le caster pour les sorts sans target)
ARGN = #ID du sort (ex : bless = 17 ; recall = 32... etc)
ARGN2 = Puissance du sort qui est lancé (égal par défaut à la magie du SRC)

ex : Sorts interdits.
ON=@SPELLCAST
IF (<SRC.ACCOUNT.PLEVEL> <3)
  IF ( <ARGN> == 2 ) || ( <ARGN> == 14 ) || ( <ARGN> == 22 ) || ( <ARGN> == 23 ) || ( <ARGN> == 28 ) || ( <ARGN> == 33 ) || ( <ARGN> == 39 ) || ( <ARGN> == 40 ) || ( <ARGN> == 47 ) || ( <ARGN> == 50 ) || ( <ARGN> == 56 ) || ( <ARGN> == 58 ) || ( <ARGN> == 60 ) || ( <ARGN> == 61 ) || ( <ARGN> == 62 ) || ( <ARGN> == 63 ) || ( <ARGN> == 64 )
    SRC.SYSMESSAGEUA 0481 1 1 0 Fonction desactivee
    RETURN 1
  ENDIF
  IF (<SRC.REGION.FLAGS>&00004)
    IF ( <ARGN> == 22 ) || ( <ARGN> == 52 )
      SRC.SYSMESSAGEUA 0481 1 1 0 Vous ne pouvez pas lancer ce sortilege en ces lieux !
      RETURN 1
    ENDIF
  ENDIF
ENDIF
RETURN 0

ex : Une classe de personnage qui fait plus de dégats qu'il n'a réellement de magie.
ON=@SPELLCAST
ARGN2 = <EVAL (<ARGN2> * 3) / 2>
RETURN 0

ex : classe de personnage ne pouvant pas lancer de magie
ON=@SPELLCAST
SRC.SYSMESSAGEUA 025 1 1 0 Vous ne pouvez pas lancer de sort avec cette classe de personnage !
RETURN 1

Le ON=@SKILLSELECT
==> Il est utilisé lorsque le joueur clique directement dessus une skill dans sa feuille de skills.
[] = Celui qui utilise la compétence
SRC = Celui qui utilise la compétence

ex : Empêcher un joueur d'utiliser une compétence.
ON=@SkillSelect
IF (<SRC.ACTION>==Skill_Snooping) || (<SRC.ACTION>==Skill_Stealing)
  SRC.ACTION=-1
  RETURN 1
ENDIF
RETURN 0

Le ON=@SKILLSTART
==> Il est utilisé lorsqu'un personnage utilise une compétence (Lorsqu'il commence à l'utiliser, pas lorsqu'il termine). RETURN 1 empêche le joueur d'utiliser la compétence.
[] = Le personnage qui utilise la compétence
SRC = Le personnage qui utilise la compétence

ex : Remplir un peu de mana lorsque le joueur utilise la méditation.
ON=@SKILLSTART
IF <SRC.ACTION>==Skill_meditation
  IF <SRC.MEDITATION> < 100.0
    SRC.SYSMESSAGE Vous etes incapable de mediter !
  ELSEIF <SRC.MEDITATION> < 200.0
    IF <EVAL RAND(5)> == 0
      SRC.MANA = <EVAL <SRC.MANA> + 20>
    ENDIF
  ELSE
    SRC.MANA = <EVAL <SRC.MANA> + 20>
  ENDIF
  IF <SRC.MANA> > <SRC.INT>
    SRC.MANA = <SRC.INT>
  ENDIF
ENDIF
RETURN 0

ON=@NPCSEENEWPLAYER
==> Il est utilisé quand un NPC voit un joueur qu'il n'a pas vu. RETURN 1 empêchera le NPC de se rappeler du joueur en question.
[] = Le NPC
SRC = Le joueur qui se fait remarquer

ex : Un NPC heureux de voir quelqu'un.
ON=@NPCSEENEWPLAYER
DORAND 4
  SAY Enfin quelqu'un!
  SAY Ne seriez-vous pas <SRC.NAME>? Heureux de vous revoir
  SAY Venez-vous pour me tenir compagnie?
  SAY Quelqu'un... quelle joie !
ENDDO
RETURN 0

ex : Un joueur qui n'a rien à faire au dongeon 7...
ON=@NPCSEENEWPLAYER
IF ( (<EVAL 0<SRC.TAG.anti_mark_recall>>==0) || (<EVAL 0<SRC.TAG.INSIDE_D7>>==0) )
  SRC.EVENTS -e_anti_mark_recall
  SRC.P=1357,1065
  SRC.UPDATE
ENDIF
RETURN 0

Le ON=@NPCHEARUNKNOWN
==>Il est utilisé lorsque le joueur dit quelque chose qui est absent du SPEECH du NPC.
[] = Le NPC
SRC = Le joueur qui parle au NPC

ex : vendeur d'ingrédients.
ON=@NPCHearUnknown
SAY Quel bon reg vous amene?
RETURN 1

ex : NPC qui ne sais pas quoi répondre
ON=@NPCHearUnknown
SAY Je ne comprends rien a ce que vous dites, <SRC.NAME> !
RETURN 1

ex : Joueur qui a 5 chances de repondre quelque chose de comprehensible.
ON=@NPCHearUnknown
IF 0<SRC.TAG.CHANCES_RATEES> < 5
  SRC.TAG.CHANCES_RATEES = <EVAL 0<SRC.TAG.CHANCES_RATEES> + 1>
ENDIF
IF <SRC.TAG.CHANCES_RATEES>> == 1
  SAY Redites encore 4 choses stupides et je ne vous parlerai plus.
IF <SRC.TAG.CHANCES_RATEES>> < 5
  SAY Encore quelque chose de stupide, encore <EVAL 5 - <SRC.TAG.CHANCES_RATEES>> fois et c'est la porte !
ELSE
  SAY Vous m'avez suffisamment agace, hors de ma vue cloporte !
ENDIF
RETURN 1

Le ON=@ITEMPICKUP_PACK
==> Il est utilisé quand un joueur prend un objet dans ses mains. (Dans tout APO, ce trigger est utilisé à un seul endroit!)
[] = Le joueur qui prend l'objet
SRC = Le joueur qui prend l'objet
ACT = L'objet pris
SRC.ACT = L'objet pris

ex : Script qui fait disparaitre un objet important qui n'est pas destiné aux joueurs.
ON=@ITEMPICKUP_PACK
IF <SRC.ACT.TYPE> == t_objet_secret_gm
  IF <SRC.ACCOUNT.PLEVEL> < 3
    SRC.SYSMESSAGE Vous ne pouvez pas prendre l'objet et il vous est confisque !
    SRC.ACT.REMOVE
    RETURN 1
  ENDIF
ENDIF
RETURN 0

Le ON=@ITEMTARGON_ITEM
==> Il est utilisé lorsqu'un joueur sélectionne quelque chose.
[] = Le joueur qui sélectionne
SRC = Le joueur qui sélectionne
ACT = L'objet qui sert à sélectionner
SRC.ACT = L'objet qui sert à sélectionner
TARG = L'objet sélectionné
SRC.TARG = L'objet sélectionné
ARGO = L'objet sélectionné

ex : Découper la chair d'un cadavre.
ON=@ITEMTARGON_ITEM
IF (<SRC.ACT.TYPE>==t_weapon_sword) || (<SRC.ACT.TYPE>==t_weapon_fence)
  IF <SRC.TARG.BASEID>==i_corpse
    SRC.SYSMESSAGE Vous decoupez la chair de <SRC.TARG.NAME> avec <SRC.ACT.NAME>
    RETURN 1
  ENDIF
ENDIF
RETURN 0

Le ON=@ITEMCLICK
==> Il est utilisé lorsqu'un joueur click sur un objet. Il est mieux d'utiliser le CLICK sur l'objet lui-même. (Utilisé nulle part sur APO)
[] = Le joueur
SRC = Le joueur
ACT = Objet cliqué
SRC.ACT = Objet cliqué

ex : Vous voulez faire fuire tous les joueurs sur votre serveur en floodant.
ON=@ITEMCLICK
SERV.B <SRC.NAME> clique sur <SRC.ACT.NAME> !
RETURN 0

Le ON=@ITEMDCLICK
==> Il est utilisé lorsqu'un joueur double click sur un objet. Il est mieux d'utiliser le DCLICK sur l'objet lui-même. (Utilisé nulle part sur APO)
[] = Le joueur
SRC = Le joueur
ACT = L'objet double cliqué
SRC.ACT = L'objet double cliqué
TARG = L'objet double cliqué
SRC.TARG = L'objet double cliqué

ex : Amusons nous a flooder puisque je n'ai aucune idée à quoi ca peut bien servir...
ON=@ITEMDCLICK
SERV.B <NAME> dclick sur <SRC.ACT.NAME> = <TARG.NAME>
SERV.B <SRC.NAME> double click sur <ACT.NAME> = <SRC.TARG.NAME>
RETURN 0
























LES ITEMS SIMPLES




Les objets simples sont les objets courants que nous pouvons voir en grande quantité sur les serveurs (mur, rabot, , pièce d'or, bourse...). Ces objets, même s'ils sont simples doivent être définis selon plusieurs attributs, les voici : (Si j'en oublie, merci de m'en faire part!)

[ITEMDEF x]
DEFNAME=x
ID=x
NAME=x
WEIGHT=x
TYPE=x
RESOURCES=x
SKILLMAKE=x
VALUE=x
TDATA1=x
TDATA2=x
TDATA3=x
TDATA4=x
DUPELIST=x
DUPEITEM=x
CATEGORY=x
SUBSECTION=x
DESCRIPTION=x


[ITEMDEF x]
Ceci dit à Sphere "Je veux créer un nouvel objet avec comme définition x". En gros, Sphere utilisera les prochaines lignes pour définir chaque attribut de l'objet, c'est ce qui suivra. Vous pourrez faire apparaitre cet objet grâce à la commande ".add x". Il est recommandé de commencer votre nom avec "i" comme dans l'exemple "i_roche" pour montrer que c'est un objet ordinaire. Les objets de type "memory" commenceront avec "m"... etc.

DEFNAME=x
Cette ligne est purement inutile, sauf si vous voulez utiliser un deuxième nom pour votre objet. Vous pourrez utiliser le x de ITEMDEF ou celui de DEFNAME pour faire un ".add". Si vous ne voulez pas un deuxième nom, supprimez cette ligne.

ID=x
Cette ligne donnera tout simplement forme à votre objet. Il vous faudra de ce fait connaître exactement le ID que vous voulez. Par exemple, x=0475 donnera un foyer, x=0dfc donnera un ciseau... etc. Dans les fichiers "sphereitem", vous pourrez les trouver.

NAME=x
Sans vous étonner, x sera ni plus ni moins que le nom qu'aura cet objet.

WEIGHT=x
x sera le poids de l'objet. Faites tout de même attention car Sphere prend les décimales même si vous n'en mettez pas. Donc x=2 ou x=0.2 donnera la même chose. Si vous voulez un poids de 50, mettez x=50.0 ou x=500.

TYPE=x
x sera le type de votre objet. Chaque type d'objet réagit différemment aux événements comme double-click, click, step, à la magie, etc. Par exemple, le type "t_door" réagit par défaut au double click en ouvrant la porte, le type "t_armor" réagit par défaut au double click en équippant cette armure. Il est tout à fait possible de redéfinir le ON = @DCLICK sur un objet t_armor pour que l'objet ne s'équippe pas, mais lance une éclair par exemple, mais tout cela sera vu dans un autre guide. En gros, ce que vous devez savoir, c'est que la définition du type sert uniquement à ce que Sphere sache quoi faire avec un objet lorsqu'un événement survient. Dans le cas contraire, il renvoit un message style "Vous ne savez pas utiliser cet objet". Tous les types sont notés dans le fichier "spheredefs.scp"

RESSOURCES=x
Ici seront inscrits toutes les ressources qui devront être en possession du joueur pour produire cet objet. Si plus d'une ressource est nécessaire à sa construction, ces ressources devront être séparés par une virgule. Par exemple, un instrument de musique pourrait avoir "RESOURCES=5 i_buche_de_bois, 3 i_fil_de_fer". Ceci veut dire que ca prendrait 5 buches de bois ainsi que 3 fils de fer pour produire cet instrument. (Tout ce qui est inscrit ici sera détruit lors de la création de l'objet)

SKILLMAKE=x
Ici seront inscrits tout ce que le joueur devra avoir en sa possession pour produire cet objet comme les skills et les outils. Chaque skill ou outil différent doivent être séparés par des virgules. Par exemple, un instrument de musique pourrait avoir "SKILLMAKE=TINKERING 50.0, MUSICIANSHIP 80.0, t_tinker_tools". Ceci veut dire qu'il faudrait que son skill en bricolage soit de 50.0, en musique de 80.0 et qu'il possède un objet de type "t_tinker_tools", ce qui est un outil de bricoleur. (Tout ce qui est inscrit ici ne sera pas détruit lors de la création de l'objet)

VALUE=x
Ici sera noté la valeur marchande de l'objet en pièces d'or. Si aucune valeur n'est entrée, l'objet sera quand même de valeur égale à la somme de ses "RESSOURCES=x". Si cet objet n'a aucune ressource avec de la valeur ou qu'il n'y a aucune ressource, alors l'objet ne vaudra rien. Faites attention, c'est dans ce cas que les objets disparaissent sur les vendeurs!

TDATA1=x
TDATA2=x
TDATA3=x
TDATA4=x
Ici seront notés des donnée utiles pour certains types d'objet. Par exemple, le type "t_ore" utilise TDATA1 comme objet en quoi le minerai sera transformé, le type "t_door" utilise TDATA1 comme son que fera la porte lorsqu'elle est ouverte ou fermée... etc.

DUPELIST=x
Une liste de tous les items qui partagent ses propriétés. Les items doivent être séparés par des virgules.

DUPEITEM=x
L'objet prendra les propriétés de ce parent.

CATEGORY=x
SUBSECTION=x
DESCRIPTION=x
Tout ceci est pour classer vos items avec Axis. Vous verrez ainsi aisément la catégorie, la classe et la description de chacun des items présent dans vos scripts. Vous pourriez avoir comme catégory "Portes", comme subsection "metal" et description "Porte en metal NE".


Ceci conclut pour les objets simples, il y'a beaucoup d'autres propriétés qui restent à voir, surtout dans les armures, armes et memories. Certaines de ces propriétés sont inclus via l'événement ON = @CREATE qui est appelée quand l'objet est créé.

























LES FONCTIONS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Les fonctions sont essentielles si vous voulez faire du code plus concis et lisible. Elles ont pour but principal d'éviter de retapper les mêmes lignes de code en appelant la fonction plusieurs fois au lieu de "copier-coller" le code plusieurs fois. Ceci m'a souvent aidé à réduire de plus ou moins 10% les lignes de code de mes scripts, et même jusqu'à 90% dans quelques uns d'entre eux! C'est un élément essentiel un peu compliqué à première vue, mais très simple et utile.

Utilisation :
[FUNCTION nomDeFonction]
....
....
RETURN ...

Attributs :
1.     La fonction retourne toujours quelque chose. Si vous ne mettez aucun "RETURN", la fonction retournera "0" à la fin.
2.     L'objet "SRC" est le même que lorsque vous appelez la fonction au départ. Il est déconseillé d'utiliser le "SRC" dans une fonction puisque vous pourriez appeler la fonction à partir de n'importe quel script.
3.     L'objet par défaut (<UID>) est celui sur lequel vous appelez la fonction. Par exemple, si vous utilisez dans un script à l'extérieur de votre fonction "TOPOBJ.fonction", alors votre objet par défaut sera le "TOPOBJ".
4.     Vous pouvez envoyer un seul argument à une fonction qui sera appelé "ARGS". Par exemple, si vous utilisez dans un script à l'extérieur de votre fonction "TOPOBJ.fonction 12", alors à l'intérieur de votre fonction, vous aurez "<ARGS> = 12".
Le RETURN
Le RETURN est ce qui importune bien des scripteurs. Il faut savoir que chaque fonction doit retourner une valeur, que ce soit une lettre, une suite de caractères, un nombre... lorsque uen valeur est retournée, la fonction cesse au même moment.

Vous appelez donc une fonction à partir d'un script quelconque, vous pouvez en toute légalité créer une fonction "double" qui ne fait rien de plus que doubler la valeur envoyée. Je suis d'accord avec vous que c'est bien inutile, mais ca donne un bon example.
//CODE DU SCRIPT
ON=@DCLICK
SRC.SYSMESSAGE <EVAL <DOUBLE 10>>
RETURN 1

Vous devriez voir apparaître sur votre écran la valeur "20". En guise d'example, voici ce que pourrait donner la fonction "DOUBLE".

[FUNCTION DOUBLE]
RETURN <EVAL <ARGS> * 2>

Nous pourrions également ajouter un test pour s'assurer que la fonction a bel et bien un argument. Imaginons que <ARGS> n'existe peut-être pas...

[FUNCTION DOUBLE]
IF <ARGS>
  RETURN <EVAL <ARGS> * 2>
ELSE
  SRC.SYSMESSAGE Aucun argument dans la fonction double !
  RETURN 0
ENDIF

Bien sur, si une phrase est entrée en argument, la fonction va créer une erreur en essayant de calculer "phrase * 2". IF <ARGS> ne fait que vérifier si <ARGS> contient quelque chose, peu importe ce que c'est. Il est souvent recommandé dans la mesure du possible de ne faire qu'un seul "RETURN" par fonction à la toute fin, cela s'appelle de la programmation structurée stricte (une entrée une sortie), sinon dans l'exemple ci-haut est de la programmation structurée laxiste (Une entrée). Lorsque nous pouvons faire un code plus structurée et plus propre, pourquoi pas?

//EXAMPLE DE PROGRAMMATION STRUCTUREE STRICTE
[FUNCTION DOUBLE]
IF <ARGS>
  VAR.TEMP = <EVAL <ARGS> * 2>
ELSE
  VAR.TEMP = 0
  SRC.SYSMESSAGE Aucun argument dans la fonction double !
ENDIF
RETURN <VAR.TEMP>

Nous avons encore un léger problème... nous utilisons la variable globale "<VAR.TEMP>" pour retourner notre valeur, mais nous ne la supprimons pas. Cela n'est pas tellement grave si vous avez assez de mémoire et de vitesse sur votre serveur, mais pourquoi en prendre plus si ce n'est pas nécessaire? Nous pouvons utiliser ARGS ici pour stocker notre valeur de retour.

//EXAMPLE DE PROGRAMMATION STRUCTUREE STRICTE SANS PERTE DE MEMOIRE
[FUNCTION DOUBLE]
IF <ARGS>
  VAR.TEMP = <EVAL <ARGS> * 2>
ELSE
  VAR.TEMP = 0
  SRC.SYSMESSAGE Aucun argument dans la fonction double !
ENDIF
ARGS = <VAR.TEMP>
VAR.TEMP // SUPPRIME LA VARIABLE
RETURN <ARGS>

Pour être plus saint que le pape, nous pouvons une fois de plus optimiser notre fonction. Au lieu d'utiliser une variable VAR.TEMP pour ensuite la remettre dans ARGS, nous pourrions l'enregistrer dans ARGS directement. Faites attention tout de même avec cette technique, car vous allez écraser votre ARGS initial, et vous ne pourrez plus vous en servir par la suite. Dans ce cas-ci, nous l'utilisons qu'une seule fois.

//EXAMPLE DE PROGRAMMATION OPTIMAL
[FUNCTION DOUBLE]
IF <ARGS>
  ARGS = <EVAL <ARGS> * 2>
ELSE
  ARGS = 0
  SRC.SYSMESSAGE Aucun argument dans la fonction double !
ENDIF
RETURN <ARGS>

Comme je disais un peu plus haut, la commande "RETURN" retourne une valeur et ferme immédiatement la fonction, donc tout ce qui suit un RETURN est complètement inutile.

[FUNCTION TOTO]
SRC.SYSMESSAGE blablabla...!
RETURN 15
SYSMESSAGE Message completement inutile qui ne s'affiche pas !
#2
ce qui explique mes propos plutôt :
Le tout accumulé a beaucoup d'autres facteurs ...viens détruire le reste de cette petite motivation  :roll:

mais bref quand tu voit que la personne parle directement après 3,01 min , tu peut voir quel était visiblement devant sont écran ...
un avertissement , fait attention ! prochainement tu fera 1:30 de jail !
apeine dépassé la limite ...
le message aurait quand meme passé sans faire *****


#3
ou juste un serveur rp avec mj et histoire , ou je pourrai avoir un dosier a 0 , en mettant ma ***** de fênetre msn a bonne place , qui m'feront pas croupir 2honline en jail pcq j'ai répondu 30 seconde en retard vue le nombre de joueur sur le serveur...
même la police laisse passé des tickets même quand il s'agait de la sécurité des gens ...

Et je croit qu'il faut quand même un équilibre entre pvp , pvm , monté des skill et Rp pour avoir une formule gagnante et non seulement s'assoir sur un de ces aspects en se disant que tout va bien aller... si non on court a notre perte ...pour tout jeu il faut faire des mises a jour , s'adapté a la communauté de joueurs , gardé leur focus , si non sa fait sont temps ...
Un vieux jeu comme uo se doit d'avoir un avancement , une évolution  , des nouveautées pour garder les joueurs qui sont pas uniquement axé RP RP RP

Sur ce . merci bonsoir il est parti

#4
non c'est pas injuste je me suis fait avoir 2 fois de la même facons , la fênetre exploreur ou msn trop grosse dans l'écran , plonger en pleine discussion avec un joueurs par msn , mon player caché dans le fin fond de la map ...
A moi d'avoir 2 écran haha :P mais non j'irai pas en acheter une haha
Cependant c'est pas comme si le gm me jaillait et que je revenait 30 minutes plus tard ...

Pour moi uo est un jeu ou je peut regarder les forums, msn et tout
Mais j'ai deja épuisé trop de chance , la prochaine fois c'est quoi 2h , ensuite 4 h ....
C'est pas vrai que je vait passer 2-3-4 h de temps a fixé mon écran en jail  ...

Chacun sa façons de jouer , de macroter , de penser  la mienne n'est donc pas adapté pour ici

Ce qui rend le tout étrange c'est que j'aime encore uo et passer du temps a scripter des petits truc sur mon serveur test que seront utile a personne hahaha :D
#5
Discussion Générale. / Au revoir
2012-04-02, 03:11:58
Et oui j'ai dût attraper le syndrome qui cour :) le manque de motivation ,  peut-être contagieux faut croire  :D

Non mais sérieusement après un jail un peu contreversé ...
je n'ai pas vu le gm dans mon écran a cause de ma fenêtre msn ...
Et j'ai aussitôt parler réagit lors du changement de décor derrière mon écran .

Chaque serveur a ses réglément , chacun a sa façons de les aplliqués

Le tout accumulé a beaucoup d'autres facteurs ...viens détruire le reste de cette petite motivation
dommage j'était plutôt motiver du coté scriptage , j'avais envi d'apprendre et de faire bouger les choses

Bon jeu , je vous souhaite une bonne renaissance , des scripteurs ! des joueurs ! et du bonheur  :D


Et non je ne quit pas pour un autre serveur , Turambar est un très bon serveur du coté Rp
#6
Pour l'instant je n'ai fait que la création d'un nouveau minerai , armure , l'hp , ar de cette armure
mais la difficulté vien lorsqu'il faut l'intégré a un menu de craft ... j'ai seulement réussi *supprimant* le menu d'un autres minerai

j'ai aussi modifier les drops de certains monstres ...assez facile

de la simple modification de script deja existant ...loins de la création ...

Mais bon si jamais je peux être utile ... ou essayer de travaillé sur quelque chose qui pourrait être utile a turambar .... vos priorités ... rien de trop complexe pour commencé haha
faite le savoir :)
#7
La conception de la map , la décoration est magnifique ,  l'ambiance, le système de minage et de buchage , crafting est parfaitement réussi , L'expérience rp et l'aspect rareté de certains objets qui donne une longue vie au jeu
#8
Qui a dit qu'on ne pouvait pas changer de classe :P le but est toujours de ne pas appliqué des restriction aux joueur mais bien de créer un diversité et une forme de tactique entre joueurs

J'ai vraiment de la misère a m'imaginé en quoi c'est un avantage que tous les personnages d'un account et d'un serveur soit *pratiquement* identique , si on parle du coté techniquesde combats biensur , excluant craft et rp , race et autres
#9
J'aurait du apprendre il y a 10 ans :P
#10
Si Jamais vous avez les sites que vous avez utilisez pour apprendre la base de la programmation sphere
n'hésité pas , des conseils , tout sera utile , merci
#11
Oui c'est pourtant ce que je fait ... même sphere me le dit sur quel ip est ouvert le serveur ...
#12
Citation de: Tin le 2012-03-28, 20:12:07
Pour le système de classes, je n'aime pas, et c'est vu comme un point positif sur Turambar la plupart du temps. Ça permet aussi plus de polyvalence (essaie de te faire un donjon si tu es seul et que tu es un healer...). Je ne sais pas trop combien il reste de shards UO, mais la plupart ont ce système non ? Autant apporter un peu de diversité...

Un healer ne fait pas que healer .... comme un artisan peu quand même combatttre ... c'est simplement qu'il n'ont pas la même spécialisation ...le but n'est pas de restreindre les joueurs …mais bien de créer une diversité entre tous et une certaine technique lors de combat en groupe,
De plus chaque système de classe est totalement différent , ça c'est une diversité , pouvoir avoir plusieur perso complètement différent ...
Pour l'instant la seul chose qui est différent entre 2 perso c'est le skill de craft ...

Les choix ne sont pas oubliger d'être majeur ... un bonus de défence au bouclier mais qui empêche tout port d’arc , une force différente d'un guérrier a un archer ( Parfaitement logique … la force chez un guérrier se développera beaucoup plus que chez un archer )
Bonus dans certrain skill (105)
Qui peut être basé sur un système de skill , ou d’expérience ou simplement accessible a tous

Mais bon comme disait Franky , se sujet a surement été abordé a de nombreuses reprise , mais je voulait quand même finir sur le faite que sa peut grandement être bénéfique
#13
Oui j'ai fait le dowload ...
J'entre mon ip dans le login.txt mais impossible de connecter ...

Mais bon je doit faire mes preuves en temps que scripteur et ensuite je serai accepté dans l'équipe ???

Sans les script du serveur je ne pourrai pas parfaitement adapté mes script a Tarumbar... ou amélioré certain
Bien sur si j'ai la patience de réussir ..

Si je veut apprendre a scripté c'est uniquement pour aidé Turambar
#14
Je me demandait si c'était possible d'avoir accès au script existant de Turambar...
J'hébergerais mon propre serveur pour apprendre la base de la programmation , sans nuir a personne et sans risque de faire planté quoi que se soit héhé

Probablement que c'est pas comme ca que sa fonctionne mais bon ... un gars s'essaye :)
merci ! :)
ou cé que je signe haha :P
#15
Le fait de pensé aux nouveaux  s'adressait plutot a se message:

J'veux pas cassé ton fun, mais y'aura jamais de systeme de cote ou/et de classe. Ça reste l'un de positif de beaucoup d'ancien joueur de Turambar

Car oui les nouveaux s'adapte parfaitement au reste des ancients , ils n'ont pas la vie dure

C'est plutot au niveaux des scripts ... de la nouveauté ... s'empèché de faire de la nouveauté , des spécialités , des personnages un peu plus unique pour attiré de nouveau joueurs ou en faire revenir d'autres ,  a cause des ancients .... je doute fort que le problème soit les ancients ...possible mais

Mais oui en effet turambar est très ouvert et facilite la croissance des nouveaux
#16
Citation de: Heralios le 2012-03-28, 00:04:55
Gros manque de diversité pour les combattants ,   qui se résume entre guérrier et archer avec *healing*
L'effet des potions a été totalement abaissé , les poisons supprimés , la magie dévastatrice exclusive a certaines races ...

Une certain système de classe ou avec un certain % de skill un talent est *unlocker* après avoir fait une certaine chose , quelque chose du genre pourrait donner accès a certaines compétences , un coup qui affaiblie l'ennemi ou même le ralenti , un saignement  , un coup paralysant , un cri de guerre ,

histoire de créer un peu un effet unique à son personnage

wow yé ou le chialage la dedans ? j'apporte un point tout a fait réaliste et très concret , et une suggestion avec ...
Tout changer du jours au lendemain , on se calme ...
Les scripteurs on une vie ... sa fait 6 mois a voir les posts qui a rien de changer ... ya une différence entre avoir une vie et ne plus avoir de motivation ... faut pas se le cacher ...
c'est  plate mais c'est  sa ... les gars on donner beaucoup mais faut quand meme pas fermer les yeux ...
c'est normal et on respecte toute sa

Et je ne voit pas en quoi un système de classe ou quelque chose de similaire nuirait au ancients joueurs ... il y aurait aussi droit , et sa m'étonnerait énormément qu'il soit nombreux a s'opposé a un tel projet ...

Franky si tu veut pas voir les points négatif du serveur , ben vien pas sur le sujet .... va faire un tour dans les points positifs :)
POINT NÉGATIF = POINT NÉGATIF
Je vien faire un poste dans le sujet points négatif pi tu m'explique le fonctionnement d'un  admin de serveur et que les scripteurs ont une vie ....
désolé la mais ... pi tes petites questions comme * tu comprend ? * tu peux ben té ouééééééééééééééééé....
et crypto ? hu ? haha ...rien d'autre que  what the fuck ?

Et j'imagine que pour être scripteur y faut faire d'la recherche sur le net pour trouver des scripts et les modifiers ... probablement le tout en anglais et je suis pas une machine en anglais ... surtout la le problèmeet je n'y connait absolument rien en programmation n'y en scriptage d'aucunes sortes
#17
D'accord a Samsord
Et théomir sur le point du pvm/pvp



Mais quand je parlait de magie je me disait plutot que certaine races, *classes *,personnage assez talentueux pourrait avoir accès a certain sort pour diversifier certain guérrier ...

Peut-être pas un système de classe mais quelque chose pour diversifier ...un plus pour les ancients joueurs ???? serait peut-être temps de penser au nouveau .... c'est pas la priorité réussir a avoir des nouveaux joueurs
5 personnage sur l'account ... tous guérrier artisan ...
et si le sujet a été aborder 30 fois ... c'est peut-être pas une mauvaise idéee ...

qu'un guérrier puisse être axé un peu plus vers les dommage ou la defence ... ou un guérisseur ...

et pour le poison ... ta déja essayer de refilé une tarte ou un bandages a un troll ??
quelqu'un l'utilise ???

un archer one shoté avec 110 de vie ? je veut voir sa ...
#18
Citation de: Pierrot le 2012-01-10, 14:44:42
on veut avant tout chasser et avoir un gros loot à la fin. C'est là que se pose le problème, trop de gros loots = plus rien n'est rare.

J'ai seulement hate de voir quelqu'un chasser en full agapite , pouvoir chasser en sachant que dans le fond tu n'est pas entrain de manger ton profit , que c'est profitable comme drop pour te faire démolir ton armure et ton arme , moi personnellement je trouve normal qu'après 40 minutes sur un mobs ... qu'il te donne un bon drop a cause du système d'usure élévé existant ... il faut payé l'armure ... mais encore la l'archer vien faire exeption a la règle  :? qui lui se mérite un bon drop pour une ridicule petite usure sur son arc
Pas facile de trouver un juste milieu

Réduire l'usure rebalancerait le guérrier et l'archer , (seulement de la full plate pourrait meme être encore mieux ) et éviterait que tout les belles armures en sergril et autres , ne soit utilisé que pour garnir les banques et faire une des petites parades en pleine ville le dimanche  ....


l'archer sait très bien qu'il trouvera une peau sur un titan ... et que cette armure ne lui coute aucun entretien ...et que tuer cette bête ne lui coute aussi pratiquement rien ...
Tout le contraire pour le guérrier de corps a corps
#19
Gros manque de diversité pour les combattants ,   qui se résume entre guérrier et archer avec *healing*
L'effet des potions a été totalement abaissé , les poisons supprimés , la magie dévastatrice exclusive a certaines races ...

Une certain système de classe ou avec un certain % de skill un talent est *unlocker* après avoir fait une certaine chose , quelque chose du genre pourrait donner accès a certaines compétences , un coup qui affaiblie l'ennemi ou même le ralenti , un saignement  , un coup paralysant , un cri de guerre ,

histoire de créer un peu un effet unique à son personnage
#20
Est-ce qu'il y un effet lorsqu'on crée un object d'excellent qualité ou de moindre qualité ??
Hp max , dommage , etc
Ou peut être selon le % du skill ... l'objet crée sera *plus efficace*, exemple une potion ou une armure de peau
On en entend de touted les sortes et c'est ici qu'on s'éclaire , merci :)
#21
Heralios 0 Eowymos 2  :D
#22
c'est marrant mais certains s'intéresse plus au épées qu'aux gumps de vêtements ...vue le nombre de joueur je me tourne surtout vers le pvm ... le banquier commençait a manquer de réplique un peu :)

Et J'oubliais presque ... Tarumbar c'est RP avant tout :) surtout quand tu voit les elfes débarqué avec leurs recall , et toute c'est magie , et leur Forces égalent celle d'un Nain et d'un orque ...  :D
#23
Mais quel belle expérience ...
JE me fait forger une épée en Acier ... je fait 1 heures de pvm ... et voila qu'est est Badly damage ... j'arrête donc de l'utilisé et je prend une des 3 autres épée que j'ai du apporter

Arrivé au village j'essaye de réparé cette épée avec mon 95 % armslore et 40 blacksmith
Et voila que je rate plusieurs fois ...
Cette épée était a 100 % hp ...
ET voila quel est déjà rendu a 86 % de hp maximum ...
Et boumm après avoir raté 5 fois de suite une réparation MINUTIEUSE ... mon épée explose en mille miettes...
une chance que sa utilise surtout armslore hahahaha....

que de plaisir ... :) faut le prendre en riant héhé , rendu la
#24
mais dans le fond rien n'est prioritaire puisque rien ne se fait si personne scripte héhé... :D

Edit: A non j'oubliait Voro !! l'homme qui sais tout :)
#25
Pas de problème mon vieux , envoye moi les fichiers du serveur et le serveur test aisnsi qu'un compte Mg , et je vais scripter ce petit scripte inoffensif , sa sera pas très long et tu va être supris :)

Et ben non haha je ne sais pas scripter , aucune idée comment sa marche , j'imagine que c'est assez terriblement  complexe ,
Mais bon st'en donnant des idées qu'on va trouver les meilleurs :Pune question qui a tourner a le suggestion ,  mais vous avez déja des priorités dont j'ignore mais certainement prometteuse !


A noté Franky que mon super calcule théorique de fou ! est seulement effectif lorsqu' on a le temps de prendre car le ratio concentratin / heal est 2 fois meilleur que la Greater

et de 2 ... le nombre de fois ou la greater va te sauver ...bah il en drop assez pour que tu en est une sur toi pour chacune de  se genre de situation assez rare

#26
et la Greater est la potion qui demande le plus d'alchemy ...
Non mais Pierrot ...l'idée est de loins meilleur de mettre une qualité dans liquide selon l'expérience de l'alchimiste et un concentration X pour tout les potions ...
Que le système actuel utilise + de liquide = + de concentration = Alchemy inutile

C'est bien de  rendre un skill inutile ,  Utilisable ...créer une variété .... pas seulement une question rp ...
Si non je te dirait il faut enlève son armure pour mettre des bandages ...

Affaire classé , On met Alchemy dans la même section que Remove trap et Item id  :D

#27
meme un troll pourrait mettre 2 potion dans la meme fiole
Pas besoin d'un gm alchimiste héhé... :evil:

merci franky !
#28
donc ... conclusion ... que tout les guérriers qui veulent des armures , bah monté mining et bs a 95 , même si c'est inutile comme disait Théomir  :) héhé , c'est le prix a payé finalement,  oublier l'Or :P oublier le pvm , miner et forger :P
#29
Que celui qui peu me forger une armure me le fasse savoir ...+50 lingots pour l'entretien ...

Agapite
Seregril
Daeglin
Valorite
Platine
Adamantil
Eternyl
Mythril
Eldarin

mais le sujet n'est pas la ... on parle ici d'entretien
#30
C'est une idée mais faudrait pas entrée dans un cercle vicieux ... le but est quand même de changer la situation actuelle ...
Je ne croit pas que les armures de minerai rare sont trop nombreuses ...

#31
Je sais que je peut tammer des animaux et faire des arcs et être un archer ...
Mais je suis guérrier ... combattre a distance ne brise pas les armures ...
Mais je veut être guérrier ....

Le seul moyen que je voit d'avoir une armure et de pouvoir l'entretenir c'est de moi même être gm mining et blacksmith ...
Interactions ??? justement il est la le problème car les forgerons sont assez rare ...
Attendre

Je n'ai pas dit de mettre les armures invinsible ... simplement un peu plus ... parce que présentement c'est un peu exagéré ... quelques heures de pvm et certain parti de l'amure sont carrément *scrap*

Et oui sa serait facile de tuer des cyclopes et des ogre a distances pour me faire une belle armure que je n'abimerai pas en fesant du combat a distance ....

#32
Je ne veut pas être négatif mais ... a moins d'être relativement bon mineur et forgeron ... il est impossible de faire du pvm  avec un armure autre que du fer ...
impossible , il faudrait courir après les forgeron après chaque 1-2 heures de pvm

Il faudrait savoir réparé l'armure ... et après plusieurs combat il faut alors la refondre pour ensuite la reforger ...
Avec quoi payé un forgeron ... de l'or ? non il préfère garde son rare minerai pour lui car l'or est plutot inutile ...

Si on veut voir un peu de couleur dans les armures de guérriers ... il va falloir des dizaine de nouveau joueurs ou une réduction considérable de l'usure ...

Tout ça est bien conçu mais vue la situation du serveur dernièrement .... il faudrait certainement des ajustements pour s'adapter au joueurs qui sont souvent seul ...
Rp avant tout , je veut bien mais ...

Certainement pas dans les priorités j'imagine :P
#33
attention quand y va mouiller haha  le maquillage coule  :D
#34
je voit que la potion coloration de peau a été créer , je me demandait si les Potions de rétrécissement ont aussi été scripter du coté de la création  , si oui , quels ingrédients il faut ?
#35
Je suis guérrier et j'aimerais réparé mes armures ...
J'ai l'intention de monter Arms lore ... pour se qui est du Blacksmith j'aime le laisser a 40 ...
donc ! est-ce que sa va être possible de réparé des armures ...
Pour l'instant tout se que je touche éclate en morceaux ...les types de métaux influence la difficulté ?


Parler moi de vos expériences :P

(quelqu'un connait un endroit ou je peut teacher 40 % mining ... j'ai seulement 27 % )
#36
Je croit pas que se soit la solution Tin parce que ya des potions de stamina ... donc on pourrait toujours prendre des potions a conditions de prendre une potion de stamina de temps en temps ...a moins de tout repenser le système ...

en se qui me conserne ... de facons rp et de facon a rendre le tout logique et agréable pour les alchimistes ...
Au lieu d'avoir petite moyenne et grand potion
On a   basse qualité , *normal , Bonne qualité ,
Le format de la potion reste toujours le même , le temps et la concentration requise reste toujours le même , mais bien la qualité change ,

Parce que pour l'instant ... prendre 13 petit potion te demande autent de concentration de de prendre une grosse ( C'est quoi c'est un 2 litres hahahah ) et plus tu est expérimenté en alchimie , plus tu être capable de mettre de liquide dans une fiole ... quel intelligence haha :P

Mais bon tout sa est plus une question de gameplay ... healing avant tout comme dit Franky ...

Sa serait bien si Peau de roche aurait été créer :)
#37
C'est sur mais ...
j'ai jamais combattu de troll mais je croit pas qu'il y aura une différence entre la normal ou la grande ...

Mais reste que je continu de penser que plus tu est talentueux plus les potions sont grosses ..
et le ratio  heal/ concentration n'est pas amélioré ...
et que sa devrait plutot jouer sur la qualité de concentration du liquide

donc entre la normal et la grande ... on sauve un temps d'attente pour la consommer de quoi .. 12 secondes ...
#38
J'ai monté alchemy ... pour me rendre compte que c'est pratiquement inutile ...
Pourquoi ?
Parce  que plus la potion est bonne qualité ... plus il faut de la concentration pour la prendre ...
Et vue le temps qui nous empèche de prendre 2 potion d'affilé est très court ...
il est pratiquement inutile d'avoir une potion de bonne qualité ...

C'est certain que si on se fit au nom de la potion ... plus elle est grande pour il faut de temps pour la boire...
mais de facons RP plus l'alchimiste est expérimenté ... plus la potion est de meilleur qualité ... et non plus grosse ... n'importe qui peu jouer avec les quatités mais pas la qualité

Sa aurait été bien , selon moi , que le fait de prendre une potion fasse perdre un nombre égale de concentration ... mais que se soit la qualité de son contenu qui fasse la différence ...

De plus .. des races comme dunedain et numenor on un net avantage sur le fait de boire des potions dût au skill meditation ...

Mais tout sa est le point de vue d'un alchimiste haha
mais de facons rp c'est aussi très logique
Merci :)

Apres quelques test ,il serait même préférable de prendre plusieurs petite que une grosse ...
une petite soigne d'environ 10 pv , pour une consamation de 2-3 point de concentration
une grosse soigne de 40-60 pv (environ) pour une consamation de 25 point de concentration
Le ratio Heal/point de concentration est pratiquement 2x meilleur pour les petites potions ...
#39
Le petit nouveau fait sortir les grands secrets des sages scripteurs :)
#40
ya tu quelque chose que tu sais pas toi ??? hahhaahha
#41
Et j'oubliait les arbalètes ... il faut utiliser un bois de meme que type que les arcs , léger ?? ou plutôt le contraire ?

j'ai fait une arbalète en pin et j'ai été vraiment surpris de la puissance...
si on prend un degâts/secondes ... c'était facilement 1.5x plus efficace que les tous arcs que j'ai pu essayer  chêne ,frêne , bouleau , pin
#42
et les arcs en composites ? fabriquable a la dague ? sont elles plus puissantes que celle de bois ? (encore la une question de vitesse j'imagine) plus resistante ??

Pour l'instant j'essayerai de trouver du sapin :)
#43
J'était a Minas Tirith pour réparé mon armure qui a été complètement anéantie par un troll des montagnes ... mais sans succès ... le menu de réparation ne veut pas apparaître ...
Je cour donc a Edoras pour y tester les 2 enclumes .... sans succès toujours incapable de voir se fameux menu de réparation ...

le marteau a la main et les lingots dans le sac pourtant ...
Ou est le problème ? devant l'écran ?
#44
merci a tous !!!
l'aide est très apprécié et surtout très utile
l'union fait la force , gm , vétéran et scripteur , la recette parfaite
#45
En plus d'avoir un bonus a l'arc ils ont leur propre bois ! haaa les elfs !!! qu'on les pentes sur la place publique !!! :)
Mais j'ai remarqué qu'un arc en pin , qui est du bois très commu me semblait plus *puissante* que bien des arc fait avec un bois plus rare ... comme le bouleau et le frène ...
est-ce une illusion !? la est la question ....
Quelqu'un si connait pour me dire ... tel bois est horrible ... tel bois est vraiment bon

Est-ce que les skills comme bowcraft , blacksmith , alchemy , monte seulement en considérant le nombre de fois que le skill sera utilisé ... / ou il prend aussi en considération la difficulté de l'objet créer
#46
mais celui qui a une armure et un arme en métal rare peut la réparer :P et le jeu continu :)
espérant qu'une armure de dragon ne se détruisent pas en une soirée ...
Mais merci pour l'aide
j'était pas certain si je devais le mettre ici ou sur Aide et question techniques
#47
malheur de malheur ... la flèche était vers le bas ... drole d'erreur , surement un mj qui ma jouer au mauvais tour hahahaha
#48
Je voulait savoir si il a moyen de savoir si un bois a de meilleur caractéristique (plus resistance ... meilleur dommage  , poids )qu'un autres car Armslore ne révêlent pas grand chose ...
ET comment sa fonctionne pour les trouver... sont-ils par région ? ou totalement aléatoire selon le % de lumberjacking
Est-ce que les acrs se réparent ?
Est-ce que les armures d'os se répare ?
On peut empoisonner les armes , flèches , arcs ????

J'ai aussi noter quelqu'un chose d'étrange selon moi ... j'ai couper au moins 2000 bûches et mon skill lumberjacking a monté de seulement 0.1 ...ce qui est complètement fou !! a se rympte il va me falloir 700 000 buches ,  c'est a dire environ 50 000 arbres !!!
et mon bowcraft quant a lui monté d'environ 2 % ... se qui est très acceptable ...

merci
#49
haha tu n'a même pas idée , je croit qu'il ferme son msn quand il me voit arriver , il a probablement  plus hate que moi que je soit accepter pour que je laisse enfin Turambarinier en paix :P
#50
Bonjour a tous !
comme de nombreux joueurs je retourne sur Uo , hhhaaaaaaaaa Uo :)
Tout le monde semble sympatique , joueurs comme staff , alors j'espère être accepter parmi vous ,
le site , les descriptions , les bg ... tout est d'une complexité , je n'y connait rien a tolkiens mais j'adore apprendre et c'est pour je me lance vers un dunedain

Au plaisir de se croisé in-game lorsque mon inscription sera accepter :)