[RELz] - Script Validator

Post » Mon Aug 09, 2010 11:52 am

I'm using IE8, was this not meant to be used with IE perhaps?
User avatar
Karl harris
 
Posts: 3423
Joined: Thu May 17, 2007 3:17 pm

Post » Mon Aug 09, 2010 9:25 am

I haven't done as much testing in IE as I have in Firefox and Chrome, but (aside from the syntax highlighting, which IE breaks) it should still work. If you try a very simple script, like only a ScriptName declaration, does it work? There might be something in the script that you're trying to validate that exposes a bug in the validator.

Cipscis
User avatar
Charlotte Lloyd-Jones
 
Posts: 3345
Joined: Fri Jun 30, 2006 4:53 pm

Post » Mon Aug 09, 2010 10:59 am

I could copy and paste one line at a time, but at some point it would stop accepting the pastes, at that time I could still type each letter and still get the feedback from the lower box. Then it stopped accepting my typing but would accept pasting again. That seems really wierd to me, but I just installed Chrome and have no problems at all, aside from trying to figure out Chrome.

Again big thanks for creating this! :tops:
User avatar
Elle H
 
Posts: 3407
Joined: Sun Aug 06, 2006 3:15 am

Post » Mon Aug 09, 2010 5:36 am

Looking great, of course.

It might be nice to have a checkbox or button that standardizes the case of the output text. Standardized to the conventions you use and generally seen on the GECK wiki (Begin, End, if, else, ref, float, CamelCase on function names, etc.). And perhaps as a separate checkbox, and option to switch between full names and their aliases if available, like scn to ScriptName, cios to CastImmediateOnSelf, etc.

By the way, do you already have all the GECK function definitions completely covered? If not I can still make up that script to crawl the GECK wiki to extract any function syntax templates that are properly defined.
User avatar
Elizabeth Lysons
 
Posts: 3474
Joined: Fri Feb 02, 2007 7:16 am

Post » Mon Aug 09, 2010 7:22 am

Looking great, of course.
Thanks!

It might be nice to have a checkbox or button that standardizes the case of the output text. Standardized to the conventions you use and generally seen on the GECK wiki (Begin, End, if, else, ref, float, CamelCase on function names, etc.). And perhaps as a separate checkbox, and option to switch between full names and their aliases if available, like scn to ScriptName, cios to CastImmediateOnSelf, etc.
Good idea. I've just implemented this feature in my local version, with a set of radio boxes for using given, short, or long names (applied to defined functions, "ScriptName"/"scn" and variable declarations) and a checkbox for whether or not to "fix" capitalisation, which applies to all defined functions, blocktypes, keywords and declared variables.

The UI needs some tweaking, and there aren't any instructions yet, but once I've written that up you can expect to see it live.

By the way, do you already have all the GECK function definitions completely covered? If not I can still make up that script to crawl the GECK wiki to extract any function syntax templates that are properly defined.
Not even close, unfortunately. There are 761 non-FOSE functions, not including aliases, recognised by the validator, but I've only given full definitions to about half of them. 358 non-FOSE functions, not including aliases, remain undefined.

