Skrypt losowości 3992 13

O temacie

Autor Althar

Zaczęty 19.11.2009 roku

Wyświetleń 3992

Odpowiedzi 13

Althar

Althar

Użytkownicy
posty307
Propsy44
  • Użytkownicy
Chciałbym zrobic skrypt losowości, ale nie w dialogu. Skrypt ten miałby się uruchamiać np. przy starcie gry. Następnie po wylosowaniu wartości zmiennej miałaby ona być przypisana do NPC, w którym byłby generowany przedmiot. W tutorialach są podane przykłady użycia w dialogach, ale ja chce go zrobić gdzieś indziej.
Próbowałem z:
var int mojazmienna;
mojazmienna = Hlp_Random(10);
if(mojazmienna == 5)
{
CreateInvItems (self, ItFoMuttonRaw, 1);
};
Zmienna została dodana do Story_Globals.d

Jeśli takie coś już było to przepraszam i prosze o podanie linku.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Zrób trigger scripta.

Althar

Althar

Użytkownicy
posty307
Propsy44
  • Użytkownicy
Można trochę jaśniej ? Wiem, że to w Spacerze, ale jaki kod mam dodać ? Ten co mam ? (Gothic nie wykazuje błędu, ale nie jestem pewien czy dobrze napisałem ten skrypt). Jak chcę wylosować przedmiot do każdego NPC, to muszę robić tyle zmiennych ile NPC czy wystarczy 1 ?
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Tutorial do triggera: http://themodders.org/index.php?showtopic=89

Cytuj
Jak chcę wylosować przedmiot do każdego NPC, to muszę robić tyle zmiennych ile NPC czy wystarczy 1 ?
Jedna powinna wystarczyć...


Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Może tak, może nie. Nie wiem. Niech spróbuje najpierw za pomocą startupa.

Althar

Althar

Użytkownicy
posty307
Propsy44
  • Użytkownicy
Jeśli do Startup'a to jaki kod dać ? Ten co podałem to chyba nie wystarczy, więc co jeszcze ? Przedmiot musi byc dany NPC.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator
Nie wiem co z określaniem NPC wobec jakiego ma być zastosowany skrypt. self to zmienna która jest automatycznie przypisywana do postaci którą się steruje, choć nie jestem pewien czy to jedyny przypadek. W każdym razie jeśli twoim zamiarem jest aby otrzymał to każdy NPC na mapie to raczej nie zadziała.

Althar

Althar

Użytkownicy
posty307
Propsy44
  • Użytkownicy
Nie każdy. I chodzi mi raczej o potwora, żeby miał czasem jakieś dodatki. A wszystkie są  pod 1 instance.
 

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Skrypt losowości
#9 2009-11-19, 20:48(Ostatnia zmiana: 2009-11-19, 20:52)
Skoro chodzi o potwory, to najlepiej będzie zagnieździć to w funkcji givedeathinv, która jest wywoływana przy zabiciu potwora, są tam dodawane m.in trofea.

\_Work\Data\Scripts\Content\Story\B\B_GiveDeathInv.d

Jeśli chcesz możesz wkleić swoją funkcję od razu przed
//-------- Abfragen, ob die Trophy schon mal verteilt wurde --------lub jeśli wolisz aby wymagała jakiejś umiejętności, dodaj warunek i umieść ją w stosownym fragmencie skryptu.

Althar

Althar

Użytkownicy
posty307
Propsy44
  • Użytkownicy

Althar

Skrypt losowości
#10 2009-11-19, 21:21(Ostatnia zmiana: 2009-11-20, 16:50)
Dzięki, jutro spróbuję, jak mi się uda (bądź nie) - napiszę.

EDIT: Dodałem takie coś:
var int mojazmienna;
mojazmienna = Hlp_Random (10);
if (slf.aivar[AIV_MM_REAL_ID] == ID_WOLF)
&& (mojazmienna == 4)
{
CreateInvItems (slf, ItFoMuttonRaw, 1);
};
I nie działa. Starter nie wywala żadnych błędów jak skrypt jest w takiej formie, jakiej jest.
 

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Może działa? Bo w skrypcie masz, że jeśli wylosujesz 4, to wilk ma mięsko. Na ilu wilkach testowałeś tą funkcję?

inż. Avallach

inż. Avallach

Administrator
posty7661
Propsy5239
NagrodyV
ProfesjaProgramista
  • Administrator

inż. Avallach
Administrator

Skrypt losowości
#12 2009-11-24, 19:27(Ostatnia zmiana: 2009-11-25, 20:39)
Podejrzewam że pomyliłeś operatory relacji, chyba chciałeś dać 40% szans, tymczasem ponieważ dopuściłeś tylko jedną konkretną możliwość (4) szans nadal jest tylko 10%. Jeśli chcesz aby mięso pojawiało się w miarę często zmień warunek na "if mojazmienna <= 4", nie "=="

@down
Jeśli zmniejszysz ilość liczb do 2, pamiętaj żeby podmienić też tą czwórkę.

Althar

Althar

Użytkownicy
posty307
Propsy44
  • Użytkownicy

Althar

Skrypt losowości
#13 2009-11-25, 20:28(Ostatnia zmiana: 2009-11-25, 20:39)
Nie, dobrze 10%, bo to tylko test(zmienie przedmiot). Testowałem na ok. 10. Spróbuję jeszcze z tym"<=" albo zmniejszę ilość liczb do 2 i zobaczę czy mi się będzie częściej pojawiać.

EDIT:
 Zmniejszyłem ilość losowań do 2, zrobiłem "mojazmienna == 1" i nic, nadal nie ma itema w wilku(a przyzwałem z 10). Czy moze to być spowodowane, że dodałem własny plik B_Moje_GiveDeathInv.d ? Dodałem też Moje_przedmioty.d oraz Moje_zwierzaki.d wszystkie wpisałem do Gothic.src Zwierz sie przyzywa, przedmiot też. Ale nie losuje dodania przedmiotu.
 


0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry