Community Portal/Scripting Section Hierarchy

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search

Scripting Section Hierarchy[edit | edit source]

Suggestions for improving the way the scripting section was laid out and put together should go here. I know there was some discussion of this, but I forget exactly what suggestions had been made or what was being discussed. I feel that improvements can certainly be made, so I want to encourage that discussion to restart. --DragoonWraith TALK 00:02, 27 June 2007 (EDT)

Like I mentioned at the Discussion vs. Article section, I think the breadcrumbs sound like a good idea. To organize the scripting section is should work very well. --Qazaaq 10:20, 27 June 2007 (EDT)
At the very least I would like to see all of the subcategories found in Category: Scripting to be placed on the Main Page. However, I think the scripting heirarchy needs an overhaul. I would mainly like to see the scripting tutorials mixed in with the scripting category. I suggested something along the lines of: Basics (variable types, blocktypes, commands), Functions, Basic scripts (stuff like the MessageBox Tutorial to further show how to exploit a single command), Advanced script (a working Dynamic/Linked Lists tutorial), etc. There was more, but I'll need some time again to look over the subcategories.--Haama 13:05, 27 June 2007 (EDT)
I disagree with including all of the subcategories of scripting in the Main Page. I think it would look cluttered and I don't think it's necessary. Other than that, though, it seems like your ideas are good. --DragoonWraith TALK 20:07, 27 June 2007 (EDT)
My brain's more of a phantom limb right now, but I'm going to try to look through the scripting stuff now. The first thing that strikes me - should Conditions really be under scripting? There are some condition only functions, etc. that might find a better home under a AI subcategory of Actor Behavior. More to come, or I'm asleep, one of those.
Didn't get too far, but here's what I'm thinking so far - set things up more as a heirarchy, particuarly a tutorial-aimed heirarchy, then as the current shotgun blast of information. For instance, the variables page talks a little about shorts, longs, and floats when it should have notes of all of the types of variables, including the special variables. The script type page is a better example of how things should look, but it still needs to mention Magic, Object, and Quest scripts somewhere and the incredibly basic and necessary info on how to attach those scripts.
Another side point, the links to "See Also", etc. articles should mention whether they're taking a step back in the heirarchy (i.e., from Category: Functions to Category: Commmands). Having categories listed as subcategories of each other is simply maddening.
So here's the heirarchy I've got so far:
  1. Background Info
    1. Using/Attaching Scripts
    2. Script Types
    3. Block Types
    4. Variables
  2. Functions
    1. Splash page describing the parts of most functions, what OBSE is, different CSes, etc., with a link at the bottom to the different filters/categories of functions
    2. Functions themselves, of course (hey DW, is the brief discussion of the OBSE filtering, etc. still here?)
  3. Basics
    1. Debugging (Troubleshooting doc, etc.)
    2. Useful Code and Tutorials - not necessarily easy, but necessary information to correctly use a function (i.e., the MessageBox Tutorial), do the most common tasks (i.e., how to use an activator), or building blocks that most other tutorials will use (i.e., [[Unplayable Items|tokens).
    3. Console Commands - more debugging goodness, really
    4. I think I might put random information in this category. By random, I mean useful information like (I think this is true) when using an activator you'll want to put the MoveTo player on the activator rather than the calling script, to make it move that very frame, and will want it to be disabled, etc.
  4. Advanced - the rest of the tutorials
  5. Misc. (haven't figured out where to put this stuff)
    1. Random info
    2. Lists of commands/functions as they appear in scripts
    3. Lists of globals/game settings
    4. Questions and answers that might prove useful
    5. Script processing - probably in the first sections with script types? The category might have to be reworked to be more than Script Types.
--Haama 22:19, 1 July 2007 (EDT)
Sounds good. I hope to at least get started on the filtering thing today, in answer to your question. What remains of that discussion can be found at Category Talk: Functions. --DragoonWraith TALK 08:57, 2 July 2007 (EDT)
I don't think we should split up the tutorials in two sections. The goal of the whole thing is making information easier to find, so why make it more difficult? You already have to look in two categories; tutorials and useful code. The rest sounds like a good idea.
--Qazaaq 20:23, 2 July 2007 (EDT)

Function Filtering and Overhaul[edit | edit source]

Original Discussion[edit | edit source]

Dragoon Wraith TALK 13:24, 8 June 2007 (EDT): When OBSE first came out, I went and made it its own section, complete with function categories and the like. I fell away from Oblivion modding, and those pages have not been updated in my absence.

Noticing the lack of those functions, mmmpld went and accomplished the impressive feat of cataloging all functions, OBSE and Vanilla, here.

Given that this is considered useful, should OBSE functions be included on this main Functions page? We would, of course, still have Vanilla functions categories, and it would be easy to filter out OBSE functions for users who do not use OBSE.

It would mean a few things. First, this page would be quite a bit larger than it is. Second, this page is linked to directly from the first page, and OBSE is not officially supported by Bethesda (which may lead to some issues, or may not). Third, we would need to create additional OBSE and Vanilla versions of each function category, so we would have, for example, Actor Functions, Actor Functions: Vanilla, and Actor Functions: OBSE - this is the only way to maintain the ability to filter out only the kinds of functions we want to see. It would also mean more categories listed at the bottom of each functions' page - for example, you might see "Functions | Functions: Vanilla | Actor Functions | Actor Functions: Vanilla" - I don't mind this, but it could be an issue.

The advantages is that it's much easier for scripters who are actually using OBSE, without making things more difficult for scripters who don't. The functions wouldn't be segregated, and it would be easier to see what functions are available.

I am quite willing to do the work to set this up, but I'm not into unilateral decisions like this, so I would like some feedback.

Personally I wanted all the functions on one page, which as far as I know can't be done with the categories (at least from our side), so I'd still use the List of Functions. May also be a bit more confusing for those new to scripting. I'm indifferent really. —mmmpld 00:22, 9 June 2007 (EDT)
I think most scripters using OBSE will have read the OBSE documentation, so when they come to the wiki it's probably to look up more info on a specific function(s). New scripters on the other hand could easily become confused. Those are just my thoughts, though, and I am all for making OBSE more visible on the wiki as long as things are clear to new users. (And thanks for getting on top of the updates, DW - I've tried to keep up in your absence, but all of v0011 and most of v0010 are undocumented here). Scruggs 01:57, 9 June 2007 (EDT)
Dragoon Wraith TALK 11:27, 9 June 2007 (EDT): Thanks Scruggs. I've been meaning to get back into it, but at this point I haven't even gone through to see what we do have, other than noticing that we were missing functions.
Anyway, that's a good point, mmmpld. I hadn't considered that problem. Your list will certainly remain valuable should we do this, so that there is a way to get them all in one place.
My thoughts are this - first, move all OBSE functions from their current page to one that has (OBSE) on the end of it, so that when they're all together, you can easily see which ones require OBSE. The top of the Functions page would explain, briefly, what OBSE is, and link to the corresponding page.
Then the break-down categories I described above would be made, and functions would be assigned categories. That means we would have a category for all functions, a category for all Vanilla functions, and a category for all OBSE functions. I'm not sure how warranted it is, but perhaps an Expansion functions or SI functions category (I'm only aware of PushActorAway, are there any others?). Then we would have the various "Type" categories - Actor Functions, Magic Functions, etc, plus a Vanilla-only and OBSE-only versions of each. This should make it very easy to continue scripting without OBSE functions if one so desires, while also enabling someone to see all the functions of a particular type that he could have access to. Checking one page is always nicer than checking several.
Oh, and another consideration. Is "Vanilla" an appropriate name for non-OBSE functions? It sounds a little informal to me. Seems like it should be "Native" functions or "Oblivion" functions or something.
I think there are a few other functions for SI, such as IsPlayerInSI. There's a list on the forums - http://www.bethsoft.com/bgsforums/index.php?showtopic=666465&hl=. To be exact, these functions are added by the new CS, and not the Shivering Isles expansion pack. The reason I draw this distinction, is that there were alot of problems with the new CS and, whether warranted or not, I won't use the new CS. For this reason, personally, I would like the original CS functions and the new CS functions to remain separate.
A brief explanation of OBSE and a link to mmmpld's list would work. The benefit of that organization - once you're using OBSE the source of the functions doesn't matter much, and if you want to make a non-OBSE mod, you can use the vanilla lists.
"Oh, and another consideration. Is "Vanilla" an appropriate name for non-OBSE functions? It sounds a little informal to me. Seems like it should be "Native" functions or "Oblivion" functions or something." Either term adds information where there should be none (Gricean logic, so take it as far as you want). Making the distinctions for OBSE and CSv1.0 functions should be enough.Haama 12:18, 10 June 2007 (EDT)
Dragoon Wraith TALK 12:27, 10 June 2007 (EDT): So we should divide things by v0.8 (the version of the CS originally released to us - I'm fairly certain that we never got v1.0), v1.2, and OBSE then? Sounds good to me. Do you like the idea of having the different categories, each with an "all" section, a "0.8" section, a "1.2" section (if warranted), and an "OBSE" section?
Sounds good. I suppose it should default to the "all" version of the category (if it's set up to have a default) with clear OBSE markings? Don't know, most of the contributors seem to use OBSE, but don't know about the readers, and there's a substantial dislike of OBSE on the forums, so maybe the default should be of the vanilla functions.Haama 17:20, 10 June 2007 (EDT)

Progress[edit | edit source]

Alright, I've set up almost all of the categories, and I've started adding functions to them. So far I've gotten through the vanilla functions that start with A and C, as well as all of the "Record Variable Functions".

I have not created new versions of vanilla's "Object Functions" and OBSE's "Reference Functions" - both of these labels are now confusing, thanks to the Terminology Discussion. Thoughts on what to call these?

Also, originally I had planned on moving every function page to one that had (OBSE vXXXX) or (CS 1.Y) after it, so you could see where each comes from in the category lists. I'm now starting to think this would just look cluttered. Thoughts?

Anyway, anyone who wants to help, feel free! But to keep things clean, please start with getting the CS functions into the CS categories, and then move the OBSE functions into the general categories as well as the new OBSE categories. That way we don't have things that are only in the General section and we don't know where they should go (easy enough to check, but this is enough work without adding more).
Dragoon Wraith TALK 16:20, 5 July 2007 (EDT)

All right, a little more than a quarter of the way through the original functions, and done with the version 1.2 functions. I've done all of the "small" blocks of letters - that is, everything but G, I, M, P, R, and S. Obviously still a lot to go (137 1.0 functions, to be exact), but it's a nice start. I'm done for now, as this is mind-numbing. I may tackle some more later.
Dragoon Wraith TALK 21:15, 5 July 2007 (EDT)
I did GetActionRef, until I realized that all of the condition functions have been setup for the general category, but not the CS 1.0 category, so I'll do those now.
--Haama 18:41, 6 July 2007 (EDT)
Went through the condition functions that should have already been done? Going through the G's now.
--Haama 23:36, 6 July 2007 (EDT)
Oh, oops. Condition functions, I didn't know what to do with, because they can also be used in Dialogue. To my knowledge, OBSE can't do anything like that, at least at this point. So I kinda feel like that isn't really a "scripting" category, but a dialogue category. I had meant to ask what people thought about that, but I forgot.
Anyway, thanks for your hard work. You've done a ton of the functions today. You've done a ton of stuff in general, actually. Thanks for that.
Dragoon Wraith TALK 23:42, 6 July 2007 (EDT)
Glad to. I see what you mean about the condition functions, but most are genuine scripting functions as well. I suggest leaving the links to the category from the individual functions, but placing the link to the category itself somewhere in AI or Actor land. Another question, should we separate the CS 1.2 functions into categories (Player Category for GetPlayerIsInSEWorld, for instance)?
--Haama 01:04, 7 July 2007 (EDT)
Ugh... G's are done. That's enough of that for a bit...
--Haama 01:45, 7 July 2007 (EDT)
I think the G's were about half the functions, if not more... I just looked at that massive block and was like "no..." Thanks for doing it, I didn't want to. I'm gonna be out for a while today, but when I get back, I'll take a crack at the I's.
As for Condition Functions, what I meant was that those functions should all be categorized elsewhere (along with OBSE's Is_______ functions and simimlar things), and that the "Condition Functions" category would be in Dialogue and/or AI and therefore not divided into 1.0, 1.2, and OBSE...
And yes, I had been putting 1.2 functions in into the categories, as well as 1.2 specific categories - so, for example, GetPlayerIsInSEWorld would be in Functions, Functions (1.2), Player Functions, and Player Functions (1.2).
Dragoon Wraith TALK 11:35, 7 July 2007 (EDT)

Well, did all of the I's on the first page today. I need to get back to my actual job now, though, before someone notices... Maybe I'll get a chance to do more later.
Dragoon Wraith TALK 13:31, 9 July 2007 (EDT)

Finished up the I's a couple of days ago, and today I did the M's... only P, R, and S remain!
Dragoon Wraith TALK 17:51, 14 July 2007 (EDT)
Did P and R... Only S left. And boy, it's a doozy. Not tonight.
Dragoon Wraith TALK 21:47, 20 July 2007 (EDT)
Well, getting there. I did all of the non-Set 'S' functions, only the ones that start with Set remain... which is a lot of them. Hopefully soon.
Anyway, what are we going to do with the Object Functions and Reference Functions categories? Neither of those really make sense any longer...
Dragoon Wraith TALK 14:07, 30 July 2007 (EDT)
They would be more confusing than helpful, so I won't feel sorry to see them go. Upto SetGhost have been added to the v1.0 lists.
Ok, so what was the deal with OBSE and categorization? Just add them in like a normal category? Thinking about it, we should have added the vanilla functions to the OBSE list all along - at least to have them all in one place (my thinking is that there should be two lists, ignoring CSv1.2 for simplicity's sake: 1. vanilla functions, 2. OBSE and vanilla functions), or is there a way to automatically include them in a massive list, such as the one mmmpld started?
--Haama 17:14, 8 August 2007 (EDT)
Alright, the Set stuff is done. That's all of the vanilla functions, right?
--Haama 19:01, 8 August 2007 (EDT)
Thanks again! Great work, as always. I've had a crappy day (the New York City Subway System being completely flooded is a recipe for disaster, in case anyone was wondering), that was definitely a very nice thing to come home to.
I'm thinking we call "Object Functions" "Item Functions" instead. As for "Reference Functions", I think that category was confusing in the first place - the idea was that those functions worked on the Reference rather than the Base item. Important information, but difficult to easily categorize thanks to the weirdness with References/Bases in the first place. Speaking of which, we need to get the Terminology stuff over here in some form or another. Can't copy Wrye's work, but we can have something. I've been meaning to do it, but haven't yet. Among other things *sigh*. Anyway, back to functions...
The OBSE functions should be included in the normal Function Type categories (so Functions, Player Functions, etc), as well as the OBSE versions of all of the above. Further, the OBSE _____ Functions category should be removed so we can just delete those (redundant)... Hmm, while this is going on there are going to be problems. Ideas on handling that?
Anyway, once we're done with that, we can finally update the OBSE functions with the new ones. That is very important.
Dragoon Wraith TALK 23:00, 8 August 2007 (EDT)

(back to the left)
Hmm, I've been thinking about the "Reference Functions" and was thinking perhaps "Reference Data Functions" and "Base Data Functions" - specifying that we are refering to something about the data held on each of those types of records, rather than the records themselves. Should be less confusing, since it helps clarify what meaning of "Reference" we're going for. Reference Data Functions would be anything that is applied locally to this single instance of an object, and a Base Data Function would be any function that changes every instance of the given base.
Dragoon Wraith TALK 00:07, 14 August 2007 (EDT)

Since there are so many OBSE functions that can be used on either, it's pretty clear from the syntax which the function works on, and because I just can't see anyone saying "oh, what I need might be an Actor function... no... Magic function... no... a Reference function!" I think keeping them will do more harm than good.
"The OBSE functions should be included in the normal Function Type categories (so Functions, Player Functions, etc), as well as the OBSE versions of all of the above. Further, the OBSE _____ Functions category should be removed" DragoonWraith
I don't follow this. What are the "OBSE versions", if not the "OBSE ___ Functions"?
--Haama 01:24, 14 August 2007 (EDT)
Hmm... Alright, then we should mention how each works in the articles themselves.
As for your question, I was refering to these.
Dragoon Wraith TALK 09:07, 14 August 2007 (EDT)
OK, I think it's time to work on the OBSE functions! Excellent, methinks. We should be up-to-date soon!
Dragoon Wraith TALK 21:16, 15 August 2007 (EDT)
The Magic functions (as defined in the OBSE command documentation) are being added. One thing that's come up - how should we handle aliases? Just one article, one for each? What about the code versions of the magic effect functions (i.e., AddEffectItem and AddEffectItemC)?
--Haama 02:08, 26 August 2007 (EDT)
Alright, the Magic effects are done (and 300 is still a cool movie).
--Haama 03:10, 26 August 2007 (EDT)
Aliases should go in the main article (under the full name), much like GetActorValue / GetAV is handled. Also, set up a redirect from the alias to the full name.
The code versions of functions are different functions, methinks. They should get there own page and have a See Also section pointing to the non-code version (and vice versa).
And yes, 300 was an awesome movie... what brings that up, though?
Dragoon Wraith TALK 13:49, 26 August 2007 (EDT)

I'm happy to announce that I've finished with the update of the OBSE v0012 functions.

  • All the new OBSE functions have been created (I hope correctly) and they are under their new categories.
  • The only function that is causing problems is GetType: This function is listed in the OBSE documentation here and in the List of Functions of Wiki, however I can't find any more details about it.
  • Also I've updated the categories of the old functions. Now the old OBSE categories (OBSE_<category>) are empty. I think it's time to clean all these empty categories.

--WereWolf 09:37, 15 September 2007 (EDT)

    • Much thanks WereWolf, that's a major step forward. Not sure about the last bit, but I did notice some 'Under Construction' notices - I believe it's time to get rid of them?
    • --Haama 20:07, 25 September 2007 (EDT)

I'd like to say I like the new format. Its nice that the OBSE funtions are included on that page as well.
--Thedragonreborn 14:32, 14 October 2007 (EDT)