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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

[script - prefab] Football

Par eMRaistlin le 5/12/2002 à 1:57:54 (#2714018)

Enfin, plus exactement, son ancetre...

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)

Ba bravo à toi eMRaistlin. franchement félicitation c'est du bon boulot.
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)

A nous le TROLLBALL ! Avec un gob en guise de trollkin ;)

Par Jaha Effect le 5/12/2002 à 13:19:48 (#2716205)

Qui se rappel encore de ce jeu de plateau qui s'appelait Blood Ball? :)

Jaha Effect :D

Par RAT le 5/12/2002 à 13:40:24 (#2716367)

MOIIIIIIIIIIIIIIIIIIIIIII , je l'ai chez moi encore . Je trouvais ce jeu super sympa, mélange de football américain et combat à tout va :). Un peu comme dans roller ball:)

Par RavenShadow le 7/12/2002 à 10:15:38 (#2730027)

Pour ceux qui veulent rejouer à Blood Bowl, voici la version informatique (projet en cours) :
http://toweld.free.fr/towbowltactics/

Par Azrael07 le 7/12/2002 à 11:38:15 (#2730420)

rahlala, blood ball, ct encore l'époque ou game workshop n'était pas encore (trop) corrompu par le fric, qu'ils sortaient encore des jeux digne d'interet.

Maitenant c finis tout ca :sanglote: :sanglote: :sanglote:

JOL Archives 1.0.1
@ JOL / JeuxOnLine