JeuxOnLineForumsPlusConnectés : 335 (sites) | 611 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Sauvegarde de Position OnExit RSS
   
Répondre
Partager Outils Rechercher
Avatar de Prince Nexus
Prince Nexus
Roi
 
Avatar de Prince Nexus
 
Allez, on se lance, quelques phrases mechantes :

voila pourquoi je n'attends pas la version 1.30 avec impatience (au contraire meme, rien qu'a l'idee de revoir mon placeable.2da et le hack de placeable correspondant, ca me donne des nausees). Pourquoi n'ont ils pas choisi Mysql ???!!!

Enfin, heuresement qu'il y a des gens qui font tout pour rattraper les erreurs de Biobio. Et pour le stockage d'objet, Nwnx2 le fait tres bien...

Bref passe a Nwnx2 et oublie les BDD Bioware. Mysql a fait son chemin en matiere de BDD, ce n'est pas le cas de celle de Bioware. A mon avis, les deconvenues avec leur BDD seront nombreuses, je prevois meme que pour des gros modules persistants, elle ne tiendra pas !

Prince Nexus.

P.S. : Pour les defenseurs de Bioware, je connais vos arguments et je respecte le travail qui m'a permis de jouer au meilleur JdR sur PC, mais qui aime bien, chatie bien !
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
(ca reste une sacrée option, le stock des objets )


Sinon, oui, ca vient du manque de DelayCommand : l'instruction lui est donné lors du load du client, et tant que l'objet PC n'est pas 100% chargé, il n'accepte pas les AssignCommand.

Un test simple :

