Zmiana funkcji onState bez spacera. 2827 2

O temacie

Autor chicken

Zaczęty 25.03.2015 roku

Wyświetleń 2827

Odpowiedzi 2

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Dobre zastosowanie przy masowych monologach.
func void ChangeMobOnState(var string mobName, var string function) {
var zCArray arr; arr = _^(MEM_SearchAllVobsByName(mobName));
var oCMobInter mob;

var int arrNum; arrNum = 1;
var int loop; loop = MEM_StackPos.position;

if (arrNum <= arr.numInArray) {
mob = _^(MEM_ReadIntArray(arr.array, arrNum));
mob.onStateFuncName = function;
arrNum += 1;

MEM_StackPos.position = loop;
};

if (arr.array) {
MEM_ArrayFree(arr.array);
};
MEM_Info(ConcatStrings(ConcatStrings("A ", IntToString(arrNum)), " mobs have changed onState function"));
};

I np. w Init_Swiata:
ChangeOnState("NazwaMobaLubCzegoTam",  "NazwaFunkcji");
Coś dla leniwych

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
To się bardziej do targowiska nadaje, chyba żebyś wytłumaczył jak to działa. 
No i dla noobków trzeba napisać jakie pakiety są wymagane. 
 
Życzę wam seksu analnego po stronie biernej.
Dropbox +500 mb na start
LowPoly
Wykonanie modelu niskopoligonowego to sztuka kompromisu. Nie jest to jedynie uproszczenie modelu wysokopoligonowego, ale głęboka modyfikacja oraz podejmowanie decyzji często zmieniających wygląd pierwotny obiektu, tak by przy najmniejszej ilości trójkątów uzyskać jak najwierniej odwzorowany kształt oryginału. Nie można też zapomnieć o tym iż musi nadal wyglądać przekonywająco i tak balansować by uzyskać efekt optymalny.

Podstawowym założeniem jest, że model nie powinien mieć zbędnych, niewidocznych dla gracza detali włączonych w geometrie. Większość obiektów jakie znajdują się w grze powinna prezentować się najlepiej z odległości około 3-5 metrów. Wszelkie detale, które zanikają, wydają się płaskie lub zlewają się z bryłą modelu należy uznać za zbędne i pozostawić je na normal mapie.

Fakt, iż gracz będzie w stanie podejść bliżej do obiektu i zobaczyć go z mniejszej niż 3m odległości nie powinno stanowić większego problemu, gdyż większą rolę odgrywają wtedy tekstury oraz dodatkowy detal zależny od materiału obiektu. To właśnie kompromis między wydajnością, a szczegółowością otoczenia.

Detal, którego nie widać z 3-5 metrów nie powinnien istnieć w geometrii modelu.
Krawędzie znajdujące się blisko siebie, które zlewają się z większej odległości należy uprościć do wspólnej płaszczyzny

chicken

chicken

RaveN Studio
posty1230
Propsy559
ProfesjaNierób
  • RaveN Studio
Cytuj
chyba żebyś wytłumaczył jak to działa.
Skrypt przeszukuje całe drzewko vobów w poszukiwaniu mobów o nazwie takiej, jaką wpiszemy w pierwszy argument funkcji, a potem ustawia tym mobom funkcję onState o nazwie podanej jako drugi argument funkcji.

Skrypt szuka wg. nazwy vobName, a nie focusName, czy mobName ( nie pamiętam nazw ).

Jest to przydatne jeśli ma ktoś dużo powtarzalnych mobów i chce do każdego dodać monolog.
Np.:
do Init_Swiata dodamy to:

ChangeOnState("MojMob",  "MojMonolog");, gdzieś napiszemy taką funkcję:

func void MyMonolog_S1 {
   if (Npc_IsPlayer(hero)) {
      AI_ProcessInfos(hero);
   };
};

//tutaj jakieś monologi.
Proste, prawda?

Potrzebny będzie zainicjowany Ikarus.
Odsyłam tutaj


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