If you could extract some of those definitions from the GECK Wiki, that would be really great! I've made some small changes to how the functions are defined so that I can implement the features you mentioned. Here is the new definition, along with a couple of examples:
Spoiler
function scriptFunction(returnType, callingConvention, FOSE, params, names, notes){	if (typeof returnType != "undefined")		this.returnType = returnType;	//Accepted values:	//"ref"		- FormID	//"int"		- Integer	//"float"	- Floating point value	//"void"	- No return value	if (callingConvention in {"R": 1, "S": 1, "E": 1, "B" : 1, "D": 1})		this.callingConvention = callingConvention;	//Accepted values:	//"R"		- Called on a reference	//"S"		- Reference function that should always be called implicitly	//"E"		- Called on reference or on base form specified as final parameter - FOSE functions only	//"B"		- Not called on a reference.  A base form may be specified as a parameter	//"D"		- The function is deprecated and should not be called in any way	if (typeof FOSE != "undefined")		this.FOSE = FOSE;	//The required version of FOSE	//Use 0 for functions that don't require FOSE	//Otherwise use (for example) 1.22 for 1.2 beta 2	if (typeof params != "undefined")		this.params = params;	//Should be an array of scriptFunctionParams	if (typeof names != "undefined") {		//The "names" parameter should be an object with all of the relevant properties used below		this.docLink = names.docLink;		this.name = names.name;		this.shortName = names.shortName;		this.longName = names.longName;	}	if (typeof notes != "undefined")		this.notes = notes;	//Should be an array of scriptFunctionNotes}function alias(functionDef) {return new scriptFunction(functionDef.returnType, functionDef.callingConvention, functionDef.FOSE, functionDef.params, {docLink: functionDef.docLink, name: functionDef.shortName, shortName: functionDef.shortName, longName: functionDef.longName}, functionDef.notes);}
dictionary.functions["setactorvalue"] = new scriptFunction("void", "R", 0, [new scriptFunctionParam("string", "StatName"), new scriptFunctionParam("float", "Value")], {docLink: "http://geck.gamesas.com/index.php/SetActorValue", name: "SetActorValue", shortName: "SetAV", longName: "SetActorValue"});dictionary.functions["setav"] = alias(dictionary.functions["setactorvalue"]);dictionary.functions["stopcombat"] = new scriptFunction("void", "R", 0, [], {docLink: "http://geck.gamesas.com/index.php/StopCombat", name: "StopCombat"});dictionary.functions["getlineofsight"] = new scriptFunction("int", "R", 0, [new scriptFunctionParam("ref", "ObjectID")], {docLink: "http://geck.gamesas.com/index.php/GetLineOfSight", name: "GetLineOfSight", shortName: "GetLOS", longName: "GetLineOfSight"});dictionary.functions["getlos"] = alias(dictionary.functions["getlineofsight"]);dictionary.functions["scripteffectelapsedseconds"] = new scriptFunction("float", "B", 0, [], {docLink: "http://geck.gamesas.com/index.php/ScriptEffectElapsedSeconds", name: "ScriptEffectElapsedSeconds"}, [new scriptFunctionNote(	function(functionCall) {return script.inBlock.toLowerCase() != "scripteffectupdate";}, "\"ScriptEffectElapsedSeconds\" will only return a value greater than 0 inside a \"ScriptEffectUpdate\" block", 1)]);dictionary.functions["menumode"] = new scriptFunction("int", "B", 0, [new scriptFunctionParam("int", "Menu Number", true, {0: 1, 1: 1, 2: 1, 3: 1, 1001: 1, 1002: 1, 1003: 1, 1004: 1, 1007: 1, 1008: 1, 1009: 1, 1012: 1, 1013: 1, 1014: 1, 1016: 1, 1023: 1, 1027: 1, 1035: 1, 1036: 1, 1047: 1, 1048: 1, 1051: 1, 1053: 1, 1054: 1, 1055: 1, 1056: 1, 1057: 1, 1058: 1, 1059: 1, 1060: 1})], {docLink: "http://geck.gamesas.com/index.php/MenuMode_(Function)", name: "MenuMode"});

If you're going to do this, would you be able to pull the FOSE functions again, using the new definitions, as well? Only one parameter of the function definitions has changed, and aliases are created with very similar syntax I've already updated the code to use the new syntax for defining aliases, so it shouldn't require a very large change to what you used last time. I've updated the FOSE functions to use the new definitions.

Cipscis

EDIT:

I've just made a small change to the way in which available values are specified for functions. Instead of assigning each property a value of 1, I'm now assigning a string showing the available value with standardised capitalisation. For example:
dictionary.functions["getissix"] = new scriptFunction("int", "R", 0, [new scriptFunctionParam("string", "six", false, {male: "Male", female: "Female"})], {docLink: "http://geck.gamesas.com/index.php/GetIssix", name: "GetIssix"});

Cipscis
User avatar
Horse gal smithe
 
Posts: 3302
Joined: Wed Jul 05, 2006 9:23 pm

Post » Mon Aug 09, 2010 5:20 am

Alright, here's another update for you. There is now the option to force functions and keywords to use their long or short aliases, as well as to standardise capitalisation in the manner that I usually use. Only functions with full definitions will be changed by these options.

I've also updated the way in which errors and warnings are shown so that they're now much less intrusive. If a line has errors and/or warnings, an icon will appear next to it to let you know. To view them, just hover over the icon (if you need to scroll, click the icon and hold the mouse button down to keep the errors and warnings showing).

Cipscis
User avatar
GRAEME
 
Posts: 3363
Joined: Sat May 19, 2007 2:48 am

Post » Mon Aug 09, 2010 1:32 pm

Alright, here's another update for you. There is now the option to force functions and keywords to use their long or short aliases, as well as to standardise capitalisation in the manner that I usually use. Only functions with full definitions will be changed by these options.

I've also updated the way in which errors and warnings are shown so that they're now much less intrusive. If a line has errors and/or warnings, an icon will appear next to it to let you know. To view them, just hover over the icon (if you need to scroll, click the icon and hold the mouse button down to keep the errors and warnings showing).

Cipscis


Nice! I like this add-on alot. :)

Granted having the aliases for commands is convenient to type and makes the script look ultra-complex to those that don't know the aliases, but in actual fact I hate the aliases as it expands the up-ramp to learning scripting and following other examples. There is no performance boost to the engine by using aliases, and it makes the code harder to understand for anyone not intimiately familiar with them. I will make regular use of this function in your validator! :goodjob:

Let me know if there is anything I can do to help.

Miax
User avatar
c.o.s.m.o
 
Posts: 3419
Joined: Sat Aug 12, 2006 9:21 am

Post » Mon Aug 09, 2010 4:24 am

Nice! I like this add-on alot. :)

Granted having the aliases for commands is convenient to type and makes the script look ultra-complex to those that don't know the aliases, but in actual fact I hate the aliases as it expands the up-ramp to learning scripting and following other examples. There is no performance boost to the engine by using aliases, and it makes the code harder to understand for anyone not intimiately familiar with them. I will make regular use of this function in your validator! :goodjob:

Let me know if there is anything I can do to help.

Miax
Cool, I'm glad you like it.

In some extreme cases, being able to convert function names and keywords to their shorter aliases might considerably shorten the length of a script, although if a script is long enough to hit some sort of limit then you'll probably need to consider reorganising the structure of your mod anyway.

A more useful thing that this could be used for is expanding scripts that already use shortened function names, so that they can become less obfuscated. I try to use longer function names at all times, with only one exception that I can think of1, so that anyone reading my scripts can get an idea of what's going on without having to be familiar with the functions. Some function aliases, like http://geck.gamesas.com/index.php/EvaluatePackage and http://geck.gamesas.com/index.php/StopCombatAlarmOnActor, can be very confusing when you see them for the first time.

