Wywoływanie funkcji 6677 0

O temacie

Autor inż. Avallach

Zaczęty 29.01.2011 roku

Wyświetleń 6677

Odpowiedzi 0

inż. Avallach

inż. Avallach

Administrator
Czego pragniesz?
posty7358
Propsy4664
Nagrody
ProfesjaProgramista
  • Administrator
  • Czego pragniesz?

inż. Avallach
Administrator

Wywoływanie funkcji
2011-01-29, 13:11(Ostatnia zmiana: 2014-12-11, 22:45)
1. Funkcje wywoływane bezpośrednio przez engine
Pierwsza grupą, chyba najmniej znaną, wykorzystywaną tylko w kilku przypadkach i do raczej dość nieświadomie, są skryptowe funkcje wywoływane "bezpośrednio" przez engine. Część z nich chyba nie jest używana w oryginalnych skryptach.
B_NpcBye
B_RefreshArmor
B_RefreshAtInsert
B_SetCutscenePerceptions
B_SpreadAndMemorize
C_CanNewsBeSpread
C_CanNpcCollideWithSpell
C_DropUnconscious
G_CannotCast
G_CannotUse
G_CanSteal
G_NoKey
G_Picklock
G_Picklock
Init_ + WorldName
Init_Global
InitPerceptions
OnStateFunc + _S + State
Player_Hotkey_Lame_Potion
Player_Hotkey_Lame_Potion
Player_Hotkey_Screen_Map
Player_Mob_Another_Is_Using
Player_Mob_Missing_Item
Player_Mob_Missing_Key
Player_Mob_Missing_Key_Or_Lockpick
Player_Mob_Missing_Lockpick
Player_Mob_Never_Open
Player_Mob_Too_Far_Away
Player_Mob_Wrong_Side
Player_Plunder_Is_Empty
Player_Trade_Not_Enough_Gold
Player_Victim_Is_Immortal
Spell_Cast_ + SpellName, SpellLevel
Spell_ProcessMana
Spell_ProcessMana_Release
Startup_ + WorldName
Startup_Global

2. Zmysły NPC
Druga metoda to zmysły NPC. Za pomocą funkcji Npc_PercEnable możesz do każdego ze zmysłów danego NPC podpiąć jakąś funkcję. Zwykle korzysta się z tych standardowych i w nich daje wyzwalacze swoich własnych, ale nic nie stoi na przeszkodzie żeby modyfikować same oryginalne przypisania dla jakichś pojedynczych postaci.
Lista zmysłów:
PERC_ASSESSPLAYER
PERC_ASSESSENEMY
PERC_ASSESSFIGHTER
PERC_ASSESSBODY
PERC_ASSESSITEM
PERC_ASSESSMURDER
PERC_ASSESSDEFEAT
PERC_ASSESSDAMAGE
PERC_ASSESSOTHERSDAMAGE
PERC_ASSESSTHREAT
PERC_ASSESSREMOVEWEAPON
PERC_OBSERVEINTRUDER
PERC_ASSESSFIGHTSOUND
PERC_ASSESSQUIETSOUND
PERC_ASSESSWARN
PERC_CATCHTHIEF
PERC_ASSESSTHEFT
PERC_ASSESSCALL
PERC_ASSESSTALK
PERC_ASSESSGIVENITEM
PERC_ASSESSFAKEGUILD
PERC_MOVEMOB
PERC_MOVENPC
PERC_DRAWWEAPON
PERC_OBSERVESUSPECT
PERC_NPCCOMMAND
PERC_ASSESSMAGIC
PERC_ASSESSSTOPMAGIC
PERC_ASSESSCASTER
PERC_ASSESSSURPRISE
PERC_ASSESSENTERROOM
PERC_ASSESSUSEMOB

Chyba jednocześnie najczęściej używany i najbardziej niedoceniany jest PERC_ASSESSTALK. Nie jestem pewien czy pierwszy się tego domyśliłem (bo nigdy nie miałem okazji sprawdzić, od bardzo dawna nie działa mi Gothic), ale jest to zmysł który reaguje na kliknięcie na npc i NIE MUSI wyzwalać dialogu. Można polecić cokolwiek, albo kilka rzeczy jednocześnie. Przykładowo, gdyby zrobić NPC o wyglądzie konia, można by było zrobić żeby samo kliknięcie powodowało "wejście" na niego, bez żadnej zabawy w wydawanie polecenia przez dialog. A warto wiedzieć że obiekt typu NPC wcale nie musi być postacią z powszechnych wyobrażeń. Odpowiednie sztuczki mogą sprawić że nawet piec hutniczy czy wagonik będzie traktowany jako NPC i dzięki temu można np poruszać go skryptami po waynecie czy dowolnie manipulować.

3. Triggery w świecie gry
Trzeci rodzaj, to funkcje podpięte bezpośrednio do triggerów umieszczonych w świecie. Triggery to jak sama nazwa mówi, "wyzwalacze", które mogą być aktywowane na kilka sposobów. Może być to wyzwalanie co określoną ilość czasu (a dzięki wykorzystaniu Ikarusa nawet równo co klatkę), przez wejście bohatera w jakieś miejsce, przez zadanie obrażeń danemu obiektowi, użycie danego obiektu itd. Tutorial jak je tworzyć gdzieś już był, skrypty które są w nich wykorzystywane standardowo umieszcza się w Gothic\_Work\Data\Scripts\Content\Story\EVENTS, ale nie jest to wymagane.

4. Przedmioty
Można wykorzystywać do aktywowania funkcji parametry:
c_item.magic - niestety nie pamiętam co to mogło być, przestarzałe
c_item.on_equip   - wywoływanie przy zakładaniu itemu jak amulety, bronie, zbroje
c_item.on_unequip - wywoływanie przy ściąganiu itemu jak amulety, bronie, zbroje
c_item.on_state- wywoływanie przy używaniu itemów z parametrem scemename

5. Zachowania NPC
c_npc.mission - niestety nie pamiętam co to mogło być, przestarzałe
c_npc.daily_routine (przez funkcję TA_Min) - pętla rozkładu dnia
c_npc.start_aistate - chyba pojedyncza czynność na cały dzień

6. Dialogi
c_info.information - wywoływane po wybraniu danej opcji dialogowej

7. Inne
c_itemreact.reaction - wywoływane zdaje się w trakcie handlu, system porzucony, ale chyba da się go nadal użyć. Zainteresowanych szczegółami zapraszam na PW.


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