isKindOf: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "Category:Scripting Commands ArmA2" to "Category:Scripting Commands Arma 2")
(added example)
 
(53 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Command|Comments=
{{RV|type=command
____________________________________________________________________________________________


| arma |Game name=
|game1= ofpe
|version1= 1.00


|1.00|Game version=
|game2= arma1
____________________________________________________________________________________________
|version2= 1.00


| Checks whether the object is (a subtype) of the given type. While main and alternative syntaxes support only '''CfgVehicles''', '''CfgAmmo''' and '''CfgNonAIVehicles''', alternative syntax 2 allows to specify any config, including [[missionConfigFile|mission config]]. |DESCRIPTION=
|game3= arma2
____________________________________________________________________________________________
|version3= 1.00


| object [[isKindOf]] typeName |SYNTAX=
|game4= arma2oa
|version4= 1.50


|p1= object: [[Object]] |PARAMETER1=
|game5= tkoh
|version5= 1.00


|p2= typeName: [[String]] |PARAMETER2=
|game6= arma3
|version6= 0.50


| [[Boolean]] |RETURNVALUE=
|gr1= Object Manipulation
____________________________________________________________________________________________


|s2= typeName1 [[isKindOf]] typeName2 |Alternative Syntax=
|descr= Checks whether the given object or type is (a subtype) of the given type.<br>
While {{Link|#Syntax 1}} and {{Link|#Syntax 2}} only support '''CfgVehicles''', {{GVI|arma2|1.00|size= 0.75}}'''CfgAmmo''' and '''CfgNonAIVehicles''', {{Link|#Syntax 3}} can be used with any config, including the [[missionConfigFile|mission config]].


|p21= typeName1: [[String]] |PARAMETER21=
|s1= object [[isKindOf]] typeName


|p22= typeName2: [[String]] |PARAMETER22=
|p1= object: [[Object]]


|r2= [[Boolean]] |RETURNVALUE2=
|p2= typeName: [[String]]
____________________________________________________________________________________________


|s3= typeName1 [[isKindOf]] [typeName2, targetConfig] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(''Since {{arma3}} v1.47'') |Alternative Syntax2=
|r1= [[Boolean]]


|p31= typeName1: [[String]]|PARAMETER31=
|s2= class1 [[isKindOf]] class2


|p32 = [typeName2, targetConfig]: - [[Array]]|PARAMETER32=
|p21= class1: [[String]]


|p33= typeName2: [[String]]|PARAMETER33=
|p22= class2: [[String]]


|p34= targetConfig: [[Config]]|PARAMETER34=
|r2= [[Boolean]]


|r3= [[Boolean]] |RETURNVALUE3=
|s3= class1 [[isKindOf]] [class2, targetConfig]
____________________________________________________________________________________________
 
|x1= <code>[[vehicle]] [[player]] [[isKindOf]] "Tank";</code> |EXAMPLE1=


|x2= <code>"BMP2" [[isKindOf]] "Tank";</code> |EXAMPLE2=
|s3since= arma3 1.48


|x3= <code>[[currentWeapon]] [[player]] [[isKindOf]] ["Rifle", [[configFile]] >> "CfgWeapons"];</code> |EXAMPLE3=
|p41= class1: [[String]]


____________________________________________________________________________________________
|p42= class2: [[String]]


| [[countType]], [[typeOf]], [[inheritsFrom]], [[configHierarchy]], [[ArmA_2:_CfgVehicles | Arma 2 CfgVehicles]] |SEEALSO=
|p43= targetConfig: [[Config]]
}}


<h3 style="display:none">Notes</h3>
|r3= [[Boolean]]
<dl class="command_description">
<!-- Note Section BEGIN -->


<dd class="notedate">Posted on April 23, 2007 - 16:34
|x1= <sqf>vehicle player isKindOf "Tank";</sqf>
<dt class="note">[[User:Kronzky|Kronzky]]
<dd class="note">This command can be used on the whole [[ArmA: CfgVehicles|hierarchical class tree]] (i.e. when checking a [[ArmA:_Vehicles#Wheeled|HMMWV]], one could test for "HMMWV50", "Car", "LandVehicle", etc., all of which would return [[true]].)


<dd class="notedate">Posted on 16 Apr, 2008
|x2= <sqf>"BMP2" isKindOf "Tank";</sqf>
<dt class="note">[[User:Dr_Eyeball|Dr_Eyeball]]
<dd class="note">It appears [[isKindOf]] is limited to the [[ArmA:_CfgVehicles|CfgVehicles]] branch of the class hierachy.<br>
So CfgWeapons, CfgMagazines, etc will return [[false]] for checks like:
("M9" isKindOf "Pistol") returns false
<br>


|x3= <sqf>currentWeapon player isKindOf ["Rifle", configFile >> "CfgWeapons"];</sqf>


<dd class="notedate">Posted on 8 Nov, 2009
|x4= <sqf>private _isSoldier = player isKindOf "CAManBase";</sqf>
<dt class="note">[[User:WGL.Q|.kju]]
<dd class="note">In a2 [[isKindOf]] also works for CfgAmmo in addition to CfgVehicles: ("M_9M311_AA" isKindOf "MissileBase") returns true. NOT for CfgWeapons, CfgMagazines and others..
<br>


|seealso= [[typeOf]] [[countType]] [[inheritsFrom]] [[configHierarchy]]
}}


<!-- Note Section END -->
</dl>


<h3 style="display:none">Bottom Section</h3>
{{Note
[[Category:Scripting Commands|ISKINDOF]]
|user= Kronzky
[[Category:Scripting Commands OFP Elite |ISKINDOF]]
|timestamp= 20070423163400
[[Category:Scripting Commands ArmA|ISKINDOF]]
|text= This command can be used on the whole [[ArmA: CfgVehicles|hierarchical class tree]] (i.e. when checking a [[ArmA:_Vehicles#Wheeled|HMMWV]], one could test for "HMMWV50", "Car", "LandVehicle", etc., all of which would return [[true]].)
[[Category:Command_Group:_Object_Information|{{uc:{{PAGENAME}}}}]]
}}
[[Category:Scripting Commands Arma 2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]


<!-- CONTINUE Notes -->
{{Note
<dl class="command_description">
|user= James
<dd class="notedate">Posted on June 16, 2015 - 17:54 (UTC)</dd>
|timestamp= 20150616175400
<dt class="note">[[User:James|James]]</dt>
|text= In case you cannot use [[isKindOf]] because of the reasons stated, just use [[BIS_fnc_returnParents]] with class names as return value:
<dd class="note">
<sqf>_isKindOf = "Rifle" in [configFile >> "CfgWeapons" >> "BWA3_G36K", true] call BIS_fnc_returnParents; // is true</sqf>
In case you cannot use [[isKindOf]] because of the reasons stated, just use [[BIS fnc returnParents]] with class names as return value:
}}
<code>_isKindOf = "Rifle" [[in]] [([[configFile]] >> "CfgWeapons" >> "BWA3_G36K"), [[true]]<nowiki>]</nowiki> [[call]] [[BIS_fnc_returnParents]]; {{cc|is true`}}</code>
</dd>
</dl>
<!-- DISCONTINUE Notes -->


<!-- CONTINUE Notes -->
{{Note
<dl class="command_description">
|user= Basstard
<dd class="notedate">Posted on September 6, 2015 - 22:21 (UTC)</dd>
|timestamp= 20150906222100
<dt class="note">[[User:Basstard|Basstard]]</dt>
|text= In {{arma3}} [[isKindOf]] works well with CfgWeapons and CfgMagazines using the syntax from example 3.<br>
<dd class="note">
It should be prefered to James' solution as it performs more than 25x faster. Tested in debug console with the following code snippets:
In A3 [[isKindOf]] works well with CfgWeapons and CfgMagazines using the syntax from example 3.<br />
<sqf>
It should be prefered to James' solution as it performs more than 25x faster. Tested in debug console with the following code snippets:<br />
"CA_Magazine" in ([configFile >> "CfgMagazines" >> "HandGrenade", true] call BIS_fnc_returnParents); // 0.12111 ms
<code>bool = "CA_Magazine" in ([([[configFile]] >> "CfgMagazines" >> "HandGrenade"),true] [[call]] [[BIS_fnc_returnParents]]); -->  0.12111ms</code>
"HandGrenade" isKindOf ["CA_Magazine", configFile >> "CfgMagazines"]; // 0.00439453 ms
<code>bool = "HandGrenade" [[isKindOf]] ["CA_Magazine", [[configFile]] >> "CfgMagazines"]; -->  0.00439453ms</code><br />
</sqf>
When checking in [[CfgVehicles]] the syntax from example 2 performs a little faster.
When checking in [[CfgVehicles]] the syntax from {{Link|#Example 2}} performs a little faster.
</dd>
}}
</dl>
<!-- DISCONTINUE Notes -->

Latest revision as of 11:50, 18 May 2023

Hover & click on the images for description

Description

Description:
Checks whether the given object or type is (a subtype) of the given type.
While Syntax 1 and Syntax 2 only support CfgVehicles, Logo A2.png1.00CfgAmmo and CfgNonAIVehicles, Syntax 3 can be used with any config, including the mission config.
Groups:
Object Manipulation

Syntax 1

Syntax:
object isKindOf typeName
Parameters:
object: Object
typeName: String
Return Value:
Boolean

Syntax 2

Syntax:
class1 isKindOf class2
Parameters:
class1: String
class2: String
Return Value:
Boolean

Syntax 3

Syntax:
class1 isKindOf [class2, targetConfig]
Parameters:
class1: String
class2: String
targetConfig: Config
Return Value:
Boolean

Examples

Example 1:
vehicle player isKindOf "Tank";
Example 2:
"BMP2" isKindOf "Tank";
Example 3:
currentWeapon player isKindOf ["Rifle", configFile >> "CfgWeapons"];
Example 4:
private _isSoldier = player isKindOf "CAManBase";

Additional Information

See also:
typeOf countType inheritsFrom configHierarchy

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note


Kronzky - c
Posted on Apr 23, 2007 - 16:34 (UTC)
This command can be used on the whole hierarchical class tree (i.e. when checking a HMMWV, one could test for "HMMWV50", "Car", "LandVehicle", etc., all of which would return true.)
James - c
Posted on Jun 16, 2015 - 17:54 (UTC)
In case you cannot use isKindOf because of the reasons stated, just use BIS_fnc_returnParents with class names as return value:
_isKindOf = "Rifle" in [configFile >> "CfgWeapons" >> "BWA3_G36K", true] call BIS_fnc_returnParents; // is true
Basstard - c
Posted on Sep 06, 2015 - 22:21 (UTC)
In Arma 3 isKindOf works well with CfgWeapons and CfgMagazines using the syntax from example 3.
It should be prefered to James' solution as it performs more than 25x faster. Tested in debug console with the following code snippets:
"CA_Magazine" in ([configFile >> "CfgMagazines" >> "HandGrenade", true] call BIS_fnc_returnParents); // 0.12111 ms "HandGrenade" isKindOf ["CA_Magazine", configFile >> "CfgMagazines"]; // 0.00439453 ms
When checking in CfgVehicles the syntax from Example 2 performs a little faster.