Script Error

Have questions about CoD/UO mapping that aren't covered in the tutorials section? Post here!

Moderator: Core Staff

Post Reply
Lethal323

Script Error

Post by Lethal323 » June 20th, 2007, 11:25 pm

Anybody see anything wrong with this? Im getting a Bad Syntax Error Line 102


This is line 102,103

Code: Select all

range1_target waittill ("damage", idamage);
if(idamage > 50)


This is the whole script...

Code: Select all

main()
{
thread training_onspawn();
thread start_gates();
thread posters();
}
training_onspawn()
{
   trig = getent("training_spawn_remove","targetname");

   for(;;)
   {
      trig waittill("trigger", other);
      self.sound_speaker = spawn("script_model");
      self.sound_speaker enablelinkto();
      self.sound_speaker linkto(self);
      other thread training_onPlayerSpawned();
      wait 0.05;
   }
}

training_onPlayerSpawned()
{
      self takeAllWeapons();
      wait 0.05;
}
start_gates()
{
gateleft = getent ("training_spawn_gate_left", "targetname");
gateright = getent ("training_spawn_gate_right", "targetname");
triggate = getent ("training_spawn_gate_trigger", "targetname");
speaker = getent ("training_spawn_gate_speaker","targetname");
while (1)
{
triggate waittill ("trigger");
gateleft rotateyaw (90, 1, 0.3, 0);
gateright rotateyaw (-90, 1, 0.3, 0);
speaker playsound("gate_open");
gateright waittill ("rotatedone");
gateleft waittill ("rotatedone");
wait (2);
gateleft rotateyaw (-90, 1, 0.3, 0);
gateright rotateyaw (90, 1, 0.3, 0);
speaker playsound("gate_close");
gateright waittill ("rotatedone");
gateleft waittill ("rotatedone");
}
}
posters()
{
poster1_trig = getent ("training_poster1_trigger","targetname");
poster2_trig = getent ("training_poster2_trigger","targetname");
poster3_trig = getent ("training_poster3_trigger","targetname");
poster4_trig = getent ("training_poster4_trigger","targetname");
main_gate = getent ("training_weapons_gate_trigger","targetname");
main_gate_left = getent ("training_weapons_gate_left","targetname");
main_gate_right = getent ("training_weapons_gate_right","targetname");
speaker = getent ("training_spawn_gate_speaker","targetname");
range1_target = getent ("training_target_range_1","targetname");
range1_gate_trigger = getent ("training_rifle_gate_trigger","targetname");
range1_gate_right = getent ("training_rifle_gate_right","targetname");
range1_gate_left = getent ("training_rifle_gate_left","targetname");
range2_target = getent ("training_target_range_2","targetname");
range2_gate_trigger = getent ("training_sniper_gate_trigger","targetname");
range2_gate_right = getent ("training_sniper_gate_right","targetname");
range2_gate_left = getent ("training_sniper_gate_left","targetname");
range3_target = getent ("training_target_range_3","targetname");
range3_gate_trigger = getent ("training_panzer_gate_trigger","targetname");
range3_gate_right = getent ("training_panzer_gate_right","targetname");
range3_gate_left = getent ("training_panzer_gate_left","targetname");
range4_target = getent ("training_target_range_4","targetname");
range4_gate_trigger = getent ("training_grenade_gate_trigger","targetname");
range4_gate_right = getent ("training_grenade_gate_right","targetname");
range4_gate_left = getent ("training_grenade_gate_left","targetname");
while(1)
{
poster1_trig waittill ("trigger", user);
user iprintln ("^1Next Poster...");
poster2_trig waittill ("trigger", user);
user iprintln ("^1Next Poster...");
poster3_trig waittill ("trigger", user);
user iprintln ("^1Next Poster...");
poster4_trig waittill ("trigger", user);
user iprintln ("^2Go Through Gate...");
main_gate waittill ("trigger");
main_gate_left rotateyaw (90, 1, 0.3, 0);
main_gate_right rotateyaw (-90, 1, 0.3, 0);
speaker playsound("gate_open");
main_gate_right waittill ("rotatedone");
wait (2);
main_gate_left rotateyaw (-90, 1, 0.3, 0);
main_gate_right rotateyaw (90, 1, 0.3, 0);
speaker playsound("gate_close");
main_gate_right waittill ("rotatedone");
{
range1_gate_trigger waittill ("trigger", user);
user iprintlnbold ("^2Shoot Target 10 Times");
{
range1_target waittill ("damage", idamage);
if(idamage > 50)
user iprintln ("^19 More Times...")
range1_target waittill ("damage", idamage);
if(idamage > 10)
user iprintln ("^18 More Times...")
range1_target waittill ("damage", idamage);
if(idamage > 10)
user iprintln ("^17 More Times...")
range1_target waittill ("damage", idamage);
if(idamage > 10)
user iprintln ("^16 More Times...")
range1_target waittill ("damage", idamage);
if(idamage > 10)
user iprintln ("^15 More Times...")
range1_target waittill ("damage", idamage);
if(idamage > 10)
user iprintln ("^14 More Times...")
range1_target waittill ("damage", idamage);
if(idamage > 10)
user iprintln ("^13 More Times...")
range1_target waittill ("damage", idamage);
if(idamage > 10)
user iprintln ("^12 More Times...")
range1_target waittill ("damage", idamage);
if(idamage > 10)
user iprintln ("^11 More Time...")
range1_target waittill ("damage", idamage);
if(idamage > 10)
{
user iprintlnbold ("^2Proceed To Next Area...")
}
}
}
}
}

