Page 1 of 1
Funkcja FillterUnits
Posted: Mon Feb 09, 2009 4:06 pm
by Birkart
Code: Select all
every 0$01 do
begin
enable;
araby=FilterAllUnits([[f_side,2],[f_type,unit_human],[f_ok]])
end;
Code: Select all
every 0$01 trigger FilterAllUnits([[f_side,2],[f_chassis,ar_light_trike]])>=araby do
begin
Enable;
ChangeMissionObjectives('c5');
vehicles=true;
end;
Code: Select all
every 0$01 marked 011 do
begin
if vehicles=true then
begin
AddMedal('vehicles',1);
end
else
begin
AddMedal('vehicles',-1);
end;
end;
No wiec mamy taki kod, ale nie działa ;p
Gdzie jest błąd?
Posted: Mon Feb 09, 2009 4:44 pm
by RiderWolf
A uaktywnia Ci się ten cel 'c5' czy nic Ci nie działa? Dałeś w kodzie Enable(011); żeby uaktywnić te every?
Posted: Mon Feb 09, 2009 4:57 pm
by Birkart
tak, cel się zmienia
nie uaktywnia się tylko dawanie medalu
Posted: Mon Feb 09, 2009 5:07 pm
by RiderWolf
czyli błąd masz tylko w tym kodzie
Code: Select all
every 0$01 marked 011 do
begin
if vehicles=true then
begin
AddMedal('vehicles',1);
end
else
begin
AddMedal('vehicles',-1);
end;
end;
Dałeś Enable(011);? Jeśli nie to musisz to dodać używając markedów gdzieś przed komendą
GiveMedals('Main');
Jeśli nadal nie będzie Ci działać to zamiast robić every zrób funkcję SetMedals; ze wszystkimi medalami i daj SetMedals; przed GiveMedals('Main');
Posted: Tue Feb 10, 2009 9:29 am
by Antitheus
błąd nie leży tu w głównej mierze w kodzie i nie wiem niby dlaczego mu marked po every. Marked to wyzwalacz a every sprawdza działanie po określonym czasie. Radzę zamiast filtrów zastosowac coś innego. Często nie działają.
Posted: Tue Feb 10, 2009 1:37 pm
by Moonstrider
Ja dodałbym Enable; przed ostatnim end; . A Enable(011); to tylko jeśli na początku dał Disable(011); .
Posted: Tue Feb 10, 2009 2:52 pm
by Anarchy
W filtrze ustawiasz, by 'araby', to byli żółci ludzie, a w every chcesz, by ludzie byli pojazdami. Zmęczony jestem, ale czy to nie brzmi paradoksalnie? Dla większej jasności:
araby=FilterAllUnits([[f_side,2],[f_type,unit_human],[f_ok]])
every 0$01 trigger FilterAllUnits([[f_side,2],[f_chassis,ar_light_trike]])>=araby do
Posted: Tue Feb 10, 2009 3:18 pm
by Birkart
hmm.... zasadniczo to chodziło mi o to, aby
jak liczba pojazdów>=liczba ludzi to
give medal bla bla bla :p
hmmm
tylko tak mi to do głowy przyszło :p
Posted: Tue Feb 10, 2009 8:20 pm
by Anarchy
No to musisz warunek if i filter w filtrze:P
Posted: Tue Feb 10, 2009 8:46 pm
by RiderWolf
Lepiej zrób funkcję SetMedals; ze wszystkimi medalami. może wyglądać np tak
Code: Select all
var filter, araby;
export function SetMedals;
begin
AddMedal('MEDAL',1);
begin
filter:=FilterAllUnits([[f_side,2],[f_chassis,ar_light_trike]]);
begin
araby=FilterAllUnits([[f_side,2],[f_type,unit_human],[f_ok]]);
if filter>=araby then
begin
AddMedal('vehicles',1)
end
else
begin
AddMedal('vehicles',-1);
end;
end;
end;
end;
Na końcu dajesz
Code: Select all
SetMedals;
GiveMedals('Main');
RewardPeople(FilterAllUnits([[f_ok],[f_side,2],[f_type,unit_human]]));
SaveCharacters(ziom,'ziom');
YouWin;
end;
Powinno działać 1 kod jest skompilowany lepiej daj go na osobnej stronie a co do 2 to tam pozmieniaj na swoje potrzeby i dopisz end ile razy trzeba
Posted: Wed Feb 11, 2009 8:47 pm
by Anarchy
A w czym on jest lepszy od mojego? Są inne sposoby, lecz tamten uznałem za najlepszy, uzasadnij swój wybór;P
Posted: Thu Feb 12, 2009 9:46 am
by Antitheus
jest w pierwszej linijce jego kodu. Pytanie najważniejsze: czy nie zapomniał o enable (011); ?? ^^
Posted: Thu Feb 12, 2009 11:40 am
by Birkart
okey dzięki wszystkim skumałem już gdzie jest błąd ;p
Posted: Thu Feb 12, 2009 2:07 pm
by Anarchy
No i, gdzie jest?
Posted: Sun Feb 22, 2009 8:56 am
by Birkart
ehh mój głupi, logiczny błąd :p
w chwili sprawdzania ilości pojazdów ich ilość hmm fizycznie nie może być większa/równa ilości bohaterów

czyli medalu praktycznie nigdy nie można było dostac
Code: Select all
every 0$01 marked 011 do
begin
enable;
if vehicles=true then
begin
AddMedal('vehicles',1);
end
else
begin
AddMedal('vehicles',-1);
end;
end;
dałem enable i wszystko działa :p
[ Dodano: Nie Lut 22, 2009 7:56 am ]
Hmm nie chciałem nowego tematu zakładać a pytanie mam
czy da się w sailu włączyć rozkaz "nie atakuj"/ "atakuj w pierwszej kolejności"?