Puces et cartes

Répondre
Partager Rechercher
Voila j'essaye de voir comment sont geres les puces sur les cartes.
La seule fonction dont j'ai trouve une trace dans le lexicon c'est
Code PHP:

void SetMapPinEnabled(
    
object oMapPin,
    
int nEnabled
); 
Du coup cela me chagrine un peu car ce que je souhaiterais faire ne semble pas possible.

Je souhaiterais par exemple que des puces apparaissent sur la carte en fonction de dialogue avec des PNJs mais que ces puces ne soient visibles que par le PJ qui a eu le dialogue par pas tous les PJs.

je voudrais bien aussi pouvoir trouver le moyen de svg les puces perso des joueurs si c'est possible (le journal aussi si c'est possible mais j'aouvrirais un autre thread pour ca )

Est ce que quelqu'un s'est deja penche sur ce pb?
Ahhhhhhhhh... J'ai cru que tu nous proposais un jeu de puces sautant sur des cartes magiques .

Bon, tant pis ... Dixit le Lexicon :
Citation :
Known Bugs

Not a bug, but it is too bad that there is no "oPC" parameter to only enable the map pin for a single player instead of all players in a multiplayer environment.
Apparement, ce n'est pas possible... tout au moins facilement, dommage .
De mon côté, rien à signaler... J'ai fouillé sur ce sujet il y a un bon moment, et à l'époque, je n'ai rien trouvé. (avant la 1.32)
Depuis, je ne sais pas. Je n'ai pas eu le temps de m'y remettre bien qu'une piste ou une technique abordable (c'est à dire sans hak ) m'intéresse aussi fortement.
hehehe... trouve

ici :
http://nwvault.ign.com/Files/scripts...32158000.shtml

et la :
http://nwn.bioware.com/forums/viewto...18965&forum=47

Du coup j'ai mis les punaises de mes PJ en persistants et ca marche royal...
On peut donc ajouter tres facilement des punaises visibles que pour un PJ donne sur une carte...
J'ai pas fait encore la fonction pour je vais essayer de faire un truc generique avec quand meme un WP pour mes mappeurs... Mais c'est faisable tres simplement

Ce jeux nous reserve tout plein de surprise technique encore...

Bon y a juste un truc qui me chiffone sur ma persistance des punaises c'est que que je ne peux pas gerer la persistance des zones decouvertes dans les minimaps...
Donc une punaise sur une zone encore en noir dans la carte n'apparaitra que lorsque la zone sera decouverte par le PJ mais bon...
Je mets l'include que j'avais fait a l'epoque...
Code PHP:

//::///////////////////////////////////////////////
//:: hc_inc_pin
//:: FileName
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Include de gestion des punaise sur les cartes.

    A savoir :
    Si on supprime une punaise sur une carte le jeu ne gere
    pas la suppression d'un index du tableau
    Ce qui fait qu'on a toujours un index qui s'incremente
    meme si on supprime les punaises

    Pour eviter d'avoir des trous dans le tableau de Pin
    On supprime le tableau du PJ a chaque reboot du serveur.
    Et on le reconstruit.

    Attention si le serveur plante pendant l'opperation de load.
    on perds les svgs!

*/
//:://////////////////////////////////////////////
//:: Created By: Garrath
//:: Created On:
//:://////////////////////////////////////////////

void DeletePinSave(object oPC);
void SavePin(object oPC);
void LoadPin(object oPC);

//::///////////////////////////////////////////////
//:: DeletePinSave
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Suppression des punaises d'un joueur

    Parametre :
        object oPC

*/
//:://////////////////////////////////////////////
//:: Created By: Garrath
//:: Created On:
//:://////////////////////////////////////////////
void DeletePinSave(object oPC)
{
    if(
oPC == OBJECT_INVALID)
        return; 
    
    
object oSvg GetItemPossessedBy(oPC"dmfi_pc_emote");
    if(
oSvg == OBJECT_INVALID)
        return; 
            
    
int nDernierPin GetLocalInt(oSvg"NW_TOTAL_MAP_PINS");
    
int i ;
    
string sPin;

    for (
i=1<= nDernierPini++)
    {
        
sPin IntToString(i);
        
DeleteLocalString(oSvg"NW_MAP_PIN_NTRY_"+sPin);
        
DeleteLocalFloat(oSvg"NW_MAP_PIN_XPOS_"+sPin);
        
DeleteLocalFloat(oSvg"NW_MAP_PIN_YPOS_"+sPin);
        
DeleteLocalFloat(oSvg"NW_MAP_PIN_ZPOS_"+sPin);
        
DeleteLocalString(oSvg"TAG_NW_MAP_PIN_AREA_"+sPin);
    }
    
DeleteLocalInt(oSvg"NW_TOTAL_MAP_PINS");

}


