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
(Croatian page, not fully translated)
 
(Updating)
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{LanguageBar}}
{{LanguageBar}}
{{Translate}}
{{TabsBar}}
{{KV info|Targetname}}
{{This is a|keyvalue|name=targetname}}
'''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}}.
'''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 ==
== Bilješke ==
* Entiteti također mogu biti meta njihovih {{L|classname}} (npr. <code>prop_dynamic</code>).
* Entiteti se mogu ciljati i prema svom {{L|classname|nazivu klase}} (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 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 <code>!</code> ili <code>*</code> znakova (vidi dolje).
* Nazivi ciljeva ne mogu sadržavati znakove <code>!</code> ili <code>*</code> (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}}.
* 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.
 
== Instance ==
== Instance ==
* {{L|Instance}} može koristiti popravke imena prefiksa ili postfiksa i automatski će generirati prefiks ako nisu navedeni parametri.
* {{L|Instance}} 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'''.
* 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 [[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:


*Wildcards
*Wildcards
:Source supports <code>*</code> wildcards to a limited extent. This means searching for '''area1*''' will match any targetnames that start with '''area1''', like '''area1_portal''' or '''area1_door''', but not '''area2_door'''. These wildcards are also limited to trailing <code>*</code>, which means more complex wildcards like '''*_door''' or '''area*_door''' will not function.
: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}} has support for complex wildcard matching like '''*_door''', '''area*_door''', '''ar*a*_d*r''', <code>?</code> wildcards, etc.}}
::{{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 does not recognize most of these forms of matching and will see them as errors in the editor, but they will work in-game.}}
::{{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 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.}}
 
== Posebni nazivi ciljeva <span id="Keywords" /> ==
Sljedeći posebni nazivi ciljeva mogu se koristiti za dinamički odabir entiteta.
 
=== 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>


The [[Inputs and Outputs|I/O System]] also supports classname matching, which matches by an entity's classname rather than its targetname. This uses all of the same extended matching features listed above. Some other parts of Source support classname matching, but this usually isn't the case unless stated otherwise.
==== 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.}}


{{tip|Although not feasible for some situations, most implementations of [[VScript]] support standalone entity iteration and contain string comparison tools, regex, etc., allowing for virtually any type of name matching.}}
; <code>!self</code>
== Keywords ==
: Entitet koji prihvaća ulaz.
The following special targetnames can be used to dynamically select an entity.
: {{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.}}


{{note|Not all entity parameters can evaluate these targetnames. For example SetParent input can evaluate <code>!activator</code> parameter but player's SetFogController input is not able to evaluate <code>!activator/!caller</code> and needs to use the desired env_fog_controller's targetname.}}
; <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>
: The entity that began the current I/O chain.
: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;If a player walks into a [[trigger multiple|trigger]] that fires a {{ent|logic_relay}}, the player is the <code>!activator</code> of the relay's output(s).
: {{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>
 
: The entity from which the current input originates.
: &nbsp;&nbsp;If a player walks into a trigger that fires a logic_relay, the relay is the <code>!self</code> of its output(s).{{ExpandBox|
* If a logic_relay fires <code>ForceSpawnAtEntityOrigin !self</code> to an env_entity_maker with <code>OnTrigger</code>, the <code>!self</code> entity is the env_entity_maker itself.
|Special case:}}
; <code>!caller</code>
; <code>!caller</code>
: The entity from which the current output originates.
: Koristit će se '''pozivatelj''' izlaza ({{|Oni koji su procijenjeni na temelju aktivatora/pozivatelja|Pogledajte objašnjenje '''caller''' iznad}}).
: If a player walks into a trigger that fires a logic_relay, the trigger is the <code>!caller</code> of the relay's output(s).{{ExpandBox|
<dd>{{Example|Ako {{ent|logic_relay}} aktivira sljedeće iz izlaza <code>OnTrigger</code>:
* If a logic_relay fires <code>ForceSpawnAtEntityOrigin !caller</code> to an env_entity_maker with <code>OnTrigger</code>, the <code>!caller</code> entity is the relay itself.
* <code>env_entity_maker ForceSpawnAtEntityOrigin !caller</code>
* For entities such as <code>filter_activator_[xxxx]</code> or {{ent|logic_case}}, the <code>!caller</code> of a <code>TestActivator</code> or <code>PickRandom/PickRandomShuffle</code> is the <code>filter_activator_[xxxx]</code>/<code>logic_case</code> itself, not the entity that fired the input.
* ili <code>!caller Kill</code>
|Special case:}}
tada je entitet <code>!caller</code> sam relej u oba slučaja}}
: {{note|Individual inputs can override the entity targeted by <code>!caller</code>! This is done by {{ent|point_entity_finder}}, {{ent|math_counter}}, {{ent|logic_case}}, and filter entities.}}
 
=== Oni koji su procijenjeni drugim sredstvima ===
; <code>!player</code>
; <code>!player</code>
: Targets the player.
: Cilja igrača.
: &nbsp;&nbsp;In multiplayer games, it targets the first player that joined the server.
: U igrama za više igrača, cilja prvog igrača koji se pridružio serveru.
{{note|When testing an entity's name, this behaves as expected, matching if the entity is a player.}}
:{{tip|Za ciljanje svih igrača na poslužitelju, koristite naziv klase <code>player</code>.}}
{{tip|To target all players in a server, use the <code>player</code> classname.}}
 
{{bug|In Portal 2, entities parented using the <code>parentname</code> parameter fail to parent on map startup.}}
:{{workaround|Use a [[logic auto]] and a <code>SetParent</code> input instead.}}
; <code>!player_blue</code>{{Portal2|only}}
: In Portal 2 Coop, this targets ATLAS (player 1).
; <code>!player_orange</code>{{Portal2|only}}
: In Portal 2 Coop, this targets P-Body (player 2).
; <code>!pvsplayer</code>
: The first player found in the entity's [[Potential Visibility Set]]. The PVS used is taken from the entity doing the searching, or the activator if no searching entity exists. If no activator exists either, the first player in the game is returned (i.e. <code>!player</code>).
; <code>!picker</code>
; <code>!picker</code>
: The first entity under the player's crosshair; mostly only for debugging. Entities without collision can only be selected by aiming at their origin.
: 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;In multiplayer games, it uses the first player that joined the server.
: U igrama za više igrača koristi prvog igrača koji se pridružio poslužitelju.


=== FindNamedEntity Keywords ===
; <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}}
These keywords are only available in <code>FindNamedEntity</code>, a method specific to NPCs which is only searched by specific systems (e.g. choreographed scenes) and ''not'' by things like the I/O System.
:Cilja odgovarajućeg preživjelog.
: {{todo|{{Game link|Mapbase}} makes this available to I/O searches. Is this the case in any other branch?}}
 
; <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).
 
=== Ključne riječi FindNamedEntity ===
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 pretrage. Je li to slučaj u nekoj drugoj grani?}}


; <code>!speechtarget</code>
; <code>!speechtarget</code>
: The entity at which the <code>!caller</code> is looking due to a [[Choreography creation/Creating Events/Other Events#Look at Actor|Look At Actor]] or [[Choreography creation/Creating Events/Other Events#Face Actor|Face Actor]] choreography event.
: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>
: The <code>!caller</code>'s nearest friendly NPC. This returns the player on NPCs which don't descend from <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>
: The current enemy of the <code>!caller</code>.
: Trenutni neprijatelj <code>!caller</code>-a.


=== Keyword Notes ===
== Događaji igrača ==
* Both <code>!activator</code> and <code>!caller</code> can be different for specific inputs, which depends on each input's implementation. In most cases this is in an undesired manner, like <code>GetValue</code> for {{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.
* When an output's "Target Entity" is empty, <code>!self</code> is ''not'' set to the <code>!caller</code> value.
* <code>game_playerdie</code> - Okida se svaki put kada {{ent|player}} umre. Igrač koji je umro je '''<code>!aktivator</code>'''.
* Targetnames used in an output's parameter override field are evaluated by the entity that ''receives'' the output, not the one that sends it.
* <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>.}}


== See also ==
== Vidi također ==
* [[User Inputs and Outputs]]
* {{L|User Inputs and Outputs|Korisnički ulazi i izlazi}}
* <code>[[GetDebugName()]]</code>, for accessing an entity's targetname in C++.
* <code>{{L|GetDebugName()}}</code>, za pristup ciljnom nazivu entiteta u C++.


  <!-- Because hammer -->
  <!-- Because hammer -->


[[Category:Source]]
{{ACategory|Source}}
[[Category:Glossary]]
{{ACategory|Glossary}}
[[Category:Level Design]]<!--Why?-->
{{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.