Commando Kieffer - Archive
Le Bar => Discussion libre => : Gautier March 10, 2007, 12:14:57 PM
-
JE VOUS L'AVAIS DIT, JE VOUS L'AVAIS ANNONCE HIER!
BETA DU D.R.O. DISPONIBLE CET APRES-MIDI!
Et oui c'est parti, chez moi tout est bouclé, donc pas de problèmes.
Pour vous faire peur, je vous mets le readme tel qu'il l'est actuellement
:roll:
DESERT RATS OFFENSIVE
-------BETA n°1------
-Call of Duty 2 v1.3-
(Version Française)
Desert Rats Offensive (D.R.O.) est le nom d'un nouveau mod pour Call of Duty 2. Nous avons cherché à renforcer le réalisme de Call of Duty 2, sans pour autant en altérer le plaisir de jouer. Nous espérons que cela vous plaira!
BETA n°1
SEULS LES AMERICAINS ET LES ALLEMANDS (skin "Normandie") SONT DISPONIBLES DANS CETTE BETA.
POUR EVITER LE CRASH DE VOTRE SERVEUR, NE JOUEZ PAS SUR DES MAPS RUSSES OU ANGLAISES.
___________________________
SOMMAIRE__________
1 - Crédits
2 - Fonctions du Mod
3 - Bugs Connus
4 - Installation
5 - Contact
1. CREDITS
La team du mod:
* Gautier : Chef de Projet, Scripteur, Traducteur (Français vers Anglais), etc...
* Hazal : Mappeur (Les maps du DRO seront disponibles bientôt!)
* Gadou : Mappeur
* vingt-2 : Skinneur, et plus (a donné beaucoup d'idées)
* Guy : Webmaster, etc...
Un grand merci:
* Les Forums d'IWNations et leurs membres plein de connaissance en script.
* Remerciement Spécial pour Wanna Ganoush pour son script qui détecte l'utilisation des MG.
* Remerciement Spécial pour Tally et son aide pour les fichiers de traduction.
* Remerciement à toutes les teams réalistes qui m'ont soutenu: les CK, WBD et 2eRCP.
2. FONCTIONS
- Classes de Soldat
+ Infanterie : Fusils; et Automatique pour l'assaut.
+ Infirmier : Infirmier (avec skin) qui peut redonner de la vie à ses coéquipiers.
+ Equipe de Support : Tireur d'Elite; Support (B.A.R. and MP44); Mitrailleuse Légère (MG42 and .30cal LMG) avec 150 balles; Support Munitions, qui peut recharger une Mitrailleuse Légère déployée.
+ Quartier Général : Officier avec jumelles qui peut marquer une position, Radioman qui peut demander l'artillerie sur la position marquée.
- Fonctions Réaliste (peuvent être configurées).
+ Pas d'obituaries. (qui tue qui)
+ Pas de Dog Tags (images de mort dans le tableau des scores)
+ Pas d'indicateur de Grenades.
+ Pas d'icône de coéquipiers morts.
+ Pas d'icones d'objectifs
+ Pas d'indicateur qui informe si vous avez touché un ennemi ou non.
+ Pas de réticule.
+ Sons pour les blessures et les morts.
+ Rammassage de grenades avant qu'elles n'explosent.
+ Sprint.
- Autres Fonctions
+ Messages serveur.
+ Pas de Score sur le HUD.
+ Pas d'indication de temps sur le HUD.
+ Image rétrécissant le champ de vision lorsque vous visez.
Plus d'informations
- Nous avons utilisé la même touche pour poser la MG que dans Call of Duty : United Offensive. Ainsi, il vous faut presser la touche "Viser" pour déployer la Mitrailleuse.
- Pour appeller l'artillerie, les radiomen us doivent se tenir prêts d'un officier, et presser la touche de tir avec l'arme "Radio" dans les mains. Les radiomen allemands doivent d'abord poser la radio à terre (touche "Viser" avec l'arme "Radio"), puis attendre que l'artillerie soit disponible.
- Pour recharger une Mitrailleuse légère, Les soldat du "support munitions" doivent être près de la MG en question, et appuyer sur la touche de tir avec leur arme "Munitions".
- Pour soigner un équipier, Les infirmiers doivent être près de ce coéquipier, et appuyer sur la touche de visée avec l'arme "Bandages".
- Pour sauver votre vie quand une grenade atterrit près de vous, regardez-là et appuyez sur la touche Utiliser. Si vous êtes suffisamment prêts, vous la ramassez et vous pouvez la rejeter de nouveau. Attention : Si vous ne la relancez pas, elle vous explosera dessus...
- Pour Sprinter, maintenez appuyé la touche Utiliser. Le facteur de régénaration est de 1/2 (15s de sprint, 30s pour régénérer en plein).
3. BUGS CONNUS
- Ne Pressez pas la touche "Tir" lorsque vous sprintez, ou sinon vous ne pourrez plus utiliser vos armes ensuite. Nous sommes actuellement en train de travailler sur ce bug.
4.INSTALLATION
- Sur le FTP de votre serveur, créez un nouveau dossier /dro.
- Dans ce dossier, copiez tout le contenu du dossier /srv du fichier RAR.
- Créez un nouvelle commande fs_game, ou demandez à votre fournisseur de serveur de le faire pour vous. Le dossier que vous devez appeller est /dro
- Dans le dossier /dro, copiez-y aussi le fichier de config de votre serveur (config_mp_serveur.cgf).
- Ouvrez le fichier de config, et incluez dedans la commande suivante :
"exec dro.cfg".
- Ouvrez le fichier dro.cfg, et éditez-le pour configurer le DRO à votre guise.
- Fermez tous les fichiers, et redémarrez le serveur.
5. CONTACT
- Besoin d'aide? Inscrivez-vous sur nos forums (< 1 minute) et posez votre question dans la catégorie appropriée.
BON JEU! L'EQUIPE DU D.R.O.
Plus des screens actuels du mod :
(http://img171.imageshack.us/img171/2052/shot0237xz0.jpg)(http://img171.imageshack.us/img171/6696/shot0239ui1.jpg)(http://img171.imageshack.us/img171/8441/shot0231fq1.jpg)(http://img171.imageshack.us/img171/1263/shot0232yl2.jpg)
YEEEEAAAAHHHHHAAAAAAAA!
Votre Lieutenant, (un peu fou certes mais bon...)
-
Enfin :D
Déjà merci pour tout mon petit Gautier, et BRAVO!
je suis dans les crédits nananananere lol
-
Bande de ptit chanceux vous allez pouvoir tester le D.R.O :cry:
-
YYEEEEEEPPPPEEEEE !
Bien joué Gautier ! Super ! Bravo ! :D :D :D
-
HIIII HHHHHHHHHAAAAAAA
Je pense sortir une beta du chateau dans pas longtemps aussi (exterieur)
:D :D :D :D :D :D :D :D
-
AAAAAAAAAHHH! Génial! Je suis pressé de jouer dessus!! :D
Félicitation à toutes l'équipe!!!
-
Ouah genial :D Merci Lieutenant et tout le "staff" comme on dit
Felicitation et ... et ... et pis merci encore bien joué
:wink:
-
MAGNIFIQUE, EXTRA-ORDINAIRE, MERVEILLEUX C'EST TROP BIEN LE DRO EST ENFIN LA GRAND BRAVO A VOUS ET VOTRE EQUIPE LIEUTENANT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Mtb.Quentric :D :D :D :D :D
-
OUAAAAAAAAAIIIIIIIIIIII !!!!!!!!!!!!!! MErciiii Lieutenant !!! Vivement tout à l'heure !!!! :D :D
-
Juste un mot: ENORMEEEEEEEEEEEE Je suis trop pressé de jouer avec ce mod et la nouvelle map.[/b]
-
Je suis trop pressé de jouer avec ce mod et la nouvelle map.
Pourquoi, tu crois qu'il y en aura qu'une ? :)
http://desertratsoffensive.free.fr/
-
Bravo Lieutenant et Bravo a toute l'équipe du DRO !!!! :D
-
Eh bien si il y en a plusieures c'est encore mieux!!!
-
SUPER LIEUTENANT!! J'ai hâte de l'essayer, dommage qu'on puisse jouer qu'avec les américians, mais bon, beau boulot Lieutenant!
-
Super!!!!!!!!!!!!!! J'ai hate de le tester.
Un grand merci à toute l'équipe du mod.
-
Ca dechire grave 8) 8) 8) 8) 8) 8) 8) 8) 8) Bravo a toute l equipe :) :) :) :)
-
Je suis un fou... Bref. Bon enfin je mets à jour au plus vite que je peux le D.R.O., mais ça prend du temps.
La plupart commencent à se rendre compte du boulot que c'est, mais peut-être pas tous. Bref je suis fou, je vous livre la source d'un de mes fichiers scripts codés par moi-même, ENTIEREMENT :D
// ---------------------------------------------
// DESERT RATS OFFENSIVE
// Mod by Gautier
// http://desertratsoffensive.free.fr
// ---------------------------------------------
// ---------------------------------------------
// Fichier _classes.gsc
// Gère ce qui a un rapport avec les classes de soldat ;)
// ---------------------------------------------
menus(response)
{
// Fonction qui régit la classe du soldat en fonction de l'arme choisie.
switch(response)
{
// Troupe.
case "troupe_1_mp":
default:
// Fusilier.
return 1;
case "troupe_2_mp":
// Fusilier Semi-Automatique.
return 4;
case "troupe_3_mp":
// Assaut.
return 2;
// Medic
case "medic_1_mp":
// Médecin chef.
return 6;
case "medic_2_mp":
// Infirmier.
return 5;
// Support
case "support_1_mp":
// Sniper.
return 3;
case "support_2_mp":
// Support Simple.
return 7;
case "support_3_mp":
// Support Mitrailleur.
return 0;
case "support_4_mp":
// Support Munitions.
return 8;
// QG
case "qg_1_mp":
// Radio.
return 9;
case "qg_2_mp":
// Officier
return 10;
}
}
armescorrespondance(response)
{
// Fonction qui définit l'arme qui correspond à sa classe.
if(self.pers["team"] == "allies")
{
switch(game["allies"])
{
case "american":
switch(response)
{
case "troupe_1_mp":
return "m1garand_mp";
case "troupe_2_mp":
return "m1carbine_mp";
case "troupe_3_mp":
return "thompson_mp";
case "medic_1_mp":
return "m1carbine_mp";
case "medic_2_mp":
return "m1garand_mp";
case "support_1_mp":
return "springfield_mp";
case "support_2_mp":
return "bar_mp";
case "support_3_mp":
return "30cal_debout_mp";
case "support_4_mp":
return "m1garand_mp";
case "qg_1_mp":
return "m1garand_mp";
case "qg_2_mp":
return "thompson_mp";
default:
return "m1garand_mp";
}
break;
case "british":
switch(response)
{
case "troupe_1_mp":
return "enfield_mp";
case "troupe_2_mp":
return "";
case "troupe_3_mp":
return "sten_mp";
case "medic_1_mp":
return "enfield_mp";
case "medic_2_mp":
return "enfield_mp";
case "support_1_mp":
return "enfield_scope_mp";
case "support_2_mp":
return "bren_mp";
case "support_3_mp":
return "30cal_debout_mp";
case "support_4_mp":
return "enfield_mp";
case "qg_1_mp":
return "enfield_mp";
case "qg_2_mp":
return "sten_mp";
default:
return "enfield_mp";
}
break;
case "russian" :
switch(response)
{
case "troupe_1_mp":
return "mosin_nagant_mp";
case "troupe_2_mp":
return "svt40_mp";
case "troupe_3_mp":
return "ppsh_mp";
case "medic_1_mp":
return "mosin_nagant_mp";
case "medic_2_mp":
return "mosin_nagant_mp";
case "support_1_mp":
return "mosin_nagant_sniper_mp";
case "support_2_mp":
return "pps42_mp";
case "support_3_mp":
return "30cal_debout_mp";
case "support_4_mp":
return "mosin_nagant_mp";
case "qg_1_mp":
return "mosin_nagant_mp";
case "qg_2_mp":
return "ppsh_mp";
default:
return "mosin_nagant_mp";
}
break;
default:
switch(response)
{
case "troupe_1_mp":
return "m1garand_mp";
case "troupe_2_mp":
return "m1carbine_mp";
case "troupe_3_mp":
return "thompson_mp";
case "medic_1_mp":
return "m1carbine_mp";
case "medic_2_mp":
return "m1garand_mp";
case "support_1_mp":
return "springfield_mp";
case "support_2_mp":
return "bar_mp";
case "support_3_mp":
return "30cal_debout_mp";
case "support_4_mp":
return "m1garand_mp";
case "qg_1_mp":
return "m1garand_mp";
case "qg_2_mp":
return "thompson_mp";
default:
return "m1garand_mp";
}
break;
}
}
else if(self.pers["team"] == "axis")
{
switch(response)
{
case "troupe_1_mp":
return "kar98k_mp";
case "troupe_2_mp":
return "g43_mp";
case "troupe_3_mp":
return "mp40_mp";
case "medic_1_mp":
return "kar98k_mp";
case "medic_2_mp":
return "kar98k_mp";
case "support_1_mp":
return "kar98k_sniper_mp";
case "support_2_mp":
return "mp44_mp";
case "support_3_mp":
return "mg42_debout_mp";
case "support_4_mp":
return "kar98k_mp";
case "qg_1_mp":
return "kar98k_mp";
case "qg_2_mp":
return "mp40_mp";
default:
return "kar98k_mp";
}
}
}
limitesclasses()
{
while(1)
{
// On compte le nombre de joueurs avant tout.
nballies = 0;
nbaxis = 0;
allies_troupe_1 = 0;
allies_troupe_2 = 0;
allies_troupe_3 = 0;
allies_medic_1 = 0;
allies_medic_2 = 0;
allies_support_1 = 0;
allies_support_2 = 0;
allies_support_3 = 0;
allies_support_4 = 0;
allies_qg_1 = 0;
allies_qg_2 = 0;
axis_troupe_1 = 0;
axis_troupe_2 = 0;
axis_troupe_3 = 0;
axis_medic_1 = 0;
axis_medic_2 = 0;
axis_support_1 = 0;
axis_support_2 = 0;
axis_support_3 = 0;
axis_support_4 = 0;
axis_qg_1 = 0;
axis_qg_2 = 0;
nbjoueur = 0;
joueurs = getentarray("player", "classname");
for(i = 0; i < joueurs.size; i++)
{
nbjoueur++;
if(joueurs.pers["team"] == "allies")
{
nballies++;
switch(joueurs.classe_soldat)
{
case 0:
allies_support_3++;
default:
case 1:
allies_troupe_1++;
case 2:
allies_troupe_3++;
case 3:
allies_support_1++;
case 4:
allies_troupe_2++;
case 5:
allies_medic_2++;
case 6:
allies_medic_1++;
case 7:
allies_support_2++;
case 8:
allies_support_4++;
case 9:
allies_qg_1++;
case 10:
allies_qg_2++;
}
}
else
{
nbaxis++;
switch(joueurs.classe_soldat)
{
case 0:
axis_support_3++;
default:
case 1:
axis_troupe_1++;
case 2:
axis_troupe_3++;
case 3:
axis_support_1++;
case 4:
axis_troupe_2++;
case 5:
axis_medic_2++;
case 6:
axis_medic_1++;
case 7:
axis_support_2++;
case 8:
axis_support_4++;
case 9:
axis_qg_1++;
case 10:
axis_qg_2++;
}
}
}
thread enleverlimite("ui_allow_a_troupe_1");
thread enleverlimite("ui_allow_a_troupe_2");
thread enleverlimite("ui_allow_a_troupe_3");
thread enleverlimite("ui_allow_a_medic_1");
thread enleverlimite("ui_allow_a_medic_2");
thread enleverlimite("ui_allow_a_support_1");
thread enleverlimite("ui_allow_a_support_2");
thread enleverlimite("ui_allow_a_support_3");
thread enleverlimite("ui_allow_a_support_4");
thread enleverlimite("ui_allow_a_qg_2");
thread enleverlimite("ui_allow_a_qg_1");
thread enleverlimite("ui_allow_g_troupe_1");
thread enleverlimite("ui_allow_g_troupe_2");
thread enleverlimite("ui_allow_g_troupe_3");
thread enleverlimite("ui_allow_g_medic_1");
thread enleverlimite("ui_allow_g_medic_2");
thread enleverlimite("ui_allow_g_support_1");
thread enleverlimite("ui_allow_g_support_2");
thread enleverlimite("ui_allow_g_support_3");
thread enleverlimite("ui_allow_g_support_4");
thread enleverlimite("ui_allow_g_qg_2");
thread enleverlimite("ui_allow_g_qg_1");
// Maintenant qu'on a (enfin) tous les comptes, on peut commencer à voir pour les limites...
// Allies
// Troupe
if(allies_troupe_1 >= level.dro["a_limite_troupe_1"] && level.dro["a_limite_troupe_1"] != -1)
{
thread fairelimite("ui_allow_a_troupe_1");
}
if(allies_troupe_1 >= level.dro["a_limite_troupe_2"] && level.dro["a_limite_troupe_2"] != -1)
{
thread fairelimite("ui_allow_a_troupe_2");
}
if(allies_troupe_1 >= level.dro["a_limite_troupe_3"] && level.dro["a_limite_troupe_3"] != -1)
{
thread fairelimite("ui_allow_a_troupe_3");
}
// Medic
if(allies_troupe_1 >= level.dro["a_limite_medic_1"] && level.dro["a_limite_medic_1"] != -1)
{
thread fairelimite("ui_allow_a_medic_1");
}
if(allies_troupe_1 >= level.dro["a_limite_medic_2"] && level.dro["a_limite_medic_2"] != -1)
{
thread fairelimite("ui_allow_a_medic_2");
}
// Support
if(allies_troupe_1 >= level.dro["a_limite_support_1"] && level.dro["a_limite_support_1"] != -1)
{
thread fairelimite("ui_allow_a_support_1");
}
if(allies_troupe_1 >= level.dro["a_limite_support_2"] && level.dro["a_limite_support_2"] != -1)
{
thread fairelimite("ui_allow_a_support_2");
}
if(allies_troupe_1 >= level.dro["a_limite_support_3"] && level.dro["a_limite_support_3"] != -1)
{
thread fairelimite("ui_allow_a_support_3");
}
if(allies_troupe_1 >= level.dro["a_limite_support_4"] && level.dro["a_limite_support_4"] != -1)
{
thread fairelimite("ui_allow_a_support_4");
}
// QG
if(allies_troupe_1 >= level.dro["a_limite_qg_2"] && level.dro["a_limite_qg_2"] != -1)
{
thread fairelimite("ui_allow_a_qg_2");
}
if(allies_troupe_1 >= level.dro["a_limite_qg_1"] && level.dro["a_limite_qg_1"] != -1)
{
thread fairelimite("ui_allow_a_qg_1");
}
// Axe
// Troupe
if(allies_troupe_1 >= level.dro["g_limite_troupe_1"] && level.dro["g_limite_troupe_1"] != -1)
{
thread fairelimite("ui_allow_g_troupe_1");
}
if(allies_troupe_1 >= level.dro["g_limite_troupe_2"] && level.dro["g_limite_troupe_2"] != -1)
{
thread fairelimite("ui_allow_g_troupe_2");
}
if(allies_troupe_1 >= level.dro["g_limite_troupe_3"] && level.dro["g_limite_troupe_3"] != -1)
{
thread fairelimite("ui_allow_g_troupe_3");
}
// Medic
if(allies_troupe_1 >= level.dro["g_limite_medic_1"] && level.dro["g_limite_medic_1"] != -1)
{
thread fairelimite("ui_allow_g_medic_1");
}
if(allies_troupe_1 >= level.dro["g_limite_medic_2"] && level.dro["g_limite_medic_2"] != -1)
{
thread fairelimite("ui_allow_g_medic_2");
}
// Support
if(allies_troupe_1 >= level.dro["g_limite_support_1"] && level.dro["g_limite_support_1"] != -1)
{
thread fairelimite("ui_allow_g_support_1");
}
if(allies_troupe_1 >= level.dro["g_limite_support_2"] && level.dro["g_limite_support_2"] != -1)
{
thread fairelimite("ui_allow_g_support_2");
}
if(allies_troupe_1 >= level.dro["g_limite_support_3"] && level.dro["g_limite_support_3"] != -1)
{
thread fairelimite("ui_allow_g_support_3");
}
if(allies_troupe_1 >= level.dro["g_limite_support_4"] && level.dro["g_limite_support_4"] != -1)
{
thread fairelimite("ui_allow_g_support_4");
}
// QG
if(allies_troupe_1 >= level.dro["g_limite_qg_2"] && level.dro["g_limite_qg_2"] != -1)
{
thread fairelimite("ui_allow_g_qg_2");
}
if(allies_troupe_1 >= level.dro["g_limite_qg_1"] && level.dro["g_limite_qg_1"] != -1)
{
thread fairelimite("ui_allow_g_qg_1");
}
wait 5;
}
}
fairelimite(var)
{
setCvar(var, "2");
players = getentarray("player", "classname");
for(a=0;a<players.size;a++)
{
players[a] setClientCvar(var, "2");
}
}
enleverlimite(var)
{
setCvar(var, "1");
players = getentarray("player", "classname");
for(b=0;b<players.size;b++)
{
players setClientCvar(var, "1");
}
}
//------------------------------------------------
officier()
{
// Bon ok on a notre thread officier... On va tenter de gérer ça maintenant... :D
// Donc on va commencer par.. Euh bah bonne question...
self endon("killed_player");
while(1)
{
self.positiondefinie = false;
self waittill("binocular_enter");
self thread position_debut();
self thread position_fin();
self waittill("position_definie");
}
}
munitions()
{
// Voilà le thread pour le soutien munitions!
self endon("killed_player");
// On active le hud.
self.hudstat = newClientHudElem(self);
self.hudstat.horzAlign = "right";
self.hudstat.vertAlign = "top";
self.hudstat.x = -35;
self.hudstat.y = 265;
self.hudstat.archived = false;
self.hudstat setShader("box", 32, 32);
self.hudstat2 = newClientHudElem(self);
self.hudstat2.horzAlign = "right";
self.hudstat2.vertAlign = "top";
self.hudstat2.x = -43;
self.hudstat2.y = 271;
self.hudstat2.archived = false;
self.hudstat2.fontScale = 1.5;
self.hudstat2 setValue(level.dro["nombre_bandes"]);
self.hud_aide_r = newClientHudElem(self);
self.hud_aide_r.alignX = "center";
self.hud_aide_r.alignY = "top";
self.hud_aide_r.x = 320;
self.hud_aide_r.y = 280;
self.hud_aide_r.fontscale = 1.1;
self.hud_aide_r.alpha = 0.0;
self.hud_aide_r setText("DROCLASSES_MUNITIONS_ATTACKBUTTON_R");
self.hud_aide_r2 = newClientHudElem(self);
self.hud_aide_r2.alignX = "center";
self.hud_aide_r2.alignY = "top";
self.hud_aide_r2.x = 320;
self.hud_aide_r2.y = 240;
self.hud_aide_r2.fontscale = 1.0;
self.hud_aide_r2.alpha = 0.0;
self.hud_aide_r2 setShader("mg_rld", 38, 38);
self.nbbandes = level.dro["nombre_bandes"];
mg = undefined;
coords2 = undefined;
self setWeaponSlotWeapon("primaryb", "munitions_mp");
self setWeaponSlotClipAmmo("primaryb", 0);
self setWeaponSlotAmmo("primaryb", 0);
camp = "mg42";
if(self.pers["team"] == "allies") camp = "30cal";
while(1)
{
if(!(isDefined(mg)))
{
mgs = getentarray("misc_turret", "classname");
for(i=0;i<mgs.size;i++)
{
coords2 = (mgs.origin[0], mgs.origin[1], self.origin[2]);
if(distance(self.origin, coords2) < 60 && mgs.name != "no_deploy" && mgs.balles <= 0)
{
mg = mgs;
name = mg.name;
self.hud_aide_r2.alpha = 0.5;
self.hud_aide_r.alpha = 0.5;
break;
}
}
}
if(isDefined(mg) && self.nbbandes > 0 && distance(self.origin, coords2) < 60)
{
if(self getCurrentWeapon() == "munitions_mp" && distance(self.origin, coords2) < 60)
{
if(self AttackButtonPressed() && distance(self.origin, coords2) < 60)
{
if(mg.name == camp && distance(self.origin, coords2) < 60)
{
self disableWeapon();
self playsound(mg.name + "_reload");
wait 1.0;
self.nbbandes--;
self.hudstat2 setValue(self.nbbandes);
mg.balles = 150;
wait 4.0;
mg = undefined;
self.hud_aide_r2.alpha = 0;
self.hud_aide_r.alpha = 0;
self enableWeapon();
}
else
{
self iprintlnbold(&"DROCLASSESMG_PAS_BONNES_MUNI");
self.hud_aide_r2.alpha = 0;
self.hud_aide_r.alpha = 0;
}
}
self.hud_aide_r2.alpha = 0;
self.hud_aide_r.alpha = 0;
}
self.hud_aide_r2.alpha = 0;
self.hud_aide_r.alpha = 0;
}
wait .1;
}
}
medic(chef)
{
// Thread pour les medecin avec "chef" en "1" si c'est le médecin chef
self endon("killed_player");
old = undefined;
newhealth = undefined;
if(chef == 1)
{
band = level.dro["nombre_bandages"];
}
else
{
band = level.dro["nombre_bandages_aide"];
if(band == 0)
{
return;
}
}
self.hudstat = newClientHudElem(self);
self.hudstat.horzAlign = "right";
self.hudstat.vertAlign = "top";
self.hudstat.x = -35;
self.hudstat.y = 265;
self.hudstat.archived = false;
self.hudstat setShader("medic", 32, 32);
self.hudstat2 = newClientHudElem(self);
self.hudstat2.horzAlign = "right";
self.hudstat2.vertAlign = "top";
self.hudstat2.x = -43;
self.hudstat2.y = 271;
self.hudstat2.fontScale = 1.5;
self.hudstat2.archived = false;
self.hudstat2 setValue(band);
self.nbbanda = band;
self takeWeapon("medic_mp");
self setWeaponSlotWeapon("primaryb", "medic_mp");
self setWeaponSlotClipAmmo("primaryb", 0);
self setWeaponSlotAmmo("primaryb", 0);
self.hud_aide = newClientHudElem(self);
self.hud_aide.horzAlign = "left";
self.hud_aide.vertAlign = "top";
self.hud_aide.x = 250;
self.hud_aide.y = 279;
self.hud_aide.alpha = 0.0;
self.hud_aide.archived = false;
self.hud_aide setShader("black", 142, 14);
self.hud_aide_r2 = newClientHudElem(self);
self.hud_aide_r2.horzAlign = "left";
self.hud_aide_r2.vertAlign = "top";
self.hud_aide_r2.x = 260;
self.hud_aide_r2.y = 300;
self.hud_aide_r2.alpha = 0.0;
self.hud_aide_r2.archived = false;
self.hud_aide_r2.label = &"DROCLASSES_MEDIC_VIE_JOUEUR";
self.hud_aide_r2 setValue(100);
self.hud_aide_r = newClientHudElem(self);
self.hud_aide_r.horzAlign = "left";
self.hud_aide_r.vertAlign = "top";
self.hud_aide_r.x = 250;
self.hud_aide_r.y = 280;
self.hud_aide_r.alpha = 0.0;
self.hud_aide_r.archived = false;
self.hud_aide_r setShader("white", 140, 12);
while(1)
{
blesse = undefined;
while(!(isDefined(blesse)))
{
players = getentarray("player", "classname");
for(i=0;i<players.size;i++)
{
if(players != self)
{
if(distance(self.origin, players.origin)<70 && players.health < 100)
{
blesse = players;
break;
}
}
}
if(self.health < 100 && !(isDefined(blesse)))
{
blesse = self;
}
wait 0.1;
}
if(isDefined(blesse))
{
if(self getCurrentWeapon() == "medic_mp" && self.nbbanda >= 1 && distance(self.origin, blesse.origin)<70)
{
while(distance(self.origin, blesse.origin)<70 && self playerads() != 1)
{
wait 0.5;
}
if(self playerads() == 1 && distance(self.origin, blesse.origin)<70 && self getCurrentWeapon() == "medic_mp")
{
if(blesse != self)
{
blesse iprintlnbold(&"DROCLASSES_MEDIC_HELP_YOU");
self iprintlnbold(&"DROCLASSES_MEDIC_HELP", blesse.name);
}
else
self iprintlnbold(&"DROCLASSES_MEDIC_HELP_SELF");
old = blesse.health;
}
mort = false;
while(self playerads() == 1 && self getCurrentWeapon() == "medic_mp")
{
// self iprintln("medic");
self.hud_aide_r.alpha = 0.5;
self.hud_aide_r2.alpha = 0.5;
self.hud_aide.alpha = 0.5;
self.hud_aide_r setShader("white", int(1.4*blesse.health), 12);
self.hud_aide_r.color = (1.0-(blesse.health/100.0), (blesse.health/100.0), 0);
self.hud_aide_r2 setValue(blesse.health);
if(isAlive(blesse) && isAlive(self))
{
if(blesse != self && distance(self.origin, blesse.origin)>70)
{
newhealth = old;
blesse.health = old;
break;
}
if(blesse.health > 100) blesse.health = 100;
if(blesse.health >= 100) break;
health = blesse.health + 1;
blesse.health = health;
newhealth = health;
// HUD
self.hud_aide_r scaleOverTime(0.2, int(1.4*blesse.health), 12);
self.hud_aide_r.color = (1.0-(blesse.health/100.0), (blesse.health/100.0), 0);
wait 0.2;
}
else
{
mort = true;
break;
}
}
if(newhealth > old && !mort)
{
bandages = self.nbbanda;
self.nbbanda = bandages - 1;
self.hudstat2 setValue(self.nbbanda);
if(blesse != self)
{
blesse iprintlnbold(&"DROCLASSES_MEDIC_YOURE_OK");
self iprintlnbold(&"DROCLASSES_MEDIC_OK_SELF");
}
else
self iprintlnbold(&"DROCLASSES_MEDIC_OK_SELF");
self.hud_aide_r.alpha = 0.0;
self.hud_aide_r2.alpha = 0.0;
self.hud_aide.alpha = 0.0;
}
else
{
if(blesse != self && isAlive(blesse))
{
blesse iprintlnbold(&"DROCLASSES_MEDIC_YOURE_NOT_OK");
self iprintlnbold(&"DROCLASSES_MEDIC_YOURE_NOT_OK");
}
else
{
if(isAlive(self))
self iprintlnbold(&"DROCLASSES_MEDIC_NOT_OK_SELF");
}
self.hud_aide_r.alpha = 0.0;
self.hud_aide_r2.alpha = 0.0;
self.hud_aide.alpha = 0.0;
}
}
}
}
}
radio()
{
// Thread radioman.
// On ragarde d'abord si une position a été établie. Puis on lance l'animation et tout.
// Pour les allemands et les russes, le soldat pose une radio devant lui, et parle sur le micro posé au-dessus.
if(self.pers["team"] == "allies" && game["allies"] != "russian")
{
self thread radiousuk();
}
else
{
self thread radioother();
}
}
radiousuk()
{
self endon("killed_player");
self.hudstat = newClientHudElem(self);
self.hudstat.horzAlign = "right";
self.hudstat.vertAlign = "top";
self.hudstat.x = -35;
self.hudstat.y = 265;
self.hudstat.archived = false;
self.hudstat setShader("artillery", 32, 32);
self.hudstat.color = (.8,0,0);
self.hudstat2 = newClientHudElem(self);
self.hudstat2.horzAlign = "right";
self.hudstat2.vertAlign = "top";
self.hudstat2.x = -43;
self.hudstat2.y = 271;
self.hudstat2.archived = false;
self.hudstat2.fontScale = 1.5;
self.hudstat2 setValue(level.dro["nombre_arti"]);
self.nbarti = level.dro["nombre_arti"];
self takeWeapon("radio_mp");
self setWeaponSlotWeapon("primaryb", "radio_mp");
self setWeaponSlotClipAmmo("primaryb", 0);
self setWeaponSlotAmmo("primaryb", 0);
tps = level.dro["temps_salves"];
wait tps;
while(1)
{
wait 0.5;
if(self.nbarti >= 1)
{
self.hudstat.color = (1,1,1);
if(self getCurrentWeapon() == "radio_mp")
{
while(!(self attackButtonPressed()) && isDefined(level.dro["allies_position_arti"]) && self getCurrentWeapon() == "radio_mp")
{
if(self attackButtonPressed() && self getCurrentWeapon() == "radio_mp")
{
break;
}
wait 0.1;
}
if(isDefined(level.dro["allies_position_arti"]))
{
self.hudstat.color = (.8,0,0);
arti= self.nbarti;
self.nbarti = arti - 1;
self.hudstat2 setValue(self.nbarti);
team = self maps\mp\gametypes\_utiles::getTeam();
self playsound(team + "_radio_mission");
tps = radio_wait(team);
wait tps;
for(i=0;i<3;i++)
{
num = randomint(10);
self playsound(team + "_radio_" + num);
wait 0.6;
}
self playsound(team + "_radio_over");
wait 1;
self playsound(team + "_radio_ok");
wait 6;
thread maps\mp\gametypes\_artillerie::lancer(level.dro["allies_position_arti"]);
tps = level.dro["temps_salves"];
wait tps;
}
}
}
}
}
radioother()
{
self endon("killed_player");
self.hudstat = newClientHudElem(self);
self.hudstat.horzAlign = "right";
self.hudstat.vertAlign = "top";
self.hudstat.x = -35;
self.hudstat.y = 265;
self.hudstat.archived = false;
self.hudstat setShader("artillery", 32, 32);
self.hudstat.color = (.8,0,0);
self.hudstat2 = newClientHudElem(self);
self.hudstat2.horzAlign = "right";
self.hudstat2.vertAlign = "top";
self.hudstat2.x = -43;
self.hudstat2.y = 271;
self.hudstat2.archived = false;
self.hudstat2.fontScale = 1.5;
self.hudstat2 setValue(level.dro["nombre_arti"]);
self.hud_aide = newClientHudElem(self);
self.hud_aide.alpha = 0.0;
self.hud_aide setshader("objpoint_radio", 8, 8);
self.hud_aide.x = -10000;
self.hud_aide.y = -10000;
self.hud_aide.z = -10000;
self.hud_aide.archived = true;
self.hud_aide setwaypoint(false);
self.hud_aide_r = newClientHudElem(self);
self.hud_aide_r.alignX = "center";
self.hud_aide_r.alignY = "top";
self.hud_aide_r.x = 320;
self.hud_aide_r.y = 440;
self.hud_aide_r.fontscale = 1.0;
self.hud_aide_r.alpha = 0.0;
self.hud_aide_r setText(&"DROCLASSES_RADIO_AIM_KEY");
self.nbarti = level.dro["nombre_arti"];
camp = self.pers["team"];
self takeWeapon("radiog_mp");
self takeWeapon("no_radiog_mp");
if(isDefined(level.dro["radio_" + camp]))
{
self setWeaponSlotWeapon("primaryb", "radiog_mp");
}
else
{
self setWeaponSlotWeapon("primaryb", "no_radiog_mp");
}
self setWeaponSlotClipAmmo("primaryb", 0);
self setWeaponSlotAmmo("primaryb", 0);
while(1)
{
wait 0.05;
if(self.nbarti >= 1 && isDefined(level.dro["radio_" + camp]) && level.dro["radio_" + camp + "_ok"])
{
self.hudstat.color = (1,1,1);
if(self getCurrentWeapon() == "radiog_mp" && isDefined(level.dro[camp + "_position_arti"]))
{
while(isDefined(level.dro[camp + "_position_arti"]) && isDefined(level.dro["radio_" + camp]))
{
if(self attackButtonPressed() && self getCurrentWeapon() == "radiog_mp")
{
z1 = level.dro["radio_" + camp].origin;
z2 = (self.origin[0], self.origin[1], level.dro["radio_" + camp].origin[2]);
if(distance(z1,z2) < 45)
{
break;
}
}
wait 0.1;
}
if(isDefined(level.dro[camp + "_position_arti"]) && isDefined(level.dro["radio_" + camp]))
{
self.hudstat.color = (.8,0,0);
arti= self.nbarti;
self.nbarti = arti - 1;
self.hudstat2 setValue(self.nbarti);
team = self maps\mp\gametypes\_utiles::getTeam();
self playsound(team + "_radio_mission");
tps = radio_wait(team);
wait tps;
for(i=0;i<3;i++)
{
num = randomint(10);
self playsound(team + "_radio_" + num);
wait 0.6;
}
self playsound(team + "_radio_over");
wait 3;
level.dro["radio_" + camp] playsound(team + "_radio_ok");
thread maps\mp\gametypes\_artillerie::lancer(level.dro[camp + "_position_arti"]);
level.dro["radio_" + camp + "_ok"] = false;
}
}
}
else if(isDefined(level.dro["radio_" + camp]))
{
if(self getCurrentWeapon() == "radiog_mp")
{
if(self playerads() == 1 && self getCurrentWeapon() == "radiog_mp")
{
self disableWeapon();
z1 = level.dro["radio_" + camp].origin;
z2 = (self.origin[0], self.origin[1], level.dro["radio_" + camp].origin[2]);
if(distance(z1,z2) < 45)
{
level.dro["radio_" + camp] delete();
wait 3;
self setWeaponSlotWeapon("primaryb", "no_radiog_mp");
self setWeaponSlotClipAmmo("primaryb", 0);
self setWeaponSlotAmmo("primaryb", 0);
}
self enableWeapon();
}
}
}
if(!(isDefined(level.dro["radio_" + camp])))
{
if(self getCurrentWeapon() == "no_radiog_mp")
{
trace = self maps\mp\gametypes\_utiles::getVecteur();
if(distance(self.origin, trace["position"]) > 45)
{
self.hud_aide.alpha = 0.0;
self.hud_aide_r.alpha = 0.0;
}
else
{
self.hud_aide.alpha = 0.3;
self.hud_aide_r.alpha = 0.3;
}
self.hud_aide.x = trace["position"][0];
self.hud_aide.y = trace["position"][1];
self.hud_aide.z = trace["position"][2] + 5;
coords = (trace["position"][0], trace["position"][1], self.origin[2]);
if(self playerads() == 1 && distance(self.origin, coords) < 45)
{
self.hud_aide.alpha = 0.0;
self.hud_aide_r.alpha = 0.0;
self disableWeapon();
wait 0.5;
if(isDefined(trace["position"]) && distance(self.origin, coords) < 45)
{
self setWeaponSlotWeapon("primaryb", "radiog_mp");
self setWeaponSlotClipAmmo("primaryb", 0);
self setWeaponSlotAmmo("primaryb", 0);
wait 3;
color = "green";
if(camp == "allies") color = "grey";
level.dro["radio_" + camp] = spawn("script_model", trace["position"]);
level.dro["radio_" + camp] setModel("xmodel/military_german_fieldradio_"+ color);
level.dro["radio_" + camp] thread radioclock(color);
self.hud_aide.alpha = 0.0;
self.hud_aide_r.alpha = 0.0;
}
self enableWeapon();
}
}
}
}
}
mitrailleur()
{
// Thread Mitrailleur MG
self endon("killed_player");
self.balles = 150;
name = "30cal";
mg = undefined;
coords2 = (0,0,0);
self thread montrerpositionmg();
self.hud_aide_r = newClientHudElem(self);
self.hud_aide_r.alignX = "center";
self.hud_aide_r.alignY = "top";
self.hud_aide_r.x = 320;
self.hud_aide_r.y = 280;
self.hud_aide_r.fontscale = 0.8;
self.hud_aide_r.alpha = 0.0;
self.hud_aide_r setText(&"DROCLASSES_MITRAILLEUR_ATTACKBUTTON_R");
self.hud_aide_r2 = newClientHudElem(self);
self.hud_aide_r2.alignX = "center";
self.hud_aide_r2.alignY = "top";
self.hud_aide_r2.x = 320;
self.hud_aide_r2.y = 240;
self.hud_aide_r2.alpha = 0.0;
self.hud_aide_r2 setShader("mg_use", 38, 38);
while(isAlive(self))
{
if(self getCurrentWeapon() == "mg42_debout_mp" || self getCurrentWeapon() == "30cal_debout_mp")
{
self.hud_aide_r.alpha = 0.0;
self.hud_aide_r2.alpha = 0.0;
arme = self getCurrentWeapon();
trace = self maps\mp\gametypes\_utiles::getVecteur();
coords = (trace["position"][0], trace["position"][1], self.origin[2]);
if(self playerads() == 1 && distance(self.origin, coords) < 30 && !(self Bouge()))
{
self disableWeapon();
wait 0.5;
if(isDefined(trace["position"]) && distance(self.origin, coords) < 30)
{
self playsound("deploy_mg");
pistol = self getWeaponSlotWeapon("primaryb");
self setWeaponSlotWeapon("primary", "no_mg");
self setWeaponSlotClipAmmo("primary", 0);
self setWeaponSlotAmmo("primary", 0);
wait 0.005;
self switchToWeapon(pistol);
position = distance(self.origin, (self.origin[0], self.origin[1], trace["position"][2]));
type = "stand";
if(position < 35) type = "duck";
if(position < 10) type = "prone";
origin = trace["position"];
angles = self.angles;
typ = "30cal_" + type + "_mp";
model = "xmodel/weapon_30cal";
name = "30cal";
if(arme == "mg42_debout_mp")
{
typ = "mg42_bipod_" + type + "_mp";
model = "xmodel/weapon_mg42";
name = "mg42";
}
wait 0.8;
turret = spawnTurret("misc_turret", origin, typ);
turret setModel(model);
turret.name = name;
turret.typ = typ;
turret.angles = angles;
turret hide();
turret thread geremg();
turret SetTopArc(40);
turret SetBottomArc(45);
turret SetLeftArc(45);
turret SetRightArc(45);
turret.balles = self.balles;
turret show();
}
self enableWeapon();
}
}
else if(self getCurrentWeapon() == "no_mg")
{
mgs = getentarray("misc_turret", "classname");
for(i=0;i<mgs.size;i++)
{
coords2 = (mgs.origin[0], mgs.origin[1], self.origin[2]);
if(distance(self.origin, coords2) < 30 && mgs.name != "no_deploy")
{
mg = mgs;
name = mg.name;
self.hud_aide_r.alpha = 1.0;
self.hud_aide_r2.alpha = 1.0;
break;
}
}
if(isDefined(mg))
{
self.hud_aide_r.alpha = 1.0;
self.hud_aide_r2.alpha = 1.0;
}
else
{
self.hud_aide_r.alpha = 0.0;
self.hud_aide_r2.alpha = 0.0;
}
if(self playerads() == 1 && !(self Bouge()) && isDefined(mg))
{
if(distance(self.origin, coords2) < 30)
{
self disableWeapon();
if(distance(self.origin, coords2) < 30) self playsound("reprnd_mg");
wait 0.8;
mg hide();
nom = name + "_debout_mp";
self setWeaponSlotWeapon("primary", nom);
self setWeaponSlotClipAmmo("primary", 0);
self setWeaponSlotAmmo("primary", 0);
self.balles = mg.balles;
wait 0.005;
self switchToWeapon(nom);
mg delete();
mg = undefined;
}
else
{
mg = undefined;
}
wait 0.2;
self enableWeapon();
}
}
wait 0.1;
}
}
//---------------------------------------------------------
radio_wait(team)
{
switch(team)
{
case "us":
return 3.25;
case "br":
return 3.39;
default:
return 3.25;
}
}
radioclock(cl)
{
time = 0;
teps = level.dro["temps_salves"];
eq = "axis";
if(cl == "grey") eq = "allies";
level.dro["radio_" + eq + "_ok"] = false;
while(isDefined(self))
{
if(!(level.dro["radio_" + eq + "_ok"]))
{
wait 0.9;
time++;
}
if(time >= teps)
{
level.dro["radio_" + eq + "_ok"] = true;
time = 0;
}
wait 0.1;
}
}
montrerpositionmg()
{
self endon("player_killed");
self.hud_mitrailleur = newClientHudElem(self);
self.hud_mitrailleur.alpha = 0.3;
self.hud_mitrailleur setshader("objpoint_arty", 8, 8);
self.hud_mitrailleur.x = -10000;
self.hud_mitrailleur.y = -10000;
self.hud_mitrailleur.z = -10000;
self.hud_mitrailleur.archived = true;
self.hud_mitrailleur setwaypoint(false);
self.hud_aide = newClientHudElem(self);
self.hud_aide.alignX = "center";
self.hud_aide.alignY = "top";
self.hud_aide.x = 320;
self.hud_aide.y = 440;
self.hud_aide.fontscale = 1.0;
self.hud_aide.alpha = 0.0;
self.hud_aide setText(&"DROCLASSES_MITRAILLEUR_ATTACKBUTTON");
while(isAlive(self))
{
if(self getCurrentWeapon() == "30cal_debout_mp" || self getCurrentWeapon() == "mg42_debout_mp")
{
trace = self maps\mp\gametypes\_utiles::getVecteur();
coords = (trace["position"][0], trace["position"][1], self.origin[2]);
self.hud_mitrailleur.x = trace["position"][0];
self.hud_mitrailleur.y = trace["position"][1];
self.hud_mitrailleur.z = trace["position"][2] + 5;
if(distance(self.origin, coords) < 30)
{
self.hud_mitrailleur.alpha = 0.3;
}
else
{
self.hud_mitrailleur.alpha = 0.0;
}
self.hud_aide.alpha = 1.0;
}
else
{
self.hud_mitrailleur.alpha = 0.0;
self.hud_aide.alpha = 0.0;
}
wait 0.05;
}
}
position_debut()
{
self endon("binocular_exit");
self endon("killed_player");
self.hud_aide = newClientHudElem(self);
self.hud_aide.alignX = "center";
self.hud_aide.alignY = "top";
self.hud_aide.x = 320;
self.hud_aide.y = 440;
self.hud_aide.fontscale = 1.0;
self.hud_aide setText(&"DROCLASSES_OFFICIER_POSITION");
while(1)
{
if(self useButtonPressed())
{
self thread definirposition();
if(isdefined(self.hud_aide))
{
self.hud_aide setText(&"DROCLASSES_OFFICIER_OK");
}
else
{
self iprintlnbold(&"DROCLASSES_OFFICIER_OK");
}
return;
}
wait .1;
}
}
position_fin()
{
self endon("killed_player");
self waittill("binocular_exit");
if (isDefined(self.hud_aide))
self.hud_aide destroy();
if(!self.positiondefinie)
{
self notify("position_definie");
}
return;
}
definirposition()
{
camp = self.pers["team"];
trace = self maps\mp\gametypes\_utiles::getVecteur();
camp = self.pers["team"];
level.dro[camp + "_position_arti"] = trace["position"];
self.positiondefinie = true;
self notify("position_definie");
}
geremg()
{
self.butt = spawn("script_origin",(0,0,0));
self.butt linkto(self, "tag_butt",(0,0,0),(0,0,0));
wait 0.1;
self.rest = self.butt.origin;
self.rien = false;
while(isDefined(self))
{
wait 0.01;
if(self.balles <= 0)
{
origin = self.origin;
typ = self.typ;
name = self.name;
angles = self.angles;
balles = self.balles;
thread mgfoutue(name, origin, angles, typ, balles);
self delete();
return;
}
if(self.butt.origin != self.rest && self.balles > 0 && isDefined(self.origin))
{
// MG utilisée
joueurs = getentarray("player", "classname");
for(i=0;i<joueurs.size;i++)
{
joueur = joueurs;
if(!joueur isOnGround())
{
if(joueur AttackButtonPressed())
{
//joueur iprintln(self.balles);
if(self.name == "30cal")
{
// Calibre 30 > Cadence plus faible.
wait 0.05;
}
wait 0.04;
self.balles--;
self.balles--;
}
}
}
}
}
}
mgfoutue(name, origin, angles, typ, balles)
{
model = "xmodel/weapon_mg42";
if(name == "30cal") model = "xmodel/weapon_30cal";
origine = origin;
type = "no_" + typ;
newturret = spawnTurret("misc_turret", origine, type);
newturret.balles = balles;
newturret.name = name;
newturret setModel(model);
newturret.angles = angles;
newturret SetTopArc(40);
newturret SetBottomArc(45);
newturret SetLeftArc(45);
newturret SetRightArc(45);
newturret show();
while(isDefined(newturret))
{
if(newturret.balles <= 0)
{
wait 0.1;
}
else
{
break;
}
}
if(isDefined(newturret))
{
newturret delete();
turret = spawnTurret("misc_turret", origin, typ);
turret.balles = newturret.balles;
turret setModel(model);
turret.name = name;
turret.typ = typ;
turret.angles = angles;
turret show();
turret SetTopArc(40);
turret SetBottomArc(45);
turret SetLeftArc(45);
turret SetRightArc(45);
turret thread geremg();
}
}
Bouge()
{
origin = self.origin;
wait .1;
if(self.origin != origin)
{
return true;
}
else
{
return false;
}
}
-
Pour certaine répétition le Ctrl+C Ctrl+V a du chauffer :roll: :wink:
-
Admirez bien les gars, c'est du grand art !
Pour certaine répétition le Ctrl+C Ctrl+V a du chauffer
Ca c'est sur, de toute façon, on est obligé :
Moi par exemple pour les cibles fixes à Achnaccary, j'ai ce script :
//attribue 7 points au joueur qui touche la zone 7 de la cible fixe n°4 à la distance de 10 mètre
tcf1047()
{
while(1)
{
tcf1047 = getent ("tcf1047","targetname");
tcf1047 waittill ("trigger");
players = getentarray ("player","classname");
for (i=0 ; i<players.size; i++)
{
players[i] iprintln ("7 points");
players[i].score += 7;
}}}
Répété 160 fois. Et encore, je ne vous parles pas des cibles mobiles...
Il est évident qu'on ne va pas s'ammuser à réécrire 50 ou même 20 fois -si ce n'est plus- nos scripts qui peuvent être vraiment très longs quand un copié/collé bien fait peut nous faire économiser des heures de travails.
Attention toutefois, la moindre erreur dans le copié de départ et c'est le drame par la suite ...
-
Easy j'ai tout compris :lol: je confirme vous êtes fou :lol:
en tout cas, jolie travail ou trouvez vous ce courage ? :?:
-
Tout le courage? Dans l'espoir de le voir tourner sur notre serveur et sur d'autres.
En attendant j'ai fini la prochaine version du mod, avec (enfin) le bug des menus réglé, avec un système de limite qui marche :D
Update ce soir si tout va bien.
-
Ok et on commence quand les campagnes publicitaires ? :wink: Je me suis dit que faire une petite video qui montre et explique le DRO pourrait etre sympas ( mais quand je vois la complexitée de la chose... :roll: hein Quentric ? :wink: )
-
Juste pour dire FELICITATIONS !!! :wink: :D
-
Bravos à tous ceux qui ont participé de près ou de loin à ce mod !!!
Reste à le tester sous toutes ces coutures et à faire une bonne pub.
-
Bravo et Merci :wink:
-
Pareil pour moi avec mon script de porte !! :o
-
ouuuuuuaaaaaaaaaa c est super lieutenant merci et a toute l équipe aussi
-
Bon ben voilà, le mod a été mis à jour ce soir-même.
Principal bug réglé : celui des menus, et par conséquent celui des limites de classes. Tout est opérationnel et apparemment les erreurs massives qu'il y avait dans le fichiers de logs on elles aussi été réglées.
Par contre, toujours le bug de la grenade qu'on ramasse, et moi pas comprendre pourquoi, parce que chez moi ça marche nickel... Bref on verra bien si ça ne marche pas du tout... On trouvera une autre façon :D
Bon ben je crois que j'ai tout dit. Maintenant le mod est pleinement jouable et sans bug vraiment pénible. La pub va pouvoir commencer, Vingt-2 et moi avions pour idée de refaire la prise de Carentan version CoD 2, peut-être que ça se fera, peut-être que non, en tout cas on vous en reparlera, car on aura sans doute besoin de vous ;)
Votre Lieutenant,
-
Merci Lieutenant !!!!! 8) Et si on peut aider je pense que tout le monde sera pour !!!
-
Je suis volontaire pour vous réaliser la vidéo ! :wink: maintenant que l'on a tout compris avec Quentric :D ( mais j'ai pensé de faire plutot une video qui mettrait en valeur les cotés nouveau du DRO, par exemple l'artillerie, les docs ect..
EDIT: Je suis allé sur le serveur et j'ai constaté quelques bugs: Toujours le bug des armes mais en plus fort. On arrive plus à prendre le sniper, si on va en infantrie ou en support et que l'on veut changer en officier ca ne marche pas ( ou plutot mal parce que en revenant sur le menu ca marche) certaines armes s'affichent dans le menu d'autres pas. Sinon le ramassage de grenade fonctionne très bien. Juste un petit hic: quand on ramasse un fumi il se transforme en grenade.
-
Bizarre le Sniper j'ai réussi pour moi... Bref je vais re-re-regarder cela.
Et quelles sont les armes qu'on ne voit toujours pas? Parce que chez moi je les vois toutes, mais il se peut que j'ai eu un bug... :D
(PS : tu es sûr d'avoir dl la nouvelle version du DRO? :roll: )
Pour les fumi je ne peux rien faire, malheureusement :(
-
Vous avez pas de chance lieutenant, mais ovus avez sacréement bien bossé, et il super le D.R.O. Mieux que le GFM.
-
Pour les grenades, c'est complètement réglé. Supprimez votre fichier zz_dro_beta.iwd de votre dossier /dro et puis re-téléchargez-le sur le serveur, et ça devrait être bon ;)
Pour les limites, j'avais oublié une condition. J'ai modifié ça à l'instant.
Bref normalement le D.R.O. est suffisamment jouable pour rester sur le serveur.
Je bosse actuellement sur une mise à jour du SD, histoire qu'il marche ;)
-
Merci lieutenant! :wink:
-
Merci Lieutenant.
-
Merci Lieutenant (http://www.jeuxvideo.com/smileys/1.gif)
edit : merde moi ça le fait pas...
-
En tout cas super Lieutnant, je suis surtout tombé amoureux de la facon dont on tien son arme lorsqu'on cour, c'est vraiment bien réalisé !!
Mais la petite question est de savoir si vous allez laisser la possibilitée de prendre 2 armes en meme temps ??
Sinon chapeau :wink: