Topic Summary
Posted by: Jay Doomed
« on: October 24, 2017, 03:27:29 PM »
I added the AngelScript Array class in so autocomplete would work for it and added some more notes on the mainpage of the help to include some known bugs in the game.
As soon as I get time to check it out I will. Thanks for good work.
Posted by: vis
« on: October 23, 2017, 07:37:03 PM »
So I finally took the time to get a decent IDE up and running with AngelScript and Turok 2. I've included instructions and download links in the first post. So if you are thinking about working with T2 scripts no matter your skill level, I highly recommend following those instructions.
 Tnx, man! : ) I just hope next remaster patch will move things on positive scale, in mp... : O
Posted by: BehemothProgrammer
« on: October 23, 2017, 07:27:11 PM »
I added the AngelScript Array class in so autocomplete would work for it and added some more notes on the mainpage of the help to include some known bugs in the game.
Posted by: Jay Doomed
« on: September 29, 2017, 10:03:05 AM »
Wow that's crazy thanks for this. That's very nice and helpful too.
Posted by: Rok
« on: September 27, 2017, 01:05:44 PM »
Have no idea how you do these things but really cool. I'm an absolute noob in scripting so if I ever try it I would definitely use this. Good work!
Posted by: Duke64
« on: September 26, 2017, 07:45:26 PM »
Man we were just talking about Doom does this xD You're awesome thanks! Under "Turok 2 tools" on Turok Sanctum. Just pm me if any changes to that post are needed there. https://turoksanctum.com/turok-2-api/
Posted by: BehemothProgrammer
« on: September 26, 2017, 06:42:51 PM »
So I finally took the time to get a decent IDE up and running with AngelScript and Turok 2. I've included instructions and download links in the first post. So if you are thinking about working with T2 scripts no matter your skill level, I highly recommend following those instructions.
Posted by: BehemothProgrammer
« on: September 07, 2017, 06:30:26 PM »
Updated the ScriptAPI.txt file with the additional actor func void AddToGallery(void) added in last update. As well I detailed some of the enemy common flags. And added a few notes here and there.
Posted by: ilgm
« on: June 21, 2017, 08:57:41 PM »
Really helpful, thanks.
I added some AI scripts in so I can put them in Raptor Fest. Might add more later
Fireborn, Biobot, Primagen Guard, Primagen Trooper, Nala, Cave Spider, Flesh Sentinal, Death Guard, and Lord of the Flesh
Fireborn kActor_AI_Fireborn { className "kexActor" placeable TRUE health 40 initialScale "0.5 0.5 0.5" Begin_Component "kexRenderMeshComponent" mesh "char/Fireborn.skinnedmesh" anim "anims/Fireborn.anim" End_Component Begin_Component "kexWorldComponent" radius 40.959999 wallRadius 51.199997 height 122.879997 deadHeight 20.480000 heightOffset 0.000000 bTrackGround TRUE End_Component Begin_Component "kexEnemyAIComponent" commonFlags 40372 startHealth 40 startAnimID 0 startSoundID 0 painSoundID 0 deathItemDropFlags1 0 deathItemDropFlags2 0 leashRadius 2048.000000 aggressionLevel 0 tranqHealth 2 flags 17072176 attackCombatRadius 163.839996 attackLeapRadius 245.759995 attackDartRadius 245.759995 attackProjectileRadius 1024.000000 attackWeaponRadius 1228.799927 groundBehavior 1 airBehavior 0 underwaterBehavior 0 extremeDeathModelIndex 1 explodeDeathModelIndex 1 headBlownDeathModelIndex 1 leftArmBlownDeathModelIndex 2 rightArmBlownDeathModelIndex 3 bodyHoleDeathModelIndex -1 extremeDeathAnimID 7315 explodeDeathAnimID 7310 headBlownDeathAnimID 7310 leftArmBlownDeathAnimID 7345 rightArmBlownDeathAnimID 7345 bodyHoleDeathAnimID 0 idleAnimFlags 33 moveAnimFlags 8452 patrolAnimFlags 1057 evadeAnimFlags 0 combatAnimFlags 1 leapAnimFlags 0 dartAnimFlags 0 projectileAnimFlags 4 weaponAnimFlags 0 comboAnimFlags 0 normalDeathAnimFlags 8452 movingDeathAnimFlags 4 violentDeathAnimFlags 0 explosiveDeathAnimFlags 1 alertAnimFlags 1 takeCoverAnimFlags 0 leftArmWoundAnimFlags 1 rightArmWoundAnimFlags 1 fleeAnimFlags 1 End_Component }
CaveSpider kActor_AI_CaveSpider { className "kexActor" placeable TRUE health 150 initialScale "0.500000 0.500000 0.500000" Begin_Component "kexRenderMeshComponent" mesh "char/Spider_Adult.skinnedmesh" anim "anims/Spider_Adult.anim" End_Component Begin_Component "kexWorldComponent" radius 61.4 wallRadius 92.2 height 112.6 deadHeight 61.43 heightOffset 0.000000 bTrackGround TRUE End_Component Begin_Component "kexEnemyAIComponent" commonFlags 6420 startAnimID 11200 deathItemDropFlags1 0 deathItemDropFlags1 0 leashRadius 2560.0 aggressionLevel 0 tranqHealth 20 startSoundID 0 painSoundID 841 flags 0 attackCombatRadius 204.799988 attackLeapRadius 163.83 attackDartRadius 163.83 attackProjectileRadius 921.59 attackWeaponRadius 1842.19 groundBehavior 1 airBehavior 0 underwaterBehavior 0 extremeDeathModelIndex -1 explodeDeathModelIndex -1 headBlownDeathModelIndex -1 leftArmBlownDeathModelIndex -1 rightArmBlownDeathModelIndex -1 bodyHoleDeathModelIndex -1 extremeDeathAnimID 0 explodeDeathAnimID 0 headBlownDeathAnimID 0 leftArmBlownDeathAnimID 0 rightArmBlownDeathAnimID 0 bodyHoleDeathAnimID 0 idleAnimFlags 1057 moveAnimFlags 1057 patrolAnimFlags 1056 evadeAnimFlags 0 combatAnimFlags 1 leapAnimFlags 0 dartAnimFlags 0 projectileAnimFlags 0 weaponAnimFlags 1 comboAnimFlags 0 normalDeathAnimFlags 1057 movingDeathAnimFlags 0 violentDeathAnimFlags 0 explosiveDeathAnimFlags 1 alertAnimFlags 0 takeCoverAnimFlags 0 leftArmWoundAnimFlags 0 rightArmWoundAnimFlags 0 fleeAnimFlags 0 startHealth 150 pathTID -1 End_Component }
Nala kActor_AI_Nala { className "kexActor" placeable TRUE health 30 initialScale "0.5 0.5 0.5" Begin_Component "kexRenderMeshComponent" mesh "char/Nala_normal.skinnedmesh" anim "anims/Nala_normal.anim" End_Component Begin_Component "kexWorldComponent" radius 10.2 wallRadius 51.199997 height 71.68 deadHeight 20.480000 heightOffset 0.000000 bTrackGround TRUE End_Component Begin_Component "kexEnemyAIComponent" commonFlags 7444 startAnimID 0 startSoundID 0 painSoundID 0 deathItemDropFlags1 0 deathItemDropFlags2 0 leashRadius 2560.000000 aggressionLevel 0 tranqHealth 20 flags 0 attackCombatRadius 81.839996 attackLeapRadius 163.8 attackDartRadius 163.8 attackProjectileRadius 1024.000000 attackWeaponRadius 409.599927 groundBehavior 1 airBehavior 0 underwaterBehavior 0 extremeDeathModelIndex 1 explodeDeathModelIndex 1 headBlownDeathModelIndex 1 leftArmBlownDeathModelIndex -1 rightArmBlownDeathModelIndex -1 bodyHoleDeathModelIndex 1 extremeDeathAnimID 7300 explodeDeathAnimID 7300 headBlownDeathAnimID 7300 leftArmBlownDeathAnimID 0 rightArmBlownDeathAnimID 0 bodyHoleDeathAnimID 7300 idleAnimFlags 1057 moveAnimFlags 1059 patrolAnimFlags 1056 evadeAnimFlags 0 combatAnimFlags 0 leapAnimFlags 0 dartAnimFlags 0 projectileAnimFlags 1 weaponAnimFlags 0 comboAnimFlags 0 normalDeathAnimFlags 1057 movingDeathAnimFlags 0 violentDeathAnimFlags 0 explosiveDeathAnimFlags 0 alertAnimFlags 0 takeCoverAnimFlags 0 leftArmWoundAnimFlags 0 rightArmWoundAnimFlags 0 fleeAnimFlags 0 startHealth 30 pathTID -1 End_Component }
PrimagenGuard kActor_AI_PrimagenGuard { className "kexActor" placeable TRUE health 100 initialScale "0.5 0.5 0.5" Begin_Component "kexRenderMeshComponent" mesh "char/Elite_Guard.skinnedmesh" anim "anims/Elite_Guard.anim" End_Component Begin_Component "kexWorldComponent" radius 51.959999 wallRadius 51.199997 height 174.879997 deadHeight 51.480000 heightOffset -2.500000 bTrackGround TRUE End_Component Begin_Component "kexEnemyAIComponent" commonFlags 40324 startAnimID 0 deathItemDropFlags1 33554432 deathItemDropFlags2 0 leashRadius 1024.000000 aggressionLevel 0 tranqHealth 20 startSoundID 0 painSoundID 0 flags 0 attackCombatRadius 225.279 attackLeapRadius 358.759995 attackDartRadius 163.759995 attackProjectileRadius 409.000000 attackWeaponRadius 2048.799927 groundBehavior 0 airBehavior 0 underwaterBehavior 0 extremeDeathModelIndex 1 explodeDeathModelIndex 5 headBlownDeathModelIndex 4 leftArmBlownDeathModelIndex 2 rightArmBlownDeathModelIndex 3 bodyHoleDeathModelIndex -1 extremeDeathAnimID 7300 explodeDeathAnimID 7325 headBlownDeathAnimID 7325 leftArmBlownDeathAnimID 7100 rightArmBlownDeathAnimID 7100 bodyHoleDeathAnimID 0 idleAnimFlags 1057 moveAnimFlags 1057 patrolAnimFlags 1057 evadeAnimFlags 0 combatAnimFlags 1 leapAnimFlags 1 dartAnimFlags 0 projectileAnimFlags 0 weaponAnimFlags 3 comboAnimFlags 0 normalDeathAnimFlags 1057 movingDeathAnimFlags 0 violentDeathAnimFlags 1 explosiveDeathAnimFlags 0 alertAnimFlags 1 takeCoverAnimFlags 0 leftArmWoundAnimFlags 0 rightArmWoundAnimFlags 0 fleeAnimFlags 0 startHealth 100 pathTID 5000 End_Component }
Biobot kActor_AI_BioBot { className "kexActor" placeable TRUE health 40 initialScale "0.5 0.5 0.5" Begin_Component "kexRenderMeshComponent" mesh "char/Bio-bot.skinnedmesh" anim "anims/Bio-bot.anim" End_Component Begin_Component "kexWorldComponent" radius 71.959999 wallRadius 40.199997 height 81.879997 deadHeight 30.480000 heightOffset -17.500000 bTrackGround TRUE End_Component Begin_Component "kexEnemyAIComponent" commonFlags 530692 startAnimID 0 deathItemDropFlags1 8192 deathItemDropFlags2 0 leashRadius 1024.000000 aggressionLevel 0 tranqHealth 20 startSoundID 0 painSoundID 0 flags 0 attackCombatRadius 307.279 attackLeapRadius 614.759995 attackDartRadius 163.759995 attackProjectileRadius 409.000000 attackWeaponRadius 2560.799927 groundBehavior 1 airBehavior 0 underwaterBehavior 0 extremeDeathModelIndex 3 explodeDeathModelIndex -1 headBlownDeathModelIndex 3 leftArmBlownDeathModelIndex 1 rightArmBlownDeathModelIndex 2 bodyHoleDeathModelIndex -1 extremeDeathAnimID 7300 explodeDeathAnimID 0 headBlownDeathAnimID 7300 leftArmBlownDeathAnimID 7345 rightArmBlownDeathAnimID 7345 bodyHoleDeathAnimID 0 idleAnimFlags 1072 moveAnimFlags 1057 patrolAnimFlags 1057 evadeAnimFlags 0 combatAnimFlags 1 leapAnimFlags 0 dartAnimFlags 0 projectileAnimFlags 0 weaponAnimFlags 1 comboAnimFlags 0 normalDeathAnimFlags 1057 movingDeathAnimFlags 0 violentDeathAnimFlags 0 explosiveDeathAnimFlags 1 alertAnimFlags 0 takeCoverAnimFlags 0 leftArmWoundAnimFlags 0 rightArmWoundAnimFlags 0 fleeAnimFlags 0 startHealth 40 pathTID -1 End_Component }
PrimagenTrooper kActor_AI_PrimagenTrooper { className "kexActor" placeable TRUE health 60 initialScale "0.5 0.5 0.5" Begin_Component "kexRenderMeshComponent" mesh "char/Trooper.skinnedmesh" anim "anims/Trooper.anim" End_Component Begin_Component "kexWorldComponent" radius 40.959999 wallRadius 40.199997 height 174.879997 deadHeight 40.480000 heightOffset -2.500000 bTrackGround TRUE End_Component Begin_Component "kexEnemyAIComponent" commonFlags 34196 startAnimID 0 deathItemDropFlags1 262144 deathItemDropFlags2 0 leashRadius 2560.000000 aggressionLevel 0 tranqHealth 20 startSoundID 0 painSoundID 0 flags 0 attackCombatRadius 225.279 attackLeapRadius 256.759995 attackDartRadius 163.759995 attackProjectileRadius 409.000000 attackWeaponRadius 3072.799927 groundBehavior 0 airBehavior 0 underwaterBehavior 0 extremeDeathModelIndex 1 explodeDeathModelIndex 4 headBlownDeathModelIndex 5 leftArmBlownDeathModelIndex 2 rightArmBlownDeathModelIndex 3 bodyHoleDeathModelIndex -1 extremeDeathAnimID 7300 explodeDeathAnimID 7325 headBlownDeathAnimID 7335 leftArmBlownDeathAnimID 7345 rightArmBlownDeathAnimID 7345 bodyHoleDeathAnimID 0 idleAnimFlags 1057 moveAnimFlags 1057 patrolAnimFlags 1057 evadeAnimFlags 1 combatAnimFlags 1 leapAnimFlags 0 dartAnimFlags 0 projectileAnimFlags 0 weaponAnimFlags 0 comboAnimFlags 0 normalDeathAnimFlags 1057 movingDeathAnimFlags 0 violentDeathAnimFlags 1 explosiveDeathAnimFlags 3 alertAnimFlags 1 takeCoverAnimFlags 0 leftArmWoundAnimFlags 0 rightArmWoundAnimFlags 0 fleeAnimFlags 0 startHealth 60 pathTID 5005 End_Component }
LordoftheFlesh kActor_AI_LordoftheFlesh { className "kexActor" placeable TRUE health 80 initialScale "0.5 0.5 0.5" Begin_Component "kexRenderMeshComponent" mesh "char/Lord_Of_The_Flesh.skinnedmesh" anim "anims/Lord_Of_The_Flesh.anim" End_Component Begin_Component "kexWorldComponent" radius 20.959999 wallRadius 61.199997 height 122.879997 deadHeight 20.480000 heightOffset 0.0 bTrackGround TRUE End_Component Begin_Component "kexEnemyAIComponent" commonFlags 40340 startAnimID 0 deathItemDropFlags1 0 deathItemDropFlags2 0 leashRadius 2560.000000 aggressionLevel 0 tranqHealth 5 startSoundID 0 painSoundID 0 flags 0 attackCombatRadius 81.91 attackLeapRadius 163.839 attackDartRadius 163.839 attackProjectileRadius 409.59 attackWeaponRadius 1843.199 groundBehavior 0 airBehavior 0 underwaterBehavior 0 extremeDeathModelIndex 1 explodeDeathModelIndex 5 headBlownDeathModelIndex 4 leftArmBlownDeathModelIndex 2 rightArmBlownDeathModelIndex 3 bodyHoleDeathModelIndex -1 extremeDeathAnimID 7300 explodeDeathAnimID 7500 headBlownDeathAnimID 7000 leftArmBlownDeathAnimID 7345 rightArmBlownDeathAnimID 7345 bodyHoleDeathAnimID 0 idleAnimFlags 1057 moveAnimFlags 1057 patrolAnimFlags 1057 evadeAnimFlags 0 combatAnimFlags 1 leapAnimFlags 0 dartAnimFlags 0 projectileAnimFlags 0 weaponAnimFlags 6 comboAnimFlags 0 normalDeathAnimFlags 1057 movingDeathAnimFlags 1 violentDeathAnimFlags 1 explosiveDeathAnimFlags 1 alertAnimFlags 1 takeCoverAnimFlags 0 leftArmWoundAnimFlags 1 rightArmWoundAnimFlags 1 fleeAnimFlags 1 startHealth 80 pathTID 5000 End_Component }
DeathGuard kActor_AI_DeathGuard { className "kexActor" placeable TRUE health 50 initialScale "0.5 0.5 0.5" Begin_Component "kexRenderMeshComponent" mesh "char/Death_Guard.skinnedmesh" anim "anims/Death_Guard.anim" End_Component Begin_Component "kexWorldComponent" radius 20.959999 wallRadius 61.199997 height 122.879997 deadHeight 20.480000 heightOffset 0.0 bTrackGround TRUE End_Component Begin_Component "kexEnemyAIComponent" commonFlags 40852 startAnimID 0 deathItemDropFlags1 0 deathItemDropFlags2 0 leashRadius 2560.000000 aggressionLevel 0 tranqHealth 3 startSoundID 0 painSoundID 0 flags 0 attackCombatRadius 81.91 attackLeapRadius 163.839 attackDartRadius 163.839 attackProjectileRadius 1024.59 attackWeaponRadius 1843.199 groundBehavior 0 airBehavior 0 underwaterBehavior 0 extremeDeathModelIndex 3 explodeDeathModelIndex 4 headBlownDeathModelIndex 5 leftArmBlownDeathModelIndex 1 rightArmBlownDeathModelIndex 2 bodyHoleDeathModelIndex -1 extremeDeathAnimID 7300 explodeDeathAnimID 7200 headBlownDeathAnimID 7335 leftArmBlownDeathAnimID 7345 rightArmBlownDeathAnimID 7345 bodyHoleDeathAnimID 0 idleAnimFlags 1057 moveAnimFlags 1057 patrolAnimFlags 1057 evadeAnimFlags 3 combatAnimFlags 7 leapAnimFlags 0 dartAnimFlags 0 projectileAnimFlags 1 weaponAnimFlags 1 comboAnimFlags 0 normalDeathAnimFlags 1057 movingDeathAnimFlags 1 violentDeathAnimFlags 1 explosiveDeathAnimFlags 3 alertAnimFlags 1 takeCoverAnimFlags 0 leftArmWoundAnimFlags 1 rightArmWoundAnimFlags 1 fleeAnimFlags 1 startHealth 50 pathTID 5000 End_Component }
FleshSentinel kActor_AI_FleshSentinel { className "kexActor" placeable TRUE health 30 initialScale "0.5 0.5 0.5" Begin_Component "kexRenderMeshComponent" mesh "char/Sentinel.skinnedmesh" anim "anims/Sentinel.anim" End_Component Begin_Component "kexWorldComponent" radius 10.959999 wallRadius 51.199997 height 117.879997 deadHeight 20.480000 heightOffset 0.0 bTrackGround TRUE End_Component Begin_Component "kexEnemyAIComponent" commonFlags 8084 startAnimID 0 deathItemDropFlags1 0 deathItemDropFlags2 0 leashRadius 2560.000000 aggressionLevel 0 tranqHealth 2 startSoundID 0 painSoundID 0 flags 2 attackCombatRadius 81.91 attackLeapRadius 163.839 attackDartRadius 163.839 attackProjectileRadius 1024.59 attackWeaponRadius 409.199 groundBehavior 1 airBehavior 0 underwaterBehavior 0 extremeDeathModelIndex 3 explodeDeathModelIndex 5 headBlownDeathModelIndex 4 leftArmBlownDeathModelIndex 1 rightArmBlownDeathModelIndex 2 bodyHoleDeathModelIndex -1 extremeDeathAnimID 7300 explodeDeathAnimID 7201 headBlownDeathAnimID 7335 leftArmBlownDeathAnimID 7345 rightArmBlownDeathAnimID 7345 bodyHoleDeathAnimID 0 idleAnimFlags 1057 moveAnimFlags 1057 patrolAnimFlags 1058 evadeAnimFlags 3 combatAnimFlags 3 leapAnimFlags 0 dartAnimFlags 0 projectileAnimFlags 1 weaponAnimFlags 0 comboAnimFlags 0 normalDeathAnimFlags 1057 movingDeathAnimFlags 1 violentDeathAnimFlags 1 explosiveDeathAnimFlags 3 alertAnimFlags 0 takeCoverAnimFlags 0 leftArmWoundAnimFlags 1 rightArmWoundAnimFlags 1 fleeAnimFlags 1 startHealth 30 pathTID -1 End_Component }
Posted by: Doom Dojo
« on: April 19, 2017, 01:09:18 PM »
After you unzip the "game.kpf" file use this to view and copy files to your Turok 2 directory. In your Turok 2 directory create a "scripts" folder and a "defs/actors" folder.
If we wanted to display the damage done to an enemy on the screen, the first thing we need to do is create a script for enemies. So first create a new file and call it "Enemy.txt" and place it in the scripts folder. Edit the file and create a class named Enemy and add the OnDamage callback function like so:
class Enemy : ScriptObject { kActor@ self; Enemy(kActor@ actor) { @self = actor; } void OnDamage(kDamageInfo& in dmgInfo) { Hud.AddMessage("Enemy took " + dmgInfo.hits + " damage"); } }
Now we just have to hook this script up to all the enemies in the game, but for testing let's just hook it up to the Raptoid enemy. All the definitions of everything in the game is in the folder "defs". enemies are in "defs/actors/enemies.txt"
So first let's copy the "defs/actors/enemies.txt" file that was in the game.kpf that you unzipped before, and paste that into "Turok 2 - Seeds of Evil/defs/actors/enemies.txt" Edit the file and the first entry is the Raptoid enemy. It's already defined all the properties and components needed by enemies in the game so we are going to add our custom script component class to the enemy by adding:
Begin_Component "kexScriptComponent" scriptClass "Enemy" End_Component That's all you need to do. Run the game - make sure you're in developer mode by opening the console and typing "developer 1" if you weren't you need to close and reopen the game after setting it. When a Raptoid is damaged it should display that damage text.
Oh wow it worked for me thanks a ton! I wasn't doing anything specific just messing around with the structure. Sixty Four was telling me how he could put some of you guys guides on Turok Sanctum too. And I definitely vote for that. A guide section of posts for that site is a good idea. This one should go there too for sure 
Posted by: Duke64
« on: April 10, 2017, 09:46:47 PM »
After you unzip the "game.kpf" file use this to view and copy files to your Turok 2 directory. In your Turok 2 directory create a "scripts" folder and a "defs/actors" folder.
If we wanted to display the damage done to an enemy on the screen, the first thing we need to do is create a script for enemies. So first create a new file and call it "Enemy.txt" and place it in the scripts folder. Edit the file and create a class named Enemy and add the OnDamage callback function like so:
class Enemy : ScriptObject { kActor@ self; Enemy(kActor@ actor) { @self = actor; } void OnDamage(kDamageInfo& in dmgInfo) { Hud.AddMessage("Enemy took " + dmgInfo.hits + " damage"); } }
Now we just have to hook this script up to all the enemies in the game, but for testing let's just hook it up to the Raptoid enemy. All the definitions of everything in the game is in the folder "defs". enemies are in "defs/actors/enemies.txt"
So first let's copy the "defs/actors/enemies.txt" file that was in the game.kpf that you unzipped before, and paste that into "Turok 2 - Seeds of Evil/defs/actors/enemies.txt" Edit the file and the first entry is the Raptoid enemy. It's already defined all the properties and components needed by enemies in the game so we are going to add our custom script component class to the enemy by adding:
Begin_Component "kexScriptComponent" scriptClass "Enemy" End_Component That's all you need to do. Run the game - make sure you're in developer mode by opening the console and typing "developer 1" if you weren't you need to close and reopen the game after setting it. When a Raptoid is damaged it should display that damage text.
That is really helpful man thanks a lot. Yeah keep up the good work can't wait to see your Turok 2 mod 
Posted by: BehemothProgrammer
« on: April 10, 2017, 08:35:45 PM »
Update #2 brings a little bit of new scripting functionality mainly the new HitScan method on the WorldComponent. Finally a non hacky way to do a raycast just like Turok 1 scripting. - new Class: kClipInfo - new WorldComponent Method: void HitScan(kClipInfo&out, const kVec3&in origin, const kVec3&in targetOrigin, const uint EnumClipFlags, const float=0)
Posted by: BehemothProgrammer
« on: April 08, 2017, 09:41:48 PM »
Updated with important notes on some of the event functions sent to ScriptObject as well as a execution order of the event startup functions.
ParticleFactory - IMPORTANT: Particles are not guaranteed to spawn and may return null. Even with 100 probability set they may not spawn for unknown reasons (rare).
Posted by: Snake Plissken
« on: April 06, 2017, 01:11:21 PM »
im so sorry for flooding i just noticed i did that here ill fix it. i also added scriptClass "BrutalEnemy" to the def index for the raptoid actor, its the first one in the text document def file, not sure why i said that. i added #include "scripts/BrutalTestHook.txt" to main.txt . i created a BrutalTestHook.txt and added what you said but i named the class BrutalEnemy in BrutalTestHook.txt so it would line up with scriptClass. this is what you have said or am i incorrect? sorry thnx for the help im sure you know what im trying to do. lol your the man thnx. anyways i do all of this and. the game loads but nothing prints to screen or to the hub/cmd/ anywhere. im going to do some further testing. i know scriptclass is a param in this version of the engine for a def file but i also know what className dose. however i fear that without proper hooking i would have to rebuild more then what im out to do. im going to read over your posts again and do some more testing. thnx.
EDITED a hour or so later: oh wow ok I got it thanks. hey pretty cool when it phrazes the defs it stores the information to some extent, allowing for us to redfine another's that we can then add to the collection that is a single actor with a bunch of cool stuff now thanks, I have my understanding on how to hook to instances of actors, or an understanding, you helped and that's cool. im gonna get back to work on things, if I have a issue applying using this method under a certain circumstances ill make sure to throw my treble's past you in a post. behemoth your great thanks. ill try to get my api list compared to this one soon I feel I was incorrect about a past one I mentioned however I still see a few missing from whats been collected in this post. but back on topic: thanks again pale for the trobleshooting. even if I did flood this with comments it still really helped. I can delete some of my posts I made a bunch but idk maby someone else will see it from the way I came at it and idk maby something can help.
Posted by: Snake Plissken
« on: April 06, 2017, 12:58:25 PM »
After you unzip the "game.kpf" file use this to view and copy files to your Turok 2 directory. In your Turok 2 directory create a "scripts" folder and a "defs/actors" folder.
If we wanted to display the damage done to an enemy on the screen, the first thing we need to do is create a script for enemies. So first create a new file and call it "Enemy.txt" and place it in the scripts folder. Edit the file and create a class named Enemy and add the OnDamage callback function like so:
class Enemy : ScriptObject { kActor@ self; Enemy(kActor@ actor) { @self = actor; } void OnDamage(kDamageInfo& in dmgInfo) { Hud.AddMessage("Enemy took " + dmgInfo.hits + " damage"); } }
Now we just have to hook this script up to all the enemies in the game, but for testing let's just hook it up to the Raptoid enemy. All the definitions of everything in the game is in the folder "defs". enemies are in "defs/actors/enemies.txt"
So first let's copy the "defs/actors/enemies.txt" file that was in the game.kpf that you unzipped before, and paste that into "Turok 2 - Seeds of Evil/defs/actors/enemies.txt" Edit the file and the first entry is the Raptoid enemy. It's already defined all the properties and components needed by enemies in the game so we are going to add our custom script component class to the enemy by adding:
Begin_Component "kexScriptComponent" scriptClass "Enemy" End_Component That's all you need to do. Run the game - make sure you're in developer mode by opening the console and typing "developer 1" if you weren't you need to close and reopen the game after setting it. When a Raptoid is damaged it should display that damage text.
im still reading the posts so ill delete this if you touched on it after you stated it but in my opnion, it would be a proper way if we were to hook into the script class and not declare a new one? do we then not need to script much more stuff inorder to make things work and this stuff would have nothing to do with are orignal goal, other then it needed to be done inorder to pull it off from this prospective. anyways this is how i looked at it so i been going down this road when tryin to pull it off. testing now
|