Jump to content

BigKevSexyMan

Members
  • Posts

    127
  • Joined

  • Last visited

Everything posted by BigKevSexyMan

  1. Hi, I'm having an issue with a script. What I want to do is cast two spells at the same time when you raise your shield, but when I do that, it only does the last one(Actually, it probably does one, then stops instantly and does the other). The Spell has to be a concentration self type. Finally, here's my script: Scriptname _BKSM_ShieldBlockEffect extends activemagiceffect String AnimationEnter = "blockStartOut" String AnimationExit = "blockStop" SPELL Property AbilityAdded Auto SPELL Property AbilityAdded2 Auto Event OnAnimationEvent(ObjectReference akSource, string asEventName) if (asEventName == AnimationEnter) AbilityAdded.Cast(akSource , akSource ) AbilityAdded2.Cast(akSource , akSource ) endif if (asEventName == AnimationExit) (akSource as Actor).DispelSpell(AbilityAdded) akSource.InterruptCast() endif EndEvent Event OnEffectStart(Actor akTarget, Actor akCaster) RegisterForAnimationEvent(akTarget, AnimationEnter) RegisterForAnimationEvent(akTarget, AnimationExit) EndEvent Event OnEffectFinish(Actor akTarget, Actor akCaster) UnregisterForAnimationEvent(akTarget, AnimationEnter) UnregisterForAnimationEvent(akTarget, AnimationExit) EndEvent It works for one spell, but it won't do two. It's a problem, because this is supposed to be an enchantment and when someone dual enchants, only one enchantment will work. Any help would be appreciated.
  2. I just released a beta for a shield enchantments mod that contains the ward spell shield. http://skyrim.nexusmods.com/mods/30300
  3. Spell sneak attacks: http://skyrim.nexusmods.com/mods/12637
  4. Hi, my mod is nearly done, and I'm thinking of taking it to beta to get everyone's opinion and any info on if things are OP and stuff. I was just wondering, for those who've had BETA mods or have downloaded them. Is there a specific way to go about it? Do I just upload my mod and throw BETA at the end of it? This would be my first mod that I'll officially release so any advice is appreciated.
  5. In terms of bashing spells, the only other way would be to register for animation events. It is weird that perks are used for casting spells like that, but it works extremely well. You don't need a script however, just make an enchantment with a constant self magic effect. On the magic effect there's a "Perk to Apply" drop down you can select your new perk from.
  6. I think racial powers are technically spells, so all you have to do is add the spell you want.
  7. Create two magic effects, one set to health damage, and the other will be a script. Make a spell and add both of these effects to it. For the Health one, just set the amount of damage you want it to do. For the second effect, set the duration you want it to last. Now, on the script magic effect, make a script and give it a Spell Property, and give it the OnHit event. Whenever this event is triggered you cast a new damage spell on the target actor using the GetTargetActor() function. Oh, and don't forget to set the property to the spell you want.
  8. Actually, I ended up emailing them, and they replied that the papyrus interface for skse isn't available for plugins yet. They also suggested I copy a few classes from skse into my project to get rid of the linker errors I mentioned, and it compiled, but my function in game didn't run. Like they said. I guess I'll just keep an eye out for the next version of skse, and hope they added the feature. But I promise this, when they come out with the version that allows this, and I manage to figure it out, I'll post tutorials about what I figured out. Because this lack of tutorial stuff for skse is just frustrating. I guess I'll just work on my other projects for now. But thanks scrivener07 for trying to help me out.
  9. I did like going through that, but unfortunately it doesn't contain anything that adds to papyrus. I've done a lot of narrowing things down, and I found the line that's really giving me trouble: registry->RegisterFunction( new NativeFunction0<StaticFunctionTag, UInt32>("TestValue", "PapyrusExample", TestPapyrus::TestValue, registry)); When I my code contains this line I get 4 LNK2019 errors in visual studio. I don't get why this doesn't work, I'm opening this project up directly from the skse download. I've search the internet, and what little there is out there on skse and this problem isn't coming up. Here's my source code, maybe someone will see what's happening. Although the source code might not be the problem so much as it would be my project settings. But again, they should all be skse default. TestPapyrus.h #pragma once #include "skse/GameTypes.h" struct StaticFunctionTag; class VMClassRegistry; namespace TestPapyrus { void RegisterFuncs(VMClassRegistry* registry); UInt32 TestValue(StaticFunctionTag*); UInt32 asdf(UInt32 a); }; TestPapyrus.cpp #include "TestPapyrus.h" #include "skse/GameObjects.h" UInt32 TestPapyrus::TestValue(void*) { return 12345; } UInt32 TestPapyrus::asdf(UInt32 a) { return 54321; } #include "skse/PapyrusVM.h" #include "skse/PapyrusNativeFunctions.h" void TestPapyrus::RegisterFuncs(VMClassRegistry* registry) { registry->RegisterFunction( new NativeFunction0<StaticFunctionTag, UInt32>("TestValue", "PapyrusExample", TestPapyrus::TestValue, registry)); } main.cpp (with most papyrus code taken out) //#define _PPAPI 1 #include "skse/PluginAPI.h" #include "skse/skse_version.h" #include "skse/SafeWrite.h" #include "skse/ScaleformCallbacks.h" #include "skse/ScaleformMovie.h" #include "skse/GameAPI.h" IDebugLog gLog("skse_example_plugin.log"); PluginHandle g_pluginHandle = kPluginHandle_Invalid; #ifdef _PPAPI SKSEPapyrusInterface * papyrus = NULL; #endif extern "C" { bool SKSEPlugin_Query(const SKSEInterface * skse, PluginInfo * info) { _MESSAGE("skse_example_plugin"); // populate info structure info->infoVersion = PluginInfo::kInfoVersion; info->name = "example plugin"; info->version = 1; // store plugin handle so we can identify ourselves later g_pluginHandle = skse->GetPluginHandle(); if(skse->isEditor) { _MESSAGE("loaded in editor, marking as incompatible"); return false; } else if(skse->runtimeVersion != RUNTIME_VERSION_1_8_151_0) { _MESSAGE("unsupported runtime version %08X", skse->runtimeVersion); return false; } #ifdef _PPAPI papyrus = (SKSEPapyrusInterface *)skse->QueryInterface(kInterface_Papyrus); if(!papyrus) { _MESSAGE("couldn't get papyrus interface"); return false; } if(papyrus->interfaceVersion < SKSEPapyrusInterface::kInterfaceVersion) { _MESSAGE("papyrus interface too old (%d expected %d)", papyrus->interfaceVersion, SKSEPapyrusInterface::kInterfaceVersion); return false; } #endif // ### do not do anything else in this callback // ### only fill out PluginInfo and return true/false // supported runtime version return true; } bool SKSEPlugin_Load(const SKSEInterface * skse) { _MESSAGE("load"); #ifdef _PPAPIg papyrus->Register(RegisterPapyrus); #endif return true; } }; Finally, here are my Linker Errors Error 2 error LNK2019: unresolved external symbol "void __cdecl PackValue<unsigned long>(class VMValue *,unsigned long *,class VMClassRegistry *)" (??$PackValue@K@@YAXPAVVMValue@@PAKPAVVMClassRegistry@@@Z) referenced in function "public: virtual bool __thiscall NativeFunction0<struct StaticFunctionTag,unsigned long>::Run(class VMValue *,class VMClassRegistry *,unsigned long,class VMValue *,class VMState *)" (?Run@?$NativeFunction0@UStaticFunctionTag@@K@@UAE_NPAVVMValue@@PAVVMClassRegistry@@K0PAVVMState@@@Z) C:\Users\BKSM\Desktop\skse_1_06_05\src\skse\plugin_example\TestPapyrus.obj plugin_example Error 3 error LNK2019: unresolved external symbol "void * __cdecl UnpackHandle(class VMValue *,unsigned long)" (?UnpackHandle@@YAPAXPAVVMValue@@K@Z) referenced in function "void __cdecl UnpackValue<struct StaticFunctionTag>(struct StaticFunctionTag * *,class VMValue *)" (??$UnpackValue@UStaticFunctionTag@@@@YAXPAPAUStaticFunctionTag@@PAVVMValue@@@Z) C:\Users\BKSM\Desktop\skse_1_06_05\src\skse\plugin_example\TestPapyrus.obj plugin_example Error 4 error LNK2019: unresolved external symbol "unsigned long __cdecl GetTypeID<unsigned long>(class VMClassRegistry *)" (??$GetTypeID@K@@YAKPAVVMClassRegistry@@@Z) referenced in function "public: __thiscall NativeFunction0<struct StaticFunctionTag,unsigned long>::NativeFunction0<struct StaticFunctionTag,unsigned long>(char const *,char const *,unsigned long (__cdecl*)(struct StaticFunctionTag *),class VMClassRegistry *)" (??0?$NativeFunction0@UStaticFunctionTag@@K@@QAE@PBD0P6AKPAUStaticFunctionTag@@@ZPAVVMClassRegistry@@@Z) C:\Users\BKSM\Desktop\skse_1_06_05\src\skse\plugin_example\TestPapyrus.obj plugin_example Error 5 error LNK2019: unresolved external symbol "public: void __thiscall NativeFunction::DebugRunHook(class VMValue *,class VMClassRegistry *,unsigned long,class VMValue *,class VMState *)" (?DebugRunHook@NativeFunction@@QAEXPAVVMValue@@PAVVMClassRegistry@@K0PAVVMState@@@Z) referenced in function "public: virtual bool __thiscall NativeFunction0<struct StaticFunctionTag,unsigned long>::Run(class VMValue *,class VMClassRegistry *,unsigned long,class VMValue *,class VMState *)" (?Run@?$NativeFunction0@UStaticFunctionTag@@K@@UAE_NPAVVMValue@@PAVVMClassRegistry@@K0PAVVMState@@@Z) C:\Users\BKSM\Desktop\skse_1_06_05\src\skse\plugin_example\TestPapyrus.obj plugin_example Error 6 error LNK1120: 4 unresolved externals C:\Users\BKSM\Desktop\skse_1_06_05\src\skse\Debug\plugin_example.dll plugin_example
  10. You could always download one of those alternative start mods.
  11. You have to attach that perk to the player somehow. Did you set 'Perk to Apply' in a magic effect to your perk and somehow give that magic effect to the player?
  12. Bump..... Does this not exist yet? Should I just try to do my mod without?
  13. Well, I tried to take a look at SkyUI, but it doesn't use skse plugins. And Uncapper looked promising until I found out I couldn't disassemble the .dll plugin that it had. Still thanks for the help. I took a deeper look at the plugin example that came with skse, and I understand it a little better, but there's this #ifdef _PPAPI variable that's throwing me for some problems. I'm trying to look into that a little more.
  14. I think it might be because when bethesda updates skyrim, skse is updated quicker than script dragon is.
  15. For interuptCast, the spell isn't an Object Reference, so you can't use it. Instead of beamSpell.InterruptCast(), try BeamSource.InterruptCast(). As for OnHit(), I guess it depends on what you have this script attached to. The object that has this script isn't being hit, so the OnHit() isn't triggering.
  16. On your item attach a script like this Event OnRead() Game.getPlayer().addPerk( "your perk here") endEvent
  17. In the perks, you can add a spell to a combat hit. It's under the perk entry point -> "Apply Combat Hit Spell" or something. Next, all you have to do is make a magic effect, and set the perk to apply to the one you made. Finally, all you have to do is make some way to give the player the magic effect. This can be either through a spell, or enchantment, or whatever.
  18. You could just have a random dead body drop out of the sky in front of the player at a somewhat random moment. Something more seriously though, you could have a dead body in the middle of town with guards and people around it investigating.
  19. I did my best to try to fully understand them from the example in skse, but it's just not registering with me. I know c++ and am fairly proficient in it, but I just can pull how to start out of the example. Can anyone help me by telling me a bit more about what an skse plugin does and maybe point me to a few other examples I could look at? Basically, I'm trying to make a new papyrus command that I pass a string to and then it performs an action outside of skyrim. I go into more detail on what exactly it is in this thread. http://forums.nexusmods.com/index.php?/topic/846389-diablo-style-hardcore-mode/page__p__6783527 pseudocode example: startcommand(string playername) get_savegame_path() check_savegames_for_playername() delete_savegame
  20. I was just wondering if there was a way to get the magnitude that a magic effect currently has passed to it. Basically, what's happening, is I have an enchantment. The way the effect works, is I check the magnitude of the enchantment, and I cast a spell dependent on what that magnitude is. The problem is, there doesn't seem to be a way to get this magnitude. All I can seem to get is the base magnitude of the item that originally has the enchantment. (I can't even get ahold of the enchantment that I add to an item in game). Does anyone out there have any insight to this issue?
  21. I wouldn't use a utility.wait. It seems like it might be volatile. What I would do instead, is creation a spell that lasts for three days. Then cast it on the user. Now, attach a script to it. Add a Quest Property to the script. Then, using the OnEventStart event you can set the stage to a waiting stage, and use the OnEventFinish to set the stage to the current "completed house" level.
  22. There's a bunch of stuff you could try. Maybe on your spell, add two magic effects, on that has the condition IsDualCasting set to true, and one that has it set to false. That way, when you cast the spell, one magic effect should fire depending on if it's being dual cast or not. Another option, if you wanted to really go scripting, is to register for the dual casting animation event, listen for it, and cast the spell if you're in it.
  23. Yeah, I've seen this problem. Go to this link here for a little insight. http://skyrim.nexusmods.com/mods/21690
×
×
  • Create New...