Hassat Hunter Posted February 8, 2013 Share Posted February 8, 2013 Try adding oClone at the top but blank, so void main() { object oTarget = OBJECT_SELF; object oClone = ""; int iFaction = 2; if( Not sure if it'll fix it, but it might help... Link to comment Share on other sites More sharing options...
Fair Strides 2 Posted February 8, 2013 Share Posted February 8, 2013 Show spoiler (hidden content - requires Javascript to show) So, I have a strange problem. The script compiles fine. The beginning of it executes fine. But then at some point it just stops recognizing two of my variables, causing all other parts of the script to fail to execute. What's stranger still is the script is almost identical to one I wrote for K2 with no such problems. Show spoiler (hidden content - requires Javascript to show) #include "jc_inc_clone" void main() { object oTarget = OBJECT_SELF; int iFaction = 2; if( oTarget == OBJECT_INVALID ) { JC_DLG("jc_clo1"); } else { string sTemp = JC_Template(oTarget); object oClone = CreateObject(OBJECT_TYPE_CREATURE, sTemp, GetLocation(OBJECT_SELF), FALSE); int iI; // Copy ALIGNMENT AdjustAlignment(oClone, GetAlignmentGoodEvil(oTarget), abs(GetGoodEvilValue(oTarget) - GetGoodEvilValue(oClone)), FALSE); // Clear INVENTORY for( iI = 0; iI <= 17; iI++ ) { ActionUnequipItem(GetItemInSlot(iI, oClone), TRUE); } // Copy INVENTORY for( iI = 0; iI <= 17; iI++ ) { if( GetIsObjectValid(GetItemInSlot(iI, oTarget)) ){ DelayCommand(0.1, AssignCommand(oClone, ActionEquipItem(CreateItemOnObject(GetStringLowerCase(GetTag(GetItemInSlot(iI, oTarget))), oClone, 1, 1), iI, TRUE))); } } // Copy APPEARANCE ApplyEffectToObject(2, EffectDisguise(GetAppearanceType(oTarget)), oClone, 0.0); // Set FACTION ChangeToStandardFaction(oClone, iFaction); // Heal up the clone (just in case) ApplyEffectToObject(0, EffectHeal(GetMaxHitPoints(oClone) - GetCurrentHitPoints(oClone)), oClone, 0.0); ApplyEffectToObject(0, EffectHealForcePoints(GetMaxForcePoints(oClone) - GetCurrentForcePoints(oClone)), oClone, 0.0); } } It works consistently up to and including the creation of oClone. After that, it seems like oTarget and oClone work once each, and after that they never work again. I'm able to shift parts of the code around to get that part to work, but at the expense of all the others. It's rather frustrating. Any ideas? I don't know. Could you post the contents of jc_inc_clone? That might help us out a bit. Link to comment Share on other sites More sharing options...
JCarter426 Posted February 8, 2013 Share Posted February 8, 2013 Try adding oClone at the top but blank, so void main() { object oTarget = OBJECT_SELF; object oClone = ""; int iFaction = 2; if( Not sure if it'll fix it, but it might help... I tried defining everything outside of the if... no luck. I don't know. Could you post the contents of jc_inc_clone? That might help us out a bit. Ah, well, I knew that part is working, but I've updated the code so jc_inc_clone takes up the bulk of it anyway, so here's the entire updated code: void JC_DLG(string sDLG) { SetPartyLeader(-1); DelayCommand(0.2, AssignCommand(OBJECT_SELF, ActionStartConversation(GetFirstPC(), sDLG, 0, 0, 1, "", "", "", "", "", "", 0, -1, -1, 1))); } int JC_Get_Class(object oObject) { int iClass1 = GetClassByPosition(1, oObject); int iClass2 = GetClassByPosition(2, oObject); int iClass3 = GetClassByPosition(3, oObject); if( iClass3 != 255 ) return iClass3; if( iClass2 != 255 ) return iClass2; return iClass1; } string JC_Class_To_String(int iClass) { if( iClass == 0 ) return "soldier"; if( iClass == 1 ) return "scout"; if( iClass == 2 ) return "scoundrel"; if( iClass == 3 ) return "guardian"; if( iClass == 4 ) return "consular"; if( iClass == 5 ) return "sentinel"; if( iClass == 6 ) return "combat"; if( iClass == 7 ) return "expert"; if( iClass == 8 ) return "minion"; return "minion"; } string JC_Class_To_Letter(int iClass) { if( iClass == 0 ) return "r"; if( iClass == 1 ) return "t"; if( iClass == 2 ) return "l"; if( iClass == 3 ) return "g"; if( iClass == 4 ) return "c"; if( iClass == 5 ) return "s"; return ""; } string JC_Gender_To_String(object oObject) { if( GetGender(oObject) == 1 ) return "f"; return ""; } int JC_Get_Level(object oObject) { int iLevel = ( GetLevelByPosition(1, oObject) + GetLevelByPosition(2, oObject) + GetLevelByPosition(3, oObject) ); return iLevel; } string JC_Level_To_String(object oObject) { return IntToString(JC_Get_Level(oObject)); } string JC_Object_To_JC_Temp(object oObject) { if( oObject == GetFirstPC() ) return JC_Class_To_Letter(JC_Get_Class(oObject)) + "pc" + JC_Gender_To_String(oObject); if( GetTag(oObject) == "Bastila" ) return "bastila"; if( GetTag(oObject) == "Cand" ) return "canderous"; if( GetTag(oObject) == "Carth" ) return "carth"; if( GetTag(oObject) == "HK47" ) return "hk47"; if( GetTag(oObject) == "Jolee" ) return "jolee"; if( GetTag(oObject) == "Juhani" ) return "juhani"; if( GetTag(oObject) == "Mission" ) return "mission"; if( GetTag(oObject) == "T3M4" ) return "t3m4"; if( GetTag(oObject) == "Zaalbar" ) return "zaalbar"; return JC_Class_To_String(JC_Get_Class(oObject)) + JC_Gender_To_String(oObject); } string JC_Template(object oObject) { return "jc_" + JC_Object_To_JC_Temp(oObject) + JC_Level_To_String(oObject); } void JC_CLONE(object oTarget, int iFaction) { object oClone; string sTemp; int iI; if( oTarget == OBJECT_INVALID ) { JC_DLG("jc_clo1"); } else { string sTemp = JC_Template(oTarget); object oClone = CreateObject(OBJECT_TYPE_CREATURE, sTemp, GetLocation(OBJECT_SELF), FALSE); // Copy ALIGNMENT AdjustAlignment(oClone, GetAlignmentGoodEvil(oTarget), abs(GetGoodEvilValue(oTarget) - GetGoodEvilValue(oClone)), FALSE); // Clear INVENTORY for( iI = 0; iI <= 17; iI++ ) { ActionUnequipItem(GetItemInSlot(iI, oClone), TRUE); } // Copy INVENTORY for( iI = 0; iI <= 17; iI++ ) { if( GetIsObjectValid(GetItemInSlot(iI, oTarget)) ){ DelayCommand(0.1, AssignCommand(oClone, ActionEquipItem(CreateItemOnObject(GetStringLowerCase(GetTag(GetItemInSlot(iI, oTarget))), oClone, 1, 1), iI, TRUE))); } } // Copy APPEARANCE ApplyEffectToObject(2, EffectDisguise(GetAppearanceType(oTarget)), oClone, 0.0); // Set FACTION ChangeToStandardFaction(oClone, iFaction); // Heal up the clone (just in case) ApplyEffectToObject(0, EffectHeal(GetMaxHitPoints(oClone) - GetCurrentHitPoints(oClone)), oClone, 0.0); ApplyEffectToObject(0, EffectHealForcePoints(GetMaxForcePoints(oClone) - GetCurrentForcePoints(oClone)), oClone, 0.0); } } void main() { } And then this is executed through either: #include "jc_inc_clone" void main() { JC_CLONE(OBJECT_SELF, 2); } or: #include "jc_inc_clone" void main() { JC_CLONE(GetNearestObject(OBJECT_TYPE_CREATURE, OBJECT_SELF, 1), 2); } EDIT: I have someone breathing down my neck, waiting impatiently for me to finish this, so to prove that it's not my fault I took the scripts and all the support files and moved them into K2, not changing a damn thing. AND IT WORKS. So what's up? I'm officially lost at this point. Link to comment Share on other sites More sharing options...
Thrak Farelle Posted April 3, 2013 Share Posted April 3, 2013 Apologies if I could have found this somewhere else, but I'm rather new to modding, and can't seem to find a particular piece of script code anywhere. I'm trying to write a conditional script to check class in K1 before a specific dialogue option becomes available, but I've searched and searched and can't find the specific code I need. Link to comment Share on other sites More sharing options...
JCarter426 Posted April 3, 2013 Share Posted April 3, 2013 // 341: A creature can have up to three classes. This function determines the // creature's class (CLASS_TYPE_*) based on nClassPosition. // - nClassPosition: 1, 2 or 3 // - oCreature // * Returns CLASS_TYPE_INVALID if the oCreature does not have a class in // nClassPosition (i.e. a single-class creature will only have a value in // nClassLocation=1) or if oCreature is not a valid creature. int GetClassByPosition(int nClassPosition, object oCreature=OBJECT_SELF); So, if you want to check if a creature has any particular class: int StartingConditional(){ object oCreature = [whatever]; int iClass = [whatever]; int iC1 = GetClassByPosition(1, oCreature); int iC2 = GetClassByPosition(2, oCreature); int iC3 = GetClassByPosition(3, oCreature); if( iC1 == iClass || iC2 == iClass || iC3 == iClass ){ return TRUE; } return FALSE; } I'm not sure how the class positions get assigned, so depending on what you need it could be trickier than just that. Link to comment Share on other sites More sharing options...
Thrak Farelle Posted April 3, 2013 Share Posted April 3, 2013 // 341: A creature can have up to three classes. This function determines the // creature's class (CLASS_TYPE_*) based on nClassPosition. // - nClassPosition: 1, 2 or 3 // - oCreature // * Returns CLASS_TYPE_INVALID if the oCreature does not have a class in // nClassPosition (i.e. a single-class creature will only have a value in // nClassLocation=1) or if oCreature is not a valid creature. int GetClassByPosition(int nClassPosition, object oCreature=OBJECT_SELF); So, if you want to check if a creature has any particular class: int StartingConditional(){ object oCreature = [whatever]; int iClass = [whatever]; int iC1 = GetClassByPosition(1, oCreature); int iC2 = GetClassByPosition(2, oCreature); int iC3 = GetClassByPosition(3, oCreature); if( iC1 == iClass || iC2 == iClass || iC3 == iClass ){ return TRUE; } return FALSE; } I'm not sure how the class positions get assigned, so depending on what you need it could be trickier than just that. Thanks very much, combining some of that with code from another script that had another bit of what I needed allowed me to write the necessary script, and I've tested it ingame, so I know it works Thanks again Link to comment Share on other sites More sharing options...
supreme kotor Posted April 8, 2013 Share Posted April 8, 2013 I know this probably seems like a really wierd question but I assure you there is good reason for it. Now to the question: would it be possible to make a force power (buff) never go away after you cast it? And if that is possible would it be possible to remove the blue arrow it makes? Thanks in advance Link to comment Share on other sites More sharing options...
Fair Strides 2 Posted April 9, 2013 Share Posted April 9, 2013 I know this probably seems like a really wierd question but I assure you there is good reason for it. Now to the question: would it be possible to make a force power (buff) never go away after you cast it? And if that is possible would it be possible to remove the blue arrow it makes? Thanks in advance You might experiment with the "DURATION_TYPE_PERMANENT" option in the ApplyEffect function. Though I would have to assume that it is gone when dispelled and/or you change areas. Still, experimentation may prove me wrong. Hope you have a good run and remember: Show spoiler (hidden content - requires Javascript to show) "Scripting is fun!"~~ said some random modder as others attacked him for his insanity. Link to comment Share on other sites More sharing options...
VarsityPuppet Posted April 9, 2013 Share Posted April 9, 2013 "Scripting is fun!"~~ said some random modder as others attacked him for his insanity. Well it would be easier if one could program such things in one contiguous file. Kinda stinks having so many separate files to go through. Sure, you could include a lot of scripts that define functions. Actually that sounds like it would be a lot of fun! Link to comment Share on other sites More sharing options...
Fair Strides 2 Posted April 9, 2013 Share Posted April 9, 2013 Well it would be easier if one could program such things in one contiguous file. Kinda stinks having so many separate files to go through. Sure, you could include a lot of scripts that define functions. Actually that sounds like it would be a lot of fun! "Ahhh! He's insane! Aaatttttaaaccckkkk!!!"~~the mob continues to assault programmers everywhere... Link to comment Share on other sites More sharing options...
Darth InSidious Posted April 9, 2013 Share Posted April 9, 2013 You could include a check in the creature's OnHeartbeat script to reapply the script. It wouldnt quite be permanent - there'd be a few seconds at the start of each module where it wouldn't be active - but it would be close. Link to comment Share on other sites More sharing options...
supreme kotor Posted April 9, 2013 Share Posted April 9, 2013 Thanks a lot I will try the permanent and if dosent work I'll just use the on heart beat. Link to comment Share on other sites More sharing options...
Taunger Posted April 25, 2013 Share Posted April 25, 2013 Hello there! Hope it's alright to post this here: I’m looking to create dialogs with fight sequences for K1 like these: The CutsceneAttack function is often mentioned and works, but I run into the problem that was also discussed here without a solution coming up, which is that it works for only one attack. For that reason, I don’t think this function is used in the scenes above; I can clearly see an NPC attack more than once in a single dialog node. So, my question is, what other method is there to create these fight sequences? I’d like them to be identical every time. Should I use the ActionPlayAnimation or PlayAnimation functions? In that case, would I have to “manually” call the attacker’s and defender’s animation, plus any effects like sparks or lasers from blasters? Link to comment Share on other sites More sharing options...
Fair Strides 2 Posted April 25, 2013 Share Posted April 25, 2013 Hello there! Hope it's alright to post this here: I’m looking to create dialogs with fight sequences for K1 like these: The CutsceneAttack function is often mentioned and works, but I run into the problem that was also discussed here without a solution coming up, which is that it works for only one attack. For that reason, I don’t think this function is used in the scenes above; I can clearly see an NPC attack more than once in a single dialog node. So, my question is, what other method is there to create these fight sequences? I’d like them to be identical every time. Should I use the ActionPlayAnimation or PlayAnimation functions? In that case, would I have to “manually” call the attacker’s and defender’s animation, plus any effects like sparks or lasers from blasters? Have you tried putting the CutsceneAttack function in a for loop? Like this: Show spoiler (hidden content - requires Javascript to show) void main() { int iTest = 0; for(iTest, iTest <= <number of attacks you want>, iTest++) { CutsceneAttack(); } } Don't forget to insert the arguments for the CutsceneAttack function. Link to comment Share on other sites More sharing options...
Taunger Posted April 25, 2013 Share Posted April 25, 2013 No, that doesn't seem to work either. It attacks once, then does nothing... Thanks for trying to help, though! Link to comment Share on other sites More sharing options...
Fallen Guardian Posted April 26, 2013 Share Posted April 26, 2013 You could probably just call CutsceneAttack over and over again, sort of like this: void main() { object oOne = GetObjectByTag("one"); object oTwo = GetObjectByTag("two"); AssignCommand(oOne, CutsceneAttack(); AssignCommand(oTwo, CutsceneAttack(); AssignCommand(oOne, CutsceneAttack(); AssignCommand(oTwo, CutsceneAttack(); AssignCommand(oOne, CutsceneAttack(); AssignCommand(oTwo, CutsceneAttack(); } (I'm pretty sure this script won't compile, it's just an example of what you could do.) I remember when I made a cutscene I just used the attack function, made two NPC's attack each other and then let them have it for a few seconds. Then I would end it did with the use talent feat function. I don't know if these function names are correct, I'm on my phone at the moment. I'll check back later when I'm on my computer. Link to comment Share on other sites More sharing options...
Taunger Posted April 26, 2013 Share Posted April 26, 2013 Fallen Guardian, your code makes calls for one attacker, then the other, then the first one again and so on. This is how fighting in-game works as well; it's turn based. I think that's why making a call for the attacker to repeatedly attack doesn't work (which is what I was trying to do), it's waiting for the victim to fight back, which it doesn't, because I've not programmed it to do so. After some more tinkering I think I've found the solution, which is to use: ChangeToStandardFaction(oVictim, STANDARD_FACTION_PREY); ChangeToStandardFaction(oAttacker, STANDARD_FACTION_PREDATOR); This, apparently, makes the attacker ignore the turn-taking rules. There's one weird caveat with this, however. If I use something like this: AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_MISS, 0)); AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_CRITICAL_HIT, 1000)); The animation of the first attack will play, but not the second time. The attack does succeed, because the victim dies. The animation for any attacks after the first one will only play if the CutsceneAttack call is made after the previous attack has already finished. So, it needs to be something like this: AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_MISS, 0)); DelayCommand(3.5, AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_CRITICAL_HIT, 1000))); I just tested this myself and it works! Still, it seems rather... curious. Link to comment Share on other sites More sharing options...
Fair Strides 2 Posted April 26, 2013 Share Posted April 26, 2013 Show spoiler (hidden content - requires Javascript to show) Fallen Guardian, your code makes calls for one attacker, then the other, then the first one again and so on. This is how fighting in-game works as well; it's turn based. I think that's why making a call for the attacker to repeatedly attack doesn't work (which is what I was trying to do), it's waiting for the victim to fight back, which it doesn't, because I've not programmed it to do so. After some more tinkering I think I've found the solution, which is to use:ChangeToStandardFaction(oVictim, STANDARD_FACTION_PREY); ChangeToStandardFaction(oAttacker, STANDARD_FACTION_PREDATOR); This, apparently, makes the attacker ignore the turn-taking rules. There's one weird caveat with this, however. If I use something like this: AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_MISS, 0)); AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_CRITICAL_HIT, 1000)); The animation of the first attack will play, but not the second time. The attack does succeed, because the victim dies. The animation for any attacks after the first one will only play if the CutsceneAttack call is made after the previous attack has already finished. So, it needs to be something like this: AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_MISS, 0)); DelayCommand(3.5, AssignCommand(oAttacker, CutsceneAttack(oVictim, 197, ATTACK_RESULT_CRITICAL_HIT, 1000))); I just tested this myself and it works! Still, it seems rather... curious. Could someone put that into a tutorial for cutscene combat, please? Link to comment Share on other sites More sharing options...
supreme kotor Posted April 26, 2013 Share Posted April 26, 2013 [HIDDEN][/HIDDEN] Could someone put that into a tutorial for cutscene combat, please? Seconding this. -Supreme Kotor Link to comment Share on other sites More sharing options...
Hassat Hunter Posted April 27, 2013 Share Posted April 27, 2013 Here is an example how TSLRCM does it; //{[Handmaiden attacks, Kreia barely moves, deftly avoiding every blow, then gets bored, and grabs the Handmaiden by the throat, or in a Force Crush.]} case 5: { SetMinOneHP(oHandmaiden, TRUE); SetMinOneHP(oKreia, TRUE); AssignCommand(oHandmaiden , ActionAttack(oKreia)); DelayCommand(3.0, AssignCommand(oHandmaiden , ActionAttack(oKreia))); DelayCommand(6.0, AssignCommand(oHandmaiden , ActionAttack(oKreia))); DelayCommand(8.0, AssignCommand(oHandmaiden , ActionAttack(oKreia))); DelayCommand(10.0, SetMinOneHP(oKreia, FALSE)); DelayCommand(10.0, SetMinOneHP(oHandmaiden , FALSE)); DelayCommand(10.0, AssignCommand(oKreia, ActionPlayAnimation(10063, 1.0, 3.5))); DelayCommand(10.1, AssignCommand(oHandmaiden , ClearAllActions())); DelayCommand(10.2, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectChoke(), oHandmaiden, 3.0)); DelayCommand(13.3, AssignCommand(oHandmaiden , ClearAllActions())); DelayCommand(13.5, AssignCommand(oHandmaiden, SetIsDestroyable(0, 1, 0))); effect efDeath = EffectDeath(0, 0, 1); DelayCommand(13.5, ApplyEffectToObject(2, efDeath, oHandmaiden, 0.0)); } break; Link to comment Share on other sites More sharing options...
Taunger Posted April 28, 2013 Share Posted April 28, 2013 Show spoiler (hidden content - requires Javascript to show) Here is an example how TSLRCM does it; //{[Handmaiden attacks, Kreia barely moves, deftly avoiding every blow, then gets bored, and grabs the Handmaiden by the throat, or in a Force Crush.]} case 5: { SetMinOneHP(oHandmaiden, TRUE); SetMinOneHP(oKreia, TRUE); AssignCommand(oHandmaiden , ActionAttack(oKreia)); DelayCommand(3.0, AssignCommand(oHandmaiden , ActionAttack(oKreia))); DelayCommand(6.0, AssignCommand(oHandmaiden , ActionAttack(oKreia))); DelayCommand(8.0, AssignCommand(oHandmaiden , ActionAttack(oKreia))); DelayCommand(10.0, SetMinOneHP(oKreia, FALSE)); DelayCommand(10.0, SetMinOneHP(oHandmaiden , FALSE)); DelayCommand(10.0, AssignCommand(oKreia, ActionPlayAnimation(10063, 1.0, 3.5))); DelayCommand(10.1, AssignCommand(oHandmaiden , ClearAllActions())); DelayCommand(10.2, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectChoke(), oHandmaiden, 3.0)); DelayCommand(13.3, AssignCommand(oHandmaiden , ClearAllActions())); DelayCommand(13.5, AssignCommand(oHandmaiden, SetIsDestroyable(0, 1, 0))); effect efDeath = EffectDeath(0, 0, 1); DelayCommand(13.5, ApplyEffectToObject(2, efDeath, oHandmaiden, 0.0)); } break; Did you also have to set them to specific factions? Link to comment Share on other sites More sharing options...
Hassat Hunter Posted April 29, 2013 Share Posted April 29, 2013 No. She's neutral by default though. When not, yeah, it has to be done. Here for example Kreia vs. Hanharr in the Jekk Jekk Tar. One solution actually has him attack, the other version uses animations to 'fake' it. Had to be done that way considering it works differently if he's a teammate, and damage will break the cutscene. if ((nParam1 == 5)) { object oKreia = GetObjectByTag("Kreia", 0); object oHanharr = GetObjectByTag("Hanharr", 0); ChangeToStandardFaction(oHanharr, STANDARD_FACTION_GIZKA_1); ChangeToStandardFaction(oKreia, STANDARD_FACTION_GIZKA_2); DelayCommand(0.2, AssignCommand(oHanharr, ActionAttack(oKreia))); DelayCommand(1.0, ChangeToStandardFaction(oHanharr, STANDARD_FACTION_FRIENDLY_1)); DelayCommand(1.0, ChangeToStandardFaction(oKreia, STANDARD_FACTION_FRIENDLY_1)); DelayCommand(2.2, AssignCommand(oKreia, ActionPlayAnimation(10063, 1.0, 3.5))); DelayCommand(2.3, AssignCommand(oHanharr, ClearAllActions())); DelayCommand(2.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectChoke(), oHanharr, 2.3)); DelayCommand(4.9, AssignCommand(oHanharr, ClearAllActions())); } if ((nParam1 == 6)) { object oKreia = GetObjectByTag("Kreia", 0); object oHanharr = GetObjectByTag("Hanharr", 0); DelayCommand(0.2, AssignCommand(oHanharr, ActionPlayAnimation(10098, 1.0, 3.5))); DelayCommand(2.2, AssignCommand(oKreia, ActionPlayAnimation(10063, 1.0, 3.5))); DelayCommand(2.3, AssignCommand(oHanharr, ClearAllActions())); DelayCommand(2.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectChoke(), oHanharr, 2.3)); SetFakeCombatState(oHanharr, 0); SetFakeCombatState(oKreia, 0); DelayCommand(4.9, AssignCommand(oHanharr, ClearAllActions())); } Link to comment Share on other sites More sharing options...
Hassat Hunter Posted May 10, 2013 Share Posted May 10, 2013 Need some help. Here's a script to make Atton and the PC get Pazaak cards in their hand. All good, and it works... but the PC's cards are invisible. Atton works fine, just not the PC. If the convo ends I find the cards in my hand, still invisible. Swapping with other weapon and back makes visible, so tried unequipping and re-equipping... didn't work. Tried adding a specific "render" to the pazaak cards, didn't work. Not quite sure what more to try. I'd rather use the real player than a fake dummy, as that complicates things down the road for what I want... so, anyone got a clue what to do? void main () { object oPC = GetFirstPC(); object oAtton = GetObjectByTag("Atton"); int nParam1 = GetScriptParameter(1); if ((nParam1 == 0)) { SetGlobalFadeOut(0.0, 0.0, 0.0, 0.0, 0.0); SetGlobalFadeIn(1.0, 1.0, 0.0, 0.0, 0.0); GiveItem(GetItemInSlot(4, oPC), oPC); GiveItem(GetItemInSlot(5, oPC), oPC); GiveItem(GetItemInSlot(4, oAtton), oPC); GiveItem(GetItemInSlot(5, oAtton), oPC); CreateItemOnObject("w_pazaak_01", oPC, 1, 1); CreateItemOnObject("w_pazaak_01", oAtton, 1, 1); DelayCommand(0.5, AssignCommand(oPC, ActionEquipItem(GetObjectByTag("w_pazaak_01"), 4, TRUE))); DelayCommand(0.5, AssignCommand(oAtton, ActionEquipItem(GetObjectByTag("w_pazaak_01"), 4, TRUE))); AssignCommand(oPC, ActionJumpToLocation(Location(Vector(54.15430,45.80115,1.80000),260.0f))); AssignCommand(oAtton, ActionJumpToLocation(Location(Vector(54.26917,43.75487,1.80000),60.0f))); DelayCommand(0.8, AssignCommand(oPC, ActionPlayAnimation(38, 1.0, (-1.0)))); DelayCommand(0.8, AssignCommand(oAtton, ActionPlayAnimation(38, 1.0, (-1.0)))); } } Link to comment Share on other sites More sharing options...
JCarter426 Posted May 10, 2013 Share Posted May 10, 2013 Hmm... I just executed it and I didn't end up with invisible cards. Tried it with various weapons in hand, always seemed to do what it's meant to do. Sorry, I got nothing more than that, other than I did it outside of a conversation. Link to comment Share on other sites More sharing options...
Hassat Hunter Posted May 10, 2013 Share Posted May 10, 2013 Hmmm, yes, once I dropped the cutscene I got the pazaak cards in hand. Annoying is Atton immediately does his Ebon Hawk routine though, which makes him not getting his cards. Going to try dropping out real fast then rebooting the convo and have Atton get his cards then... hope that works. EDIT: After all that effort, nope. Once the action comes back on the PC loses his hand :/. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.