Goto http://www.stucuk.netGoto http://www.atlanticaonlinewiki.comGoto http://www.game-requirements.com

Artifacts/pl

From Original War Support Wiki

Jump to: navigation, search

Tutorial By: Serpent
Source: OWEditor Identify, Sand of Siberia Mod

Contents

Typy Artefaktów

Image:Artifacts-type.jpg

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).

Image:Artifact_tech.jpg


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


Personal tools
Clanbase