Sur le OnEnterClient :
Code PHP:
void main()
{
object oPC GetEnteringObject();
int nNb 0;

while (
nNb 150)
    {
    
DelayCommand(nNb/10,AssignCommand(oPC,SpeakString(IntToString(nNb))));
    
nNb ++;
    }

theoriquement (enfin, a moi, ca le faisait), tu devrait constater simplement dans la barre de dialogue que le PC ne commence pas a compter a 0, mais apres (chez moi, 10s, mais j'ai un gros hakpak...)
Lien direct vers le message - Vieux
Avatar de Rhyghar
Rhyghar
Dauphine
 
Avatar de Rhyghar
 
Citation:
Provient du message de Prince Nexus
Pourquoi n'ont ils pas choisi Mysql ???!!!
Ben le jeu n'etais au depart pas prevu pour ca. D'apres ce que j'ai lut sur les forums, ils voulaient garder l'utilisation d'une BDD aussi simple que possible (pas de mise en place de serveurs etc...). Il n'empeche qu'il n'ya a pas beaucoup de compagnie qui ajouterais ce genre de fonctionnalité a leur jeu.

Citation:
Et pour le stockage d'objet, Nwnx2 le fait tres bien...
Uh ?
__________________
..::Heavenlynet le net paradisiaque ::..
Lien direct vers le message - Vieux
Avatar de Prince Nexus
Prince Nexus
Roi
 
Avatar de Prince Nexus
 
Citation:
Provient du message de Rhyghar
Uh ?
Uh ?!

Ben oui, nwnx le fait, c'est pas miraculeux ca aussi ?

Quand a l'histoire de serveur, je n'en n'ai pas un mais j'utilise quand meme nwnx... Je vois pas ou est le probleme.

Mais en revenant au sujet, il est dommage de Loader le joueur tout de suite quand il entre. Je m'explique : dans le cas ou le serveur n'a pas plante, il a pu sauvegarde l'integralite du joueur (inventaire compris, le journal etant malheuresement efface) et donc si le joueur se reconnecte, il ira a la position a laquelle il etait en quittant.
Bref, vo mieux faire un sas ou se trouvera le Starting Point avec un portail, et quand le joueur click sur le portail, il est loader. Dans les modules, ils sont appeles, prologue, antichambre, preliminaire...
Lien direct vers le message - Vieux
Avatar de Rhyghar
Rhyghar
Dauphine
 
Avatar de Rhyghar
 
Citation:
Provient du message de Prince Nexus

Ben oui, nwnx le fait, c'est pas miraculeux ca aussi ?
Comment tu fais ?

Citation:
Quand a l'histoire de serveur, je n'en n'ai pas un mais j'utilise quand meme nwnx... Je vois pas ou est le probleme.
Tu utilises bien l'ODBC de ta machine non ?
__________________
..::Heavenlynet le net paradisiaque ::..
Lien direct vers le message - Vieux
Avatar de Prince Nexus
Prince Nexus
Roi
 
Avatar de Prince Nexus
 
Mouarf, c'est vrai. Quand a la svgde des objets, tu peux aller voir sur le vault, y a ton bonheur. La solution la plus simple etant cette table pcontainer livre dans le .zip de Papillon.
Lien direct vers le message - Vieux
Avatar de Rhyghar
Rhyghar
Dauphine
 
Avatar de Rhyghar
 
ah ok je comprend !
En fait non, là tu ne sauvegarde pas d'objets dans la BDD mais un string contenant le blueprint de l'objet.

Moi je te parle de sauvegarder des objets (items et creatures) directement dans la BDD tels qu'ils sont dans le jeu. C'est dire qu'avec la bdd de bioware, un type qui vient et qui pose son item dans le coffre (meme si cet item n'existe pas dans la palette de module) pourra le recuperer plus tard.
__________________
..::Heavenlynet le net paradisiaque ::..
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Et la différence entre NWNX et Bioware, c'est que dans un cas tu peux l'utiliser sans avoir besoin de toucher à quoique ce soit, alors que dans l'autre, non.
C'est évident que Bioware n'allait jamais choisir une base de donnée MySQL.
Lien direct vers le message - Vieux
Nonolevil
Roi
 
Bon après plusieurs essai j'ai surtout l'impression que ca marche pas leur truc, le delai commande ne change rien je me retrouve au point de départ, je viens de regarder la tronche que ca avait avec WBrose ca me met un entier la dedans, pfff un beau merdier pour un truc tout simple.
Lien direct vers le message - Vieux
Nonolevil
Roi
 
J'ai 3 PJ sur mobn module, les 3 dans des locations différentes dans ma BDD les valeurs sont les mêmes. je sens que c'est plus compliqué que ca leur truc....
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Après test, je ne suis pas arrivé à relever la position du PJ lors de sa sortie.
Je récupère seulement l'orientation du PJ et la zone dans laquelle il était.

Je serais curieux de voir comment NWNX arrive à résoudre le problème
Lien direct vers le message - Vieux
Avatar de Rhyghar
Rhyghar
Dauphine
 
Avatar de Rhyghar
 
il y a aussi un truc :

Peut etre que lorsqu'un joueur se connecte, sa position est sauvegardée dans la BDD (je veux dire la position de départ). Peut etre qu'alors le script teleporte le PJ au debut du module.

Je m'explique :

1/ le joueur arrive au point de depart

2/ le script dans onheartbeat sauve sa position (qui est donc le debut du module).

3/ le script le teleporte a la derniere position. (qui est donc le debut du module).

Je sais pas si le bug est dut a ca (j'avoue que je n'ai pas vraiment regardé les scripts). Mais dans le doute, je vais vous fournir celui que j'utilise pour mon mod.

Code PHP:


//**********************
// PJloc include


#include "aps_include"

void playerloc(object oPC)
{
    
location lPCloc GetLocation(oPC);

    if( (
GetAreaFromLocation(lPCloc) != OBJECT_INVALID) && (oPC != OBJECT_INVALID)  )
    {
        
SetPersistentLocation(oPC"dernierloc"lPCloc);
        
SetPersistentInt(oPC"dernierhp",  GetCurrentHitPoints(oPC));
    }
}






//**************************
// PJloc OnHeartBeat

#include "loc_inc"

void main()
{
    
object oPC GetFirstPC();

    while(
oPC != OBJECT_INVALID)
    {

        if( (
GetTag(GetArea(oPC)) != "nomansland") && (GetArea(oPC) != OBJECT_INVALID))
        {
            
//SendMessageToPC(oPC, "sauvegarde de location");
            
playerloc(oPC);
        }
        
oPC GetNextPC();

    }
}


//************************
//PJloc OnEnter
object oPC GetEnteringObject();
int dejavenu GetPersistentInt(oPC"dejaven1");
int lasthp GetPersistentInt(oPC"dernierhp");
int currenthp GetCurrentHitPoints(oPC);
int difference GetMaxHitPoints(oPC) - lasthp;


if(
dejavenu == 1)
{

    
SendMessageToPC(oPC"remise des points de vie au niveau de la derniere sauvegarde...");
    
DelayCommand(4.0f,(ApplyEffectToObject(DURATION_TYPE_INSTANTEffectDamage(differenceDAMAGE_TYPE_MAGICALDAMAGE_POWER_NORMAL), oPC)));
    
DelayCommand(4.0fSendMessageToPC(oPC"Effectue."));
}else{
    
SetPersistentInt(oPC"dejaven1"1);
}

location lastloc GetPersistentLocation(oPC"dernierloc");
DelayCommand(5.0fAssignCommand(oPCActionJumpToLocation(lastloc)));


if( 
GetAreaFromLocation(lastloc) == OBJECT_INVALID )
{
DelayCommand(5.0fAssignCommand(oPCActionJumpToObject(GetObjectByTag("debut0001"))));

Ok c'est pas beau mais ca a le merite de marcher. Par Ailleurs ca devrait facilement etre transposable avec la BDD de Biowarez (hum...) en remplaçant toutes les functions SetPersistant**** par SetCampaign**** (idem pour les Get biensur).

Ah, et en ce qui concerne la position OnExit, Comme le disait Prince Nexus, tu n'arriveras jamais a recuperer la position d'un PJ sur un OnClientLeave (ni meme un OnPlayerExit d'une zone je crois). Bioware l'a dit dans un de ses posts sur le forum, la fonction ne marche pas comme ca (ce qui est bizarre car quand on deco/reco sur le meme serveur sans qu'il ai rebooté, on arrive a l'endroit ou on etait en partant).


Edit : Euh oui pour info "nomansland" est le tag de ma zone de départ dans laquelle je ne sauvegarde JAMAIS la position du joueur.

Voila !
__________________
..::Heavenlynet le net paradisiaque ::..
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > Sauvegarde de Position OnExit
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 03h39.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite