JeuxOnLineForumsPlusCréer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [SYSTEME] Le PUMA! RSS
   
Répondre
Partager Outils Rechercher
Avatar de raistlin
raistlin
Roi
 
Avatar de raistlin
 
oui ca marche j'ai detruis les save d'avant le crash du serveur seul pb j'etais bloqué dans le salle du coffre sans la clef je me suis suicidé , j'ai respawn , suis retourné voir le banquier et il me dit bien que mon compte de cet apres midi existe
Lien direct vers le message - Vieux
Avatar de raistlin
raistlin
Roi
 
Avatar de raistlin
 
Me revoila je voudrait d'abort remercier les grands genies qui mon aidé a resoudre mes petit probleme d'utilisation de puma , car je manipulait tres mal leur systeme qui marche tres tres bien en faite. j'ai une petite question technique peux ton augmenter le frequance de save de puma pendant le jeu ???merci a JAHA ET RAT pour leur aide et leur travaille
Lien direct vers le message - Vieux
N'kälhäash
Roi / Reine
 
Bonjour et merci bien a vous pour ce programme
je suis un noob la dedans et j'avoue avoir eu un peu de mal a le mettre en place mais le problème était pas évident à détecter...
ça marche très bien maintenant ..

J'aurais une question technique , voila j'utilise "siegecraft" ,qui est en fait un artisanat comme ATS et qui permet la fabrication d'armes de sieges ..
mais le soucis est que la progression n'est pas sauvegardée après un reboot .. j'ai mailer le concepteur et voila ce qu'il me dit

Citation:
If you use NWNX/2 for persistance, just change those SetLocalInt(...) function calls that raise the siegecraft level to read SetPersistentInt(...) and everything is saved.
J'aimerai savoir si pour PUMA c'est pareil ou sinon comment faire ?

merci


Voila le script modifié avec les "persistent" a la place de "local" mais évidemment ça marche pas ...

Code PHP:
#include "hc_inc_pwdb_func"

int GZ_SKILL_CFG_MSGONINCREASE TRUE// send a message on skill increase?
int GZ_SKILL_CFG_DEBUG FALSE// Show debug output?
int GZ_SKILL_CFG_LEARNCOST 500// how much gp costs it to initially learn a skill?
int GZ_SKILL_MAX 500//


// do not change from here!
int GZ_SKILL_UNDEFINED =0;
int GZ_SKILL_SIEGECRAFT 50;

int GZ_SKILLDC_EASY 90;
int GZ_SKILLDC_MEDIUM 50;
int GZ_SKILLDC_HARD =25;
int GZ_SKILLDC_VERYHARD 10;
int GZ_SKILLDC_IMPOSSIBLE 0;

string GZ_SKILLNAME_SIEGECRAFT "GZ_SKILL_SIEGECRAFT";
string GZ_SKILLFNAME_SIEGECRAFT "Siegecraft";

string GZ_MASTERSKILL_VARNAME ="GZ_SKILLORDER_NAME";

string GZGetSkillFriendlyName(int iSkill)
{
    switch (
iSkill)
    {
        case 
50:
            return 
GZ_SKILLFNAME_SIEGECRAFT;
            break;
    }
    return 
"Not existant Skill";
}

string GZGetSkillByID(int iSkill)
{
    switch (
iSkill)
    {
        case 
50:
            return 
GZ_SKILLNAME_SIEGECRAFT;
            break;
    }
    return 
"GZ_SKILL_INVALID";

}

int GZSkillGetLevel(object oPCint iSkill)
{
    
string sSkill GZGetSkillByID(iSkill);
    return 
GetPersistentInt(oPC,sSkill);
}

int GZGetMasterSkill(object oPC)
{
    return 
GetPersistentInt(oPC,GZ_MASTERSKILL_VARNAME);
}

int GZGetMasterSkillLevel(object oPC)
{
    return 
GZSkillGetLevel(oPC,GetPersistentInt(oPC,GZ_MASTERSKILL_VARNAME));
}

void GZSetMasterSkill(object oPCint iSkill)
{
    
SetPersistentInt(oPC,GZ_MASTERSKILL_VARNAME,iSkill);
    
SendMessageToPC(oPC,"You have chosen the "+GZGetSkillFriendlyName(iSkill)+ " skill as your primary skill. You will never be able to advance in any skill above your primary skill value!");
}


