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

Panneau de contrĂ´le

Recherche | Retour aux forums

JOL Archives

Restreindre l'accès à son module

Par Cassin le 15/10/2002 Ă  16:24:01 (#2340192)

Salut !

C'est encore moi ;)

Aller, c'est la dernière question afin de boucler défintivement mon module (enfin, hors cinématique d'intro encore à peaufiner ;) ) :

Comment restreindre l'accès à mon module aux persos uniquement d'alignement Bon ?
Je sais que pour jouer en multi, il suffit de cocher une case, mais pour jouer en solo ? (parce que c'est avant tout un module solo)

J'ai déjà vu un module uniquement jouables par les personnages pré-générés par l'auteur (module Lone Wolf, sur ma page), mais ce n'est pas exactement ce que je voulais ;), et en plus je ne vois comment il a put faire... :confus:

Alors comment qu'on fait-y, plize ? ;)

Par eMRaistlin le 15/10/2002 Ă  16:46:08 (#2340366)

Je ne sais pas trop, mais tu peut toujours faire un test du PC a son entrée en jeu, et l'envoyer au mitard si c'est un charactere d'alignement autre que bon... (avec bien sur un message, histoire que le joueur sache pourquoi il est au mitard ^^)

Par LeProctophantasmiste le 15/10/2002 Ă  16:47:22 (#2340376)

Ma suggestion serait de faire confiance au MJs et joueurs. Après tout s'ils veulent absolument se gacher leur plaisir c'est leur problème.
Sinon, je vais regarder dans le toolset, il me semble être tombé sur une fonction permettant quelque chose de plus radical.

Par Cassin le 15/10/2002 Ă  16:50:44 (#2340400)

Oui, j'avais pensé aussi à faire une "antichambre" avec un portail de téléportation qui ne fonctionnerait QUE si le joueur était d'alignement bon, mais s'il y a une meilleure solution... ;)

Par eMRaistlin le 15/10/2002 Ă  16:55:40 (#2340437)

, mais s'il y a une meilleure solution...

Vi, je sais...

Voici les fonction relatives aux alignement :

AdjustAlignment

AutoAlignE

AutoAlignG

GetAlignmentGoodEvil

GetAlignmentLawChaos

GetFactionAverageGoodEvilAlignment

GetFactionAverageLawChaosAlignment

GetGoodEvilValue

GetLawChaosValue

GetReactionAdjustment

VersusAlignmentEffect


Je te conseille plus particulierement, si tu veux pas de l'antichambre, le AdjustAlignement, mais bon, ca force le joueur un tout petit peu trop a mon gout...


pour rappel :
action AdjustAlignment(
object oSubject,
int nAlignment,
int nShift
);


Constants
Constant Description
ALIGNMENT_ALL Symbolizes any of the standard alignment settings and performs different effects dependent upon the calling function.
ALIGNMENT_CHAOTIC Chaotic characters follow their consciences, resent being told what to do, favor new ideas over tradition, and do what they promise if they feel like it. The chaotic ethos includes the three standard dispositions good (CG - "Rebel"), neutral (CN - "Free Spirit"), and evil (CE - "Destroyer").
ALIGNMENT_EVIL Evil implies hurting, oppressing, and killing others, whether for fun or profit.
ALIGNMENT_GOOD Good implies altruism, respect for life, and a concern for the dignity of sentient beings.
ALIGNMENT_LAWFUL Lawful characters tell the truth, keep their word, respect authority, honor tradition, and judge those who fall short of their duties. The lawful ethos includes the three standard dispositions: good (LG - "Crusader"), neutral (LN - "Judge"), and evil (LE - "Dominator").
ALIGNMENT_NEUTRAL This constant represents both the ethos and disposition of neutral. Characters who are neutral in ethos have a normal respect for authority and feel nether a compulsion to obey nor to rebel. The neutral ethos includes the three standard dispositions good (NG - "Benefactor"), neutral (N, "Undecided"), and evil (NE - "Malefactor").

Par Cassin le 15/10/2002 Ă  17:12:12 (#2340513)

En effet, forcer l'alignement ne me plaît pas trop, surtout que je fais surtout ce choix pour une question RP, alors...

De plus ça risque de poser quelques problèmes à propos des classes...

Non ben tant pis, je vais faire une antichambre avec un zoli dragon qui va expliquer tout ça au joueur... :D

Par LeProctophantasmiste le 15/10/2002 Ă  17:52:09 (#2340752)

La fonction dont je parlais c'était BootPC, mais de toute façon cela ne marche pas en SP. Tu pourrais aussi tuer le joueur et empècher le respawn OnClientEnter mais l'antichanbre d'eMRaistlin est quand même plus soft :).
Proposition: Tu pourrais fournir la possibilité de changer d'alignement dans l'antichambre, comme ça si ça ne pose pas de problème pour sa classe, le joueur n'aura pas à recréer un perso, c'est mons frustrant à mon avis.

EDIT: houlĂ  (o!)

Par Jaha Effect le 15/10/2002 Ă  17:52:37 (#2340756)

Provient du message de Cassin
En effet, forcer l'alignement ne me plaît pas trop, surtout que je fais surtout ce choix pour une question RP, alors...

De plus ça risque de poser quelques problèmes à propos des classes...

Non ben tant pis, je vais faire une antichambre avec un zoli dragon qui va expliquer tout ça au joueur... :D


Et on ne discute pas avec un dragon... on ecoute !!!

Jaha Effect :D

Par Tyn' le 15/10/2002 Ă  18:16:54 (#2340922)

Pour éjecter le joueur à l'entrée en SP et MP, s'il n'est pas d'alignement bon :

Dans OnClientEnter du module :

void main()
{
//On récupère le joueur
object oPC = GetEnteringObject();
if(GetIsPC(oPC) && GetAlignmentGoodEvil(oPC) != ALIGNMENT_GOOD)
{
//Le joueur n'est pas bon, on vérifie si c'est du SP ou du MP
SendMessageToPC(oPC,"Ce module nécessite un alignement Bon. Veuillez en changer et réessayer.");
int nPlayerCount = 0;
object oPlayerCount = GetFirstPC();
while(GetIsObjectValid(oPlayerCount))
{
nPlayerCount++;
oPlayerCount = GetNextPC();
}
if(nPlayerCount == 1)
{
//C'est du solo (ou y'a 1 joueur en multi, là ca fait rebooter le serveur, désolé)
DelayCommand(10.0f,EndGame("));
}else{
//C'est du multi
DelayCommand(10.0f,BootPC(oPC));
}
}
}

Par Tyn' le 15/10/2002 Ă  18:26:02 (#2340977)

Et pour proposer au joueur de changer d'alignement au début du module si son alignement n'est pas Bon :

void main()
{
object oPC = GetEnteringObject();
if(GetIsPC(oPC) && GetAlignmentGoodEvil(oPC) != ALIGNMENT_GOOD))
{
AssignCommand(oPC,ClearAllActions());
AssignCommand(oPC,ActionStartConversation(oPC,"changer_alignement",TRUE);
}
}
Avec un dialogue appellé changer_alignement :
-> Attention, ce module nécessite un alignement Bon, ce qui n'est pas votre cas. Voulez-vous en changer ?
--> Oui, changez mon alignement.
--> Non, je préfère quitter.
Dans les actions conséquentes de Oui, changez mon alignement. :
void main()
{
object oPC = GetPCSpeaker();
AdjustAlignment(oPC,ALIGNMENT_GOOD,100);
SendMessageToPC(oPC,"Votre alignement a été changé à Bon, bonne continuation dans ce module.");
}
Et dans les actions conséquentes de Non, je préfère quitter :
void main()
{
object oPC = GetPCSpeaker();
int nPlayerCount = 0;
object oPlayerCount = GetFirstPC();
while(GetIsObjectValid(oPlayerCount))
{
nPlayerCount++;
oPlayerCount = GetNextPC();
}
if(nPlayerCount == 1)
{
//C'est du solo (ou y'a 1 joueur en multi, là ca fait rebooter le serveur, désolé)
DelayCommand(10.0f,EndGame("));
}else{
//C'est du multi
DelayCommand(10.0f,BootPC(oPC));
}
}

Par Cassin le 16/10/2002 Ă  8:39:11 (#2343762)

Merci ! :D

Par eMRaistlin le 16/10/2002 Ă  9:56:30 (#2344013)

Ben, je suis d'accord, mais ce qui m'embete, c'est que le perso a deja eu acces au jeu, resultat, il se paye le chargement du module, et/ou de l'area, puis a peine arrivé, ou lui annonce que c'est mort, et il peut rien faire (c'est pour ca que je prefere l'antichambre... Tu met un ou deux bouquins, et le gars, il a l'occasion de se repentir, sans devoir re-creer et reloader...


Un autre truc au fait : Online, tu met un pass, et une description adequate ^^

Par Cassin le 16/10/2002 Ă  10:31:22 (#2344180)

Oui, j'indique bien dans la description du module qu'il n'est accessible qu'aux Bons, et si un jour je le fais jouer en multi (si j'ai le temps quoi :D), je l'indiquerais aussi...

Et dans l'antichambre je vais donner la possibilité de modifier l'alignement, même si je n'aime pas trop ça... ;)
(ou bien je sauve l'alignement d'origine du joueur et je la lui restitue Ă  la fin du module :D)
(mais ça risque de poser problème quand j'enchaînerais sur le prochain module de la campagne...)
(mais je verrais ça plus tard ! :D)
(OK, j'arrête avec mes parenthèses :mdr: )

JOL Archives 1.0.1
@ JOL / JeuxOnLine