Artifacts/pl
From Original War Support Wiki
Tutorial By: Serpent
Source: OWEditor Identify, Sand of Siberia Mod
Contents |
Typy Artefaktów
Każdy artefakt różni się wielkością. Artefakt 1 może być przenoszony przez inżyniera.
Programowanie Artefaktów
Wyszukiwanie artefaktów na mapie
FindArtifact(art_num); // art_num oznacza number artefaktu (1 - 5)
Przykład
coords := FindArtifact(1); x := coords[1]; y := coords[2];
SetArtifactRes
SetArtifactRes(side, boolean);
- side - oznacza stronę do której odnosi się funkcja.
- boolean - prawda lub fałsz.
Umożliwia włączenie/wyłączenie badania technologii artefaktu (tech_artifact).
SetArtifactUse
SetArtifactUse(side, art_icon, art_behav, building);
- side - oznacza stronę do której odnosi się funkcja.
- art_icon - określa wygląd (i pozycję) guzika, przyjmuje jeden z następujących stałych:
art_exp_left art_exp_mid art_exp_right art_use_atom art_use_cube art_use_dead art_use_exclamation art_use_eye art_use_hand art_use_human art_use_power art_use_sibdestruct art_use_sibexplosion art_use_tau art_use_teleport
Wygląd każdego guzika można sprawdzić w Interface/Nacja/1024/GameScreen/buttons.tga.
- art_behav - określa zachowanie guzika:
- art_no - kasuje guzik.
- art_gray - blokuje guzik (guzik staje się szary).
- art_instant - zwykły guzik (jak w przypadku technologii).
- art_place - po kliknięciu pojawia się specjalny kursor którym zaznaczamy dane miejsce.
- art_unit - po kliknięciu pojawia się specjalny kursor którym zaznaczamy daną jednostkę.
- building - identyfikator budynku.
On ArtifactUsed
Wywołuje się gdy funkcja SetArtifactUse została wykonana.
On ArtifactUsed(side, param1, param2, param3) do
- side - zwraca numer strony która użyła artefaktu.
- param1 - zwraca typ guzika który został kliknięty (na przykład: art_use_eye).
- param2 - bazuje na zachowaniu guzika. Dla art_instant zwraca 0. Dla art_unit zwraca identyfikator zaznaczonej jednostki. Dla art_place zwraca koordynat x zaznaczonego miejsca.
- param3 - bazuje na zachowaniu guzika. Dla art_instant i art_unit zwraca 0. Dla art_place zwraca koordynat y zaznaczonego miejsca.
On ArtifactResearchComplete
Wywołuje się gdy technologia artefaktu (tech_artifact) została opracowana.
On ArtifactResearchComplete(building) do
- building - zwraca identyfikator laboratorium.
On ArtifactLoaded
Wywołuje się gdy artefakt został załadowany na ciężarówkę.
On ArtifactLoaded(unit, artifact_num) do
- unit - zwraca identyfikator ciężarówki.
- artifact_num - zwraca numer artefaktu.
On ArtifactUnloaded
Wywołuje się gdy artefakt został wyładowany z ciężarówki.
On ArtifactUnloaded(unit, artifact_num) do
- unit - zwraca identyfikator ciężarówki.
- artifact_num - zwraca numer artefaktu.
Przykładowy Kod
On ArtifactResearchComplete(lab) do begin if GetSide(lab) = your_side then player_res_art := true; // odblokowuje guzik artefaktu End; Every 0$01 trigger FilterAllUnits([[f_side, your_side], [f_or, [f_btype, b_lab_full], [f_btype, b_lab_siberium]]]) and player_res_art do var x, y, lab, coords; begin enable; coords := FindArtifact(1); // koordynaty, obecne położenie artefaktu x := coords[1]; y := coords[2]; lab := NearestUnitToXY(FilterAllUnits([[f_side, your_side], [f_or, [f_btype, b_lab_full], [f_btype, b_lab_siberium]]]), x, y); // lab id if player_artifact_ready = false then // jeżeli artefakt nie jest gotowy if GetDistUnitXY(lab, x, y) < 6 then // jeżeli dystans artefaktu od laboratorium jest mniejsze od 6 begin if BuildingStatus(lab) = bs_idle then // jeżeli laboratorium nie pracuje SetArtifactUse(your_side, art_exp_left, art_instant, lab) // odblokuj guzik else SetArtifactUse(your_side, art_exp_left, art_gray, lab); // zablokuj guzik end else SetArtifactUse(your_side, art_exp_left, art_gray, lab); // zablokuj guzik if player_artifact_ready then // if artifact ready if GetDistUnitXY(lab, x, y) < 6 then // jeżeli dystans artefaktu od laboratorium jest mniejsze od 6 begin if BuildingStatus(lab) = bs_idle then // if lab not working SetArtifactUse(your_side, art_icon, art_unit, lab) // odblokuj guzik else SetArtifactUse(your_side, art_icon, art_gray, lab); // zablokuj guzik end else SetArtifactUse(your_side, art_icon, art_gray, lab); // zablokuj guzik End; On ArtifactUsed(s, icon, cr1, cr2) do var x, y, i, lab, side; begin x := FindArtifact(1)[1]; y := FindArtifact(1)[2]; lab := NearestUnitToXY(FilterAllUnits([[f_side, your_side], [f_or, [f_btype, b_lab_full], [f_btype, b_lab_siberium]]]), x, y); if icon = art_exp_left then // jeżeli gracz wcisnął guzik art_exp_left begin SetSpecResearch(lab, time_res_art, true); // odpal specjalne badania w laboratorium SetArtifactUse(your_side, art_exp_left, art_no, lab); // ukryj guzik end; if icon = art_icon then // jeżeli gracz wcisnął guzik art_icon begin if cr1 in FilterAllUnits([f_type, unit_building]) then // jeżeli zaznaczona jednostka to budynek begin side := GetSide(cr1); if FilterAllUnits([[f_side, side], [f_btype, b_siberite_power]]) > 0 then begin for i in FilterAllUnits([[f_side, side], [f_or, [f_btype, b_oil_power], [f_btype, b_solar_power], [f_btype, b_siberite_power]]]) do SetLives(i, 1); // niszczy wszystkie elektrownie player_res_art := false; // blokuje artefakt SetArtifactUse(your_side, art_icon, art_gray, lab); // blokuje guzik Wait(time_to_reuse); // odlicza odpowiedni czas player_res_art := true; // odblokowuje artefakt end; end; end; End; On SpecResearchComplete(lab) do // jeżeli specjalne badania zostały zakończone begin if GetSide(lab) = your_side then begin SetArtifactUse(your_side, art_exp_left, art_no, lab); // ukryj guzik player_artifact_ready := true; // artefakt jest gotowy Hint('ArtVulcano'); // wyświetl podpowiedź end; End; On SpecResearchCancel(lab, progress) do // jeżeli ktoś przerwał badania w trakcie begin SetArtifactUse(your_side, art_exp_left, art_instant, lab); // odblokuj guzik end; // Code from Sand of Siberia Mod by Serpent