If you'd like to help, there are still a lot of functions that have documentation on the GECK Wiki, but haven't yet been defined in the validator. If you're interested in helping with this, send me a PM and I'll send you an explanation of the format that I use to define functions and a copy of the dictionary. (If anyone else is interested in helping as well, this applies to you too)

1I use http://geck.gamesas.com/index.php/MoveTo instead of http://geck.gamesas.com/index.php/MoveTo because, even though it's the shorter of the two, it's the more commonly recognised version. I tend to use shorter versions of most console functions as well, although if I was going to make a batch file to redistribute I would use the longer names.

Cipscis
User avatar
Louise
 
Posts: 3407
Joined: Wed Nov 01, 2006 1:06 pm

Post » Mon Aug 09, 2010 8:38 am

Hey Cipscis, I have been using your validator for a while and it always worked, but this last time there was a new format to it and it did nothing. I pasted a script and there was no indication that anything happened. On the chance that my script was perfect, I repasted it without the last end statement and still there was no action by the validator. Have I missed something? There used to be a validate button, but no more. It seems that all you need to do is paste the code, right?
User avatar
Anna Krzyzanowska
 
Posts: 3330
Joined: Thu Aug 03, 2006 3:08 am

Post » Mon Aug 09, 2010 3:19 pm

Both the dev and main version are working fine for me. Maybe check if you're browser is blocking scripts for some reason? A hard refresh might be good too.

There's also the chance he was working on something at the time you were trying to use it.
User avatar
I’m my own
 
Posts: 3344
Joined: Tue Oct 10, 2006 2:55 am

Post » Mon Aug 09, 2010 5:10 am

Hmm. Okay, I'll check with another browser and check the firewall, but it did work a while ago, so maybe he was working on it.
User avatar
Adrian Morales
 
Posts: 3474
Joined: Fri Aug 10, 2007 3:19 am

Post » Sun Aug 08, 2010 10:04 pm

There's a window of about 5-10 seconds per update in which the validator might not work correctly due to me uploading the new files, so that surely won't be the problem.

SteveDog mentioned earlier that there were issues with using the validator in IE, which I can confirm on IE8, but it should work in Firefox and Chrome. I haven't tested it in any other browsers.

If you pasted your script via the context (right click) menu, then that alone wouldn't trigger the validation function. The validation is triggered when you press a key, so try pasting via the Ctrl+V keyboard shortcut, or type something into the box after pasting your script in there via the context menu.

Cipscis
User avatar
Honey Suckle
 
Posts: 3425
Joined: Wed Sep 27, 2006 4:22 pm

Post » Mon Aug 09, 2010 3:40 pm

Ok, it was the IE 8.0 issue. I had always used that browser in the past successfully. So now I'll just use Firefox. :thumbsup:
User avatar
Alberto Aguilera
 
Posts: 3472
Joined: Wed Aug 29, 2007 12:42 am

Post » Mon Aug 09, 2010 6:08 am

I think I've fixed that error in IE now, as well as fixing the problem I had with applying syntax highlighting in IE. It still has some issues with strings though, and anything on a line after the beginning of a string will be truncated in IE.

Cipscis
User avatar
Sammygirl
 
Posts: 3378
Joined: Fri Jun 16, 2006 6:15 pm

Post » Mon Aug 09, 2010 2:40 am

SteveDog mentioned earlier that there were issues with using the validator in IE, which I can confirm on IE8, but it should work in Firefox and Chrome. I haven't tested it in any other browsers.
Cipscis


I can't get the regular one to work in Chrome (I last tried it yesterday or the day before), but the dev one works great. I'm getting the same thing PK had happen and SteveDog before him. I might try FireFox to see if that works. I do miss it. The old version of the regular validator worked great for me in IE.

BTW, I don't think I've ever told you this directly. Thanks so much for the validator. And, thank you so much for your tutorials. I'd never be scripting without them.
User avatar
Heather M
 
Posts: 3487
Joined: Mon Aug 27, 2007 5:40 am

Post » Mon Aug 09, 2010 11:01 am

Thanks llamaRCA! I'm really pleased to hear that you've found my resources helpful.

The dev version is using an older version of the JavaScript, so any results you get from that one won't include any updates since the 25th of June.

Do you know what version of Chrome you're using? If you try to paste your script into the validator on Chrome, then press Ctrl+Shift+J (this opens the "Developer Tools" window) and select the "Scripts" tab at the top, do any errors appear in the console at the bottom of the page? It could be the the script you're trying to use contains something which exposes a bug in the validator which prevents it from completing.

Cipscis
User avatar
Judy Lynch
 
Posts: 3504
Joined: Fri Oct 20, 2006 8:31 am

Post » Mon Aug 09, 2010 11:56 am

All documented FOSE functions now have their names and aliases defined, so the alias and capitalisation options will now be applied to them, although most aliases are currently all in lower case.

Cipscis
User avatar
JaNnatul Naimah
 
Posts: 3455
Joined: Fri Jun 23, 2006 8:33 am

Post » Mon Aug 09, 2010 11:06 am

I started writing the script to crawl the wiki for function definitions, and to begin with I just had it check to see how many function pages use the proper http://geck.gamesas.com/index.php/Template:Function to specify their http://geck.gamesas.com/index.php/Function_syntax (since that's what I'll be creating the definitions from). At the moment, out of the 493 functions on the wiki, only 120 have a properly defined syntax.

