Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Saerens.
Inscrit le: 18 Nov 2006 Messages: 318 Localisation: ile de france 77
|
Posté le: Dim Mar 11, 2007 8:43 pm Sujet du message: |
|
|
Ca dechire grave Bravo a toute l equipe _________________ Pastis par temps bleu, pastis délicieux |
|
Revenir en haut de page |
|
|
Gautier Capitaine de Corvette
Inscrit le: 27 Avr 2006 Messages: 1227
|
Posté le: Lun Mar 12, 2007 9:29 pm Sujet du message: |
|
|
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
Citation: |
// ---------------------------------------------
// 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[i].pers["team"] == "allies")
{
nballies++;
switch(joueurs[i].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[i].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[b] setClientCvar(var, "1");
}
}
//------------------------------------------------
officier()
{
// Bon ok on a notre thread officier... On va tenter de gérer ça maintenant...
// 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, 3;
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[i].origin[0], mgs[i].origin[1], self.origin[2]);
if(distance(self.origin, coords2) < 60 && mgs[i].name != "no_deploy" && mgs[i].balles <= 0)
{
mg = mgs[i];
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[i] != self)
{
if(distance(self.origin, players[i].origin)<70 && players[i].health < 100)
{
blesse = players[i];
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, ;
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, 3;
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[i].origin[0], mgs[i].origin[1], self.origin[2]);
if(distance(self.origin, coords2) < 30 && mgs[i].name != "no_deploy")
{
mg = mgs[i];
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, ;
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[i];
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;
}
}
|
_________________
|
|
Revenir en haut de page |
|
|
Yakov 2e RCP
Inscrit le: 02 Mai 2006 Messages: 544 Localisation: Belgique
|
Posté le: Lun Mar 12, 2007 9:40 pm Sujet du message: |
|
|
Pour certaine répétition le Ctrl+C Ctrl+V a du chauffer _________________ |
|
Revenir en haut de page |
|
|
Lion Membre Honoraire
Inscrit le: 04 Aoû 2006 Messages: 838
|
Posté le: Lun Mar 12, 2007 11:00 pm Sujet du message: |
|
|
Admirez bien les gars, c'est du grand art !
Citation: |
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 :
Code: |
//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 ... |
|
Revenir en haut de page |
|
|
Danson.
Inscrit le: 01 Mar 2007 Messages: 384 Localisation: Paris ( 92 )
|
Posté le: Mar Mar 13, 2007 7:47 am Sujet du message: |
|
|
Easy j'ai tout compris je confirme vous êtes fou
en tout cas, jolie travail ou trouvez vous ce courage ? _________________
"Dans les temps difficiles pour la patrie, ses fils doivent aller l'aider" |
|
Revenir en haut de page |
|
|
Gautier Capitaine de Corvette
Inscrit le: 27 Avr 2006 Messages: 1227
|
Posté le: Mar Mar 13, 2007 8:17 am Sujet du message: |
|
|
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
Update ce soir si tout va bien. _________________
|
|
Revenir en haut de page |
|
|
Flesch. Membre Honoraire
Inscrit le: 01 Déc 2006 Messages: 873 Localisation: Lille
|
Posté le: Mar Mar 13, 2007 10:44 am Sujet du message: |
|
|
Ok et on commence quand les campagnes publicitaires ? 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... hein Quentric ? ) _________________
|
|
Revenir en haut de page |
|
|
Lamy 2e RCP
Inscrit le: 28 Avr 2006 Messages: 259 Localisation: Reims - Marne- France
|
Posté le: Mar Mar 13, 2007 10:58 am Sujet du message: |
|
|
Juste pour dire FELICITATIONS !!! _________________
|
|
Revenir en haut de page |
|
|
Kermarec Membre Honoraire
Inscrit le: 28 Avr 2006 Messages: 222 Localisation: Le Havre
|
Posté le: Mar Mar 13, 2007 1:43 pm Sujet du message: |
|
|
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. _________________ Toutes les bonnes choses ont une fin.... malheureusement ! |
|
Revenir en haut de page |
|
|
Le Goff. 2e RCP
Inscrit le: 09 Mai 2006 Messages: 293 Localisation: Brest Pen ar bed
|
Posté le: Mar Mar 13, 2007 5:47 pm Sujet du message: |
|
|
Bravo et Merci |
|
Revenir en haut de page |
|
|
Bougrain Membre Honoraire
Inscrit le: 06 Mai 2006 Messages: 383 Localisation: Reims-Marne
|
Posté le: Mar Mar 13, 2007 7:02 pm Sujet du message: |
|
|
Pareil pour moi avec mon script de porte !! _________________
SlasH PoWaAaAaAaAaAaA ! |
|
Revenir en haut de page |
|
|
Laventure2
Inscrit le: 21 Sep 2006 Messages: 12
|
Posté le: Mar Mar 13, 2007 7:32 pm Sujet du message: |
|
|
ouuuuuuaaaaaaaaaa c est super lieutenant merci et a toute l équipe aussi |
|
Revenir en haut de page |
|
|
Gautier Capitaine de Corvette
Inscrit le: 27 Avr 2006 Messages: 1227
|
Posté le: Mar Mar 13, 2007 10:18 pm Sujet du message: |
|
|
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
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, _________________
|
|
Revenir en haut de page |
|
|
Le Floch.
Inscrit le: 23 Mai 2006 Messages: 1151 Localisation: Naoned (Nantes 44)
|
Posté le: Mer Mar 14, 2007 8:17 am Sujet du message: |
|
|
Merci Lieutenant !!!!! Et si on peut aider je pense que tout le monde sera pour !!! _________________
"Blessent mon coeur d'une langueur monotone."
Troop 8 !!!!!!!!!!
http://seek-love.skyrock.com/ |
|
Revenir en haut de page |
|
|
Flesch. Membre Honoraire
Inscrit le: 01 Déc 2006 Messages: 873 Localisation: Lille
|
Posté le: Mer Mar 14, 2007 11:46 am Sujet du message: |
|
|
Je suis volontaire pour vous réaliser la vidéo ! maintenant que l'on a tout compris avec Quentric ( 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. _________________
|
|
Revenir en haut de page |
|
|
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
|