Astarode Admin
Nombre de messages : 374 Age : 53 Localisation : Elleslande Date d'inscription : 16/11/2005
| Sujet: [VILLE] Des rumeurs aléatoires à la carte Mer 8 Mar - 0:08 | |
| La création de rumeurs aléatoires personnalisées s'effectue en 4 étapes : 1- Créer la table (qui contiendra les champs "Reference" et "Rumors"); 2- Créer le script associé au dialogue, et qui pointe vers la table des rumeurs ; 3- Créer le dialogue ; 4- Insérez le dialogue dans le personnage désirer. Vous pouvez faire autant de table que vous le désirez. Dans Elleslande par exemple, le parti a été pris de créer une table pour les PNJs en fonction de leur provenance et/ou appartenance éthnique. On a donc une table pour Almoura, (...), une table propre à Skarguérark Mercator, (...), et une table propre aux nains... 1- Créer la table - Création de la table 'rumorsalmoura' a écrit:
- #include "ff_include"// Inclus les fonctions propres aux communications NWN / MySQL
void main() { SQLExecDirect("CREATE TABLE IF NOT EXISTS `rumorsalmoura` ("+ // Créer la table s'appellant "rumorsalmoura" si elle n'existe pas "`Reference` int(11) NOT NULL auto_increment,"+ //Création de l'onglet "Reference" "`Rumor` text NOT NULL default '',"+ // Création de l'onglet "Rumor" " PRIMARY KEY (`Reference`)"+ ") TYPE=MyISAM");
SQLExecDirect("DELETE FROM `rumorsalmoura`");
SQLExecDirect("INSERT INTO rumorsalmoura"+ // Insère une nouvelle valeur dans la table s'appellant "rumorsalmoura" "(Rumor) VALUES ("+ "'Il faut une pioche de mineur pour extraire du minerais.'"+ //Rumeur générale concernant l'artisanat ")" );
SQLExecDirect("INSERT INTO rumorsalmoura"+ "(Rumor) VALUES ("+ "'Vous pouvez mettre en vente vos objets auprès de Sharis Mener. Sharis vous demandera 20po pour exposer vos objets dans sa boutique pour 25 jours. S~ils ne trouvent pas d~acheteur, Sharis vous rends vos objets.'"+ //Les ~ remplacent les ' dans MySQL ")" );
SQLExecDirect("INSERT INTO rumorsalmoura"+ "(Rumor) VALUES ("+ "'On trouve de nombreuses ruines un peu partout dans Elleslande. Elles semblent appartenir à un civilisation disparue.'"+ //Rumeur générique ")" );
SQLExecDirect("INSERT INTO rumorsalmoura"+ "(Rumor) VALUES ("+ "'Ulrig aurait été un des plus puissant mage d'Almoura.'"+ //Rumeur propre à Almoura ")" );
SQLExecDirect("INSERT INTO rumorsalmoura"+ "(Rumor) VALUES ("+ "'Je n'ai rien à vous dire. Laissez moi !.'"+ //Rumeur permettant de simuler la mauvaise humeur d'un PNJ ")" ); } En vous appuyant sur le même schéma, vous pouvez insérérez vos propre rumeurs dans la table et les faire évoluer en fonction des intrigues et des informations que vous voudrez donner à vos joueurs : les valeurs des tables sont remis à jour au lancement du module... 2- Créer le script associé au dialogue, et qui pointe vers la table des rumeurs - Création du script 'citizen_almoura' a écrit:
#include "functions"
int StartingConditional() { int i = GetLocalInt(OBJECT_SELF,"RUMOUR"); string sSQL; string sString; if(i==0) { sSQL = "SELECT Reference,Rumor FROM rumorsalmoura ORDER BY RAND()";// Permet de lire la table "rumorsalmoura" définit au dessus SQLExecDirect(sSQL); if(SQLFetch()== SQL_SUCCESS) { i = StringToInt(SQLGetData(1)); SetLocalInt(OBJECT_SELF,"RUMOUR",i); DelayCommand(30.0f,DeleteLocalInt(OBJECT_SELF,"RUMOUR")); sString = SQLDecodeSpecialChars(SQLGetData(2)); } } else { sSQL = "SELECT Rumor FROM rumorsalmoura WHERE Reference ='"+IntToString(i)+"'"; SQLExecDirect(sSQL); if(SQLFetch()== SQL_SUCCESS) { sString = SQLDecodeSpecialChars(SQLGetData(1)); } } SetCustomToken(1000,sString); return TRUE; } 3- Créer le dialogue du PNJLe dialogue du PNJ va consister en afficher le "CustomToken 1000" renvoyé aléatoirement par le script défini au point 2. 4- Insérez le dialogue dans le personnage désirer.Voilà ! Alors n'hésitez pas à reproduire la démarche pour créer vos propres tables... ATTENTION !!! Pour éviter de me prendre la tête à chercher sans arrêt, j'ai volontairement nommé dialogue et script appelé du même nom (ici "citizen_almoura") ! Si cela occasionne des conflis chez vous, bien que ce ne soit pas le même type de ressource, faîtes les changements de nom qui s'imposent... Exemple de table visualisée avec SQLYog : | |
|