Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Hardcore2 urgent
Hardcore2 urgent
Par Blam le 15/2/2003 à 14:57:36 (#3244172)
-de façon a ce que un perso mort puisse être resurecté ou rappelé a la vie.
-que si il quitte ou est déconnécté alors qu'il est mort, il reste mort.
-j'ai déjà poster un sujet similaire mais pas eu de réponse que j'ai réussi a mettre en oeuvre. (on est un pur newb ou pas).
merci de votre attention.
Blam
Oula Blam va faire souffrir bcp de pov' joueurs ^^
Par AlphA da keech le 15/2/2003 à 19:34:59 (#3245175)
Et aussi pourquoi pas rajouter un lancé de 1d100 toutes les 30 sec (quand le perso est mort) et si il fait 100 il est résu (la grâce des Dieux ^^).
En clair mode hardcore + 1% d'avoir la "grâce des Dieux" :mdr:
Par Jedaï le 15/2/2003 à 20:52:57 (#3245546)
Si tu utilise PWUM ou PUMA, tu peux utiliser les flags de Tyn' pour plus de sécurité, ou supprimer simplement les sauvegardes du joueur sur ton vault.:D
Par AlphA da keech le 16/2/2003 à 7:11:53 (#3247212)
(ah ces quiches... :rolleyes: )
je sais je sais
Par Blam le 16/2/2003 à 9:39:24 (#3247363)
Si quelqun pouvait me faire un exemple concret, ca aiderait bien, merci
Par Jedaï le 16/2/2003 à 11:03:34 (#3247551)
Tu rajoute cette ligne au début du OnDeath :
oPC = GetLastPlayerDied();
SetLocalInt(oPC, "bMort", TRUE);
Puis tu mets ceci dans ton OnEnter (au début) :
oPC = GetEnteringObject();
if ( GetIsPC( oPC ) && GetLocalInt( oPC, "bMort" ) )
{
SendMessageToPC( oPC, "Les Morts-Vivants ne sont pas les bienvenus sur ce serveur ! "+
"Retournez en enfer !!!" );
DelayCommand( 3.0, BootPC( oPC ) );
}
Evidemment faut prévoir un mécanisme pour supprimer cette variable "bMort" lorsque le joueur est ressuscité, si tu me dis comment il peut l'être, je te donnerai une solution. L'idée est de mettre cette ligne dans les scripts des sorts ou autres qui ressusciterait le PJ :
DeleteLocalInt( oRezPJ, "bMort" );
Si t'utilise le PWUM, on peut rendre ce mécanisme automatique avec les flags.:p
je n'utilise pas la PWUM
Par Blam le 16/2/2003 à 11:17:23 (#3247591)
Quant a savoir comment ils seront ressuscites, il y a pas grands choix
MD ou
Sort de résurrection ou
Sort de Rappel a la vie.
et c'est tout
merci pour ton aide c'est un poil plus clair quand c'est détaillé comme ca :)
Par Jedaï le 16/2/2003 à 12:33:33 (#3247884)
Quant a savoir comment ils seront ressuscites, il y a pas grands choix
MD ou
Sort de résurrection ou
Sort de Rappel a la vie.
et c'est tout
OK, pour ton DM, tu fais un objet auquel tu donne un pouvoir unique et tu mets ça dans ton OnActivateItem : (ou alors tu rajoute cette possibilité dans ton gadget pour DM actuel)
//OnActivateItem
void main()
{
//le code que tu avais avant
// je suppose que tu as déjà plusieurs objets avant et que sTag
//est le tag de l'objet activé
else if( sTag == "Tag de ta baguette de résurrection" )
{
object oPC = GetItemActivatedTarget();
ApplyEffectToObject( DURATION_TYPE_INSTANT, EffectResurrection(), oPC );
ApplyEffectToObject( DURATION_TYPE_INSTANT, EffectHeal( GetMaxHitPoints( oPC ) ), oPC );
DeleteLocalInt( oPC, "bMort" );
}
}
Pour les sorts, il va falloir que tu repère leur script ("nw_s0_*") et que tu mettes cette ligne à l'intérieur :
DeleteLocalInt( oPC, "bMort" );
Voilà, les tricheurs resteront morts pour de bon, plus de zombie dans tes parties !
Puisque tu n'utilise pas le PWUM, tu vas devoir supprimer "à la main" les joueurs qui sont définitivement morts entre deux sessions, je suppose que tu fais jouer en Server Vault ?
Il te suffira de supprimer les fichiers des joueurs incriminés dans ton répertoire vault.
Tu pourrais noter leur nom dans ton log, dans ce cadre, je te recommande de transformer le petit bout de script dans ton OnClientEnter, comme ceci :
//OnClientEnter
void main()
{
oPC = GetEnteringObject();
if ( GetIsPC( oPC ) && GetLocalInt( oPC, "bMort" ) )
{
SendMessageToPC( oPC, "Les Morts-Vivants ne sont pas les bienvenus sur ce serveur ! "+
"Retournez en enfer !!!" );
WriteTimestampedLogEntry( "Bretzelburg ! Enfer et damnation ! le joueur " + GetPCPlayerName( oPC ) +
" qui avait disparu de ce monde tente de revenir des Abysses ! Vade Retro "+
GetName( oPC ) + " !" );
DelayCommand( 3.0, BootPC( oPC ) );
}
//le reste du code...
}
Ensuite, à la fin d'une session, tu ouvres ton log et tu fais une recherche de "Bretzelburg", puis tu supprimes toutes les sauvegardes des joueurs qui ont essayé de frauder, on est hardcore ou on ne l'est pas !:D
JOL Archives 1.0.1
@ JOL / JeuxOnLine