If anyone wants to contribute by updating some of the other function pages using the template, it would help improve both the wiki and Cipscis' validator.

Here's the full list for reference. Functions without an asterisk are not currently using the function template on their corresponding wiki page:
Spoiler

493 functions found.

Abs
Activate *
AddAchievement
AddCreatureToLeveledList
AddFormToFormList *
AddItem *
AddItemHealthPercent *
AddItemToLeveledList
AddNPCToLeveledList
AddNote
AddPerk
AddSPECIALPoints
AddScriptPackage
AddSpell
AddTagSkills
AddToFaction
AddTopic
AdvancePCLevel *
AgeRace
ApplyImageSpaceModifier
AttachAshPile
AutoDisplayObjectives
Autosave *
Cast *
CastImmediateOnSelf
ClearActorsFactionsPlayerEnemyFlag
ClearDestruction
ClearFactionPlayerEnemyFlag
ClearNoActivationSound
ClearOwnership
CompleteAllObjectives
CompleteQuest
Cos
CreateDetectionEvent
DamageActorValue
DamageObject
Disable *
DisableAllActors
DisableAllMines
DisableNavmesh
DisablePlayerControls
Dispel
DispelAllSpells
Drop
DropMe
DuplicateAllItems
Enable *
EnableFastTravel
EnableNavMesh
EnablePlayerControls
EnterTrigger
EquipItem
EssentialDeathReload
EvaluatePackage
EvaluateSpellConditions
Exists
ExitGame
FadeSFX *
FireWeapon
ForceActiveQuest
ForceActorValue
ForceFlee
ForceRadioStationUpdate
ForceSave *
ForceTerminalBack
ForceWeather
FriendDispositionBoost
GetActionRef
GetActorAggroRadiusViolated
GetActorCrimePlayerEnemy
GetActorFactionPlayerEnemy
GetActorValue
GetActorsInHigh
GetAlarmed
GetAngle *
GetAnimAction *
GetArmorRating
GetAttacked
GetBaseActorValue
GetBroadcastState
GetButtonPressed
GetCannibal
GetCauseofDeath
GetClothingValue *
GetCombatTarget
GetConcussed
GetContainer
GetCurrentAIPackage
GetCurrentAIProcedure
GetCurrentTime *
GetCurrentWeatherPercent
GetDayOfWeek
GetDead *
GetDeadCount *
GetDefaultOpen
GetDestroyed *
GetDestructionStage
GetDetected *
GetDetectionLevel *
GetDialogueEmotion
GetDialogueEmotionValue
GetDisabled *
GetDisposition
GetDistance *
GetEquipped *
GetFactionCombatReaction
GetFactionRank
GetFactionRankDifference
GetFactionReaction
GetFactionRelation
GetForceRun
GetFriendHit *
GetFurnitureMarkerID
GetGameSetting *
GetGlobalValue *
GetGold
GetGroupMemberCount
GetGroupTargetCount
GetHasNote
GetHeadingAngle *
GetHealthPercentage
GetHitLocation
GetIdleDoneOnce
GetIgnoreCrime
GetInCell *
GetInFaction
GetInSameCell *
GetInWorldspace
GetInZone
GetIsAlerted
GetIsAlignment
GetIsClass
GetIsCreature
GetIsCreatureType
GetIsCurrentPackage
GetIsCurrentWeather
GetIsFormType
GetIsGhost *
GetIsID
GetIsLockBroken
GetIsObjectType
GetIsPlayableRace
GetIsRace
GetIsReference
GetIssix
GetIsUsedItem
GetIsUsedItemEquipType
GetIsVoiceType
GetItemCount
GetKillingBlowLimb
GetKnockedState
GetLOS
GetLastHitCritical
GetLastPlayerAction *
GetLevel
GetLinkedRef
GetLockLevel
GetLocked
GetMajorCrimeCount
GetMapMarkerVisible
GetMinorCrimeCount
GetObjectiveCompleted
GetObjectiveDisplayed
GetOffersServicesNow
GetOpenState *
GetPCEnemyOfFaction
GetPCExpelled
GetPCInFaction
GetPCIsRace *
GetPCIssix *
GetPCMiscStat
GetPCSleepHours *
GetPackageTarget *
GetParentRef *
GetPermanentActorValue
GetPlantedExplosive
GetPlayerControlsDisabled *
GetPlayerGrabbedRef
GetPlayerName
GetPlayerTeammate
GetPlayerTeammateCount
GetPos *
GetQuestCompleted
GetQuestRunning *
GetQuestVariable *
GetRadiationLevel
GetRandomPercent *
GetRestrained *
GetSandman *
GetScale *
GetScriptVariable *
GetSecondsPassed *
GetSelf *
GetShouldAttack
GetSitting *
GetSleeping *
GetStage
GetStageDone
GetStartingAngle *
GetStartingPos *
GetTalkedToPC *
GetThreatRatio
GetTimeDead *
GetTrespassWarningLevel
GetUnconscious *
GetUsedItemActivate *
GetVATSBackAreaFree
GetVATSBackTargetVisible
GetVATSFrontAreaFree
GetVATSFrontTargetVisible
GetVATSLeftAreaFree
GetVATSLeftTargetVisible
GetVATSMode
GetVATSRightAreaFree
GetVATSRightTargetVisible
GetVATSValue
GetVatsTargetHeight
GetWalkSpeed *
GetWeaponAnimType
GetWeaponHealthPerc
GetWindSpeed *
GetXPForNextLevel *
GoTo *
HasBeenEaten
HasFriendDisposition
HasLoaded3D
HasMagicEffect
HasPerk *
IgnoreCrime
IsActionRef
IsActor *
IsActorAVictim
IsActorDetected *
IsActorEvil
IsActorTalkingThroughActivator
IsAnimPlaying
IsCellOwner
IsChild
IsCloudy
IsCombatTarget
IsContinuingPackagePCNear
IsCurrentFurnitureObj
IsCurrentFurnitureRef
IsEssential
IsFacingUp
IsGoreDisabled
IsGreetingPlayer
IsGuard
IsIdlePlaying
IsImageSpaceActive
IsInCombat *
IsInCriticalStage
IsInInterior *
IsInList *
IsInMyOwnedCell
IsKiller *
IsKillerObject
IsLastIdlePlaying
IsLeftUp
IsLimbGone
IsMoving
IsOwner
IsPC1stPerson *
IsPCAMurderer
IsPCSleeping
IsPS3
IsPlayerActionActive *
IsPlayerGrabbedRef
IsPlayerMovingIntoNewSpace
IsPlayerTagSkill
IsPleasant
IsRaining
IsRunning
IsSneaking *
IsSnowing
IsSpellTarget
IsSwimming *
IsTalking
IsTalkingActivatorActor
IsTimePassing
IsTorchOut
IsTrespassing
IsTurning
IsWaiting
IsWaterObject
IsWeaponInList *
IsWeaponOut
IsWeaponSkillType
IsWin32
IsXBox
KillActor *
KillAllActors
Label *
ListAddForm *
ListAddReference *
ListGetCount *
ListGetFormIndex *
ListGetNthForm *
ListRemoveForm *
ListRemoveNthForm *
ListReplaceForm *
ListReplaceNthForm *
Lock
Log
Look *
LoopGroup
MarkForDelete
MatchFaceGeometry
MatchRace *
MenuMode (Function) *
ModActorValue
ModBarterGold
ModDisposition
ModFactionRank
ModFactionReaction
ModPCAttribute
ModPCMiscStat
ModPCSkill
ModScale
ModWeaponHealthPerc
MoveTo *
OpenTeammateContainer *
PipBoyRadio *
PipBoyRadioOff *
PlaceAtMe *
PlaceAtMeHealthPercent
PlaceLeveledActorAtMe
PlayBink
PlayGroup *
PlayIdle *
PlayMagicEffectVisuals
PlayMagicShaderVisuals
PlayMusic
PlaySound *
PlaySound3D
Pow
PreloadMagicEffect
PurgeCellBuffers
PushActorAway
ReleaseWeatherOverride
RemapWaterType *
RemoveAllItems
RemoveFromAllFactions
RemoveFromFaction
RemoveImageSpaceModifier
RemoveItem *
RemoveMe *
RemoveMerchantContainer
RemoveNote
RemovePerk
RemoveScriptPackage
RemoveSpell
Reset3DState
ResetAI
ResetFallDamageTimer
ResetHealth
ResetInterior
ResetInventory
ResetPipboyManager
ResetQuest
RestoreActorValue
ResurrectActor
RewardKarma
RewardXP
Rotate *
SameFaction
SameFactionAsPC
SameRace
SameRaceAsPC
Samesix
SamesixAsPC
Say *
SayTo
ScriptEffectElapsedSeconds
SendAssaultAlarm
SendTrespassAlarm
SetActorAlpha
SetActorFullName
SetActorValue
SetActorsAI
SetAlert
SetAllReachable *
SetAllVisible *
SetAlly
SetAngle *
SetAtStart
SetAudioMultiThreading
SetBarterGold
SetBroadcastState
SetCellFullName
SetCellImageSpace *
SetCellOwnership
SetCellPublicFlag
SetClass
SetCombatStyle
SetCriticalStage
SetDefaultOpen
SetDestroyed
SetDisposition
SetEnemy *
SetEssential *
SetFactionRank
SetFactionReaction
SetForceRun
SetForceSneak
SetGhost
SetGlobalTimeMultiplier *
SetImageSpace
SetInChargen
SetItemValue
SetLastExtDoorActivated
SetLevel
SetLocationSpecificLoadScreensOnly
SetMerchantContainer
SetMinimalUse
SetNPCRadio
SetNoActivationSound
SetNoAvoidance *
SetObjectiveCompleted
SetObjectiveDisplayed
SetOpenState
SetOwnership *
SetPCCanUsePowerArmor
SetPCEnemyOfFaction
SetPCExpelled
SetPCSleepHours
SetPCToddler
SetPCYoung
SetPackDuration
SetPlayerTagSkill
SetPlayerTeammate
SetPos *
SetQuestDelay
SetQuestObject
SetRestrained
SetRigidBodyMass *
SetRumble
SetSPECIALPoints
SetScale
SetSceneIsComplex *
SetShowQuestItems
SetSize
SetStage
SetTagSkills
SetTalkingActivatorActor
SetUnconscious *
SetVatsTarget *
SetWeaponHealthPerc
SetWeather
SetZoneRespawns
sixChange
ShowAllMapMarkers
ShowBarberMenu
ShowBarterMenu
ShowDialogSubtitles
ShowMap
ShowMessage *
ShowNameMenu
ShowPlasticSurgeonMenu
ShowRaceMenu
ShowRepairMenu *
ShowSPECIALBookMenuParams
ShowTutorialMenu
ShowViewerStrings
ShowWarning
Sin
SkipAnim
Sqrt
StartCannibal *
StartCombat
StartConversation
StartMasterFileSeekData
StartMisterSandman
StartQuest *
StartRadioConversation
StopCombat
StopCombatAlarmOnActor
StopLook
StopMagicEffectVisuals
StopMagicShaderVisuals
StopQuest *
StopWaiting
Tan
ToggleMotionBlur
TrapUpdate
TriggerHUDShudder
TriggerHitShader
TriggerScreenBlood
UnequipItem
Unlock
UseWeapon (Function)
Wait *
WakeUpPC *

120 functions with defined syntax.

User avatar
Rob Smith
 
Posts: 3424
Joined: Wed Oct 03, 2007 5:30 pm

Post » Mon Aug 09, 2010 5:59 am

Cool, thanks HugePinball. I've used your list to make a list of all the functions that don't use the function template on the GECK Wiki, but are defined in my dictionary:
Spoiler
  • http://geck.gamesas.com/index.php/Abs
  • http://geck.gamesas.com/index.php/AddScriptPackage
  • http://geck.gamesas.com/index.php/AddSpell
  • http://geck.gamesas.com/index.php/AddTopic
  • http://geck.gamesas.com/index.php/CastImmediateOnSelf
  • http://geck.gamesas.com/index.php/CompleteQuest
  • http://geck.gamesas.com/index.php/Cos
  • http://geck.gamesas.com/index.php/CreateDetectionEvent
  • http://geck.gamesas.com/index.php/DisablePlayerControls
  • http://geck.gamesas.com/index.php/Drop
  • http://geck.gamesas.com/index.php/DropMe
  • http://geck.gamesas.com/index.php/EnablePlayerControls
  • http://geck.gamesas.com/index.php/EvaluatePackage
  • http://geck.gamesas.com/index.php/Exists
  • http://geck.gamesas.com/index.php/ForceActorValue
  • http://geck.gamesas.com/index.php/GetActionRef
  • http://geck.gamesas.com/index.php/GetActorValue
  • http://geck.gamesas.com/index.php/GetAlarmed
  • http://geck.gamesas.com/index.php/GetArmorRating
  • http://geck.gamesas.com/index.php/GetAttacked
  • http://geck.gamesas.com/index.php/GetButtonPressed
  • http://geck.gamesas.com/index.php/GetContainer
  • http://geck.gamesas.com/index.php/GetCurrentAIPackage
  • http://geck.gamesas.com/index.php/GetCurrentAIProcedure
  • http://geck.gamesas.com/index.php/GetCurrentWeatherPercent
  • http://geck.gamesas.com/index.php/GetDayOfWeek
  • http://geck.gamesas.com/index.php/GetDisposition
  • http://geck.gamesas.com/index.php/GetFactionRank
  • http://geck.gamesas.com/index.php/GetFactionRankDifference
  • http://geck.gamesas.com/index.php/GetFactionReaction
  • http://geck.gamesas.com/index.php/GetForceRun
  • http://geck.gamesas.com/index.php/GetGold
  • http://geck.gamesas.com/index.php/GetIgnoreCrime
  • http://geck.gamesas.com/index.php/GetInFaction
  • http://geck.gamesas.com/index.php/GetIsAlerted
  • http://geck.gamesas.com/index.php/GetIsClass
  • http://geck.gamesas.com/index.php/GetIsCreature
  • http://geck.gamesas.com/index.php/GetIsCurrentPackage
  • http://geck.gamesas.com/index.php/GetIsCurrentWeather
  • http://geck.gamesas.com/index.php/GetIsID
  • http://geck.gamesas.com/index.php/GetIsRace
  • http://geck.gamesas.com/index.php/GetIsReference
  • http://geck.gamesas.com/index.php/GetIssix
  • http://geck.gamesas.com/index.php/GetItemCount
  • http://geck.gamesas.com/index.php/GetKillingBlowLimb
  • http://geck.gamesas.com/index.php/GetKnockedState
  • http://geck.gamesas.com/index.php/GetLOS
  • http://geck.gamesas.com/index.php/GetLevel
  • http://geck.gamesas.com/index.php/GetLockLevel
  • http://geck.gamesas.com/index.php/GetLocked
  • http://geck.gamesas.com/index.php/GetMajorCrimeCount
  • http://geck.gamesas.com/index.php/GetMinorCrimeCount
  • http://geck.gamesas.com/index.php/GetPermanentActorValue
  • http://geck.gamesas.com/index.php/GetShouldAttack
  • http://geck.gamesas.com/index.php/GetStage
  • http://geck.gamesas.com/index.php/GetStageDone
  • http://geck.gamesas.com/index.php/GetTrespassWarningLevel
  • http://geck.gamesas.com/index.php/GetWeaponAnimType
  • http://geck.gamesas.com/index.php/HasBeenEaten
  • http://geck.gamesas.com/index.php/IgnoreCrime
  • http://geck.gamesas.com/index.php/IsActionRef
  • http://geck.gamesas.com/index.php/IsContinuingPackagePCNear
  • http://geck.gamesas.com/index.php/IsCurrentFurnitureObj
  • http://geck.gamesas.com/index.php/IsCurrentFurnitureRef
  • http://geck.gamesas.com/index.php/IsFacingUp
  • http://geck.gamesas.com/index.php/IsGuard
  • http://geck.gamesas.com/index.php/IsIdlePlaying
  • http://geck.gamesas.com/index.php/IsInMyOwnedCell
  • http://geck.gamesas.com/index.php/IsMoving
  • http://geck.gamesas.com/index.php/IsPCAMurderer
  • http://geck.gamesas.com/index.php/IsPCSleeping
  • http://geck.gamesas.com/index.php/IsPS3
  • http://geck.gamesas.com/index.php/IsRaining
  • http://geck.gamesas.com/index.php/IsSnowing
  • http://geck.gamesas.com/index.php/IsTalking
  • http://geck.gamesas.com/index.php/IsTrespassing
  • http://geck.gamesas.com/index.php/IsTurning
  • http://geck.gamesas.com/index.php/IsWaiting
  • http://geck.gamesas.com/index.php/IsWeaponOut
  • http://geck.gamesas.com/index.php/IsWin32
  • http://geck.gamesas.com/index.php/IsXBox
  • http://geck.gamesas.com/index.php/Lock
  • http://geck.gamesas.com/index.php/Log
  • http://geck.gamesas.com/index.php/LoopGroup
  • http://geck.gamesas.com/index.php/ModActorValue
  • http://geck.gamesas.com/index.php/ModDisposition
  • http://geck.gamesas.com/index.php/ModFactionRank
  • http://geck.gamesas.com/index.php/ModFactionReaction
  • http://geck.gamesas.com/index.php/ModPCAttribute
  • http://geck.gamesas.com/index.php/ModPCSkill
  • http://geck.gamesas.com/index.php/PlaySound3D
  • http://geck.gamesas.com/index.php/RemoveAllItems
  • http://geck.gamesas.com/index.php/RemoveScriptPackage
  • http://geck.gamesas.com/index.php/RemoveSpell
  • http://geck.gamesas.com/index.php/ResurrectActor
  • http://geck.gamesas.com/index.php/SameFaction
  • http://geck.gamesas.com/index.php/SameFactionAsPC
  • http://geck.gamesas.com/index.php/SameRace
  • http://geck.gamesas.com/index.php/SameRaceAsPC
  • http://geck.gamesas.com/index.php/Samesix
  • http://geck.gamesas.com/index.php/SamesixAsPC
  • http://geck.gamesas.com/index.php/SayTo
  • http://geck.gamesas.com/index.php/ScriptEffectElapsedSeconds
  • http://geck.gamesas.com/index.php/SendAssaultAlarm
  • http://geck.gamesas.com/index.php/SetActorValue
  • http://geck.gamesas.com/index.php/SetAlert
  • http://geck.gamesas.com/index.php/SetAlly
  • http://geck.gamesas.com/index.php/SetAtStart
  • http://geck.gamesas.com/index.php/SetCellPublicFlag
  • http://geck.gamesas.com/index.php/SetCombatStyle
  • http://geck.gamesas.com/index.php/SetDestroyed
  • http://geck.gamesas.com/index.php/SetFactionRank
  • http://geck.gamesas.com/index.php/SetFactionReaction
  • http://geck.gamesas.com/index.php/SetForceRun
  • http://geck.gamesas.com/index.php/SetForceSneak
  • http://geck.gamesas.com/index.php/SetPCEnemyOfFaction
  • http://geck.gamesas.com/index.php/SetPCSleepHours
  • http://geck.gamesas.com/index.php/SetSize
  • http://geck.gamesas.com/index.php/SetStage
  • http://geck.gamesas.com/index.php/ShowMap
  • http://geck.gamesas.com/index.php/ShowWarning
  • http://geck.gamesas.com/index.php/Sin
  • http://geck.gamesas.com/index.php/SkipAnim
  • http://geck.gamesas.com/index.php/Sqrt
  • http://geck.gamesas.com/index.php/StartCombat
  • http://geck.gamesas.com/index.php/StartConversation
  • http://geck.gamesas.com/index.php/StopCombat
  • http://geck.gamesas.com/index.php/StopLook
  • http://geck.gamesas.com/index.php/StopWaiting
  • http://geck.gamesas.com/index.php/Tan
  • http://geck.gamesas.com/index.php/Unlock
Many of these functions probably already have information on their pages, but for those without it probably wouldn't be too difficult I've written code to convert the definition in my dictionary into a function template, excluding attributes like "summary" and "example".

I also made a list of all the functions that do use the function template, but aren't defined in my dictionary:
Spoiler
  • http://geck.gamesas.com/index.php/AddFormToFormList
  • http://geck.gamesas.com/index.php/AddItemHealthPercent
  • http://geck.gamesas.com/index.php/AdvancePCLevel
  • http://geck.gamesas.com/index.php/Autosave
  • http://geck.gamesas.com/index.php/FadeSFX
  • http://geck.gamesas.com/index.php/ForceSave
  • http://geck.gamesas.com/index.php/GetAnimAction
  • http://geck.gamesas.com/index.php/GetFriendHit
  • http://geck.gamesas.com/index.php/GetGameSetting
  • http://geck.gamesas.com/index.php/GetIsGhost
  • http://geck.gamesas.com/index.php/GetLastPlayerAction
  • http://geck.gamesas.com/index.php/GetPackageTarget
  • http://geck.gamesas.com/index.php/GetParentRef
  • http://geck.gamesas.com/index.php/GetRestrained
  • http://geck.gamesas.com/index.php/GetSandman
  • http://geck.gamesas.com/index.php/GetTimeDead
  • http://geck.gamesas.com/index.php/GetUnconscious
  • http://geck.gamesas.com/index.php/GetUsedItemActivate
  • http://geck.gamesas.com/index.php/GetXPForNextLevel
  • http://geck.gamesas.com/index.php/HasPerk
  • http://geck.gamesas.com/index.php/IsActor
  • http://geck.gamesas.com/index.php/IsInCombat
  • http://geck.gamesas.com/index.php/IsInInterior
  • http://geck.gamesas.com/index.php/IsInList
  • http://geck.gamesas.com/index.php/IsKiller
  • http://geck.gamesas.com/index.php/IsPC1stPerson
  • http://geck.gamesas.com/index.php/IsPlayerActionActive
  • http://geck.gamesas.com/index.php/IsSneaking
  • http://geck.gamesas.com/index.php/IsWeaponInList
  • http://geck.gamesas.com/index.php/MatchRace
  • http://geck.gamesas.com/index.php/OpenTeammateContainer
  • http://geck.gamesas.com/index.php/PipBoyRadio
  • http://geck.gamesas.com/index.php/PipBoyRadioOff
  • http://geck.gamesas.com/index.php/PlayIdle
  • http://geck.gamesas.com/index.php/RemapWaterType
  • http://geck.gamesas.com/index.php/SetAllReachable
  • http://geck.gamesas.com/index.php/SetAllVisible
  • http://geck.gamesas.com/index.php/SetCellImageSpace
  • http://geck.gamesas.com/index.php/SetGlobalTimeMultiplier
  • http://geck.gamesas.com/index.php/SetNoAvoidance
  • http://geck.gamesas.com/index.php/SetOwnership
  • http://geck.gamesas.com/index.php/SetRigidBodyMass
  • http://geck.gamesas.com/index.php/SetSceneIsComplex
  • http://geck.gamesas.com/index.php/SetUnconscious
  • http://geck.gamesas.com/index.php/SetVatsTarget
  • http://geck.gamesas.com/index.php/ShowRepairMenu