//::///////////////////////////////////////////////
//:: SavePin
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Procedure de sauvegarde sur l'objet dmfi_pc_emote
    des punaises du PJ.

    On svg le tabelau a partir du debut a chaque fois,
    car si des punaises sont supprimes l'index dans le tableau n'est
    pas reutilise et donc pour etre sur de prendre en compte
    les suppressions on resauvegarde tout le tableau.

    Parametre :
        object  oPC     Le jouer dont on svg les punaises
*/
//:://////////////////////////////////////////////
//:: Created By: Garrath
//:: Created On:
//:://////////////////////////////////////////////
void SavePin(object oPC)
{
    if(
oPC == OBJECT_INVALID)
        return; 

    
object oSvg GetItemPossessedBy(oPC"dmfi_pc_emote");
    if(
oSvg == OBJECT_INVALID)
        return; 
    
    
DeletePinSave(oPC);

    
int nDernierPin GetLocalInt(oSvg"NW_TOTAL_MAP_PINS");
    
int nDernierPinPJ GetLocalInt(oPC"NW_TOTAL_MAP_PINS");
    
string sPin;

    while (
nDernierPin nDernierPinPJ)
    {
        
nDernierPin++;
        
sPin IntToString(nDernierPin);
        
SetLocalString(oSvg"NW_MAP_PIN_NTRY_"+sPinGetLocalString(oPC"NW_MAP_PIN_NTRY_"+sPin));
        
SetLocalFloat(oSvg"NW_MAP_PIN_XPOS_"+sPinGetLocalFloat(oPC"NW_MAP_PIN_XPOS_"+sPin));
        
SetLocalFloat(oSvg"NW_MAP_PIN_YPOS_"+sPinGetLocalFloat(oPC"NW_MAP_PIN_YPOS_"+sPin));
        
SetLocalFloat(oSvg"NW_MAP_PIN_ZPOS_"+sPinGetLocalFloat(oPC"NW_MAP_PIN_ZPOS_"+sPin));

        
SetLocalString(oSvg"TAG_NW_MAP_PIN_AREA_"+sPinGetTag(GetLocalObject(oPC"NW_MAP_PIN_AREA_"+sPin)));
    }
    
SetLocalInt(oSvg"NW_TOTAL_MAP_PINS"nDernierPin);
}


//::///////////////////////////////////////////////
//:: LoadPin
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    Chargement des Punaise sauvegarde

    Parametre :
        object  oPC
*/
//:://////////////////////////////////////////////
//:: Created By: Garrath
//:: Created On:
//:://////////////////////////////////////////////
void LoadPin(object oPC)
{
    if(
oPC == OBJECT_INVALID)
        return; 

    
object oSvg GetItemPossessedBy(oPC"dmfi_pc_emote");
    if(
oSvg == OBJECT_INVALID)
        return; 

    
int nDernierPin GetLocalInt(oSvg"NW_TOTAL_MAP_PINS");
    
int i;
    
int j 0;
    
string sPin;
    
string sPinRemise;
    
object oArea;

    
//Suppression des punaises du PJ
    
for (1<= GetLocalInt(oPC"NW_TOTAL_MAP_PINS"); i++)
    {
        
sPin IntToString(i);
        
DeleteLocalString(oPC"NW_MAP_PIN_NTRY_"+sPin);
        
DeleteLocalFloat(oPC"NW_MAP_PIN_XPOS_"+sPin);
        
DeleteLocalFloat(oPC"NW_MAP_PIN_YPOS_"+sPin);
        
DeleteLocalFloat(oPC"NW_MAP_PIN_ZPOS_"+sPin);
        
DeleteLocalObject(oPC"NW_MAP_PIN_AREA_"+sPin);
    }


    
//Lecture des sauvegardes
    
for (1<= nDernierPini++)
    {
        
sPin IntToString(i);
        
oArea GetObjectByTag(GetLocalString(oSvg"TAG_NW_MAP_PIN_AREA_"+sPin));
        
// Si l'area n'est pas bonne on ne recopie pas la svg
        
if (GetIsObjectValid(oArea))
        {
            
j++;
            
sPinRemise IntToString(j);
            
SetLocalObject(oPC"NW_MAP_PIN_AREA_"+sPinRemiseoArea);
            
SetLocalString(oPC"NW_MAP_PIN_NTRY_"+sPinRemiseGetLocalString(oSvg"NW_MAP_PIN_NTRY_"+sPin));
            
SetLocalFloat(oPC"NW_MAP_PIN_XPOS_"+sPinRemiseGetLocalFloat(oSvg"NW_MAP_PIN_XPOS_"+sPin));
            
SetLocalFloat(oPC"NW_MAP_PIN_YPOS_"+sPinRemiseGetLocalFloat(oSvg"NW_MAP_PIN_YPOS_"+sPin));
            
SetLocalFloat(oPC"NW_MAP_PIN_ZPOS_"+sPinRemiseGetLocalFloat(oSvg"NW_MAP_PIN_ZPOS_"+sPin));
        }
    }
    
SetLocalInt(oPC"NW_TOTAL_MAP_PINS"j);
    
//Sauvegarde propre
    
SavePin(oPC);

Répondre

Connectés sur ce fil

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