Oswojenie orka 7727 24

O temacie

Autor Sauron

Zaczęty 17.03.2012 roku

Wyświetleń 7727

Odpowiedzi 24

Sauron

Sauron

Użytkownicy
posty267
Propsy5
Profesjabrak
  • Użytkownicy
Dobra teraz się wkurzyłem. Nic nie działa próbowałem wiele sposobów, ale nie działa. Oto skrypty (wszystkie - dla pewności):
Speel_Orc_Domes:
// **********
// SPL_Orc_Domes
// **********

const int SPL_Cost_Orc_Domes = 5;

INSTANCE Spell_Orc_Domes (C_Spell_Proto)
{
time_per_mana = 0;
spelltype = SPELL_NEUTRAL;
targetCollectAlgo = TARGET_COLLECT_FOCUS;
targetCollectRange = 1000; //10m
};

func int Spell_Logic_Orc_Domes (var int manaInvested)
{
if (Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll))
{
return SPL_SENDCAST;
}
else if (self.attribute[ATR_MANA] >= SPL_Cost_Orc_Domes)
{
return SPL_SENDCAST;
}
else
{
return SPL_SENDSTOP;
};
};

func void Spell_Cast_Orc_Domes()
{
if (Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Scroll;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Orc_Domes;
};

if (other.flags != NPC_FLAG_IMMORTAL)
&& (other.guild == GIL_ORC)
&& (!C_NpcIsUndead(other))
&& (other.guild > GIL_SEPERATOR_HUM)
{
Npc_ClearAIQueue (other);
B_ClearPerceptions (other);
Npc_SetTrueGuild    (other, GIL_FRIENDLY_ORC);
other.guild         = GIL_FRIENDLY_ORC;
AI_StartState       (other, ZS_MM_Rtn_Follow_Sheep, 0, "");
other.aivar[AIV_ToughGuy]           = TRUE;
other.aivar[AIV_MM_RoamStart] = OnlyRoutine;

};

self.aivar[AIV_SelectSpell] += 1;
};

It_Scrolls:
INSTANCE ItSc_Orc_Domes (C_Item)
{
name = "Oswojenie orka";

mainflag = ITEM_KAT_RUNE;
flags = ITEM_MULTI;

value = 5000;

visual = "ItSc_Light.3DS";
material = MAT_LEATHER;

spell = SPL_Orc_Domes;
cond_atr[2]   = ATR_MANA_MAX;
cond_value[2]   = SPL_Cost_Scroll;

wear = WEAR_EFFECT;
effect = "SPELLFX_WEAKGLIMMER";

description = NAME_SPL_Orc_Domes;

TEXT [1] = NAME_Mana_needed;
COUNT [1] = SPL_Cost_Scroll;


TEXT [5] = NAME_Value;
COUNT [5] = value;
};

Spell_ProcessMana:
if (activeSpell == SPL_Orc_Domes  ) {   return  Spell_Logic_Orc_Domes (manaInvested); };

Constants:
const int SPL_Orc_Domes    = 90;


"Sleep",        // 90 SPL_Orc_Domes


"SLE", // 90 SPL_Orc_Domes

Text:
"SLE", // 90 SPL_Orc_Domes
 
Ash nazg durbatulûk, ash nazg gimbatul,
ash nazg thrakatulûk agh burzum-ishi krimpatul.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.
       if (other.flags != NPC_FLAG_IMMORTAL)          
        && (other.guild == GIL_ORC)
        && (!C_NpcIsUndead(other))                                      
        && (other.guild > GIL_SEPERATOR_HUM)            
        {              
                Npc_ClearAIQueue        (other);
                B_ClearPerceptions      (other);
                Npc_SetTrueGuild    (other, GIL_FRIENDLY_ORC);
                other.guild         = GIL_FRIENDLY_ORC;
                AI_StartState       (other, ZS_MM_Rtn_Follow_Sheep, 0, "");
                other.aivar[AIV_ToughGuy]           = TRUE;
                other.aivar[AIV_MM_RoamStart]           = OnlyRoutine;
       
        };

Ja bym zrobił nowy AI_StartStare (chodzi tu o ZS_Orc_Dome), w którym ork zmieni gildię (spauseuje go na 5 sec.), a potem zmieni rutynę np. na Follow_Sheep, bo inaczej tego nie zrobisz, a jak mu zmienisz w trakcie, gdy ork cię atakuje, to ork zmieni gildię, ale nastawienie dalej będzie HOSTILE, czyli będzie cię nienawidzić. Jeśli nie wiesz, jak zrobić nowy AI_StartState, to daj se z tym spokój. Aha, i bym zapomniał. Sama nazwa gildii nic nie zmieni, bo pomimo, iż będzie on FRIENDLY_ORC to będzie na ciebie wściekły, więc musisz mu zmienić Attitude i Permattitude na friendly. I wracając do AI_StartState, pamiętaj, iż jest w tym skrypcie linijka, która odpowiada za efekt w czasie - taki jak odbieranie 1 HP co sekundę - a są też dwie inne linijki, które odpowiadają za efekty przy starcie (np. Print ("Udało ci się (np.) zamrozić wroga!"); ), a jest też końcowy, który odpowiada za to, co się stanie na końcu tego AI_StartState. Miłego szyfrowania mojej wypowiedzi. :)
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.

Sawik

Sawik

Moderator działu
Rebel
posty4772
Propsy3197
ProfesjaNierób
  • Moderator działu
  • Rebel
Czemu dwa razy sprawdzasz gildię? Raz wystarczy. No i rutyna follow_sheep najlepszym wyborem nie jest, już lepiej dać follow_player.
 
