1
Skrypty / AST (Agama Script Tools)
« dnia: 2017-12-19, 13:15 »
Jeśli AST będzie zintegrowany z SystemPackiem od następnej wersji, czy będzie coś takiego jak opcja domyślnie włączonej sprzętowej teselacji?
Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.
Przy przywoływaniu stwora dodawaj do globalnej zmiennej wartość. Gdy poziom bohatera wynosi np. 10, a wartość zmiennej przyzwania przekracza 100, przywołani słudzy atakują bohatera.
Przykład:Kod: [Zaznacz]var int Summon_Counter;
Dodatkowo, aby zaoszczędzić sobie warunków polecam wartość jaka ma być dodana do licznika zapisać w postaci AIVAR'a w NPC - zaoszczędzi to naprawdę dużo niepotrzebnych warunków.
//Cast zaklęcia demona
Summon_Counter += 50; //Demon dodaje +50, bo jest potężniejszy
//Cast szkieleta
Summon_Counter += 10; //Trochu mniej.
//ETC.
//W funkcji rutyny(?) potwora //Algorytmu!
if(Summon_Counter > hero.level * 5) //Jakiś warunek sprawdzający zmienną z poziomem bohatera
{
B_Attack(summon, hero); //Nie pamiętam argumentów funkcji B_Attack
};
//Oraz Przy zgonie naszego demona, czy innego przywołańca
if(slf.guild == GIL_SUMMONED_DEMON) //Zapewne można inaczej ;p
{
Summon_Counter -= 50;
};
Można krócej? xD
Co do tekstur - pewnie masz paczkę z teksturami z rozszerzeniem .disabled.
func void B_SummonedCreatureBehavior()
{
if(Hlp_GetInstanceID(self) == Hlp_GetInstanceID(ID_SUMMONED_CREATURE_1) || Hlp_GetInstanceID(self) == Hlp_GetInstanceID(ID_SUMMONED_CREATURE_2) || Itd.)
{
if((Summoned_Creature_1 + Summoned_Creature_2 + Summoned_Creature_3 + Summoned_Creature_4 + Summoned_Creature_5 + Summoned_Creature_6 + Summoned_Creature_7) > hero.level)
{
AI_StopProcessInfos(self);
B_Attack(self,other,AR_NONE,0);
}
else
{
start_aistate = ZS_MM_Rtn_Summoned;
};
};
};
func void B_RestartFreeze()
{
if((Npc_GetLastHitSpellID(self) == SPL_IceCube) || (Npc_GetLastHitSpellID(self) == SPL_IceWave))
{
self.protection[PROT_EDGE] += 25;
self.protection[PROT_BLUNT] += 25;
self.protection[PROT_POINT] += 25;
self.protection[PROT_MAGIC] += 25;
Npc_SetStateTime(self,0);
};
};
func void B_StopMagicFreeze()
{
Npc_PercEnable(self,PERC_ASSESSMAGIC,B_AssessMagic);
Npc_ClearAIQueue(self);
AI_Standup(self);
if(self.guild < GIL_SEPERATOR_HUM)
{
B_AssessDamage();
}
else
{
Npc_SetTempAttitude(self,ATT_HOSTILE);
};
};
func int ZS_MagicFreeze()
{
Npc_PercEnable(self,PERC_ASSESSMAGIC,B_RestartFreeze);
Npc_StopAni(self,"S_FIRE_VICTIM");
if(!C_BodyStateContains(self,BS_UNCONSCIOUS))
{
AI_PlayAniBS(self,"T_STAND_2_FREEZE_VICTIM",BS_UNCONSCIOUS);
};
self.aivar[AIV_FreezeStateTime] = 0;
};
func int ZS_MagicFreeze_Loop()
{
if(Npc_GetStateTime(self) > SPL_TIME_FREEZE)
{
B_StopMagicFreeze();
return LOOP_END;
};
if(Npc_GetStateTime(self) != self.aivar[AIV_FreezeStateTime])
{
self.aivar[AIV_FreezeStateTime] = Npc_GetStateTime(self);
if(self.attribute[ATR_HITPOINTS] > (self.attribute[ATR_HITPOINTS] - SPL_FREEZE_DAMAGE))
{
if((self.guild == GIL_FIREGOLEM) || (self.aivar[AIV_MM_REAL_ID] == ID_FIREWARAN) || (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_FIRE))
{
B_MagicHurtNpc(other,self,SPL_FREEZE_DAMAGE * 2);
return LOOP_CONTINUE;
};
if((self.guild == GIL_ICEGOLEM) || (self.aivar[AIV_MM_REAL_ID] == ID_DRAGON_ICE))
{
B_MagicHurtNpc(other,self,SPL_FREEZE_DAMAGE / 2);
return LOOP_CONTINUE;
};
B_MagicHurtNpc(other,self,SPL_FREEZE_DAMAGE);
};
};
return LOOP_CONTINUE;
};
func void ZS_MagicFreeze_End()
{
self.protection[PROT_EDGE] -= 25;
self.protection[PROT_BLUNT] -= 25;
self.protection[PROT_POINT] -= 25;
self.protection[PROT_MAGIC] -= 25;
};
A jakby do funkcji B_RefreshAtInsert dodać warunek, aby handlarzom gra ściągała broń?
Dodaj AI_UnequipWeapons do ZS odpowiadającego za rozmowę (nie pamiętam nazwy) - na sam początek, czyli funkcji rozpoczynającej dialog. W funkcji kończącej dialog (wszystko w tym samym ZS_*.d!) dodaj EquipBestRanged i Melee weapon.
W praktyce będzie to wyglądało tak: Zagadasz do byle jakiego npc, on odłoży broń do ekwipunku, po czym jak skończysz z nim gadać opcją "Koniec", założy on najsilniejszą broń dystansową i w zwarciu jaką posiada. Można dodać warunki typ if npc to pajac od handlu i wtedy to co napisałem wyżej.
Hi everyone, I'm translating L'Hiver Edition from the original Russian to English, however somebody told me it'd be better doing it using this, the Polish one, because they said me you fixed more things that in Russian's are not. Is that true? You also changed much from the Russian version?