JeuxOnLineForumsPlusConnectés : 244 (sites) | 1100 (forums)Créer un compte
NWN2 - La Tour des Arcanes

Bibliothèque MySQL

Suivre Répondre
Partager Rechercher
Avatar de Crom29
Crom29
Prince
 
Avatar de Crom29
 
Bonjour !

J'ai bossé rapidement sur une bibliothèque nwn2 où tous les textes sont stockés dans une BDD MySQL

Avantages :
Pas besoin de créer une masse de blueprints : les livres sont générés automatiquement
Donc pas besoin de gérer les stocks de livres dans les bibliothèques
Classement des livres par catégorie (Bestiaire, Module, Dieux, ...)
On peut retrouver la source et l'auteur du livre

Le projet est sur GitHub : https://github.com/CromFr/NWN2Library
vous êtes bien sûr libres de réutiliser ces fichiers dans votre module

Pour l'instant, il n'y a que quelques livres, du coup je cherches plein de récits sur l'univers de D&D !
Si vous connaissez des sites proposant des récits assez courts (moins de 10 000caractères), ou connaissez quelques histoires sympa, je suis preneur !

Merci d'avance
Miniatures attachées
Cliquez sur l'image pour la voir en taille réelle

Nom : library.jpg
Taille : 1440x900
Poids : 1,23 Mo
ID : 164706  
__________________

Dernière modification par Crom29 ; 06/06/2012 à 16h07.
Avatar de Laban
Laban
Alpha & Oméga
 
Avatar de Laban
 
Héhé, c'est cool ça, de plus je suis content de voir que tu te sers de github

Pour les adjonctions de récits, tu devrais peut-être ajouter un dossier "books" qui contiendrait le sql pour chaque livre de sorte que chaque personne puisse ajouter des scripts facilement.

ex : books/fr/dieux/fr-dieux-001-Shantea.sql

Les numéros ne sont pas nécessaires, mais ça permet de savoir facilement ce qui est dans la base
Avatar de Charlouloute
Charlouloute
Alpha & Oméga
 
Avatar de Charlouloute
 
J'ai une petite question qui paraîtra peut-être assez sotte mais ces "books" sont bien des books pour le jeu lui-même n'est-ce pas ?

Comme on commence à le savoir, je ne suis pas douée du tout en technique et j'ai pas encore regardé ton code mais saurais-tu expliquer rapidement comment s'installe cet ajout que tu nous proposes ?

De nôtre côté, on essayera sans doute d'ajouter ça (peut-être pas de suite, il nous reste quelques bugs importants à résoudre, nous sommes toujours en alpha).

En tout cas, merci bien pour cet apport ! En revenant vers Nwn2 je n'imaginais pas encore la communauté si active.
__________________

La seconde version est arrivée : http://fanelya.fr !
IP : fanelya.no-ip.org

Liste de tous les serveurs : http://nwnlist.com
Avatar de Crom29
Crom29
Prince
 
Avatar de Crom29
 
@Laban :
Pas bête du tout ça, ça permettra d'installer que certains livres. Je ferais ça dès que j'aurais un peu plus de livres à mettre
EDIT : j'ai finalement préféré tout mettre dans "BooksFR.sql" et commenter un peu les requêtes. Ainsi qqn qui voudra tout mettre n'aura pas à exécuter 30 fichiers, et qqn qui ne voudra en mettre que quelques unes devra copier/coller les requêtes désirées

@Charlouloute :
qu'entends tu par "pour le jeu lui même" ?
Ce sont des livres qui sont créés avec le contenu de la base de données, et une petite interface graphique permet de les classer par catégorie, de lire les livres et de les acheter (auquel cas on créé un item de la palette sur le joueur et modifie son nom, icône et description)
la bibliothèque peut être installée sur n'importe quel module NWN2 utilisant NWNX4 + MySQL.

Concernant l'installation, tout est détaillé dans le readme. En gros :
- Importation des scripts dans le module
- Écriture d'un script pour ouvrir la GUI (OnUsed d'un placeable par exemple)
EDIT : Plus besoin de l'écrire, il est dans le erf à importer, sous le nom "library_onused"
- Ajout de la GUI (library.xml) côté client
- Modification du fichier qui liste les GUI côté client (ingamegui.ini)

J'espère avoir bien répondu à tes questions

Dernière modification par Crom29 ; 07/06/2012 à 02h35.
Avatar de Charlouloute
Charlouloute
Alpha & Oméga
 
Avatar de Charlouloute
 
Oui pour ma part c'est très claire. Alors je vais encore prendre le risque de paraître un tout petit peu chiante avec une dernière requête (ne te sens pas obligé au pire on fera le test à l'occasion) : un screen de l'UI IG . Au moins là, tout serait complet (selon moi en tout cas) : description, mode d'emploi et illustrations .

Merci en tout cas Crom .
__________________

La seconde version est arrivée : http://fanelya.fr !
IP : fanelya.no-ip.org

Liste de tous les serveurs : http://nwnlist.com
Avatar de Crom29
Crom29
Prince
 
Avatar de Crom29
 
le screen de l'UI ingame est en pièce jointe dans le 1er post
Avatar de Charlouloute
Charlouloute
Alpha & Oméga
 
Avatar de Charlouloute
 
C'est que ça m'a l'air encore plus sympa que je ne le pensais !

Est-ce que ton script permet de créer des bibliothèques différentes ? Exemple concert avec Fanelya : les livres trouvés à Syméria ne sont pas les mêmes qu'à Zyrathul. Il faudrait donc que s'il clique sur ce qui active l'interface, selon la bibliothèque où le PJ se trouve, il ne trouve pas les mêmes ouvrages.

Désolé pour toutes ces demandes mais c'est de l'entrain .
Avatar de Crom29
Crom29
Prince
 
Avatar de Crom29
 
content que ça te plaise !

Je n'avais pas pensé à séparer les livres dans plusieurs bibliothèques... mais c'est assez simple à faire ^^
Je vais modifier un peu la Bdd pour assigner les livres à un plaçable (identifié par son tag)
Avatar de Charlouloute
Charlouloute
Alpha & Oméga
 
Avatar de Charlouloute
 
Je suis toujours ravie de voir ce genre de "petites" choses (si c'était si petit ce serait déjà sur tous les serveurs ^^) proposées pour tous. C'est le genre d'action qui permet à tous les serveurs de progresser. On a de la chance, nous admins de serveur, d'avoir des développeurs indépendants qui essayent de penser à tous. En plus... je boue d'idées pour l'utilisation de ce script .

Question : Est-ce que plusieurs items sur une même zone peuvent avoir le même tag ?
Avatar de Claudius33
Claudius33
Prince
 
Avatar de Claudius33
 
Citation :
Question : Est-ce que plusieurs items sur une même zone peuvent avoir le même tag ?
Oui, objets, plusieurs créatures aussi d'ailleurs (très pratique pour les mouvements d'ensemble). On peut ensuite les traiter dans une boucle :
Code PHP:

