Kacper(emrgenc)jako gosc pisze: i jak zrobic ze jak skoncze misje do zeby sie pojawilo misja zakonczona?
/*
* Skrypt misji dla Emergency 3, opracowany dla potrzeb PL-mod.
*
* Misja: pierwsza - Kacper(emrgenc)
* Wersja: 01
* Podwersja: a
*
* (C) Robert Paciorek, 2005, BSD License
* http://site.newworld.n17.waw.pl/
*
*/
/*
* WARUNKI UKONCZENIA:
* 1. eliminacja wszystkich terrorystów (aresztowanie lub neutralizacja)
* 2. wyleczenie wszystkich rannych
* 3. uprzatniecie kolczatki (jeszcze nie zaimplementowane)
*
* WARUNKI PORAZKI:
* 1. wiuecej niz 5 zabitych cywili
*
*/
int write_counter = 0;
object Mission03 : MissionScript {
Mission03() { }
void Start() {
System::Log("MISJA XX URUCHOMIONA");
Mission::AddObjective("RANNI");
Mission::AddObjective("GANGSTERZY");
}
MissionState GetMissionState() { // funkcja wywoływana celem określenia stanu misji
// logowanie liczników
if (write_counter++ == 100) {
System::Log("LICZNIKI RANNI: %d ZABICI: %d PLONACE OBIEKTY: %d PLONACE DOMY: %d GANGSERZY: %d GANGSTERZY ZABICI %d", Mission::GetCounter("Injured Persons"), Mission::GetCounter("Dead Persons"), Mission::GetCounter("Burning Objects"), Mission::GetCounter("Burning Houses"), Mission::GetCounter("Gangsters"), Mission::GetCounter("Dead Gangsters") );
write_counter = 0;
}
// zakonczenie misji - porazka
if( Mission::IsDefaultLogicNegative() || Mission::GetCounter("Dead Persons") > 5 )
return MISSION_FAILED;
// warunki konieczne dla sukcesu, niepowodujace porazki
if( Mission::GetCounter("Injured Persons") == 0 )
Mission::SetObjectiveAccomplished("RANNI", true);
else
Mission::SetObjectiveAccomplished("RANNI", false);
if( Mission::GetCounter("Gangsters") - Mission::GetCounter("Dead Gangsters") == 0 )
Mission::SetObjectiveAccomplished("GANGSTERZY", true);
else
Mission::SetObjectiveAccomplished("GANGSTERZY", false);
// zakonczenie misji - sukces
if( Mission::IsDefaultLogicPositive() && Mission::AllObjectivesAccomplished() )
return MISSION_SUCCEEDED;
return MISSION_RUNNING;
}
const char *GetFailReason() { // funkcja zwracająca powód porażki
return "UNKNOWN";
}
};
/*
* Skrypt misji dla Emergency 3, opracowany dla potrzeb PL-mod.
*
* Misja: druga - Kacper(emrgenc)
* Wersja: 01
* Podwersja: -
*
* (C) Robert Paciorek, 2005, BSD License
* http://site.newworld.n17.waw.pl/
*
*/
/*
* WARUNKI UKONCZENIA:
* 1. ugaszenie wszystkich pozarow
*
* WARUNKI PORAZKI:
* 1. zabity cywil
* 2. spalenie wszystkich domkow (nie dokonczone)
*
*/
enum { ZAKLADNICY_MAX = 10, };
int in_house_num = 0 , curent_house_num = 0, write_counter = 0;
const char *house_name = "letniskowy";
GameObject wrecks[WRECKS_MAX];
object Mission03 : MissionScript {
Mission03() { }
void Start() {
System::Log("MISJA 03 URUCHOMIONA");
Mission::AddObjective("POZARY");
Mission::AddObjective("DOMY");
// pobieranie listy domkow
GameObjectList object_list = Game::GetGameObjects();
for(int i = 0; i < object_list.GetNumObjects(); i++) {
GameObject *tmp_object = object_list.GetObject(i);
if (tmp_object->GetType()==ACTOR_PERSON && tmp_object->HasName(house_name)) {
if (in_house_num >= ZAKLADNICY_MAX) {
System::Error("ZBYT WIELE OBIEKTOW O NAZWIE: %s", house_name);
break;
}
wrecks[in_house_num] = tmp_object;
in_house_num++;
System::Log("MAMY DOM NUMER: %d (%s)", in_house_num, tmp_object->GetName());
}
}
curent_house_num = in_house_num;
if (in_house_num == 0)
System::Error("BRAK OBIEKTOW O NAZWIE: %s", house_name);
}
MissionState GetMissionState() { // funkcja wywoływana celem określenia stanu misji
// logowanie liczników
if (write_counter++ == 100) {
System::Log("LICZNIKI RANNI: %d ZABICI: %d PLONACE OBIEKTY: %d PLONACE DOMY: %d GANGSERZY: %d GANGSTERZY ZABICI %d", Mission::GetCounter("Injured Persons"), Mission::GetCounter("Dead Persons"), Mission::GetCounter("Burning Objects"), Mission::GetCounter("Burning Houses"), Mission::GetCounter("Gangsters"), Mission::GetCounter("Dead Gangsters") );
write_counter = 0;
}
// zakonczenie misji - porazka
if( Mission::IsDefaultLogicNegative() || Mission::GetCounter("Dead Persons") > 0 )
return MISSION_FAILED;
// warunki konieczne dla sukcesu, niepowodujace porazki
if( Mission::GetCounter("Burning Houses") ++ Mission::GetCounter("Burning Objects") == 0 )
Mission::SetObjectiveAccomplished("POZARY", true);
else
Mission::SetObjectiveAccomplished("POZARY", false);
curent_good_house_num = curent_house_num;
for (int i=0; i<curent_house_num; i++) {
GameObject *tmp_object = wrecks[i];
}
if( curent_good_house_num != 0 )
Mission::SetObjectiveAccomplished("WRAKI_SAMOCHODOW", true);
else
Mission::SetObjectiveAccomplished("WRAKI_SAMOCHODOW", false);
// zakonczenie misji - sukces
if( Mission::IsDefaultLogicPositive() && Mission::AllObjectivesAccomplished() )
return MISSION_SUCCEEDED;
return MISSION_RUNNING;
}
const char *GetFailReason() { // funkcja zwracająca powód porażki
if( Mission::GetCounter("Burning Objects") + Mission::GetCounter("Burning Houses") > 0 )
return "WYBUCHL_POZAR";
if( Mission::GetCounter("Injured Persons") + Mission::GetCounter("Dead Persons") > 0 )
return "RANNY_CYWIL";
return "UNKNOWN";
}
};
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość