Author Topic: Autre question solo  (Read 438 times)

BushMan

  • Tailleur de maps (expérimenté)
  • Posts: 614
    • http://
Autre question solo
« on: December 14, 2005, 02:12:08 PM »
Voilà je tente de forcer un AI à lancer une grenade au moment ou le joueur passe dans un trigger. J'ai réussi à lui faire lancer grace à un script de COD 2, mais la grenade tombe à ses pieds et l'explosion elle, se fais au bon endroit, soit ; grenade_land_pos dans mon script. Voici le script. La seule ligne qui me pose problème, c'est celle en rouge. si j'la retire, la grenade tombe à ses pieds, si je la laisse en place, ça provoque une erreure "unknow builtin method".

main()
{

   maps\_load::main();
   maps\grenade_anim::main();

   precacheModel ("xmodel/projectile_USGrenade");

   level._effect["grenade"] = loadfx ("fx/explosions/grenade1.efx");

   level.player takeallweapons();
   level.player giveWeapon("panzerfaust");
   level.player giveWeapon("thompson");
   level.player giveWeapon("colt");
   level.player giveWeapon("fraggrenade");
   level.player switchToWeapon("thompson");

   grenadeboy = getent ("grenadeguy","targetname");
   thread grenade_sequence (grenadeboy);

}

grenade_sequence (grenadeboy)
{
   
   //wait for player to get close
   trig = getent("grenade_trigger","targetname");
   trig waittill ("trigger");
   
   node = getnode ("grenadeguy_node","targetname");
   grenadeboy.goalradius = 2;
   grenadeboy setgoalnode (node);
   grenadeboy waittill ("goal");

   //get the grenade_land_pos
   grenade_land_ent = getent (node.target,"targetname");
   grenade_land_pos = grenade_land_ent.origin;

   grenadeboy.animname = "grenadeboy";
   guy[0] = grenadeboy;

   grenadeboy playsound ("grenade_pickup");
   grenadeboy thread maps\_anim::anim_single (guy,"launch", undefined, node);
   grenadeboy thread animscripts\shared::donotetracks ("single anim");
   grenadeboy waittillmatch ("single anim", "fire");

   //throw the grenade
   nadeStartOrg = grenadeboy getTagOrigin ("tag_weapon_right");
   throwDist = distance (grenadeboy.origin, grenade_land_pos);
   fuseTime = (3);
   throwAngles = VectorToAngles ( (grenade_land_pos + (0,0,400)) - grenadeboy.origin );
   forward = anglestoforward (throwAngles);
   forward = vector_scale (forward, throwDist * 1.2);
   grenade = spawn ("script_model", nadeStartOrg);
   grenade setModel ("xmodel/projectile_USGrenade");
   grenade movegravity ( forward, fuseTime );
   grenade thread scripted_event_grenade_explode (fuseTime, grenade_land_pos);
   wait 0.5;
}

scripted_event_grenade_explode (fuseTime, grenade_land_pos)
{
   wait fuseTime;
   self delete();
   playfx (level._effect["grenade"], grenade_land_pos);
   thread playsoundinspace ("grenade_explode_wood", grenade_land_pos);
   radiusdamage (grenade_land_pos, 256, 500, 500);

}

playSoundinSpace (alias, origin)
{

   org = spawn ("script_origin",(0,0,1));
   org.origin = origin;
   org playsound (alias, "sounddone");
   org waittill ("sounddone");
   org delete();

}

Qqu'un peut me corriger cette ligne?
BushMan[/b][/size]

Le site de BushMan

"Seules deux choses sont infinies : l'univers et la bêtise humaine. Encore que je ne suis pas sûr pour l'univers."
-- Albert Einstein

Tropheus

  • Legomaniaque
  • Posts: 1432
    • http://tropheus.tropheus.free.fr
Autre question solo
« Reply #1 on: December 14, 2005, 03:20:36 PM »
dans karkov2 tu as qqchose comme ça...

far_pos = tag_origin + maps\_utility_gmi::vectorScale(forward, dist);

où vector scale est appelé comme cela vectorscale sans "_".

++
Troph

 




BushMan

  • Tailleur de maps (expérimenté)
  • Posts: 614
    • http://
Autre question solo
« Reply #2 on: December 14, 2005, 03:34:35 PM »
T'as tout bon Trophinet, t'as résolu mon problème, la ligne magique c'est :
forward = maps\_utility::vectorScale (forward, throwDist);

Je cherchais ou j'avais déjà vu ce "vectorScale". Je devrais en faire un tuto. On sais jamais, ça peut servir à qqu'un d'autre.
« Last Edit: December 14, 2005, 03:53:03 PM by BushMan »
BushMan[/b][/size]

Le site de BushMan

"Seules deux choses sont infinies : l'univers et la bêtise humaine. Encore que je ne suis pas sûr pour l'univers."
-- Albert Einstein

Quentin

  • Bleusaille
  • Posts: 33
Autre question solo
« Reply #3 on: December 14, 2005, 03:43:19 PM »
Tu fais marcher ce srcipt sous CODUO je suppose ?  hummm  

BushMan

  • Tailleur de maps (expérimenté)
  • Posts: 614
    • http://
Autre question solo
« Reply #4 on: December 14, 2005, 03:51:33 PM »
Oui les scripts sont identiques. Enfin je dis ça mais j'ai pas vérifié, je n'ai même pas COD2 encore. J'attend de voir si le Père-Noël... de fois que!

Mais pour les qques scripts que j'ai mis la main dessus, tout semble plus ou moin identique.
BushMan[/b][/size]

Le site de BushMan

"Seules deux choses sont infinies : l'univers et la bêtise humaine. Encore que je ne suis pas sûr pour l'univers."
-- Albert Einstein

Quentin

  • Bleusaille
  • Posts: 33
Autre question solo
« Reply #5 on: December 14, 2005, 04:09:20 PM »
Ca s'annonce plutot bien alors. Si je comprends bien, la transition CODUO (ou COD) vers COD2 se fera sans trop de difficulté du point de vue scripting....  :lalala  

Tropheus

  • Legomaniaque
  • Posts: 1432
    • http://tropheus.tropheus.free.fr
Autre question solo
« Reply #6 on: December 14, 2005, 06:09:19 PM »
Quote
T'as tout bon Trophinet.
Bien sur t'en doutais encore ?

++

Troph




lucyfers

  • Tailleur de maps (expérimenté)
  • Posts: 860
    • http://
Autre question solo
« Reply #7 on: December 14, 2005, 06:49:56 PM »
Quote
Bien sur t'en doutais encore ?

++

Troph
le ventar cette Trophinette    :lol:  :lol:  :lol: