Skocz do zawartości

Diegtiariow

Zasłużony
  • Postów

    4879
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    381

Odpowiedzi opublikowane przez Diegtiariow

  1. NAZWA: Płatny BTR z możliwością kupna
    AUTOR: dimak-stalker

     

    KROK 1:

    Spoiler

    Spawnujemy BTR:

    1. Tworzymy skrypt my_car.script (w folderze gamedata/scripts/) i piszemy tam następującą treść:

    function btr_1 ()
    alife():create("vehicle_btr",vector():set(-198.585,-20.227,-147.066),53596,57)
    end

    1 krok został zakończony!

     

    KROK 2:

    Spoiler

    1. Teraz musimy się upewnić, że uruchomimy silnik i będziemy mogli podziwiać nasz transporter opancerzony z widoku trzeciej osoby.

    W tym celu otwieramy plik ui_keybinding (znajdujący się w gamedata\config\ui) i wpisujemy do takiej sekcji:

    <group name="kb_grp_common">

    to:

    <command id="kb_cam_1" exe="cam_1"/>
    <command id="kb_cam_2" exe="cam_2"/>
    <command id="kb_cam_3" exe="cam_3"/>
    <command id="kb_turn_engine" exe="turn_engine"/>

    2. Teraz w grze, wchodząc w ustawienia sterowania, znajdziesz przyciski i przypiszesz klawisze do wykonywania poleceń.

    2 krok został zakończony!

     

    KROK 3:

    Spoiler

    1. Tworzymy skrypt o nazwie money.script i piszemy w nim:

    function has_money_2000()
            local money = math.floor(2000)
    
    xr_statistic_freeplay.get_freeplay_statistic():get_found_pda_discount())
            return db.actor:money()>=money
    end
    
    function dat_dengi(first_speaker, second_speaker)
          dialogs.relocate_money(second_speaker, 2000, "out")
    end

    2. Teraz pozostaje utworzyć dialog i wstawić funkcję. W tym celu tworzymy prosty dialog.

    Otwieramy np. plik dialogs_escape.xml (gamedata/config/gameplay) i piszemy na końcu:

    <dialog id="test_dialog">
                  <phrase_list>
                      <phrase id="0">
                  <text>test_dialog_0</text>
                  <next>1</next>
                      </phrase>
                      <phrase id="1">
                          <text>test_dialog_1</text>
                  <next>2</next>
                  <next>3</next>
                      </phrase>
                      <phrase id="2">
                          <text>test_dialog_2</text>
                    <precondition>money.has_money_2000</precondition>
                       <action>my_car.btr_1</action>
                         <action>money.dat_dengi</action>
                      </phrase>
                      <phrase id="3">
                          <text>test_dialog_3</text>
                      </phrase>
                  </phrase_list>
              </dialog>

    To jest szkielet dialogu. Nasza funkcja zostanie w nim zapisana.

    • <dialog id="test_dialog"> - nazwa dialogu, który trzeba będzie dopisać NPC.
    • <phrase id="0"> - numer frazy.
    • <text>test_dialog_0</text> - tekst frazy.
    • <next>?</next> - przejście do frazy.
    • <precondition>money.has_money_2000</precondition> - sprawdzenie pieniędzy u GG (2000 rubli)
    • <action>my_car.btr_1</action> - nasza funkcja spawnu BTR
    • <action>money.dat_dengi</action> - ta funkcja zabiera od GG 2000 rubli

    3. Teraz musisz napisać teksty dialogów.

    Wchodzimy do pliku "stable_dialogs_escape.xml" (gamedata/config/text/pol) i piszemy na końcu:

    <string id="test_dialog_0">
                  <text>Chcę kupić BTR.</text>
              </string>
              <string id="test_dialog_1">
                  <text>Naprawdę? Jesteś pewien, że wystarczy ci pieniędzy? Za transport powinieneś zapłacić mi 2000 rubli. Masz tyle kasy?</text>
              </string>
              <string id="test_dialog_2">
                  <text>Tak, mam. Trzymaj.</text>
              </string>
              <string id="test_dialog_3">
                  <text>Sorry, nie mam.</text>
              </string>
    • <string id="test_dialog_0"> - to, do czego odnosi się szkielet dialogu.
    • <text>Chcę kupić BTR.</text> - oczywiście tekst.

    Uwaga: Wszystkie dialogi zaczynają się od słów Naznaczonego.

    4. Teraz musisz dopisać ten dialog do NPC. Na przykład Sidorowiczowi.

    Otwórz plik "character_desc_bar.xml" i znajdź sekcję Sidorowicza. Jest ona pierwsza i po wszystkich:

    <actor_dialog>???</actor_dialog>

    dopisujemy swój dialog:

    <actor_dialog>test_dialog</actor_dialog>
    

    3 krok został zakończony!

     

    JAK TO TERAZ WYGLĄDA?:

    Spoiler

    Sidor będzie miał nowy dialog typu:
    (Naznaczony): - Chcę kupić BTR.
    (Sidorowicz): - Naprawdę? Jesteś pewien, że wystarczy ci pieniędzy? Za transport powinieneś zapłacić mi 2000 rubli. Masz tyle kasy?


    Naznaczony - 1 wariant pojawi się, jeśli Naznaczony ma 2000 rubli:
    - Tak, mam. Trzymaj.

    Nasz BTR pojawi się, a Sidorowicz zabierze od nas 2000 rubli.

     

    Naznaczony - 2 wariant pojawi się, jeśli Naznaczony nie ma 2000 rubli:
    - Sorry, nie mam.

    BTR nie pojawi się.

     

    PS.:

    Spoiler

    1. Sam BTR znajduje się w folderze gamedata\config\creatures\vehicles.ltx:

    [vehicle_btr]
    
    GroupControlSection  = spawn_group
    $spawn     = "vehicles\vehicle_btr"
    class     = SCRPTCAR
    cform                   = skeleton
    visual                  = physics\vehicles\btr\veh_btr_u_01.ogf
    actor_visual   = physics\vehicles\btr\veh_btr_u_01.ogf
    ef_equipment_type  = 3
    ph_mass      = 100000
    script_binding       = bind_physic_object.init

    2. Ci, którzy mają АМК mod 1.4.1, to w pliku ui_keybinding trzeba zrobić tylko:

    <command id="kb_turn_engine" exe="turn_engine"/>
    

    a ten kawałek nie jest wymagany:

    <command id="kb_cam_1" exe="cam_1"/>
    <command id="kb_cam_2" exe="cam_2"/>
    <command id="kb_cam_3" exe="cam_3"/>
    

     

    ŹRÓDŁO:

    https://ap-pro.ru/forums/topic/1282-platnyy-btr-s-vozmozhnostyu-pokupki/

    • Dodatnia 1
    • Ważne 1
  2. NAZWA: Pokazujemy zdrowie GG w procentach [CoP]
    AUTOR: Akella-96©

     

    CO TRZEBA ZROBIĆ:

    Spoiler

    Nie będziemy potrzebować mnóstwa tekstur do użycia jako custom_static i nie będziemy musieli pisać ogromnych skryptów do obsługi tych statystyk.

    Po prostu utworzymy nowy plik w folderze gamedata\scripts i nazwiemy go na przykład percent_health.script. Dodamy do niego następujący kod:

    function show_health_percent()
          local a
          local h
          a = db.actor
          h = a.health* 100
          local hud = get_hud()
          local StatCS=hud:GetCustomStatic("actor_health")
          if StatCS == nil then
        hud:AddCustomStatic("actor_health",true)
        StatCS=hud:GetCustomStatic("actor_health")
          end
          local StatText = ""
          StatText = StatText.. string.format("%1.0f\\n",h)
          if StatCS ~= nil then StatCS:wnd():TextControl():SetText(StatText) end
          if db.actor:is_talking() then
               hud:RemoveCustomStatic("actor_health")
          elseif db.actor:has_info("inv_is_open") then
               hud:RemoveCustomStatic("actor_health")
          end
          if not db.actor:alive() then
               hud:RemoveCustomStatic("actor_health")
          end
    end

    A teraz przeanalizujmy to wszystko:

    show_health_percent – nazwa funkcji
        local a – deklarujemy zmienną «а»
        local h – deklarujemy zmienną «h»
        a = db.actor – ustawiamy wartość zmiennej «а» (w tym przypadku «а» równa się «db.actor», tzn. GG
        h = a.health* 100 - ustawiamy wartość zmiennej «h» (tutaj «h» równa się wartości health*100, czyli stan zdrowia GG pomnożony przez 100 (jeśli nie pomnożymy, to zdrowie będzie wyświetlane w formacie 1, 0.9, itp.)
    local hud = get_hud() – ustawiamy wartość zmienną hud
    
           
    
        if StatCS == nil then – (z grubsza «tłumaczenie») jeśli hud StatCS jest pusty (nie ma go), to
        hud:AddCustomStatic("actor_health",true) – tworzymy custom_static z nazwą «actor_health»
        StatCS=hud:GetCustomStatic("actor_health") – porównujemy StatCS do stworzonej statystyki
          end – koniec sprawdzania (nie funkcji)
    
          local StatText = "" – deklarujemy zmienną StatText
          StatText = StatText.. string.format("%1.0f\\n",h) – porównujemy stworzoną zmienną do zadanego formatu wyświetlania wartości wcześniej zadeklarowanej zmiennej «h»
    Szczegółowiej o formacie wyświetlania:
    %1.0f – wskazujemy, ile cyfr będzie wyświetlanych po przecinku (nie są nam potrzebne drobne wartości, dlatego stawiamy 1.0)
    
    To warunki do wyświetlenia naszej statystyki
          if db.actor:is_talking() then – jeśli GG rozmawia, to
               hud:RemoveCustomStatic("actor_health") – usuwamy statystykę
          elseif Info("inv_is_open") then – jeśli inwentarz GG jest otwarty, to
               hud:RemoveCustomStatic("actor_health") – usuwamy statystykę
          end
          if not db.actor:alive() then – jeśli GG jest martwy, to
               hud:RemoveCustomStatic("actor_health") – usuwamy statystykę
          end

    Dodatkowo w celu sprawdzenia otwartego inwentarza:
    Aby gra sprawdzała otwarcie ekwipunku trzeba do pliku actor_menu.script (weź go z rozpakowanej gry) w funkcji «function inventory_wnd_opened()» przed «end» wstawić ten kod:

    db.actor:give_info_portion("inv_is_open")

    Oraz w funkcji «function inventory_wnd_closed()» (także przed «end») dodać:

    db.actor:disable_info_portion("inv_is_open")

    Teraz musimy wywołać naszą funkcję.

    W tym celu, w pliku gamedata\scripts\bind_stalker.script, w funkcji «function actor_binder:update(delta)», po «object_binder.update(self, delta)» dodajemy:

    percent_health.show_health_percent()

    Na tym koniec ze skryptami. Przejdźmy teraz do konfigu.

    Otwieramy plik gamedata\configs\ui\ui_custom_msgs.xml i na końcu, ale przed «</header>» dodajemy:

       <actor_health x="24" y="47" width="36" height="24" complex_mode="1">
                <text font="graffiti22"  r="255" g="255" b="255" a="255" align="l"/>
               </actor_health>

    Zostały tutaj zapisane współrzędne położenia statystyki na ekranie, czcionka wyświetlanego tekstu i jego kolor. W tym fragmencie kodu ustawione są współrzędne lewego górnego rogu (zmodyfikowany HUD), ty możesz podać własne. I to wszystko.

    Takim sposobem, można wyświetlić w procentach dowolną wartość parametrów GG, np. aby wyświetlić energię/wytrzymałość, trzeba h = a.health* 100 zmienić na h = a.power* 100.
    Ogólnie, można poeksperymentować z tą funkcją.

    Oto lista pozostałych operatorów parametrów GG:

    1. db.actor.bleeding - stopień krwawienia
    2. db.actor.radiation - poziom radiacji
    

     

    ŹRÓDŁO:

    https://ap-pro.ru/forums/topic/1586-cop-pokazyvaem-zdorove-gg-v-procentah/

    • Dodatnia 2
    • Ważne 1
  3. @Dezerter06 Aby dostać się do Niestierova, najpierw trzeba dostać się na "stary Jantar".

     

    Przed znalezieniem drogi do "innego Wysypiska":

    Spoiler

    Znaleźć PDA na Jubilejnym (mianowicie na dachu) w zach. cz. Prypeci. Gdy już odczytamy wiadomość z tego PDA to trzeba spojrzeć w kierunku dwóch bloków (tam, gdzie jest duża liana z Zewu Prypeci). Powinien się wtedy pokazać obrazek, gdzie jest przejście do innej lokacji. Tutaj trzeba uważać, bo może zabrać lub wyrzucić wszystkie przedmioty z plecaka to przejście.

     

    Po przejściu na "Mroczny Brzeg. Wysypisko" (Тёмный Край. Свалка):

    Spoiler

    Jeśli już się pojawimy na "innym Wysypisku" to szukamy notebooka w domu. Znajdujemy potem pierwszy schron, w którym jest mapa i na tej mapie są 3 punkty. Gdy pójdziemy do punktu pośrodku to będzie tam czekać na nas niespodzianka. Współrzędne z kartki papieru wpisujemy w urządzenie (teleportator chyba) i przeszukujemy drugi schron. Idziemy potem do hangaru i szukamy trzeciego schronu (artefakty to też broń). Powinien być w wyrwie. Wpisujemy współrzędne z notatki i przechodzimy na inną lokację.

     

    Po przejściu na "Mózgołamacza" (Мозголом)/"stary Jantar" idziemy wyłączać psi-instalację. Najlepiej zrobić to tak jak w filmie od 17:31 - 20:56. Wtedy znajdziemy Niestierova obok wielkiego mózgu.

    • Super 1
    • Dodatnia 1
    • Ważne 1
  4. @Mayer99 Znalazłem filmik z charakterystykami pancerzy: https://youtu.be/a0I80HOUrKM

    Spoiler

    Pancerz Powinności bez maski:

    image.png

    Pancerz Powinności z maską:

    image.png

    Kombinezon Monolitu bez maski (o 5 kg więcej można przenosić niż w komb. Powinności):

    image.png

    Komb. Monolitu z maską (i też 5kg więcej do przenoszenia niż w komb. Powinności):

    image.png

    Ponoć naukowy komb. Monolitu jest bardzo dobry, a z egzo to egza Monolitu. Z tego co wyczytałem na ap-pro, to w zadaniu Kucharza trzeba jakiemuś Psycholowi zanieść jedzenie, poskipować dialogi, pójść do monolitowca i pogadać z nim, następnie do Psychola i zdobędziemy wtedy klucz. Klucz przyda się do otwarcia zielonej szafy w Czerwonym Lesie w kopalni.

    Ewentualnie Sevę można otrzymać za wykonanie zadań u tego gościa: https://nlc.fandom.com/ru/wiki/Пахом

    • Dodatnia 3
  5. @Mayer99 Ewentualnie:

    Cytat

    Dzik może pomóc usunąć blokadę w X-18. Potrzebuje on dużą ilość jedzenia i wódki. Jedzenie można kupić hurtowo u Sidorowicza, a wódkę samemu można zdobyć. Jeśli wcześniej gracz pokojowo rozwiązał problem ze Żwawym i znalazł jego PDA, to Dzik będzie potrzebował 4 razy mniej produktów (w tym przypadku Sidorowicz nie będzie miał sprzedaży hurtowej).

    Jeśli zabije się grupę Raszpila/Tarnika (Рашпиля), to Dzik nie obrazi się, ale nie pomoże w usunięciu blokady. Z drugiej strony, aby Kruk, Kulinar lub Barman pomogli GG w usunięciu blokady, tak czy inaczej powinien usunąć grupę Raszpila/Tarnika.

     

    Czyli są 4 opcje na usunięcie blokady:

    Dzik - dużo jedzenia i wódki

    Kruk - likwidacja grupa Raszpila + jakieś artefakty za usunięcie blokady.

    Kulinar - likwidacja grupa Raszpila + jakieś naboje i zapłatę czekiem

    Barman - likwidacja grupa Raszpila + przyzwoita suma w czekach

  6. Patch 1.05 z 19 lipca:

    - Dodano angielską lokalizację (podziękowania dla Jeferson Pedrozo i NLCope)
    - Dodano automatyczne tworzenie kopii zapasowych i przywracanie w przypadku uszkodzenia zapisów gry
    - Ulepszenie synchronizacji klientów
    - Różne małe fix'y, poprawki błędów

    Instalacja: Nacisnąć na przycisk «Проверить обновления» w launcherze.

     

    Stream moda z angielską lokalizacją:

     

    • Dodatnia 2
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z tej strony, zgadzasz się na nasze Warunki użytkowania.