void GZSkillSetSkill(object oPC,int iSkill,int iNewValint bLearn=FALSE)
{
    
string sSkill GZGetSkillByID(iSkill);
    
SetPersistentInt(oPC,sSkill,iNewVal);

    if (
bLearn==TRUE)
        
SendMessageToPC(oPC,"You have learned the "+GZGetSkillFriendlyName(iSkill)+ " skill. Your skillevel is now "+IntToString(iNewVal));
    else
        
SendMessageToPC(oPC,"Your "+GZGetSkillFriendlyName(iSkill)+ " skillevel has changed to "+IntToString(iNewVal));

    if (
GZGetMasterSkill(oPC) == GZ_SKILL_UNDEFINED)
    {
        
GZSetMasterSkill(oPCiSkill);
    }


}

int GZSkillCheck(object oPC,int iSkill,int iDiffint iBaseLevel=100)
{
    
string sSkill GZGetSkillByID(iSkill);

    if (
iDiff<=100 && GZSkillGetLevel(oPC,iSkill)>0)
    {
        
int iOldVal GetPersistentInt(oPCsSkill);
        
// check if we make the check...
        
int iRand = (iOldVal)+ Random(FloatToInt(iBaseLevel*1.05)+1);
        
int iChanceF = (iBaseLevel*iDiff/100)+Random(FloatToInt(iBaseLevel*0.50));
        if ((
iRand) >= (iChanceF))
        {
            if (
GZ_SKILL_CFG_DEBUGSendMessageToPC(oPC,"DEBUG: (Skill Check) Number to beat was: " +IntToString(iChanceF) + " Result was " IntToString(iRand) + " Baselevel " IntToString(iBaseLevel) + " Difficulty was: "+IntToString(iDiff) );
            return 
TRUE;
        }
            else
         if (
GZ_SKILL_CFG_DEBUGSendMessageToPC(oPC,"DEBUG: (Skill Check) Number to beat was: " +IntToString(iChanceF) + " Result was " IntToString(iRand) + " Baselevel " IntToString(iBaseLevel) + " Difficulty was: "+IntToString(iDiff) );
    }
return 
FALSE;
}


int GZSkillCheckIncrease(object oPC,int iSkill,int iDiffint iBaseLevel=100)
{
    
string sSkill GZGetSkillByID(iSkill);
    
// we only advance a level if:
    // * the chance is above 0 %
    // * the Skill Level is above 0 (learned!)
    // * the master skill (primary skill) is above the current skill level
    
if ((GZSkillCheck(oPC,iSkill,iDiff,iBaseLevel) != FALSE))
    {
        if (((
GZGetMasterSkillLevel(oPC)> GZSkillGetLevel(oPC,iSkill)) || iSkill == GZGetMasterSkill(oPC)))
        {
            
//now we check for increase....
            
float fInc 1.0;
            
int iOldVal GetPersistentInt(oPCsSkill);
            if (
fInc 1.0 || iOldVal>=iBaseLevel fInc 0.0;


            
iOldVal += FloatToInt(fInc);

            if (
iOldVal GZSkillGetLevel(oPC,iSkill))
            {
                
SetPersistentInt(oPC,sSkill,iOldVal);
                if (
GZ_SKILL_CFG_DEBUGSendMessageToPC(oPC,"DEBUG: (Skill Increase) by " FloatToString(fInc) );
                if (
iSkill == GZGetMasterSkill(oPC))
                    if (
GZ_SKILL_CFG_MSGONINCREASESendMessageToPC(oPC,"Your level in "+GZGetSkillFriendlyName(iSkill)+ " (primary skill) has increased to "+IntToString(iOldVal));
                else
                    if (
GZ_SKILL_CFG_MSGONINCREASESendMessageToPC(oPC,"Your level in "+GZGetSkillFriendlyName(iSkill)+ " has increased to "+IntToString(iOldVal));
            }
        }
        return 
TRUE;
    }
return 
FALSE;

Lien direct vers le message - Vieux
Avatar de Jaha Effect
Jaha Effect
Alpha & Oméga
 
Avatar de Jaha Effect
 
C'est le même topo mais avec des SetPWUMInt, SetPWUMString, GetPWUMString ...
Y'a que le nom de la fonction qui change, sont utilité reste la même mais par contre il va falloir que tu modifie tout le système pour l'adapter.
De plus, a ta place, je me presserais pas trop car la persistance made in bioware va bientôt arriver (la beta commence demain), alors ça sert à rien de faire deux fois le boulot.

Jaha Effect
Lien direct vers le message - Vieux
N'kälhäash
Roi / Reine
 
Bonjour c'est encore moi

Est-il possible de désactiver le system de sauvegarde de positions tout en gardant la persistance des coffres (le system de banque) et si oui comment ?

Merci bien
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Ba tu parles de quoi de position ??? exactement?

si c'est la location des personnages alors , il faut que tu mettes en commentaire ResumePCLocation(...)
qui est dans le onenter du module
Lien direct vers le message - Vieux
N'kälhäash
Roi / Reine
 
Désolé de pas avoir été assez clair ..

En fait le probleme du systeme de localisation est qu'il ne sauvegarde pas a la deco des joueurs et ce qui m'interesse dans ce programme c'est la persistance des coffres donc je voulais savoir si je peux l'utiliser QUE pour les coffres et désactiver la sauvegarde de localisation des joueurs (qui nous cause des soucis en fait avec le HCR)

voila voila
Lien direct vers le message - Vieux
Avatar de raistlin
raistlin
Roi
 
Avatar de raistlin
 
pour répondre si je me trompe pas mais je ne suis qu'un novice, non tu ne peux pas
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Citation:
Provient du message de N'kälhäash
Désolé de pas avoir été assez clair ..

En fait le probleme du systeme de localisation est qu'il ne sauvegarde pas a la deco des joueurs et ce qui m'interesse dans ce programme c'est la persistance des coffres donc je voulais savoir si je peux l'utiliser QUE pour les coffres et désactiver la sauvegarde de localisation des joueurs (qui nous cause des soucis en fait avec le HCR)

voila voila
Ba Moi j'arrive très bien à sauvegarder justement on en discutait l'autre fois avec les scripteurs de Jol .
Mais bon donc oui normalement tu peux , en retirant le ResumePCLocation donc dans le trigger onenter si je me trompe pas.

Et normalement cela ne changera en rien le reste
voilà
Lien direct vers le message - Vieux
Avatar de Gadjio
Gadjio
Alpha & Oméga
 
Avatar de Gadjio
 
Dans le onModuleLoad, tu dois avoir un script qui contient cette ligne, normalement :
InitializeUniversalMind(a, b, c);

Peu importe les valeurs de b et de c, il faut que tu mettes 0.0 à la place du "a". C'est la fréquence en secondes à laquelle la location est sauvée, en sachant qu'un 0.0 correspond à "pas de sauvegarde". Sinon tu peux faire comme dit Ratounet, mais c'est un peu moins propre : les positions seront toujours sauvegardées (avec balayage de la liste des PJ toutes les 5 min et création d'autant de variables persistantes à chaque fois), mais pas rappelées (donc ça ne se verra pas, effectivement ).

Sinon, pour éviter le fonctionnement douteux du ResumePCLocation, moi j'utilise ça dans le onClientEnter de mon module : (à la place du ResumePCLocation de base)
Code PHP:
   if (GetLocalInt(GetModule(), GetName(oPlayer) + "LocationSaved") == FALSE)
   {
     
ResumePCLocation(oPlayer);
     
SetLocalInt(GetModule(), GetName(oPlayer) + "LocationSaved"TRUE);
   } 
(Ca évite les timewarps incessants )
Lien direct vers le message - Vieux
Avatar de raistlin
raistlin
Roi
 
Avatar de raistlin
 
bon ok pour moi désole j'y était pas arrivé pardon
Lien direct vers le message - Vieux
N'kälhäash
Roi / Reine
 
Merci pour les réponses

Gajio ,ça change quoi en fait le code que tu remplace ? (a la place de ResumePCLocation)

merci
Lien direct vers le message - Vieux
N'kälhäash
Roi / Reine
 
Gadjio > j'ai essayé de compilé en remplaçant par ce que tu me dis et ça me donne une erreur al ligne :


if (GetLocalInt(GetModule(), GetName(oPlayer) + "LocationSaved") == FALSE)

ERREUR : VARIABLE DEFINED WITHOUT TYPE
Lien direct vers le message - Vieux
Avatar de Gadjio
Gadjio
Alpha & Oméga
 
Avatar de Gadjio
 
Bin en fait, c'est ce qui est expliqué un peu plus haut sur le thread, c'est pour ça que je n'avais pas redonné de précisions.
En gros, le jeu sait restaurer la position du joueur quand il déco/reco, SAUF lorsqu'il y a un reboot entre la déco et la reco (ça, tout le monde l'a constaté sur les mod qui n'utilisent pas de système de persistance). Le Puma ici nous permet de sauvegarder l'emplacement de tous les PJ en jeu, toutes les cinq minutes et le ResumePCLocation te renvoie à cette position sauvegardée (qui n'est pas forcément très à jour, un peu comme l'autosave des jeux solo : il peut y avoir un time-warp, ou retour en arrière).

Par défaut, le ResumePCLocation est exécuté à chaque reco, ce qui crée le timewarp systématiquement... Or, comme le jeu sait restaurer la position entre une déco et une reco, il vaut mieux qu'il le gère lui-même, et que la sauvegarde du Puma ne soit utilisée qu'en cas de reboot.

On prend donc un boolean spécifique au joueur qui reco, si c'est la première fois que ce perso appelle onClientEnter, le boolean sera FALSE et on utilise le ResumePCLocation du Puma (en passant le boolean à TRUE). Si le perso déco/reco, le boolean est maintenant à TRUE et le perso n'est pas téléporté par ResumePCLocation (donc il reste à la position où l'a remis le jeu, c'est à dire la bonne ).

Sinon, ton script bug parce que tu n'as pas défini le oPlayer. Faut que tu rajoutes un :
object oPlayer = GetLastEnteringObject(); avant
Lien direct vers le message - Vieux
N'kälhäash
Roi / Reine
 
merci pour ta réponse

Bon ça me donne une autre erreur : parsing variable list

En fait j'ai déja un object oPlayer= ... en début de script

faut dire c'est un peu le bazar ce script ...

Bon je le mets ce sera plus simple .. les commandes que tu m'as donné sont tout en bas ,pour le "ResumePCLocation()" simple, je le mettais tout en bas pour que ça marche bien dans le module (que les autres actions s'effectuent avant en fait)

Code PHP:
//Hardcore Client Entering
//Archaegeo 2002 Jun 24

// This script goes in OnClientEnter in Module Properties - Events
// It checks to see if they have a Death Amulet on them, and if so
// It sets thier player state to Dead and rekills them.
#include "pwum_functions"
#include "hc_inc"
#include "hc_inc_on_enter"
#include "hc_text_enter"
#include "hc_inc_remeff"
#include "hc_inc_rezpen"
#include "hc_inc_htf"

#include "i_tagtests"
#include "anph_persist_inc"

void HCRBoot(object oPCstring sReason)
{
    
SendMessageToPC(oPC,sReason);
    
DelayCommand(3.0,BootPC(oPC));
}

void main()
{

    
object oPC;
    
oPC GetEnteringObject();
    if(!
preEvent()) return;
    
int nPKT GetLocalInt(oMod,"PKTRACKER");
    
int nDM GetIsDM(oPC);
    
string sCDK GetPCPublicCDKey(oPC);
    
string sName GetName(oPC);
    
int iStripItems FALSE;
    
int iLvl;

    if(
GetLocalInt(oMod,"DMRESERVE"))
    {
        
int nC;
        
object oPlayers=GetFirstPC();
        if(!
nDM)
        {
            while(
GetIsObjectValid(oPlayers))
            {
                if(!
GetIsDM(oPlayers)) nC++;
                
oPlayers=GetNextPC();
            }
        }
        if(
nC GetLocalInt(oMod,"DMRESERVE") && nDM==FALSE)
        {
            
HCRBoot(oPC,DMRES);
            
postEvent();
            return;
        }
    }




    if (
GetIsPC (oPC) && !GetXP (oPC) && !GetIsDM (oPC))
        
iStripItems TRUE;


    if (
iStripItems)
    {
        
int iGold GetGold (oPC);
        
AssignCommand (oPCTakeGoldFromCreature (iGoldoPCTRUE));

        
iLvl AnphGetPlayerLevel (oPC);
        
int STARTING_GOLD iLvl iLvl 60 100;


        
GiveGoldToCreature(oPCSTARTING_GOLD);

        
object oGear GetItemInSlot(INVENTORY_SLOT_ARMSoPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);
        
oGear GetItemInSlot(INVENTORY_SLOT_BELToPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);

        
oGear GetItemInSlot(INVENTORY_SLOT_BOLTSoPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);

        
oGear GetItemInSlot(INVENTORY_SLOT_BOOTSoPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);
        
//oGear = GetItemInSlot(INVENTORY_SLOT_CHEST, oPC);
        //if(GetIsObjectValid(oGear))
        //    DestroyObject(oGear);
        
oGear GetItemInSlot(INVENTORY_SLOT_CLOAKoPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);

        
oGear GetItemInSlot(INVENTORY_SLOT_HEADoPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);

        
oGear GetItemInSlot(INVENTORY_SLOT_LEFTHANDoPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);

        
oGear GetItemInSlot(INVENTORY_SLOT_LEFTRINGoPC);
        if(
GetIsObjectValid(oGear) && !GetIsNoDrop(oGear))
            
DestroyObject(oGear);

        
oGear GetItemInSlot(INVENTORY_SLOT_NECKoPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);

        
oGear GetItemInSlot(INVENTORY_SLOT_RIGHTHANDoPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);

        
oGear GetItemInSlot(INVENTORY_SLOT_RIGHTRINGoPC);
        if(
GetIsObjectValid(oGear) && !GetIsNoDrop(oGear))
            
DestroyObject(oGear);

        
oGear GetItemInSlot(INVENTORY_SLOT_ARROWSoPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);

        
oGear GetItemInSlot(INVENTORY_SLOT_BOLTSoPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);

        
oGear GetItemInSlot(INVENTORY_SLOT_BULLETSoPC);
        if(
GetIsObjectValid(oGear))
            
DestroyObject(oGear);

// Removing PC's inventory.

        
object oStuff GetFirstItemInInventory(oPC);
        while(
GetIsObjectValid(oStuff))
        {
            if (!
GetIsNoDrop(oStuff))
            {
                
DestroyObject(oStuff);
            }
            
oStuff GetNextItemInInventory(oPC);
        }




// Greet PC.

        
DelayCommand(3.0SendMessageToPC(oPCNOGOLD IntToString(STARTING_GOLD) + " gp."));
// Give new PC's some food.
        
if(GetLocalInt(oMod,"FOODSYSTEM") || GetLocalInt(oMod,"HUNGERSYSTEM"))
        {
            if(!
GetXP(oPC) && !nDM)
                
CreateItemOnObject("FoodRation"oPC);
        }
// Give new PC's a bedroll for the rest system
        
if(GetLocalInt(oMod,"BEDROLLSYSTEM"))
        {
            if(!
GetXP(oPC) && !nDM)
                if(
GetIsObjectValid(GetItemPossessedBy(oPC,"bedroll"))==FALSE)
                    
CreateItemOnObject("bedroll"oPC);
        }

// Give new PC's the server info book.
        
if(GetIsObjectValid(GetItemPossessedBy(oPC,"AnphilliaInformation"))==FALSE)
            
CreateItemOnObject("AnphilliaInformation"oPC);

        if(
GetIsObjectValid(GetItemPossessedBy(oPC,"AmuletOfLife"))==FALSE)
            
CreateItemOnObject("amuletoflife"oPC);
        if (!
GetIsObjectValid(GetItemPossessedBy(oPC,"AnphilliaRuleBook")))
            
CreateItemOnObject("anphilliaruleboo"oPC);
// Give PC's an EmoteWand if using the DMHelper set.
        
if(!GetIsObjectValid(GetItemPossessedBy(oPC,"EmoteWand")))
            
CreateItemOnObject("emotewand"oPC);
    }

// Check for tensers sword.

    
object oGear GetItemPossessedBy (oPC"NW_WSWMLS013");
    if (
GetIsObjectValid (oGear))
    {
        
SendMessageToPC (oPC"Tensors sword crumbles to dust..");
        
DestroyObject (oGear);
    }

// Remember Factions.
    
if (GetAnphInt (AnphPCID (oPC) + "LamirFaction") == 1)
    {
        
object oLamirFaction GetObjectByTag ("LamirFaction");
        
AdjustReputation (oPCoLamirFaction1);
    }

    if (
GetAnphInt (AnphPCID (oPC) + "RanzingtonFaction") == 1)
    {
        
object oRanzingtonFaction GetObjectByTag ("RanzingtonFaction");
        
AdjustReputation (oPCoRanzingtonFaction1);
    }

    
Subraces_InitSubraceGetEnteringObject() );
    if (
nDM || (sCDK!="" && sCDK==GetPersistentString(oMod,"PLAYERDM")))
    {
        
effect eImmune EffectImmunity(IMMUNITY_TYPE_TRAP);
        
ApplyEffectToObject(DURATION_TYPE_PERMANENTeImmuneoPC);
    }

    
int nComingBack GetLocalInt (oModsName sCDK "HaveBeenHere");
    if (
nComingBack == 1)
    {
        
int nHitPoints GetLocalInt (oModsName sCDK "CurrentHitPoints");
        
int nCurHitPoints GetCurrentHitPoints (oPC);
        
int nDam nCurHitPoints nHitPoints;
        if (
nDam 0)
        {
            
effect eDam EffectDamage (nDam);
            
DelayCommand (3.0ApplyEffectToObject (DURATION_TYPE_INSTANTeDamoPC));
        }
    }
    
SetLocalInt (oModsName sCDK "HaveBeenHere"1);




    if(
GetLevelByClass(CLASS_TYPE_RANGER,oPC) &&
        
GetIsObjectValid(GetItemPossessedBy(oPC,"TrackerTool"))==FALSE)
           
CreateItemOnObject("trackertool"oPC);
// Give Paladins their tools that simulate missing abilities
    
if(GetLevelByClass(CLASS_TYPE_PALADIN,oPC)>&&
        
GetIsObjectValid(GetItemPossessedBy(oPC,"hc_palbadgecour"))==FALSE)
           
CreateItemOnObject("paladinsbadgeofc"oPC);
    if(
GetLevelByClass(CLASS_TYPE_PALADIN,oPC) &&
        
GetIsObjectValid(GetItemPossessedBy(oPC,"hc_paladinsymb"))==FALSE)
           
CreateItemOnObject("paladinsholysymb"oPC);
// Give PC's a Trap Tool in inventory
    
if(GetLocalInt(oMod,"HCRTRAPS") && GetIsObjectValid(GetItemPossessedBy
        
(oPC,"searchtool"))==FALSE)
           
CreateItemOnObject("searchtool"oPC);
// Give PC's the ball of saving.
//    if(!GetIsObjectValid(GetItemPossessedBy(oPC,"ballofsaving")))
//         CreateItemOnObject("ballofsaving", oPC);
// Give PC DM's a wand version of the HCR helper
    
if(sCDK != "" && sCDK==GetPersistentString(oMod,"PLAYERDM"))
    {
        if(
GetIsObjectValid(GetItemPossessedBy(oPC,"HCRHelpwand"))==FALSE)
            
CreateItemOnObject("HCRHelpwand"oPC);
    }
    if (
nDM)
    {
        
// Give DM's a HCR Helper in inventory
        
if(GetIsObjectValid(GetItemPossessedBy(oPC,"HCRHelpwand"))==FALSE)
            
CreateItemOnObject("hcrhelpwand"oPC);
        if(
GetIsObjectValid(GetItemPossessedBy(oPC,"DMsHelper"))==FALSE)
           
CreateItemOnObject("DMsHelper"oPC);
        if(
GetIsObjectValid(GetItemPossessedBy(oPC,"WandOfFX"))==FALSE)
           
CreateItemOnObject("wandoffx"oPC);
        if(!
GetIsObjectValid(GetItemPossessedBy(oPC,"WandOfEnemies")))
           
CreateItemOnObject("wandoffriends003"oPC);
        if(!
GetIsObjectValid(GetItemPossessedBy(oPC,"WandOfFriends")))
           
CreateItemOnObject("wandoffriends004"oPC);
        if(!
GetIsObjectValid(GetItemPossessedBy(oPC,"WandOfAxfell")))
           
CreateItemOnObject("wandoffriends006"oPC);
        if(!
GetIsObjectValid(GetItemPossessedBy(oPC,"WandOfCleaven")))
           
CreateItemOnObject("wandoffriends005"oPC);
        if(!
GetIsObjectValid(GetItemPossessedBy(oPC,"XPWand")))
           
CreateItemOnObject("xpwand"oPC);
    }

    if (!
GetXP (oPC))
        
SetXP (oPC1);


    
WriteTimestampedLogEntry (" -- New Player " +
                              
GetName (oPC) +
                              
", handle " +
                              
GetPCPlayerName (oPC) +
                              
", CD KEY " +
                              
GetPCPublicCDKey (oPC));

    
// Send a login message to all players if one exists
    
if(GetLocalString(oMod,"LOGINMESSAGE") != "NONE")
        
SendMessageToPC(oPC,GetLocalString(oMod,"LOGINMESSAGE"));

    
postEvent();
    
object oPlayer GetLastEnteringObject();

    if (
GetLocalInt(GetModule(), GetName(oPlayer) + "LocationSaved") == FALSE)
   {
     
ResumePCLocation(oPlayer);
     
SetLocalInt(GetModule(), GetName(oPlayer) + "LocationSaved"TRUE);
   }

Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [SYSTEME] Le PUMA!
   

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 13h00.
   

© 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