Skrypt FF

Rozmowy na tematy związane z modami do Emergency 4.

Skrypt FF

Postautor: DebolStrazak » 05 lis 2014, 20:09

Siemka mógłby ktoś mi powiedzieć co pozmieniać w tych skryptach i co edytować ? Wzorowałem się na pewnym modzie ale niby zrobiłem tak jak w nim ale nic :( http://emergency-forum.de/index.php?pag ... tem&id=508

-- 05 lis 2014, 20:09 --

Możecie mi powiedzieć dlaczego nie chcą przybiegać ochotnicy do wyznaczonego miejsca ?

Tutaj macie skrypt, który edytowałem. Jak macie jakieś uwagi lub coś źle zrobiłem napiszcie tutaj :)

Kod: Zaznacz cały
/* *********************************************************************************
   **** Freiwillige Feuerwehr - Alarmscript                                    ****
   **** Lässt freiwillige Feuerwehrleute zum Gerätehaus rennen bzw. fahren. Da- ****
   **** raufhin müssen die Fahrzeuge vom Spieler besetzt und zur Einsatz-      ****
   **** stelle geschickt werden.                                               ****
   *********************************************************************************
   **** Special THX an lennox für die Komplettüberarbeitung                    ****
   *********************************************************************************
   **** Copyright 2009 by David Färber | Nutzung frei mit Readme Eintrag       ****
   **** Dieser Kommentarblock darf nicht entfernt oder geändert werden!        ****
   ********************************************************************************* */

// Namen der virtuellen Objekte, wo die Privat-PKW erstellt werden
// Weiter unten im Script werden diese Definierungen verwendet.

const char *STR_VObjVehicle1Start = "vehicle1_vo";
const char *STR_VObjVehicle2Start = "vehicle2_vo";
const char *STR_VObjVehicle3Start = "vehicle3_vo";
const char *STR_VObjVehicle4Start = "vehicle4_vo";

// Name des virtuellen Objektes, wo die Privat-PKW geparkt werden

const char *STR_VObjVehicleTarget = "vehicle_target";

// An diesen Stellen werden die Feuerwehrleute erstellt.
// Hier müssen die Namen der virtuellen Objekte angegeben werden.

const char *STR_VObjPerson1Start = "fw1_vo";
const char *STR_VObjPerson2Start = "fw2_vo";
const char *STR_VObjPerson3Start = "fw3_vo";
const char *STR_VObjPerson4Start = "fw4_vo";
const char *STR_VObjPerson5Start = "fw5_vo";
const char *STR_VObjPerson6Start = "fw6_vo";
const char *STR_VObjPerson7Start = "fw7_vo";
const char *STR_VObjPerson8Start = "fw8_vo";
const char *STR_VObjPerson9Start = "fw9_vo";
const char *STR_VObjPerson10Start = "fw10_vo";
const char *STR_VObjPerson11Start = "fw11_vo";

// Hier laufen die Personen hin.

const char *STR_VObjPersonsTarget = "zbiórka";

// Prototypes der Personen und Fahrzeuge.
// Die Personen entsprechen Original-Em4 Pfaden & müssen nicht geändert werden
// Die Fahrzeug-Pfade müssen geändert werden.

const char *STR_ProtoPerson1 = "mod:Prototypes/Persons/Feuerwehr Hammerstadt/Civil_1.e4p";
const char *STR_ProtoPerson2 = "mod:Prototypes/Persons/Feuerwehr Hammerstadt/Civil_2.e4p";
const char *STR_ProtoPerson3 = "mod:Prototypes/Persons/Feuerwehr Hammerstadt/Civil_3.e4p";
const char *STR_ProtoPerson4 = "mod:Prototypes/Persons/Feuerwehr Hammerstadt/Civil_4.e4p";
const char *STR_ProtoPerson5 = "mod:Prototypes/Persons/Feuerwehr Hammerstadt/Civil_5.e4p";
const char *STR_ProtoPerson6 = "mod:Prototypes/Persons/Feuerwehr Hammerstadt/Civil_6.e4p";
const char *STR_ProtoPerson7 = "mod:Prototypes/Persons/Feuerwehr Hammerstadt/Civil_7.e4p";
const char *STR_ProtoVehicle1 = "mod:Prototypes/Vehicles/Cywilne/126p83.e4p";
const char *STR_ProtoVehicle2 = "mod:Prototypes/Vehicles/Cywilne/126p83.e4p";
const char *STR_ProtoVehicle3 = "mod:Prototypes/Vehicles/Cywilne/PrimerP10.e4p";
const char *STR_ProtoVehicle4 = "mod:Prototypes/Vehicles/Cywilne/PrimerP10.e4p";