User avatar
Drofder2004
Core Staff
Core Staff
Posts: 13315
Joined: April 13th, 2005, 8:22 pm
Location: UK, London

Post by Drofder2004 » June 21st, 2007, 12:28 am

You layout is wrong...

You cannot simply do { and } without a function in use...

For exmaple, look at line 101

You have opened { for no reason

Plus you missed out on lots of ';'s

This is what the code should look like if we currently ignore the next problem I will point out...

Code: Select all

posters()
{
   poster1_trig = getent ("training_poster1_trigger","targetname");
   poster2_trig = getent ("training_poster2_trigger","targetname");
   poster3_trig = getent ("training_poster3_trigger","targetname");
   poster4_trig = getent ("training_poster4_trigger","targetname");
   main_gate = getent ("training_weapons_gate_trigger","targetname");
   main_gate_left = getent ("training_weapons_gate_left","targetname");
   main_gate_right = getent ("training_weapons_gate_right","targetname");
   speaker = getent ("training_spawn_gate_speaker","targetname");
   range1_target = getent ("training_target_range_1","targetname");
   range1_gate_trigger = getent ("training_rifle_gate_trigger","targetname");
   range1_gate_right = getent ("training_rifle_gate_right","targetname");
   range1_gate_left = getent ("training_rifle_gate_left","targetname");
   range2_target = getent ("training_target_range_2","targetname");
   range2_gate_trigger = getent ("training_sniper_gate_trigger","targetname");
   range2_gate_right = getent ("training_sniper_gate_right","targetname");
   range2_gate_left = getent ("training_sniper_gate_left","targetname");
   range3_target = getent ("training_target_range_3","targetname");
   range3_gate_trigger = getent ("training_panzer_gate_trigger","targetname");
   range3_gate_right = getent ("training_panzer_gate_right","targetname");
   range3_gate_left = getent ("training_panzer_gate_left","targetname");
   range4_target = getent ("training_target_range_4","targetname");
   range4_gate_trigger = getent ("training_grenade_gate_trigger","targetname");
   range4_gate_right = getent ("training_grenade_gate_right","targetname");
   range4_gate_left = getent ("training_grenade_gate_left","targetname");

   while(1)
   {
      poster1_trig waittill ("trigger", user);
      user iprintln ("^1Next Poster...");

      poster2_trig waittill ("trigger", user);
      user iprintln ("^1Next Poster...");

      poster3_trig waittill ("trigger", user);
      user iprintln ("^1Next Poster...");

      poster4_trig waittill ("trigger", user);
      user iprintln ("^2Go Through Gate...");

      main_gate waittill ("trigger");
      main_gate_left rotateyaw (90, 1, 0.3, 0);
      main_gate_right rotateyaw (-90, 1, 0.3, 0);
      speaker playsound("gate_open");
      main_gate_right waittill ("rotatedone");
      wait (2);

      main_gate_left rotateyaw (-90, 1, 0.3, 0);
      main_gate_right rotateyaw (90, 1, 0.3, 0);
      speaker playsound("gate_close");
      main_gate_right waittill ("rotatedone");

////////////////////////////////////////////////////////////
      range1_gate_trigger waittill ("trigger", user);
      user iprintlnbold ("^2Shoot Target 10 Times");

      range1_target waittill ("damage", idamage);
      if(idamage > 50)
         user iprintln ("^19 More Times...");

      range1_target waittill ("damage", idamage);
         if(idamage > 10)
      user iprintln ("^18 More Times...");

      range1_target waittill ("damage", idamage);
      if(idamage > 10)
         user iprintln ("^17 More Times...");

      range1_target waittill ("damage", idamage);
      if(idamage > 10)
         user iprintln ("^16 More Times...")

      range1_target waittill ("damage", idamage);
      if(idamage > 10)
         user iprintln ("^15 More Times...");

      range1_target waittill ("damage", idamage);
      if(idamage > 10)
         user iprintln ("^14 More Times...")

      range1_target waittill ("damage", idamage);
      if(idamage > 10)
         user iprintln ("^13 More Times...");

      range1_target waittill ("damage", idamage);
      if(idamage > 10)
         user iprintln ("^12 More Times...");

      range1_target waittill ("damage", idamage);
      if(idamage > 10)
         user iprintln ("^11 More Time...");

      range1_target waittill ("damage", idamage);
      if(idamage > 10)
         user iprintlnbold ("^2Proceed To Next Area...");
////////////////////////////////////////
   }
}
Ok, the second problem is highlighted above (between the comment lines [//]).

The problem with above code is not obvious at first, but when thought about it is...this is how your code currently works...


- Hit target 1
- If damage is above 50 print message
- Hit target 2
- etc, etc


The damage will not stop the code, it will only stop the message being printed, the code will continue if the damage is 1 or 1000.

This is a quicker and easier way of doing what you want (delete everything in between the //'s and replace with the following)

Code: Select all

   range1_gate_trigger waittill ("trigger", user);
   user iprintlnbold ("^2Shoot Target 10 Times");
   i = 0;

   for(;;)
   {
      range1_target waittill ("damage", idamage);
      if(idamage > 10)
      {
         i++;

         if(i < 10)
            user iprintln ("^1" + (10 - i) + " More Times...");
         else
         {
            user iprintlnbold ("^2Proceed To Next Area...");
            break;
         }
      }
   }
Try that and see how it goes. Report back errors...
Image
Virgin Media 20Mb Broadband:
"Perfect for families going online at the same time, downloading movies, online gaming and more."
Borked internet since: 22-07-2010

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest