Dokumentacija ovog članka je za sve što koristi Source pogon. Kliknite ovdje za više informacija.

Hr/Targetname: Difference between revisions

From Valve Developer Community
< Hr
Jump to navigation Jump to search
m (Croatian fully translated)
(Updating)
 
Line 1: Line 1:
{{LanguageBar}}
{{LanguageBar}}
{{TabsBar}}
{{This is a|keyvalue|name=targetname}}
'''Targetname''' (također poznat jednostavno kao '''name''') je naziv entiteta. Ciljni_naziv nije potreban za postojanje entiteta, ali općenito mora biti prisutan da bi entitet igrao ulogu u {{L|Inputs and Outputs|I/O sustavu}}.
== Bilješke ==
* Entiteti se mogu ciljati i prema svom {{L|classname|nazivu klase}} (npr. <code>prop_dynamic</code>).
* Nazivi ciljeva ne moraju biti jedinstveni, mogu se dijeliti (i unosi će se slati svakom od njih). Duplicirani nazivi ciljeva prikazuju se podebljanim fontom.
* Nazivi ciljeva ne mogu sadržavati znakove <code>!</code> ili <code>*</code> (vidi dolje).
* Nazivi ciljeva također ne mogu sadržavati znakove <code>,</code> ako namjeravate koristiti entitet kao roditelja, jer se to koristi za postavljanje {{L|točke vezivanja}}.
* Imenovanje određenih entiteta, kao što su {{L|light|svjetla}}, može promijeniti njihovo ponašanje.


'''''Targetname''''' je osnovna {{L|Keyvalue}} dostupna u svim {{Source|4.1}} igrama.
'''Targetname''' (prevedeno: ime cilja) (također poznato jednostavno kao '''Name''') je ime entiteta. Ciljno ime nije potrebno za postojanje entiteta, ali općenito mora biti prisutno da bi entitet igrao ulogu u {{L|Inputs and Outputs|I/O sustav}}.
== Bilješke ==
* Entiteti također mogu biti meta njihovih {{L|classname}} (npr. <code>prop_dynamic</code>).
* Imena ciljeva ne moraju biti jedinstvena, mogu se dijeliti (a unosi će se slati svakom). Duplicirani nazivi ciljeva prikazani su podebljanim fontom.
* Nazivi ciljeva ne mogu sadržavati <code>!</code> ili <code>*</code> znakova (vidi dolje).
* Nazivi ciljeva također ne mogu sadržavati <code>,</code> znakova ako namjeravate koristiti entitet kao nadređenog, jer se to koristi za postavljanje {{L|attachment point|točke privitka}}.
== Instance ==
== Instance ==
 
* {{L|Instance}} mogu koristiti ispravke imena s prefiksom ili postfiksom i automatski će generirati prefiks ako nisu navedeni parametri.
* {{L|Instance}} može koristiti popravke imena prefiksa ili postfiksa i automatski će generirati prefiks ako nisu navedeni parametri.
* Prefiksi i postfiksi odvojeni su jednom crticom, npr. '''hall_a3-door_02'''.
* Prefiksi i postfiksi odvojeni su jednom crticom, npr. '''hall_a3-door_02'''.
* Postavljanje <code>@</code> simbol na početku naziva cilja (e.g. '''@exit_door''') će zaobići popravak imenovanja za taj određeni entitet. Ako '''@exit_door''' i '''exit_door_relay''' bili dio instance s prefiksom '''Door_01''', nazivi entiteta bili bi '''@exit_door''' i '''Door_01-exit_door_relay'''.
* Postavljanje simbola <code>@</code> na početak ciljanog imena (npr. '''@exit_door''') zaobilazi ispravak imenovanja za taj određeni entitet. Ako su '''@exit_door''' i '''exit_door_relay''' dio instance s prefiksom '''Door_01''', imena entiteta bila bi '''@exit_door''' i '''Door_01-exit_door_relay'''.
 
== Događaji Igrača ==
U većini igara za više igrača, bilo kojem entitetu sa sljedećim imenima ciljeva bit će poslan unos {{L|Use}} kada se taj događaj dogodi.
* <code>game_playerdie</code> - Pali svaki put kad {{ent|player}} umre. Igrač koji je umro je '''<code>!activator</code>'''.
* <code>game_playerkill</code> -  Pali svaki put kad {{ent|player}} ubije drugog igrača, ubojica je '''<code>!activator</code>'''.
* <code>game_playerjoin</code> -  Pali svaki put kad {{ent|player}} pridruži igri, igrač koji se pridruži je '''<code>!activator</code>'''. {{bug|<code>game_playerjoin</code> nije otpušten od {{L|bot|botove}}.}}
* <code>game_playerspawn</code> -  Pali svaki put kad Pojavljuje se {{ent|player}}, s igračem koji se pojavljuje kao '''<code>!activator</code>'''. {{bug|<code>game_playerspawn</code> ne funkcionira u {{css}}{{csgo}}{{tf2}}.}}
* <code>game_playerleave</code> - Pali se svaki put kad {{ent|player}} napusti igru. '''<code>!activator</code>''' neće raditi u ovom slučaju, jer entitet <code>player</code> više ne postoji.
{{confirm|U kojim igrama game_playerjoin i game_playerspawn zapravo rade?}}
{{tip|U {{tf2}}{{l4d2}}, koristite {{flag|en}}[[Team Fortress 2/Scripting/Script Functions#Hooks|VScript zakačke događaja]] koji također nude dodatne informacije uz svaki događaj (kao što je napadač o smrti itd.). Ekvivalentni nazivi događaja su <code>player_spawn</code>, <code>player_death</code> i <code>player_disconnect</code>.}}


== Podudaranje imena ==
== Podudaranje imena ==
Dok traži entitet, Source može koristiti nekoliko proširenih značajki podudaranja koje su korisne u raznim situacijama. Koriste se za ciljanje entiteta s nepoznatim ili djelomično poznatim imenom, a najčešće se koriste u I/O lancima, ali se također mogu koristiti u ključnim vrijednostima koje ciljaju entitete, poput filtra KV u {{ent|filter_activator_name}}/<code>{{L|filter_activator_class|klasa}}</code> ili {{L|parent|nadređeno}} polje entiteta. Proširene značajke su:
Tijekom pretraživanja entiteta, Izvor može koristiti nekoliko proširenih značajki podudaranja koje su korisne u raznim situacijama. Koriste se za ciljanje entiteta s nepoznatim ili djelomično poznatim nazivom, a najčešće se koriste u I/O lancima, ali se mogu koristiti i u KeyValues ​​objektima koji ciljaju entitete, poput filtera KV u {{ent|filter_activator_name}}/<code>{{L|filter_activator_class|klasa}}</code> ili polju {{L|parent}} entiteta. Proširene značajke su:


*zamjenski znakovi
*Wildcards
:Source podržava <code>*</code> zamjenske znakove u ograničenoj mjeri. To znači da će traženje '''area1*''' odgovarati svim ciljevima koji počinju s '''area1''', poput '''area1_portal''' ili '''area1_door''', ali ne '''area2_door'''. Ovi zamjenski znakovi također su ograničeni na <code>*</code> na kraju, što znači složenije zamjenske znakove poput '''*_door''' ili '''area*_door''' neće funkcionirati.
:Source podržava zamjenske znakove <code>*</code> u ograničenoj mjeri. To znači da će pretraživanje '''area1*''' odgovarati svim nazivima ciljeva koji počinju s '''area1''', poput '''area1_portal''' ili '''area1_door''', ali ne '''area2_door'''. Ovi zamjenski znakovi također su ograničeni na završni <code>*</code>, što znači da složeniji zamjenski znakovi poput '''*_door''' ili '''area*_door''' neće funkcionirati.
::{{note|{{Game link|Mapbase}} ima podršku za složeno podudaranje zamjenskih znakova poput '''*_door''', '''area*_door''', '''ar*a*_d*r''', <code>?</code> zamjenski znakovi itd.}}
::{{note|Hammer ne prepoznaje većinu ovih oblika podudaranja i vidjet će ih kao pogreške u editoru, ali će raditi u igri.}}
::{{note|Hammer ne prepoznaje većinu ovih oblika podudaranja i vidjet će ih kao pogreške u uređivaču, ali će raditi u igri.}}
::{{note|{{Game link|Mapbase}} ima podršku za složeno podudaranje zamjenskih znakova poput '''*_door''', '''area*_door''', '''ar*a*_d*r''', <code>?</code> zamjenskih znakova itd.}}


{{L|Inputs and Outputs|I/O sustav}} također podržava podudaranje naziva klase, koje se podudara prema nazivu klase entiteta, a ne prema nazivu cilja. Ovo koristi sve iste značajke proširenog podudaranja navedene gore. Neki drugi dijelovi Izvora podržavaju podudaranje naziva klase, ali to obično nije slučaj osim ako nije drugačije navedeno.
{{L|Inputs and Outputs|I/O sustav}} također podržava podudaranje naziva klasa, koje se podudara s nazivom klase entiteta, a ne s njegovim ciljnim nazivom. Ovo koristi sve iste proširene značajke podudaranja navedene gore. Neki drugi dijelovi Izvornog koda podržavaju podudaranje naziva klasa, ali to obično nije slučaj osim ako nije drugačije navedeno.
{{important|Nije moguće ciljati po nazivu cilja i nazivu klase odjednom. Ako neki entitet ima naziv cilja prop_window, na primjer, i želimo ciljati sve entitete gdje naziv klase počinje s prop_ naredbom <code>ent_fire prop_* kill</code>, prop_* će prvo pokušati pronaći sve nazive ciljeva i koristiti naziv klase samo ako se pronađe entitet bez takvog naziva cilja, što pronalaženje naziva klase čini nepouzdanim. Slično tome, ako se neki entitet zove <code>player</code> i pokušamo ciljati sve igrače koristeći njihov naziv klase player, to neće raditi jer bi entitet pod nazivom player bio cilj.}}
{{tip|Iako nije izvedivo u nekim situacijama, većina implementacija {{L|VScript}} podržava samostalnu iteraciju entiteta i sadrži alate za usporedbu stringova, regex itd., što omogućuje gotovo svaku vrstu podudaranja imena.}}


{{tip|lako nije izvedivo u nekim situacijama, većina implementacija {{L|VScript}} podržava iteraciju samostalnog entiteta i sadrži alate za usporedbu nizova, regex, itd., dopuštajući gotovo bilo koju vrstu podudaranja imena.}}
== Posebni nazivi ciljeva <span id="Keywords" /> ==
== Ključne riječi==
Sljedeći posebni nazivi ciljeva mogu se koristiti za dinamički odabir entiteta.
Sljedeći posebni nazivi ciljeva mogu se koristiti za dinamički odabir entiteta.


{{note|Ne mogu svi parametri entiteta procijeniti ove nazive ciljeva. Na primjer, SetParent unos može procijeniti <code>!activator</code> parametar, ali igračev unos SetFogController ne može procijeniti <code>!activator/!caller</code> i treba koristiti ciljno ime željenog env_fog_controller-a.}}
=== Oni koji su procijenjeni na temelju aktivatora/pozivatelja <span id="Concept of activator / caller" /> ===
Svaki aktivirani izlaz stvara IO događaj koji se dodaje u red događaja (ispisiv pomoću {{cmd|dumpeventqueue}}), koji se obrađuje u odgovarajuće vrijeme na temelju određenog kašnjenja. IO događaji sadrže dodatne informacije o tzv. '''aktivatoru''' i '''pozivatelju''', a to je postavljeno načinom na koji je određeni izlaz aktiviran.
 
'''Activator''' je obično entitet koji je uzrokovao okidanje izlaza. Primjeri:
* OnPressed izlaz {{ent|func_button}} prilikom okidanja postavit će igrača koji ga je pritisnuo kao '''activator'''
* OnStartTouch izlaz {{ent|trigger_multiple}} prilikom okidanja postavit će entitet koji ga je dodirnuo kao '''activator'''
 
'''Caller''' je gotovo uvijek entitet gdje je definiran izlaz, ali postoje rijetki slučajevi gdje se to razlikuje i izlaz postavlja nešto drugo kao '''pozivatelj'''.
Primjeri posebnih slučajeva:
* OnGetValue izlaz od {{ent|math_counter}} postavit će svog '''Caller''' kao entitet koji je bio '''Caller''' ulaza GetValue koji je uzrokovao aktiviranje izlaza
* OnReachedFloor izlaz od {{ent|info_elevator_floor}} postavlja '''Caller''' kao entitet func_elevator koji je dosegao zadani kat
* OnFoundEntity izlaz od {{ent|point_entity_finder}} postavlja '''Caller''' kao pronađeni entitet
 
{{wikinote|Stranice entiteta mogu odrediti tko je aktivator i pozivatelj koji se procjenjuje za svaki izlaz. To se prikazuje kao mali sivi tekst ispod naziva izlaza. (Vidi na primjer stranice {{L|prop_physics#Outputs}}, {{L|math_counter#Outputs}}). Određivanje aktivatora/pozivatelja za izlaze može se izvršiti pomoću parametara [[Template:O]].}}
 
==== Kada se koristi kao 'Ciljni entitet' ====
; <code>!self</code>
: U ovom kontekstu <code>!self</code> će koristiti '''caller''' što ga čini ekvivalentnim <code>!caller</code>, što može dovesti do zabune u izlazima spomenutim kao posebni slučajevi (npr. OnGetValue, OnFoundEntity, OnReachedFloor ...)


; <code>!pvsplayer</code>
:Prvi igrač pronađen u {{L|PVS}}-u entiteta. Korišteni PVS uzima se iz '''caller''' ili '''activator''' ako ne postoji entitet '''caller'''. Ako također ne postoji '''activator''', ponaša se isto kao <code>!player</code>
==== Kada se koristi kao ulazni parametar ====
{{note|Kako se ulazni parametri obrađuju u entitetu koji prihvaća ulaz, ne mogu svi ulazi procijeniti ove ciljne nazive. Na primjer, ulaz SetParent može ih procijeniti, ali ulaz SetFogController od {{ent|player}} to ne može učiniti i treba koristiti željeni ciljni naziv env_fog_controllera.}}
; <code>!self</code>
: Entitet koji prihvaća ulaz.
: {{example|Ako logic_relay aktivira <code>ForceSpawnAtEntityOrigin !self</code> prema {{ent|env_entity_maker}} s <code>OnTrigger</code>, entitet <code>!self</code> je sam env_entity_maker.}}
; <code>!pvsplayer</code>
: Prvi igrač pronađen u {{L|PVS}}-u entiteta. Korišteni PVS uzima se od entiteta koji prihvaća ulaz. <!-- there should be no way this is null in this case right? -->
==== Ponaša se isto kao oboje ====
; <code>!activator</code>
; <code>!activator</code>
: Entitet koji je započeo trenutni I/O lanac.
:Koristit će se '''activator''' izlaza ({{↑|Oni koji su procijenjeni na temelju aktivatora/pozivatelja|Pogledajte objašnjenje '''activator''' iznad}}). Može se smatrati i entitetom koji je započeo trenutni I/O lanac.
: &nbsp;&nbsp;Ako igrač uđe u {{L|trigger multiple|okidač}} koji aktivira {{ent|logic_relay}}, igrač je <code>!activator</code> izlaza releja.
: {{example|U OnStartTouch izlazu {{ent|trigger_multiple}}, to je entitet koji je dodirnuo okidač, bez obzira koristi li se kao 'Ciljni entitet' ili parametar ulaza.}}
; <code>!self</code>
 
: Entitet iz kojeg potječe trenutni unos.
: &nbsp;&nbsp;Ako igrač uđe u okidač koji aktivira logic_relay, relej je <code>!self</code> njegovih rezultata.{{ExpandBox|
* Ako logic_relay aktivira <code>ForceSpawnAtEntityOrigin !self</code> env_entity_maker-u s <code>OnTrigger</code>, entitet <code>!self</code> je sam env_entity_maker.
|Poseban slučaj:}}
; <code>!caller</code>
; <code>!caller</code>
: Entitet iz kojeg potječe trenutni izlaz.
: Koristit će se '''pozivatelj''' izlaza ({{↑|Oni koji su procijenjeni na temelju aktivatora/pozivatelja|Pogledajte objašnjenje '''caller''' iznad}}).
: Ako igrač uđe u okidač koji aktivira logic_relay, okidač je <code>!caller</code> izlaza releja.{{ExpandBox|
<dd>{{Example|Ako {{ent|logic_relay}} aktivira sljedeće iz izlaza <code>OnTrigger</code>:
* Ako logic_relay aktivira <code>ForceSpawnAtEntityOrigin !caller</code> env_entity_maker-u s <code>OnTrigger</code>, entitet <code>!caller</code> je sam relej.
* <code>env_entity_maker ForceSpawnAtEntityOrigin !caller</code>
* Za entitete kao što su <code>filter_activator_[xxxx]</code> ili {{ent|logic_case}}, <code>!caller</code> od <code>TestActivator</code> ili <code>PickRandom/PickRandomShuffle</code> je sam <code>filter_activator_[xxxx]</code>/<code>logic_case</code>, a ne entitet koji je pokrenuo unos.
* ili <code>!caller Kill</code>
|Poseban slučaj:}}
tada je entitet <code>!caller</code> sam relej u oba slučaja}}
: {{note|Pojedinačni unosi mogu nadjačati entitet koji cilja <code>!caller</code>! Ovo se radi pomoću {{ent|point_entity_finder}}, {{ent|math_counter}}, {{ent|logic_case}}, i filter entiteta.}}
 
=== Oni koji su procijenjeni drugim sredstvima ===
; <code>!player</code>
; <code>!player</code>
: Cilja igrača.
: Cilja igrača.
: &nbsp;&nbsp;U igrama za više igrača, cilja na prvog igrača koji se pridružio poslužitelju.
: U igrama za više igrača, cilja prvog igrača koji se pridružio serveru.
{{note|Prilikom testiranja imena entiteta, ovo se ponaša prema očekivanjima, podudarajući se ako je entitet igrač.}}
:{{tip|Za ciljanje svih igrača na poslužitelju, koristite naziv klase <code>player</code>.}}
{{tip|Za ciljanje svih igrača na poslužitelju koristite naziv klase <code>player</code>.}}
 
{{bug|U Portalu 2, entiteti nadređeni pomoću parametra <code>parentname</code> ne uspijevaju nadređeni pri pokretanju karte.}}
:{{workaround|Umjesto toga upotrijebite {{L|logic auto}} i <code>SetParent</code> unos.}}
; <code>!player_blue</code>{{Portal2|only}}
: U Portal 2 Coop, ovo cilja na ATLAS (igrač 1).
; <code>!player_orange</code>{{Portal2|only}}
: U Portal 2 Coop, ovo cilja na P-Body (igrač 2).
; <code>!pvsplayer</code>
: Prvi igrač pronađen u entitetu {{L|Potential Visibility Set|Set potencijalne vidljivosti}}. PVS koji se koristi preuzet je od entiteta koji pretražuje ili od aktivatora ako ne postoji entitet koji pretražuje. Ako niti ne postoji aktivator, vraća se prvi igrač u igri (tj. <code>!player</code>).
; <code>!picker</code>
; <code>!picker</code>
: Prvi entitet ispod igračevog križića; uglavnom samo za otklanjanje pogrešaka. Entiteti bez kolizije mogu se odabrati samo ciljanjem na njihovo podrijetlo.
: Prvi entitet pod igračevim nišanom; uglavnom samo za otklanjanje pogrešaka. Entiteti bez kolizije mogu se odabrati samo ciljanjem na njihov ishodište.
: &nbsp;&nbsp;U igrama za više igrača koristi se prvi igrač koji se pridružio poslužitelju.
: U igrama za više igrača koristi prvog igrača koji se pridružio poslužitelju.
 
; <code>!bill</code> / <code>!zoey</code> / <code>!louis</code> / <code>!francis</code> / <code>!nick</code> / <code>!rochelle</code> / <code>!coach</code> / <code>!ellis</code> {{l4d2|only}}
:Cilja odgovarajućeg preživjelog.
 
; <code>!player_blue</code> / <code>!player_orange</code> {{Portal2|only}}
: U kooperativnom načinu rada, ovo cilja ATLAS (igrač 1/plavi) ili P-Body (igrač 2/narančasti).


=== FindNamedEntity Ključne riječi ===
=== Ključne riječi FindNamedEntity ===
Ove su ključne riječi dostupne samo u <code>FindNamedEntity</code>, metodi specifičnoj za NPC-ove koju pretražuju samo određeni sustavi (npr. koreografirane scene) a "ne" stvarima poput I/O sustava.
Ove ključne riječi dostupne su samo u <code>FindNamedEntity</code>, metodi specifičnoj za NPC-ove koju pretražuju samo određeni sustavi (npr. koreografirane scene), a ''ne'' stvari poput I/O sustava.
: {{todo|{{Game link|Mapbase}} čini ovo dostupnim za I/O pretraživanja. Je li to slučaj u nekoj drugoj grani?}}
: {{todo|{{Game link|Mapbase}} čini ovo dostupnim za I/O pretrage. Je li to slučaj u nekoj drugoj grani?}}


; <code>!speechtarget</code>
; <code>!speechtarget</code>
: Entitet koji <code>!caller</code> traži zbog {{flag|en}}[[Choreography creation/Creating Events/Other Events#Look at Actor|Pogledaj glumca]] ili {{flag|en}}[[Choreography creation/Creating Events/Other Events#Face Actor|Lice Glumac]] koreografski događaj.
:Entitet na koji <code>!caller</code> gleda zbog koreografskog događaja {{L|Choreography creation/Creating Events/Other Events#Pogledaj glumca|Pogledaj glumca}} ili {{L|Choreography creation/Creating Events/Other Events#Lice glumca|Lice glumca}}.
; <code>!friend</code>
; <code>!friend</code>
: <code>!caller</code> najbliži prijateljski NPC. Ovo vraća igrača na NPC-ovima koji ne potječu od <code>CAI_PlayerAlly</code>.
:Najbliži prijateljski NPC od <code>!caller</code>. Ovo vraća igrača na NPC-ovima koji ne potječu od <code>CAI_PlayerAlly</code>.
; <code>!enemy</code>
; <code>!enemy</code>
: Trenutni neprijatelj <code>!caller</code>.
: Trenutni neprijatelj <code>!caller</code>-a.


=== Bilješke o ključnim riječima ===
== Događaji igrača ==
* I <code>!activator</code> i <code>!caller</code> mogu se razlikovati za određene unose, što ovisi o implementaciji svakog ulaza. U većini slučajeva to je na neželjeni način, poput <code>GetValue</code> za {{ent|math_counter}}.
U većini igara za više igrača, bilo koji entitet sa sljedećim nazivima ciljeva dobit će unos {{L|Use}} poslan im kada se taj događaj dogodi.
* Kada je "Ciljni entitet" izlaza prazan, <code>!self</code> je ''nije'' postavljeno na vrijednost <code>!caller</code>.
* <code>game_playerdie</code> - Okida se svaki put kada {{ent|player}} umre. Igrač koji je umro je '''<code>!aktivator</code>'''.
* Nazive ciljeva koji se koriste u polju nadjačavanja parametara izlaza procjenjuje entitet koji "prima" izlaz, a ne onaj koji ga šalje.
* <code>game_playerkill</code> - Okida se svaki put kada {{ent|player}} ubije drugog igrača, ubojica je '''<code>!activator</code>'''.
* <code>game_playerjoin</code> - Okida se svaki put kada se {{ent|player}} pridruži igri, igrač koji se pridružuje je '''<code>!activator</code>'''. {{bug|<code>game_playerjoin</code> nije pokrenut od strane {{L|bot|botova}}.}}
* <code>game_playerspawn</code> - Aktivira se svaki put kada se pojavi {{ent|player}}, s igračem koji se pojavio kao '''<code>!aktivator</code>'''. {{bug|hidetested=1|<code>game_playerspawn</code> ne funkcionira u {{css}}{{csgo}}{{tf2}}.}}
* <code>game_playerleave</code> - Okida se svaki put kada {{ent|player}} napusti igru. '''<code>!activator</code>''' neće raditi u ovom slučaju, jer entitet <code>player</code> više ne postoji.
{{confirm|U kojim igrama game_playerjoin i game_playerspawn zapravo rade?}}
{{tip|U {{tf2}}{{l4d2}}, koristite {{L|Team Fortress 2/Scripting/Script Functions#Hooks|VScript hooks događaja}} koji također nude dodatne informacije uz svaki događaj (kao što je napadač u slučaju smrti itd.). Ekvivalentni nazivi događaja su <code>player_spawn</code>, <code>player_death</code> i <code>player_disconnect</code>.}}


== Vidi također ==
== Vidi također ==
* {{L|User Inputs and Outputs|Korisnički ulazi i izlazi}}
* {{L|User Inputs and Outputs|Korisnički ulazi i izlazi}}
* <code>[[GetDebugName()]]</code>, za pristup ciljnom nazivu entiteta u C++.
* <code>{{L|GetDebugName()}}</code>, za pristup ciljnom nazivu entiteta u C++.


  <!-- Because hammer -->
  <!-- Because hammer -->
Line 97: Line 119:
{{ACategory|Source}}
{{ACategory|Source}}
{{ACategory|Glossary}}
{{ACategory|Glossary}}
{{ACategory|Level Design}}<!--Why?-->


{{stub}}
{{stub}}

Latest revision as of 05:44, 28 April 2025

English (en)Hrvatski (hr)中文 (zh)Translate (Translate)
edit

targetname je keyvalue dostupan u svim Source Source igrama. Targetname (također poznat jednostavno kao name) je naziv entiteta. Ciljni_naziv nije potreban za postojanje entiteta, ali općenito mora biti prisutan da bi entitet igrao ulogu u I/O sustavu(en).

Bilješke

  • Entiteti se mogu ciljati i prema svom nazivu klase(en) (npr. prop_dynamic).
  • Nazivi ciljeva ne moraju biti jedinstveni, mogu se dijeliti (i unosi će se slati svakom od njih). Duplicirani nazivi ciljeva prikazuju se podebljanim fontom.
  • Nazivi ciljeva ne mogu sadržavati znakove ! ili * (vidi dolje).
  • Nazivi ciljeva također ne mogu sadržavati znakove , ako namjeravate koristiti entitet kao roditelja, jer se to koristi za postavljanje točke vezivanja(en).
  • Imenovanje određenih entiteta, kao što su svjetla(en), može promijeniti njihovo ponašanje.

Instance

  • Instance(en) mogu koristiti ispravke imena s prefiksom ili postfiksom i automatski će generirati prefiks ako nisu navedeni parametri.
  • Prefiksi i postfiksi odvojeni su jednom crticom, npr. hall_a3-door_02.
  • Postavljanje simbola @ na početak ciljanog imena (npr. @exit_door) zaobilazi ispravak imenovanja za taj određeni entitet. Ako su @exit_door i exit_door_relay dio instance s prefiksom Door_01, imena entiteta bila bi @exit_door i Door_01-exit_door_relay.

Podudaranje imena

Tijekom pretraživanja entiteta, Izvor može koristiti nekoliko proširenih značajki podudaranja koje su korisne u raznim situacijama. Koriste se za ciljanje entiteta s nepoznatim ili djelomično poznatim nazivom, a najčešće se koriste u I/O lancima, ali se mogu koristiti i u KeyValues ​​objektima koji ciljaju entitete, poput filtera KV u filter_activator_name/klasa(en) ili polju parent(en) entiteta. Proširene značajke su:

  • Wildcards
Source podržava zamjenske znakove * u ograničenoj mjeri. To znači da će pretraživanje area1* odgovarati svim nazivima ciljeva koji počinju s area1, poput area1_portal ili area1_door, ali ne area2_door. Ovi zamjenski znakovi također su ograničeni na završni *, što znači da složeniji zamjenski znakovi poput *_door ili area*_door neće funkcionirati.
Note.pngBilješka:Hammer ne prepoznaje većinu ovih oblika podudaranja i vidjet će ih kao pogreške u editoru, ali će raditi u igri.
Note.pngBilješka:Mapbase Mapbase ima podršku za složeno podudaranje zamjenskih znakova poput *_door, area*_door, ar*a*_d*r, ? zamjenskih znakova itd.

I/O sustav(en) također podržava podudaranje naziva klasa, koje se podudara s nazivom klase entiteta, a ne s njegovim ciljnim nazivom. Ovo koristi sve iste proširene značajke podudaranja navedene gore. Neki drugi dijelovi Izvornog koda podržavaju podudaranje naziva klasa, ali to obično nije slučaj osim ako nije drugačije navedeno.

Icon-Important.pngVažno:Nije moguće ciljati po nazivu cilja i nazivu klase odjednom. Ako neki entitet ima naziv cilja prop_window, na primjer, i želimo ciljati sve entitete gdje naziv klase počinje s prop_ naredbom ent_fire prop_* kill, prop_* će prvo pokušati pronaći sve nazive ciljeva i koristiti naziv klase samo ako se pronađe entitet bez takvog naziva cilja, što pronalaženje naziva klase čini nepouzdanim. Slično tome, ako se neki entitet zove player i pokušamo ciljati sve igrače koristeći njihov naziv klase player, to neće raditi jer bi entitet pod nazivom player bio cilj.
Tip.pngSavjet:Iako nije izvedivo u nekim situacijama, većina implementacija VScript(en) podržava samostalnu iteraciju entiteta i sadrži alate za usporedbu stringova, regex itd., što omogućuje gotovo svaku vrstu podudaranja imena.

Posebni nazivi ciljeva

Sljedeći posebni nazivi ciljeva mogu se koristiti za dinamički odabir entiteta.

Oni koji su procijenjeni na temelju aktivatora/pozivatelja

Svaki aktivirani izlaz stvara IO događaj koji se dodaje u red događaja (ispisiv pomoću dumpeventqueue), koji se obrađuje u odgovarajuće vrijeme na temelju određenog kašnjenja. IO događaji sadrže dodatne informacije o tzv. aktivatoru i pozivatelju, a to je postavljeno načinom na koji je određeni izlaz aktiviran.

Activator je obično entitet koji je uzrokovao okidanje izlaza. Primjeri:

  • OnPressed izlaz func_button prilikom okidanja postavit će igrača koji ga je pritisnuo kao activator
  • OnStartTouch izlaz trigger_multiple prilikom okidanja postavit će entitet koji ga je dodirnuo kao activator

Caller je gotovo uvijek entitet gdje je definiran izlaz, ali postoje rijetki slučajevi gdje se to razlikuje i izlaz postavlja nešto drugo kao pozivatelj. Primjeri posebnih slučajeva:

  • OnGetValue izlaz od math_counter postavit će svog Caller kao entitet koji je bio Caller ulaza GetValue koji je uzrokovao aktiviranje izlaza
  • OnReachedFloor izlaz od info_elevator_floor postavlja Caller kao entitet func_elevator koji je dosegao zadani kat
  • OnFoundEntity izlaz od point_entity_finder postavlja Caller kao pronađeni entitet
Wiki Note:Stranice entiteta mogu odrediti tko je aktivator i pozivatelj koji se procjenjuje za svaki izlaz. To se prikazuje kao mali sivi tekst ispod naziva izlaza. (Vidi na primjer stranice prop_physics#Outputs(en), math_counter#Outputs(en)). Određivanje aktivatora/pozivatelja za izlaze može se izvršiti pomoću parametara Template:O.

Kada se koristi kao 'Ciljni entitet'

!self
U ovom kontekstu !self će koristiti caller što ga čini ekvivalentnim !caller, što može dovesti do zabune u izlazima spomenutim kao posebni slučajevi (npr. OnGetValue, OnFoundEntity, OnReachedFloor ...)
!pvsplayer
Prvi igrač pronađen u PVS(en)-u entiteta. Korišteni PVS uzima se iz caller ili activator ako ne postoji entitet caller. Ako također ne postoji activator, ponaša se isto kao !player

Kada se koristi kao ulazni parametar

Note.pngBilješka:Kako se ulazni parametri obrađuju u entitetu koji prihvaća ulaz, ne mogu svi ulazi procijeniti ove ciljne nazive. Na primjer, ulaz SetParent može ih procijeniti, ali ulaz SetFogController od player to ne može učiniti i treba koristiti željeni ciljni naziv env_fog_controllera.
!self
Entitet koji prihvaća ulaz.
PlacementTip.pngPrimjer:Ako logic_relay aktivira ForceSpawnAtEntityOrigin !self prema env_entity_maker s OnTrigger, entitet !self je sam env_entity_maker.
!pvsplayer
Prvi igrač pronađen u PVS(en)-u entiteta. Korišteni PVS uzima se od entiteta koji prihvaća ulaz.

Ponaša se isto kao oboje

!activator
Koristit će se activator izlaza (Pogledajte objašnjenje activator iznad ↑). Može se smatrati i entitetom koji je započeo trenutni I/O lanac.
PlacementTip.pngPrimjer:U OnStartTouch izlazu trigger_multiple, to je entitet koji je dodirnuo okidač, bez obzira koristi li se kao 'Ciljni entitet' ili parametar ulaza.
!caller
Koristit će se pozivatelj izlaza (Pogledajte objašnjenje caller iznad ↑).
PlacementTip.pngPrimjer:Ako logic_relay aktivira sljedeće iz izlaza OnTrigger:
  • env_entity_maker ForceSpawnAtEntityOrigin !caller
  • ili !caller Kill
tada je entitet !caller sam relej u oba slučaja

Oni koji su procijenjeni drugim sredstvima

!player
Cilja igrača.
U igrama za više igrača, cilja prvog igrača koji se pridružio serveru.
Tip.pngSavjet:Za ciljanje svih igrača na poslužitelju, koristite naziv klase player.
!picker
Prvi entitet pod igračevim nišanom; uglavnom samo za otklanjanje pogrešaka. Entiteti bez kolizije mogu se odabrati samo ciljanjem na njihov ishodište.
U igrama za više igrača koristi prvog igrača koji se pridružio poslužitelju.
!bill / !zoey / !louis / !francis / !nick / !rochelle / !coach / !ellis (samo u Left 4 Dead 2)
Cilja odgovarajućeg preživjelog.
!player_blue / !player_orange (samo u Portal 2)
U kooperativnom načinu rada, ovo cilja ATLAS (igrač 1/plavi) ili P-Body (igrač 2/narančasti).

Ključne riječi FindNamedEntity

Ove ključne riječi dostupne su samo u FindNamedEntity, metodi specifičnoj za NPC-ove koju pretražuju samo određeni sustavi (npr. koreografirane scene), a ne stvari poput I/O sustava.

Napraviti: Mapbase Mapbase čini ovo dostupnim za I/O pretrage. Je li to slučaj u nekoj drugoj grani?
!speechtarget
Entitet na koji !caller gleda zbog koreografskog događaja Pogledaj glumca(en) ili Lice glumca(en).
!friend
Najbliži prijateljski NPC od !caller. Ovo vraća igrača na NPC-ovima koji ne potječu od CAI_PlayerAlly.
!enemy
Trenutni neprijatelj !caller-a.

Događaji igrača

U većini igara za više igrača, bilo koji entitet sa sljedećim nazivima ciljeva dobit će unos Use(en) poslan im kada se taj događaj dogodi.

  • game_playerdie - Okida se svaki put kada player umre. Igrač koji je umro je !aktivator.
  • game_playerkill - Okida se svaki put kada player ubije drugog igrača, ubojica je !activator.
  • game_playerjoin - Okida se svaki put kada se player pridruži igri, igrač koji se pridružuje je !activator.
    Icon-Bug.pngGreška:game_playerjoin nije pokrenut od strane botova(en).  [to-do: testirano u ?]
  • game_playerspawn - Aktivira se svaki put kada se pojavi player, s igračem koji se pojavio kao !aktivator.
    Icon-Bug.pngGreška:game_playerspawn ne funkcionira u Counter-Strike: SourceCounter-Strike: Global OffensiveTeam Fortress 2.
  • game_playerleave - Okida se svaki put kada player napusti igru. !activator neće raditi u ovom slučaju, jer entitet player više ne postoji.
Potvrdi:U kojim igrama game_playerjoin i game_playerspawn zapravo rade?
Tip.pngSavjet:U Team Fortress 2Left 4 Dead 2, koristite VScript hooks događaja(en) koji također nude dodatne informacije uz svaki događaj (kao što je napadač u slučaju smrti itd.). Ekvivalentni nazivi događaja su player_spawn, player_death i player_disconnect.

Vidi također


Stub

This article or section is a stub. You can help by expanding it.