[Spawn za pomocą skryptu]

Regulamin forum
Dział "Tworzenie Modyfikacji" służy do zadawania pytań odnośnie tworzenia modyfikacji, edytowania plików gry, oraz pisania tzw. tutoriali, czyli poradników odnośnie modyfikowania gry.
Nie zadajemy tutaj pytań odnośnie modyfikacji gotowych (nie dyskutujemy o nich!), prócz prób ich połączenia etc.


Przy cytowaniu plików *.LTX stosować tag [SYNTAX="ini"], przy cytowaniu plików *.script [SYNTAX="lua"] a przy cytowaniu plików *.xml - [SYNTAX="xml"].

[Spawn za pomocą skryptu]

Postprzez nelson82 w 02 Wrz 2012, 09:23

Do rzeczy. Wymyśliłem sobie, że przy ciałach npc będę znajdował różne mapy, kartki itd. ze wskazówkami mającymi nas doprowadzić do różnych skrytek, przedmiotów. Oczywiście dla każdej mapy czy kartki zrobiłem odpowiedni konfig. Moim założeniem było aby przedmioty spawnowały się w określonym miejscu dopiero wówczas gdy przy ciele znajdę informację, która by ich dotyczyła. Niestety, tutaj napotkałem już schody, bo przedmioty za nic nie chcą się spawnować gdy uzyskam info na ich temat. Oto co zrobiłem:
- stworzyłem skrypt o nazwie nelson_spawn.script i uwzględniłem go w pliku info_l01escape.xml (config/gameplay)
Kod: Zaznacz wszystko
<info_portion id="esc_kill_gunslinger">
      <task>storyline_eliminate_gunslinger</task>
      <action>nelson_spawn.new_spawn</action>
      <article>about_enciclopedia</article>
      <article>sl_beginning</article>
   </info_portion>
Jeżeli chodzi o zawartość samego skryptu to w tej chwili wygląda to tak
Kod: Zaznacz wszystko
function new_spawn()


        if db.actor:object("strelok_mapa")
   then
alife():create("antirad",vector():set(-9.883, 7.296, 57.808),267145,88)
alife():create("antirad",vector():set(-10.577, 7.296, 57.800),267145,88)
end   
... i zonk. Próbowałem już różnych kombinacji, ale za każdym razem gdy zdobywam ową mapę Strieloka, antyrady nie spawnują się na wytyczonych współrzędnych.
Nie wiem już co robię źle, albo czego nie robię. Stąd moja prośba o pomoc. Jak powinien wyglądać taki skrypt, by wszystko działało jak należy?
łatwiej już nie będzie
Awatar użytkownika
nelson82
Łowca

Posty: 505
Dołączenie: 16 Paź 2011, 00:09
Ostatnio był: 13 Paź 2019, 11:44
Ulubiona broń: --
Kozaki: 130

Reklamy Google

Re: [Spawn za pomocą skryptu]

Postprzez Wunderwaffe w 02 Wrz 2012, 20:15

Nie umiem pisać skryptów, ale najwyraźniej to wygląda tak:
1. Gdy dostajesz zadanie zabicia Strieloka, to wykonuje się skrypt.
2. Skrypt sprawdza, czy masz mapę.
3. Nie masz, więc nie spawnuje.
4. Gdy już ją zdobywasz, to funkcja się zakończyła, więc nic się nie dzieje.
Image
Awatar użytkownika
Wunderwaffe
Łowca

Posty: 480
Dołączenie: 06 Mar 2012, 20:43
Ostatnio był: 04 Lis 2018, 20:43
Miejscowość: Siedlce
Frakcja: Monolit
Ulubiona broń: F1 Grenade
Kozaki: 187

Re: [Spawn za pomocą skryptu]

Postprzez nelson82 w 02 Wrz 2012, 20:37

Mapa o której mowa nie jest powiązana z zadaniem "Znajdź i zabij Strieloka". Ta mapa to nowy przedmiot, który dodałem do gry. Dla testów umieściłem ją wśród przedmiotów otrzymywanych od Wilka na początku. Chodzi mi o to by w momencie gdy zdobędę mapę, w wyznaczonych współrzędnych (w skrypcie) zespawnowały się antyrady (tak przykładowo).
Chcę uzyskać efekt podobny do tego
Kod: Zaznacz wszystko
function task_fox_complete()
   if has_alife_info("garbage_meetstalker_start") or
      has_alife_info("escape_stalker_done")
   then
alife():create("dog_weak",vector():set(74.622, -2.032, 510.642),367866,202)
alife():create("dog_weak",vector():set(71.298, -1.753, 524.040),363239,219)
alife():create("dog_weak",vector():set(65.704, -1.031, 539.837),355610,217)
alife():create("dog_weak",vector():set(61.959, -0.625, 549.399),351105,217)
alife():create("dog_normal",vector():set(66.271, 0.337, 554.227),356564,217)
alife():create("dog_normal",vector():set(82.601, 2.355, 558.567),377894,217)
alife():create("dog_normal",vector():set(90.836, 3.484, 565.107),388887,216)
alife():create("dog_normal",vector():set(93.910, 3.140, 559.287),392488,216)
alife():create("dog_normal",vector():set(100.142, 3.102, 554.966),400284,218)
alife():create("dog_normal",vector():set(105.134, 3.255, 552.937),406178,218)
alife():create("dog_strong",vector():set(105.655, 2.920, 546.871),407021,218)
alife():create("dog_strong",vector():set(106.343, 2.519, 539.466),407857,218)
      return true
   else
      return false
   end
end   
to fragment ze skryptu escape_tasks, który sprawia że po wykonaniu zadania z Lisem otrzymuję tzw. info_portion i wówczas skrypt ma wolną drogę do zespawnowania psów.
Pisząc własny skrypt kierowałem się tym co wydedukowałem z innych modów, ale i tak nie działa.
łatwiej już nie będzie
Awatar użytkownika
nelson82
Łowca

Posty: 505
Dołączenie: 16 Paź 2011, 00:09
Ostatnio był: 13 Paź 2019, 11:44
Ulubiona broń: --
Kozaki: 130


Powróć do Cień Czarnobyla

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 2 gości