Ż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

Sauron

Sauron

Użytkownicy
posty267
Propsy5
Profesjabrak
  • Użytkownicy

Sauron

Oswojenie orka
#23 2012-03-25, 11:08(Ostatnia zmiana: 2012-03-26, 16:33)
Czemu dwa razy sprawdzasz gildię? Raz wystarczy. No i rutyna follow_sheep najlepszym wyborem nie jest, już lepiej dać follow_player.
Zerżnąłem to z owcy od Pepe. Lepszego pomysłu nie miałem. :lol2:

EDIT: Zrobiłem to tak, ale nie działa:
Spell_Orc_Domes:
// **********
// SPL_Orc_Domes
// **********

const int SPL_Cost_Orc_Domes = 5;

INSTANCE Spell_Orc_Domes (C_Spell_Proto)
{
time_per_mana = 0;
spelltype = SPELL_NEUTRAL;
targetCollectAlgo = TARGET_COLLECT_FOCUS;
targetCollectRange = 1000; //10m
};

func int Spell_Logic_Orc_Domes (var int manaInvested)
{
if (Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_Cost_Scroll))
{
return SPL_SENDCAST;
}
else if (self.attribute[ATR_MANA] >= SPL_Cost_Orc_Domes)
{
return SPL_SENDCAST;
}
else
{
return SPL_SENDSTOP;
};
};

func void Spell_Cast_Orc_Domes()
{
if (Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Scroll;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_Orc_Domes;
};

if (other.flags != NPC_FLAG_IMMORTAL)
&& (other.guild == GIL_ORC)
&& (!C_NpcIsUndead(other))
&& (other.guild > GIL_SEPERATOR_HUM)
{
Npc_ClearAIQueue (other);
B_ClearPerceptions (other);
Npc_SetTrueGuild    (other, GIL_FRIENDLY_ORC);
other.guild         = GIL_FRIENDLY_ORC;
AI_StartState       (other, ZS_Follow_Player, 0, "");
other.aivar[AIV_PARTYMEMBER]        = TRUE;
other.aivar[AIV_ToughGuy]           = TRUE;
other.aivar[AIV_MM_RoamStart] = OnlyRoutine;
   B_SetAttitude (other, ATT_FRIENDLY);
Npc_SetAttitude (other, ATT_FRIENDLY);
Npc_SetTempAttitude(other, ATT_FRIENDLY);
};

self.aivar[AIV_SelectSpell] += 1;
};

ZS_MM_RTN_Orc_Domes:
// **********************
// ZS_MM_Rtn_Orc_Domes
// **********************

func void ZS_MM_Rtn_Orc_Domes()
{
Npc_SetPercTime (self, 1);

Npc_PercEnable (self, PERC_ASSESSPLAYER , B_MM_AssessPlayer);
Npc_PercEnable (self, PERC_ASSESSTALK , B_AssessTalk);

Npc_PercEnable (self, PERC_ASSESSMAGIC , B_AssessMagic);

B_SetAttitude      (self, ATT_FRIENDLY);
Npc_SetAttitude    (self, ATT_FRIENDLY);
Npc_SetTempAttitude(self, ATT_FRIENDLY);

Npc_SetTrueGuild   (self, GIL_FRIENDLY_ORC);
self.guild       = GIL_FRIENDLY_ORC;

};

func int ZS_MM_Rtn_Orc_Domes_Loop ()
{
if (self.aivar[AIV_PARTYMEMBER] == TRUE)
{
if (Npc_GetDistToNpc (self, hero) > 500)
{
if !C_BodyStateContains(self, BS_SWIM)
{
AI_SetWalkmode (self, NPC_RUN);
};

AI_GotoNpc (self, hero);
}
else
{
AI_TurnToNpc (self, hero);
self.wp = Npc_GetNearestWP (self);
};
}
else
{
var int randomMove;
randomMove = Hlp_Random(3);
if (randomMove == 0) {AI_PlayAni(self, "R_ROAM1");};
if (randomMove == 1) {AI_PlayAni(self, "R_ROAM2");};
if (randomMove == 2) {AI_PlayAni(self, "R_ROAM3");};
};

return LOOP_CONTINUE;
};

func void ZS_MM_Rtn_Orc_Domes_End ()
{

};

EDIT: A może spróbować zrobić nowego orka z GIL_FRIENDY_ORC, a czar podmieniałby orków? Tylko jak to zrobić...?
 
Ash nazg durbatulûk, ash nazg gimbatul,
ash nazg thrakatulûk agh burzum-ishi krimpatul.

Bogdan Zwei

Bogdan Zwei

Użytkownicy
Wulgarny skurwiel pierdolony.
posty1864
Propsy541
Profesjabrak
  • Użytkownicy
  • Wulgarny skurwiel pierdolony.

Bogdan Zwei

Oswojenie orka
#24 2012-03-31, 10:03(Ostatnia zmiana: 2012-03-31, 10:03)
Nie lepiej zrobić tak, jak napisałem w poprzednim poście? Tuż to łatwiejsze niż pisanie tego w skrypcie czaru, co nic Ci nie da.

I użyj follow_player jak to Sawik napisał.
 
:ok: zachęca do dalszej pomocy. Nie zapominaj o tym!

Prywatne wiadomości typu "Ej, pomocy" kasuję od razu. Od tego jest forum, a nie PW.

To me, defeat in anything is merely temporary, and its punishment is but an urge for me to greater effort to achieve my goal. Defeat simply tells me that something is wrong in my doing; it is a path leading to success and truth.

In order to realize our true self we must be willing to live without being dependent upon the opinion of others.


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