Jump to content

How to learn papyrus?


HailHell

Recommended Posts

Well, two things. Take a look at scripts from vanilla, which can be found under Scripts/Source. Try to figure them out.

 

Secondly, check out other sites and videos other than the CK Wiki. My site is one of them, and I do my best to explain scripts fully - you can take a look at scripts in tutorials and then read what I write to figure out how they work:

 

skyrimmw.weebly.com

 

This is a full list of a variety of tutorials

 

I also teach at the Arcane University for Beyond Skyrim, but it's a program for people interested in joining BS. I'd run my own without that requirement but I doubt I'd be able to find the people to teach.

Link to comment
Share on other sites

My general method was

Day 1, I'm gonna make a mod

Day 2-3 Do tutorials

Day 4-12 AHHHH f*#@ f*#@ f*#@ F THIS s#*! OH MY f*#@IGN GOD THERE IS LIKE NOTHIGN ON THIS s#*! WTF IS GOING ON WHAT IS THIS SCRIPTING s#*!

Day 13 FUBAR around everything I dont know

Day 14-33 Finish mod, yay descent is done

Next 11 months, do nothing as that burnt me the hell out

 

 

There is a lot more resources available nowdays for sure, but if you have 0 programming background like me, it will tend to be brutal the faster you want to learn it. I reckon even after this time it was kind of worth it, but it still felt like a week of nonstop prison rape in my head.

Link to comment
Share on other sites

Pretty much trial and error as well as not being afraid to ask specific questions (even if they sound stupid in your head).

 

I PM one or two people on occasion if I have theories that I have just to see float with CK and they have been pretty cool about it.

 

But the big thing is pretty much trial and error. Once I started doing papyrus scripting, I looked some vanilla scripts and started taking it apart. One thing was I wanted to know how the Dragon Soul Absorb animation worked and took the vanilla script and started taking it apart to see how it worked. You would be amazed at how quickly you can learn some things if you just looked at the existing script to see how it worked.

Link to comment
Share on other sites

I started with this,

https://www.youtube.com/watch?v=It5ZzjamtMk

After I did those I was able to understand enough to get by.

 

@ Darren

14 days on a scripted mod? Really?

I do not believe!

I usually spend minimum 1-2 months on a non-scripted mod.

 

Descent into madness took me 33 days I believe from start to finish, another 5-6 days or so to get the last of the voice assets in. I literally worked on it like 8-10 hours a day but it was my very first forray into anything mod or video game wise really. It burnt me the f*#@ out though for sure though. In contrast, dragon break 1 took 17 days, then months waiting for voice assets, it was literalyl fully bug tested and everything sitting for almost 3 months, DB2 13 days but I had exterior dungeon design so that helped. it's k cause discworld is t-minus 5 days fromb the anniversary of the return email from pratchett that turned my life into a awesome living hell. This thing is taking forever!!!

Link to comment
Share on other sites

Something else (outside of the good tutorials here and suggestions here) that is helpful while scripting is to get your mind into a mindset where you are thinking of everything in Skyrim as an object. So take the player real quick as an Actor object. Since Actor is a sub-object type [terminology is wrong but helps with the point], it is also of type ObjectReference and Form which means the functions and events that ObjectReferences and Forms can use are also usable on an Actor, in addition to the Actor functions and events. The creation kit wiki has this object map that can help with keeping track of what is a sub-object of another object.

 

As Matthiaswagg was saying look at the vanilla scripts. Usually they have decent comments (sometimes not, especially on some of the DLC scripts). Try recreating the vanilla script from scratch, which helps give another level of understanding outside of just looking over the 'code'. Additionally, on items such as the Bookcase scripts, try modifying the scripts to support either a different item type or add on to where the case can support either books or another item type as this will help you understand the mechanics.

 

A lot of scripting is thinking of an idea and trying to use the tools before you to accomplish the idea. Making an idea map for what functionality you wish to achieve, and list a non-code oriented algorithm can help if you don't know where to start.

Example in the spoiler:

 

 

Idea: I want to consume some bread and have the rate of stamina regeneration decrease while the effect is running.

 

Steps:

1. You want to keep track of what character ate the bread.

2. You want to give a basic stamina rate on the start of the bread being eaten.

3. You want to setup what the value will be next.

4. You want to setup an update to decrease the rate.

5. You want to setup an end-point where the updating will stop.

 

What related things will I think I need:

-Probably need ActiveMagicEffects

-Need an Actor property for the character

-Need a Float (since decimals) property for the Stamina rate

-Need to look at the Actor script wiki page to see what function will MOD the rate.

-Look at the OnUpdate or OnUpdateGameTime events to see which one you want

-Need an Int Property as an internal clock so you know when to stop

 

What other things are needed that have not been listed which will either be known or require looking up while scripting:

-Knowledge of If-ElseIf-EndIf blocks

-Difference of Floats and Ints (decimals vs non-decimals)

-Arithmetic for the decreased Stamina rate (just subtracting in this case)

-How to modify values on an Actor

-What Actor value controls Stamina

 

 

 

Always have the creation kit wiki open when working on scripts. It becomes a great look-up for functions/events on what you are working on and the descriptions for the majority of the items are helpful for understanding the full effects of the functions or events.

 

Lastly, experimentation is how to expand on scripting ultimately. You end up learning a lot through just throwing ideas and troubleshooting when they don't work. When you do figure something out, use the semi-colon ( ; ) for single-line comments to note what the function does or the code block does, or { } for a multi-line comment so you can write your thoughts down.

 

 

You might see the following style in some of my scripts, just do it for readability:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Input: none
;
;Moves the XMarkerHeadings
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Function MoveMarkers()
;code in here somewhere
EndFunction

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Input: The target location
;
;Moves the XMarkerHeadings
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Function MoveMarkersTargetNeeded(Actor target)
;code in here somewhere
EndFunction

 

 

 

 


AHHHH f*** f*** f*** F THIS s*** OH MY f*#@IGN GOD THERE IS LIKE NOTHIGN ON THIS s*** WTF IS GOING ON WHAT IS THIS SCRIPTING s***

 

Expect a lot of moments like this even when you think you know what you are doing, as scripting problems are logic problems which take time to process, implement, debug, then use as intended [mostly intended at least].

 

Edit:

Talking to/Asking someone, or talking out-loud will help process your ideas if all else is currently failing, or help you find a solution you were not originally thinking of.

Edited by Arron Dominion
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...