Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > [script - prefab] Football
[script - prefab] Football
Par eMRaistlin le 5/12/2002 à 1:57:54 (#2714018)
Nulle part ailleurs que sur NeverWinter Ragnarok (sisi, pub perso):mdr:
Je tiens a remercier tout ceux qui m'ont aidé, et ceux qui ont essayé. Je ne remercie pas ceux ceux qui ont voulu faire de la concurence.* (!)
Cette serie de script permet de simuler une partie de foot (ou tout du moins de jeu de balle)
Il va falloir plusieur choses :
- Une tenue rouge (TAG = "rouge" et resref = "maillotrouge")
- Une tenue bleue (TAG = "bleu et resref = "maillotbleu")
- Une creature ballon (tag = "ballondefoot" - vitesse =DMspeed - Tous les scripts vides sauf le onConversation)
(soit une custom, soit ce qui vous plaira)
- une creature arbitre (tag = "arbitre")
- un terrain sur lequel vous mettrez :
.......Un Waypoint au centre avec le tag "Milieu"
.......Deux triggers generiques sur tout le long des cotés (un de chaque coté), pour faire les zone de touche
.......Deux trigger generic en haut et en bas, pour les zones de but
.......Le long des zones de touche, HORS DES TRIGGER, des waypoint (tag="touche") pour rammener le ballon en jeu.
- Eventuellement, des bannieres pour egayer le tout.
foot_adversaire (script #include)
////////////////////////////////////////////
// : code = eMRaistlin for NWNRo
////////////////////////////////////////////
string GetAdv(string sColor)
{
string sAdversaire;
if (sColor == "rouge")
{
sAdversaire="bleu";
}
if (sColor == "bleu")
{
sAdversaire="rouge";
}
return sAdversaire;
}
foot_but (a mettre dans le OnEnter du trigger des zones de but)
////////////////////////////////////////////
// : code = eMRaistlin for NWNRo
////////////////////////////////////////////
#include "foot_adversaire"
void main()
{
object oEnter = GetEnteringObject();
object oArbitre = GetNearestObjectByTag("arbitre",oEnter,1);
string sColor = GetTag(GetItemInSlot(INVENTORY_SLOT_CHEST,GetLocalObject(oEnter,"Lastplayer")));
if (GetTag(oEnter)=="ballondefoot")
{
AssignCommand(oEnter,ClearAllActions());
AssignCommand(oEnter,JumpToObject(GetNearestObjectByTag("Milieu",oEnter,1)));
AssignCommand(oArbitre,SpeakString("BUUUUTTTTTT !! balle aux "+ GetAdv(sColor)));
SetLocalInt(oArbitre,sColor,GetLocalInt(oArbitre,sColor)+1);
AssignCommand(oArbitre,SpeakString("Score = "+ "Rouge - "+
IntToString(GetLocalInt(oArbitre,"rouge"))+" / Bleus - "+
IntToString(GetLocalInt(oArbitre,"bleu"))));
}
}
foot_onenter (a mettre dans l'entrée de l'area de foot)
////////////////////////////////////////////
// : code = eMRaistlin for NWNRo
////////////////////////////////////////////
void main()
{
object oPC = GetEnteringObject();
object oArea = GetArea(oPC);
object oMaillot;
object oTenueCour;
int nNBJoueur = GetLocalInt(oArea,"equipe");
object oArbitre = GetNearestObjectByTag("arbitre",oPC,1);
int nNB = GetLocalInt(oArbitre,"nombre")+1;
SetLocalInt (oArbitre,"nombre",nNB);
string sTenue;
// - Incrementation du nombre de joueur present dans l'area
nNBJoueur = nNBJoueur+1;
// - Creation des costume par joueur (avec repartition des joueurs par equipe : les entrée paires,
et les entrées impaires.)
if (nNBJoueur==0)
{
sTenue = "maillotbleu";
}
else if (nNBJoueur == 1)
{
sTenue = "maillotrouge";
nNBJoueur = 0;
}
// - Desequipement du costume courant.
oTenueCour=GetItemInSlot(INVENTORY_SLOT_CHEST,oPC);
AssignCommand(oPC,ActionUnequipItem(oTenueCour));
AssignCommand(oPC,ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC)));
AssignCommand(oPC,ActionUnequipItem(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC)));
// - Equipement des costumes.
oMaillot = CreateItemOnObject(sTenue,oPC,1);
AssignCommand(oPC,ActionEquipItem(oMaillot,INVENTORY_SLOT_CHEST));
// - Avertissement : Ce que vous portez sera detruit en sortie d'area : ne changez pas de tenue.
FloatingTextStringOnCreature("Ce que vous portez sera detruit en sortie d'area : ne changez pas de
tenue.",oPC,FALSE);
// - Finalisation
SetLocalInt(oArea,"equipe",nNBJoueur);
SetLocalObject(oPC,"anciennetenue",oTenueCour);
}
foot_exit (a mettre a la sortie de l'area de foot)
////////////////////////////////////////////
// : code = eMRaistlin for NWNRo
////////////////////////////////////////////
void main()
{
// - Destruction de la tenue.
object oPC = GetExitingObject();
object oArea = GetArea(oPC);
object oEnter = GetNearestObjectByTag("ballondefoot",oPC);
object oTenueCour = GetLocalObject(oPC,"anciennetenue");
object oTenue=GetItemInSlot(INVENTORY_SLOT_CHEST,oPC);
int nNB = GetLocalInt(oArea,"equipe")-1;
object oArbitre = GetNearestObjectByTag("arbitre",oPC,1);
int nNombre = GetLocalInt(oArbitre,"nombre")-1;
SetLocalInt (oArbitre,"nombre",nNombre);
if (nNB==-1)
{nNB=1;}
DestroyObject(oTenue);
AssignCommand(oPC,ActionEquipItem(oTenueCour,INVENTORY_SLOT_CHEST));
// - Decrementation du nombre de joueurs
SetLocalInt(oArea,"equipe",nNB);
if (nNombre >=0)
{
AssignCommand(oEnter,JumpToObject(GetNearestObjectByTag("Milieu",oEnter,1)));
SetLocalInt(oArbitre,"rouge",0);
SetLocalInt(oArbitre,"bleu",0);
}
}
foot_onconversation (a mettre dans le OnConversation du ballon)
////////////////////////////////////////////
// : code = eMRaistlin for NWNRo
////////////////////////////////////////////
void main()
{
object oPC = GetLastSpeaker();
object oBallon = OBJECT_SELF;
SetLocalObject(oBallon,"Lastplayer",oPC);
int nShoot =(GetAbilityScore(oPC,ABILITY_STRENGTH)+GetAbilityScore(oPC,ABILITY_DEXTERITY))/4;
vector vNewPos2;
location lLocation;
// - Force le joueur a courir vers le ballon.
AssignCommand(oPC, ActionForceMoveToObject(oBallon,TRUE,1.0,180.0));
// - reperage décalé de la position du joueur
float fFace = GetFacing(oPC);
vector v1 = GetPosition(oBallon);
AssignCommand(oPC,ClearAllActions());
vector vNewPos = AngleToVector(fFace);
float vX = v1.x + (vNewPos.x*nShoot);
float vY = v1.y + (vNewPos.y*nShoot);
float vZ = v1.z;
vNewPos = Vector(vX, vY, vZ);
lLocation = Location(GetArea(oPC), vNewPos, fFace);
ActionForceMoveToLocation(lLocation,TRUE);
}
foot_touche (a mettre dans le OnEnter du trigger de touche)
////////////////////////////////////////////
// : code = eMRaistlin for NWNRo
////////////////////////////////////////////
#include "foot_adversaire"
void main()
{
object oEnter = GetEnteringObject();
object oArbitre = GetNearestObjectByTag("arbitre",oEnter,1);
string sColor = GetTag(GetItemInSlot(INVENTORY_SLOT_CHEST,GetLocalObject(oEnter,"Lastplayer")));
if (GetTag(oEnter)=="ballondefoot")
{
AssignCommand(oEnter,ClearAllActions());
AssignCommand(oEnter,JumpToObject(GetNearestObjectByTag("touche",oEnter,1)));
AssignCommand(oArbitre,SpeakString("TOUCHHHHE !! balle aux "+GetAdv(sColor)));
}
}
Voila.
J'espere que vous y prendrez autant de plaisir que j'ai put avoir a le faire.
Et merci encore aux ames généreuses qui aident.
*PS : les autres, ce n'est pas une facon de faire avancer la communeaute FR. Je ne vous salut pas !
Par RAT le 5/12/2002 à 2:01:53 (#2714029)
Je ne sais pas si j'ai pu être utile, comme je n'ai pas pu trop y participer ne voyant pas ce que tu voulais faire. Point pour de la concurrence, mais j'aide mieux quand je comprends :).
Donc encore bravo à toi :).
Par mobidique le 5/12/2002 à 9:19:03 (#2714730)
Par Jaha Effect le 5/12/2002 à 13:19:48 (#2716205)
Jaha Effect :D
Par RAT le 5/12/2002 à 13:40:24 (#2716367)
Par RavenShadow le 7/12/2002 à 10:15:38 (#2730027)
http://toweld.free.fr/towbowltactics/
Par Azrael07 le 7/12/2002 à 11:38:15 (#2730420)
Maitenant c finis tout ca :sanglote: :sanglote: :sanglote:
JOL Archives 1.0.1
@ JOL / JeuxOnLine