object Alarm_FF : CommandScript  // Name des Scriptes.
{                                  // PCmd steht für Person bound Comandscript
   Alarm_FF()                  // Name kann beliebig geändert werden.
   {
      SetCursor("install");
      SetIcon("install"); 
   }

   bool CheckTarget(GameObject *Caller, Actor *Target, int childID)
   {
       return true;
   }

   void PushActions(GameObject *Caller, Actor *Target, int childID)
   {
      // In den folgenden Zeilen wird geprüft, ob die VO's vorhanden sind.
      // Wenn oben an den Definitionen grundlegendes geändert wurde, muss hier auch geändert werden!
   
       ActorList Vec1StartList(STR_VObjVehicle1Start);
       if (Vec1StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Vec1StartList mismatch!");
           return;
       }
      
      ActorList Vec2StartList(STR_VObjVehicle2Start);
       if (Vec2StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Vec2StartList mismatch!");
           return;
       }
      
      ActorList Vec3StartList(STR_VObjVehicle3Start);
       if (Vec3StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Vec3StartList mismatch!");
           return;
       }
      
      ActorList Vec4StartList(STR_VObjVehicle4Start);
       if (Vec4StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Vec4StartList mismatch!");
           return;
       }

       ActorList VecTargetList(STR_VObjVehicleTarget);
       if (VecTargetList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: VecTargetList mismatch!");
           return;
       }

       ActorList Per1StartList(STR_VObjPerson1Start);
       if (Per1StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Per1StartList mismatch!");
           return;
       }

       ActorList Per2StartList(STR_VObjPerson2Start);
       if (Per2StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Per2StartList mismatch!");
           return;
       }
      
      ActorList Per3StartList(STR_VObjPerson3Start);
       if (Per3StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Per3StartList mismatch!");
           return;
       }
      
      ActorList Per4StartList(STR_VObjPerson4Start);
       if (Per4StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Per4StartList mismatch!");
           return;
       }
      
      ActorList Per5StartList(STR_VObjPerson5Start);
       if (Per5StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Per5StartList mismatch!");
           return;
       }
      
      ActorList Per6StartList(STR_VObjPerson6Start);
       if (Per6StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Per6StartList mismatch!");
           return;
       }
      
      ActorList Per7StartList(STR_VObjPerson7Start);
       if (Per7StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Per7StartList mismatch!");
           return;
       }
      
      ActorList Per8StartList(STR_VObjPerson8Start);
       if (Per8StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Per8StartList mismatch!");
           return;
       }
      
      ActorList Per9StartList(STR_VObjPerson9Start);
       if (Per9StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Per9StartList mismatch!");
           return;
       }
      
      ActorList Per10StartList(STR_VObjPerson10Start);
       if (Per10StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Per10StartList mismatch!");
           return;
       }
      
      ActorList Per11StartList(STR_VObjPerson11Start);
       if (Per11StartList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: Per11StartList mismatch!");
           return;
       }

       ActorList PerTargetList(STR_VObjPersonsTarget);
       if (PerTargetList.GetNumActors() != 1)
       {
           System::Log("PCmdAlarmFW: PerTargetList mismatch!");
           return;
       }
      
      // In den folgenden Zeilen werden Fahrzeuge & Fahrzeug-Führer erstellt.
      // Die Zahl hinter Anzahl stellt die Anzahl der Fahrzeuge dar.
      
      int Anzahl = 4;
      
      for (int i=0; i<Anzahl; i++)
       {
         Person passenger = Game::CreatePerson(STR_ProtoPerson1, "Unnamed");
         passenger.SetRole(ROLE_SQUAD);
         passenger.AssignCommand("MoveTo"); // Commands, die der Person zugewiesen werden, können nach Bedarf geändert werden.
         passenger.AssignCommand("EnterCar");
         passenger.AssignCommand("PCmdChangeToFWM");
      
         int CreateVehicle = rand()%4;
         switch(CreateVehicle)
         {
            case 0:
               Vehicle v = Game::CreateVehicle(STR_ProtoVehicle1, "privatpkw_ff1");
            break;
            case 1:
               Vehicle v = Game::CreateVehicle(STR_ProtoVehicle2, "privatpkw_ff1");
            break;
            case 2:
               Vehicle v = Game::CreateVehicle(STR_ProtoVehicle3, "privatpkw_ff1");
            break;
            case 3:
               Vehicle v = Game::CreateVehicle(STR_ProtoVehicle4, "privatpkw_ff1");
            break;
         }
         
         ActorList VehicleStartList;      
           if (i == 1)
         {
            VehicleStartList = Vec2StartList;
         }
         else if (i == 2)
         {
            VehicleStartList = Vec3StartList;
         }
         else if (i == 3)
         {
            VehicleStartList = Vec4StartList;
         }
         else
         {
            VehicleStartList = Vec1StartList;
         }
         
         Vector vStartPos(VehicleStartList.GetActor(0)->GetPosition());
         Vector vTargetPos(VecTargetList.GetActor(0)->GetPosition());
         Game::FindFreePosition(&v, vStartPos, 100.f);
         Game::FindFreePosition(&v, vTargetPos, 100.f);
         
         v.SetPosition(vStartPos);
         v.SetSpeed(12.f);
         v.SetMaxPassengers(5);
         v.AddPassenger(passenger);
         v.AssignCommand("MoveTo");
         v.AssignCommand("EmptyCar");
      
         int WaitingTimeVec = rand()%3;
         switch(WaitingTimeVec)
         {
            case 0:
               int WaitingV1 = 4.f;
            break;
            case 1:
               int WaitingV1 = 8.f;
            break;
            case 2:
               int WaitingV1 = 11.f;
            break;
         }
         v.PushActionWait(ACTION_NEWLIST, WaitingV1);
         v.PushActionMove(ACTION_APPEND, vTargetPos);
      }

       // Hier werden die Personen erstellt.
      // Die Prototypes werden zufällig gewählt.
      // Die Zahl, wo hier i<9 steht, kann geändert werden.
      // In diesem Fall werden 9 Personen erstellt.
      
       for (int i=0; i<16; i++)
       {
         int CreatePerson = rand()%7;
         switch(CreatePerson)
         {
            case 0:
               Person p = Game::CreatePerson(STR_ProtoPerson1, "Unnamed");
            break;
            case 1:
               Person p = Game::CreatePerson(STR_ProtoPerson2, "Unnamed");
            break;
            case 2:
               Person p = Game::CreatePerson(STR_ProtoPerson3, "Unnamed"); 
            break;
            case 3:
               Person p = Game::CreatePerson(STR_ProtoPerson4, "Unnamed"); 
            break;
            case 4:
               Person p = Game::CreatePerson(STR_ProtoPerson5, "Unnamed"); 
            break;
            case 5:
               Person p = Game::CreatePerson(STR_ProtoPerson6, "Unnamed"); 
            break;
            case 6:
               Person p = Game::CreatePerson(STR_ProtoPerson7, "Unnamed"); 
            break;
         }           
           
         ActorList startList;      
           if (i == 1)
         {
              startList = Per2StartList;
         }
         else if (i == 2)
         {
              startList = Per3StartList;
         }
         else if (i == 3)
         {
              startList = Per4StartList;
         }
         else if (i == 4)
         {
              startList = Per5StartList;
         }
         else if (i == 5)
         {
              startList = Per6StartList;
         }
         else if (i == 6)
         {
              startList = Per7StartList;
         }
         else if (i == 7)
         {
              startList = Per8StartList;
         }
         else if (i == 8)
         {
              startList = Per9StartList;
         }
         else if (i == 9)
         {
              startList = Per10StartList;
         }
         else if (i == 10)
         {
              startList = Per11StartList;
         }
         else
         {
            startList = Per1StartList;
         }
           
           Vector startPos(startList.GetActor(0)->GetPosition());
           Vector targetPos(PerTargetList.GetActor(0)->GetPosition());
           Game::FindFreePosition(&p, startPos, 100.f);
           Game::FindFreePosition(&p, targetPos, 100.f);

           p.SetPosition(startPos);
           p.SetRole(ROLE_SQUAD);
           p.AssignCommand("MoveTo");
           p.AssignCommand("EnterCar");
         p.AssignCommand("PCmdChangeToFWM");
         
         int WaitingTimePer = rand()%3;
         switch(WaitingTimePer)
         {
            case 0:
               int WaitingPer = 3.f;
            break;
            case 1:
               int WaitingPer = 6.f;
            break;
            case 2:
               int WaitingPer = 9.f;
            break;
         }

         p.PushActionWait(ACTION_NEWLIST, WaitingPer);
           p.PushActionMove(ACTION_APPEND, targetPos);
       }
      
      // Hier läuft die Alarmmeldung durch
      // Außerdem wird ein Sound gespielt.

       Mission::PlayHint("Wyjazd alarmowy OSP");
      Audio::PlaySample("mod:Audio/FX/FWalarm");
       System::Log("PCmdAlarmFW: ended");
   }
};
DebolStrazak
Młodszy aspirant
Młodszy aspirant
 
Posty: 298
Rejestracja: 10 sty 2014, 20:17
Pochwały: 9

Wróć do Mody

Kto jest online

Użytkownicy przeglądający to forum: Bing [Bot] i 3 gości

cron