int n 0;
object oItem GetObjectByTag("mon_tag");
while ((
GetIsObjectValid(oItem))
{
      ... 
traiter l''item oItem
      n
++;
      
oItem GetObjectByTag("mon_tag"n); // noter le ,n

Attention : un tag se rapporte à un module, pas à une zone. Une erreur classique et pénible à trouver est d'utiliser un même tag pour des objets, plaçables, effets spéciaux ou créatures placés dans des zones différentes en pensant que NWN2 fait la différence.
Avatar de Charlouloute
Charlouloute
Alpha & Oméga
 
Avatar de Charlouloute
 
Un rappel qui ne fait pas de mal. Merci beaucoup
__________________

La seconde version est arrivée : http://fanelya.fr !
IP : fanelya.no-ip.org

Liste de tous les serveurs : http://nwnlist.com
Avatar de Crom29
Crom29
Prince
 
Avatar de Crom29
 
Citation :
Attention : un tag se rapporte à un module, pas à une zone. Une erreur classique et pénible à trouver est d'utiliser un même tag pour des objets, plaçables, effets spéciaux ou créatures placés dans des zones différentes en pensant que NWN2 fait la différence.
En général, j'utilise surtout GetNearestObjectByTag(...), qui ne prend que les objets de la zone d'execution du script et est (je crois) plus performant que GetObjectByTag().

Citation :
On a de la chance, nous admins de serveur, d'avoir des développeurs indépendants qui essayent de penser à tous.
Indépendant... pas vraiment : Je mappe/scripte sur la Colère d'Aurile (rp-action)
Etant donné que je n'ai pas trouvé de bibliothèque sur le vault, j'ai décidé de partager la mienne
Avatar de Claudius33
Claudius33
Prince
 
Avatar de Claudius33
 
Citation :
En général, j'utilise surtout GetNearestObjectByTag(...), qui ne prend que les objets de la zone d'execution du script et est (je crois) plus performant que Je GetObjectByTag().
Je ne pense pas.

Il y a toujours un débat d'experts là dessus mais qui semble trancher en faveur de GetObjectByTag :

Citation :
Here are the results of the profiling run:

test_gnobt runs 348 total time 4900
test_gobt runs 348 total time 685
test_glo runs 348 total time 1395

So, according to this test, at least, GetObjectByTag outperforms even GetLocalObject, even on a huge mod like HG which probably has upwards of 70,000 objects in play (wild-ass guess based on 50k place count and 566 areas).
le toutim : http://social.bioware.com/forum/1/to...ndex/8147590/1

Pour moi GetObjectByTag va forcément plus vite :
- il n'a besoin que de la liste des des objets
- la liste est triée (B_Tree)
- il fait une recherche binaire, donc très rapide.

Alors que GetNearestObjectByTag ajoute un calcul de distance entre chaque objet de la zone et la référence. On ne doit l'utiliser à mon sens que si l'on ne peut faire autrement (chercher le + proche ennemi par exemple).

Je ne fais que des mods solos, donc je m'autorise des maps très chargées, aucun problème de performance avec GetObjectByTag.
Avatar de Lv4
Lv4
Prince / Princesse
 
Avatar de Lv4
 
Bonne initiative Crom.

Bon, pas trop dans le sujet.. mais c'est très intéressant cette discussion sur le Get*. Est-ce que vous avez effectué les tests sur nwn2 ? Le lien plus haut concerne le premier opus, je ne suis pas persuadé que les dernières optimisations de nwn1 aient été portée sur le 2.
Avatar de Charlouloute
Charlouloute
Alpha & Oméga
 
Avatar de Charlouloute
 
Citation :
Indépendant... pas vraiment : Je mappe/scripte sur la Colère d'Aurile (rp-action)
En plus je le sais (ta signature) et je dis des bêtises. Disons alors des scripteurs généreux .

Je ne participerai pas au débat technique vu mes connaissances :P.
__________________

La seconde version est arrivée : http://fanelya.fr !
IP : fanelya.no-ip.org

Liste de tous les serveurs : http://nwnlist.com
Avatar de Laban
Laban
Alpha & Oméga
 
Avatar de Laban
 
GetNearestObjectByTag : j'ai eu des soucis de fiabilité.

Pour le SQL je trouve ça dommage parcequ'automatiser un import de fichiers SQL multiple c'est mieux mais il est vrai que c'est moins pratique à gérer.
Avatar de Crom29
Crom29
Prince
 
Avatar de Crom29
 
mise a jour : on peut maintenant gérer plusieurs bibliothèques.
ça commence à être un peu galère d'ajouter des livres... je vais peut être faire une petite appli java pour simplifier ça ^^
Avatar de Laban
Laban
Alpha & Oméga
 
Avatar de Laban
 
Appli java qui te fait un diff des livres dans la base / disponibles ?
Avatar de Crom29
Crom29
Prince
 
Avatar de Crom29
 
juste pour ajouter des livres, j'ai pas envie de passer 2 jours à faire du java ^^
Avatar de Laban
Laban
Alpha & Oméga
 
Avatar de Laban
 
Ah bah attends. La suite c'est de mettre l'éditeur in game : ajout / modification / liste / suppression. Hop !
Avatar de Crom29
Crom29
Prince
 
Avatar de Crom29
 
finalement j'ai fait une appli java un peu plus chiadée que prévu, en reprenant mon projet informatique de fin d'année ^^
https://github.com/CromFr/NWN2Librar...master/Manager

l'appli va certainement être améliorée : sélection des catégorie parmi celles existantes, aide pour le choix de l'icône, filtrage des livres par catégorie / bibliothèque.



Je ne vois pas trop l'intérêt de faire un éditeur complet ingame : c'est la porte ouverte à des abus des joueurs. Je préfère que les joueurs postent leur histoire sur le forum du module et que ce soit un MD/admin qui ajoute le livre.
Avatar de Laban
Laban
Alpha & Oméga
 
Avatar de Laban
 
C'était totalement une blague Mais bravo pour l'appli
Avatar de Crom29
Crom29
Prince
 
Avatar de Crom29
 
j'ai rajouté une traduction en anglais et je l'ai postée sur le vault :
http://nwvault.ign.com/View.php?view....Detail&id=401

Question :
Peut on mettre en place facilement une version multilingue d'une GUI, sans avoir à la réécrire pour chaque langage?
Avatar de Laban
Laban
Alpha & Oméga
 
Avatar de Laban
 
Réponse idiote mais quand je regarde une GUI "native" on voit des choses comme

<UIButton name="Continue" strref="39" x="ALIGN_CENTER" y="310" style="STYLE_SMALL_BUTTON"
OnLeftClick=UIButton_Input_ScreenOpen("SCREEN_MULTIPLAYERMENU") />

Le strref="39" fait référence à un fichier qui permet de changer les noms, non ?
Avatar de Lv4
Lv4
Prince / Princesse
 
Avatar de Lv4
 
Comme le dit Laban dans ce genre de cas tu vas avoir un/plusieurs fichier, que tu charge en fonction du langage choisi (donc il faut le fournir avec le binaire). Ensuite tu utilise des variables dans ton code qui sont "traduites" par leur équivalent dans le fichier de langue.

Le plus simple c'est d'utiliser un format simple dans ton langage de programmation (XML ? INI ?). Tu aurais par exemple:
Code:
<lang>
  <value id="BOOK">Livre</value>
</lang>
Puis:
Code:
  text = translate("BOOK");
Pour never, il me semble que le strref="39" fait référence au dialog.tlk dans lequel tu as la ligne 39 qui correspond à ta traduction. Je te conseille cependant de te baser sur des identifiants en chaîne de caractères sinon tu vas vite t'y perdre.

Si tu n'as pas envie de te prendre la tête tu peux aussi mettre des constantes dans plusieurs fichier de code à part, et changer de l'un à l'autre quand tu compile pour un certain langage.
Suivre Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés
Rechercher
Rechercher:

Recherche avancée

Tendances du moment
Dernières publications

© JeuxOnLine / JOL. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Politique de confidentialité - Utilisation de mes données personnelles - ! Signaler un contenu illicite