Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Hardcore2 urgent

Par Blam le 15/2/2003 à 14:57:36 (#3244172)

mon problème est simple, je veux que le scenario online soit un pur hardcore, comment SIMPLEMENT, réaliser cela.
-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)

Hum, ça m'intéresse aussi, juste pour voir ;)
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)

Ben la première proposition de eMRaistlin était très bonne (contrairement à mes hallucinations postérieures dû à l'absorption excédentaire de script NWN) : Tu mets une variable locale "bMort" à TRUE sur le joueur qui meurt (via le OnDeath) et tu ne retire cette variable que quand il ressuscite, si il se déco-reco, tu le bannit de ton module via un OnClientEnter qui vérifie s'il a la variable "bMort" à TRUE. :)
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)

J'ai rien compris c'est normal ? :D

(ah ces quiches... :rolleyes: )

je sais je sais

Par Blam le 16/2/2003 à 9:39:24 (#3247363)

Le problème c'est que je n'arrive pas a le réaliser, je m'embourbe salement la dedans.

Si quelqun pouvait me faire un exemple concret, ca aiderait bien, merci

Par Jedaï le 16/2/2003 à 11:03:34 (#3247551)

Ben je croyais que eM t'avait fourni une réponse complète....:confus:

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)

Je n'arrive pas a m'en dépatouiller, malgré les "expliçations" fournies (désolé je fais ce que je peux)

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