Cipscis

EDIT:

Removed 4 functions erroneously added to the first list which are not defined at all in my dictionary:
Spoiler
  • http://geck.gamesas.com/index.php/ClearActorsFactionsPlayerEnemyFlag
  • http://geck.gamesas.com/index.php/GetPCInFaction
  • http://geck.gamesas.com/index.php/IsLastIdlePlaying
  • http://geck.gamesas.com/index.php/Pow

Cipscis
User avatar
Ray
 
Posts: 3472
Joined: Tue Aug 07, 2007 10:17 am

Post » Mon Aug 09, 2010 2:13 am

I've decided to remove most of the "The variable X has not been assigned a value yet" warnings, due to just how many times it appeared in a script without any issues. It will still appear if you attempt to use an uninitialised "ref" variable to call a reference function, but it will no longer appear if you use an uninitialised variable in an expression or as a function parameter.

I've also added a couple more function-specific notes. Most importantly, the validator will now give an error if you attempt to use http://geck.gamesas.com/index.php/GetSecondsPassed or http://geck.gamesas.com/index.php/GetButtonPressed in a block that doesn't run continuously. Hopefully that'll lower the number of "why isn't my timer/menu working?" threads.

i know you prob wont tell me, but how did you make your script validation engine. Are you using your own compiler or Bethesda, i curious, im not putting you down, it's just im A Php Master and wouldn't have given it a thought lol
It's certainly no secret - if you want to look at the code yourself you can find it here:
  • http://www.cipscis.com/javascript/dictionary.js
  • http://www.cipscis.com/javascript/validateScript.js
The code in http://www.cipscis.com/javascript/validateScript.js was written completely by me, and the code in http://www.cipscis.com/javascript/dictionary.js was mostly written by me, although most of it was generated. The FOSE functions were generated by http://www.gamesas.com/index.php?/user/547805-hugepinball/.

The only thing I've taken from Bethesda's compiler is inspiration. I've used it a few time to check whether or not a certain syntax should work, but I haven't used any of its code.

Cipscis

EDIT:

Oops, it looks like I had accidentally uploaded a version of the script that reported a warning for debugging purposes. I've updated the code now so the extra warnings shouldn't appear.

Cipscis
User avatar
Monika
 
Posts: 3469
Joined: Wed Jan 10, 2007 7:50 pm

Post » Mon Aug 09, 2010 1:57 pm

Hey Cipscis...

I tried to use your web validator just now. It's kinda messed up ....

Well, first thing is that it completely malfunctioned in my browser. Text went everywhere across the browser window and there was a misplaced square in the middle of it all, and buttons that didn't do anything. All I did was copy-paste my script in, I had not even clicked any buttons at that point. I am using Mozilla 1.7.13 .

I couldn't make sense of it that way so I turned on Explorer to try it. I know that my script has an endif problem because the compiler's telling me that. And the script validator didnt say anything about it like it used to.

It looks like you have some time in it, what with the colored text and all. So that makes me kinda feel like a jerk saying this: I liked the old one! I don't like colors in the text or red boxes, just regular text was great, and I liked how it told you what was wrong, before. And now when I use my regular browser, it's chaos. It used to work in my regular browser.

:(
User avatar
Rudy Paint fingers
 
Posts: 3416
Joined: Sun Nov 11, 2007 1:52 am

Previous

Return to Fallout 3