Elleslande Module pour NWN
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Elleslande Module pour NWN

Forum d' Elleslande, module RP pour Neverwinter Nights
 
AccueilRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment :
Bon plan achat en duo : 2ème robot cuiseur ...
Voir le deal
600 €

 

 [VILLE] Des rumeurs aléatoires à la carte

Aller en bas 
AuteurMessage
Astarode
Admin
Astarode


Nombre de messages : 374
Age : 53
Localisation : Elleslande
Date d'inscription : 16/11/2005

[VILLE] Des rumeurs aléatoires à la carte Empty
MessageSujet: [VILLE] Des rumeurs aléatoires à la carte   [VILLE] Des rumeurs aléatoires à la carte EmptyMer 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 PNJ

Le dialogue du PNJ va consister en afficher le "CustomToken 1000" renvoyé aléatoirement par le script défini au point 2.
[VILLE] Des rumeurs aléatoires à la carte Dialogue0un


4- Insérez le dialogue dans le personnage désirer.
[VILLE] Des rumeurs aléatoires à la carte Pnj8by



Voilà !
Alors n'hésitez pas à reproduire la démarche pour créer vos propres tables... pig

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 :

[VILLE] Des rumeurs aléatoires à la carte Expletable0bw
Revenir en haut Aller en bas
https://elleslande.1fr1.net
 
[VILLE] Des rumeurs aléatoires à la carte
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Système de rumeurs personnalisées
» Carte du module
» [Centralisation] NWN 2
» [VILLE] Des magasins qui ouvrent à l'heure
» [VILLE] Script pour un garde municipal

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Elleslande Module pour NWN :: Zone technique :: Aurora : Trucs et astuces pour l'éditeur de NWN-
Sauter vers: