Aller au contenu

Photo

NWN Lexicon


  • Veuillez vous connecter pour répondre
69 réponses à ce sujet

#1
KooKoo88

KooKoo88
  • Members
  • 151 messages
Hello All.  I just wanted to make sure that the information for the Lexicon is available on the new forums.  (moderator, can we make this a sticky?)

The Lexicon is a resource for builders using the NWN.  It is geared toward scripting information and advice. 
This is the html help file:  http://nwvault.ign.c....Detail&id=1340 it is udated to use all of the 1.69 content. 
There is a Lexicon website: http://www.nwnlexicon.com It is only updated to the 1.68 version.  I have not been able to successfully contact the owner to update it further yet. 
This is the old 2004 version from the original team: http://nwvault.ign.c...r.Detail&id=736
For more general NWN information you can also access the very useful NWNWiki; http://nwn.wikia.com/wiki/Main_Page The main difference is that the Lexicon is geared more specifically towards scripting :)

Summary of Major Changes in the 1.69 version:
- Updated and added to the constants pages to reflect the new 1.69 content. This includes screenshots of the new visual effects.
- Updated function pages to reflect new parameters added in 1.69 content.
- Added pages for the new functions added in 1.69 content.
- Added page for new event added in 1.69 content.
Populated the index tab that went missing in the 1.68 update.
- Re-enabled search capability that ran off the with index tab in the 1.68 update.
- Updated the table of contents with the new pages.
- Limited updates to all the library file pages.
- Added numerous new library file pages and new pages for the functions contained within them.
- New tutorials for color charts, compiler errors, custom tokens, factions, lag reduction, and number conversion. As well as massive updates to the script caching tutorial.
- Added Proleric’s horse and scaling tutorial.
- Updated the resource pages for creatures, items, sounds and placeables to include the new 1.69 content.

#2
ElgarL

ElgarL
  • Members
  • 89 messages
I have the 1.69 version hosted @ http://palmergames.c...xicon_1_69.html

#3
Baragg

Baragg
  • Members
  • 271 messages
Lexicon Rocks.

#4
Sharona Curves

Sharona Curves
  • Members
  • 61 messages

Baragg wrote...

Lexicon Rocks.

 
I'll second that opinion. :D

Thanks to everyone past and present for keeping this resource alive, updated,
and helping countless of us scripters out there.

#5
Genisys

Genisys
  • Members
  • 525 messages
I downloaded the 1.69 Lexicon from the vault, works just fine offline, because that's when I'm doing my coding, when me wife jacks my internet.. XD

Modifié par Genisys, 30 juillet 2010 - 03:35 .


#6
Baragg

Baragg
  • Members
  • 271 messages

Genisys wrote...

I downloaded the 1.69 Lexicon from the vault, works just fine offline, cuase that's when I'm doing my coding, when me wife jacks my internet XD


Lol, bet you still love her.

#7
the.gray.fox

the.gray.fox
  • Members
  • 127 messages
If it was not for the Lexicon I would never have gained interest in modding Neverwinter Nights.

Blessings to all who contributed to it.



-fox

#8
Genisys

Genisys
  • Members
  • 525 messages

the.gray.fox wrote...

If it was not for the Lexicon I would never have gained interest in modding Neverwinter Nights.
Blessings to all who contributed to it.

-fox


I'll add to that, if it wasn't for the Lexicon, none of us would have been able to script well in nwn, it would have been a nightmare trying to figure out how to do many things in the toolset, and we owe the Lexicon team much appreciation for this...

Thank you Very Much Lexicon Team!!!  A true needed blessing for all in the NWN Community... :)

Modifié par Genisys, 30 juillet 2010 - 03:34 .


#9
Guest_invisig0th_*

Guest_invisig0th_*
  • Guests
Thanks to all involved with the 1.69 Lexicon update. That said, please do try to get all the 1.69 stuff up at www.nwnlexicon.com. That's the place where most people go to access the Lexicon's information.

Modifié par invisig0th, 31 juillet 2010 - 12:53 .


#10
Xovian

Xovian
  • Members
  • 87 messages

the.gray.fox wrote...

If it was not for the Lexicon I would never have gained interest in modding Neverwinter Nights.
Blessings to all who contributed to it.

-fox


I don't think wiser words have been said.

Easily one of the top3 utilities for the game.
Though I couldn't say which of those top 3 are in what order.
Which one of the 3 do ya need at the time...thats how it becomes number 1.
Lexicon has done it plenty of times and will still do so to be sure.

My thanks for the people that it put it together, some things I'd have never managed with out it.

#11
TheSpiritedLass

TheSpiritedLass
  • Members
  • 765 messages

invisig0th wrote...

Thanks to all involved with the 1.69 Lexicon update. That said, please do try to get all the 1.69 stuff up at www.nwnlexicon.com. That's the place where most people go to access the Lexicon's information.



Believe me, we have tried.  The owner of the website has apparently taken a journey to the edge of the Earth and decided that he really likes it there.  *grins*  We will keep trying, but at this point, I wouldn't hold your breath. =(
 
Danke for all the kudos.  *sleepy happy smile*

#12
Greyfort

Greyfort
  • Members
  • 234 messages
I found a error, in the lexicon you gave a example of code to find if bludge wepon but used invalid function.
EXAMPLE:

// Return TRUE if weapon does bludgeoning damage
// Uses Get2DAString

int GetDoesBludgeoningDamage(object oWeapon)
{
int nBaseType = GetBaseType(oWeapon);
return (StringToInt(Get2DAString("baseitems","WeaponType",nBaseType) == 2);
// 2 = bludgeoning
}

I made the function staded so it will return a valid 2da int for pierce,bludge,slash,slash/pirce,bludge/pirce etc

here is full example of script:

// lexi_2da_t1
//#include "x2_inc_itemprop"
// Return TRUE if weapon does bludgeoning damage
// Uses Get2DAString


//void GetBaseType(object oWeapon);
int GetBaseType(object oWeapon);

//void GetBaseType(object oWeapon);
int GetBaseType(object oWeapon)
{
int nBaseType=StringToInt(Get2DAString("baseitems","WeaponType",nBaseType));
return nBaseType;
/*
1=pierceing
2=bludgeoning
3=slashing
4=slashing/pierceing
5=bludgeoning/pierceing
*/

}


//----------------------------------------------
int GetDoesBludgeoningDamage(object oWeapon);

int GetDoesBludgeoningDamage(object oWeapon)
{
object oWeapon;
int nBaseType = GetBaseType(oWeapon);
if ( StringToInt(Get2DAString("baseitems","WeaponType",nBaseType)) == 2)
{
return TRUE;
}

return FALSE;
//return (StringToInt(Get2DAString("baseitems","WeaponType",nBaseType) == 2);
// 2 = bludgeoning
}

//
//void main()
//{

//}

the // uncomented lines were just used for compiling and the include uncomented above was just put there for ease of possibly needing to use a function from there but i didn't have to

Hey Spirited Lass I thought you can fix that in the update lexicon version for give my messy scripting perhaps you can whip me into shape...;)

God bless Lexi con team

Thankyou for all your work

Modifié par Greyfort, 31 janvier 2011 - 07:45 .


#13
Heclar

Heclar
  • Members
  • 5 messages
I would just like to say, that NWN Lexicon is frickin' awesome. Thank you.

#14
KooKoo88

KooKoo88
  • Members
  • 151 messages

Heclar wrote...

I would just like to say, that NWN Lexicon is frickin' awesome. Thank you.


I believe I speak for all of us who have worked on this wonderful tool when I say:  You're welcome.

Good gaming.  Posted Image

#15
Darth Shiv

Darth Shiv
  • Members
  • 4 messages
Absolutely... thanks all involved!

#16
Greyfort

Greyfort
  • Members
  • 234 messages
Here is a fix for the function i wrote above. Lightfoot did a better job at making it smaller and simpler. Thanks lightfoot8

Script Below:

//lighfoot fix:
// Return TRUE if weapon does bludgeoning damage
// Uses Get2DAString

int GetDoesBludgeoningDamage(object oWeapon)
{
int nBaseType = GetBaseItemType(oWeapon);
return (Get2DAString("baseitems","WeaponType",nBaseType) == "2");
// 2 = bludgeoning
}

#17
Shadooow

Shadooow
  • Members
  • 4 465 messages
I found out some quirks that wasnt documented in lexicon, might be usefull:

SetBaseAttackBonus
- works on player characters

ActionOpen/CloseDoor
- when the door are already opened/closed the OnOpen/OnClose event is still fired

SetLocked
- when the object is already (un)locked, the On(Un)locked event is still fired

SetImmortal
- (I made a big research few year ago about immortality also granting an immunity to many effect, however I lost it, it is somewhere in old bioware scripting forum...)

GetStringLower/UpperCase

- can't handle non-english characters, when characters like ÚĚČžýá encountered, it that case functions returns input

GetSpellId
- returns -1 if called inside of AOE script, GetEffectSpellId(EffectDaze()) will workaround this

GetSpellSaveDC
- if used in spellscript that fired from feat (feat that triggered spell) and the caster has his primary ability for that feat below 10, then this function returs very odd values beyond 100
x works correctly in AOE scripts, at least in 1.69

ResistSpell
- passes into consideration spell info from caster's last cast spell, thus for example immunity to AoE spell is not possible to guarantee and may be exploited

GetResRef
- works correctly on areas
- returns empty string when used on doors

EffectAttackIncrease
- ATTACK_BONUS_ONHAND and OFFHAND does not stacks with weapon's attack/enhancement bonus

GetCreatureTalentBest and GetCreatureTalentRandom
- specifying category 1 actually returns talents of category 11 and vice versa
- returns invalid talent if the creature is immobilized (toolset speed setting, entangle effect or cutscene immobility)
- random doesn't return truly random talent but rather random within best CR (EDIT: not sure about this anymore, my recent tests didnt confirmed it)
- best, if CR = -1 works like random, CR = 0 returns potions, scrolls and other items, spell has CR equal to (InnateLevel*2)-1, feats probably 0 as well
- if category = 0, returns anything without category, known feats (but not with 0 uses) and skills

EffectSpellResistanceDecrease
- cannot decrease spell resistance gained from Diamond Soul feat, not even if applied permanently/supernaturally

EffectNegativeLevel
- limit is indeed 100
- lexicon description is missing parameter int bHPBonus, but this parameter is ignored anyway

GetFirst/NextInShape
- returns placeables correctly despite what lexicon says

EffectSeeInvisibility
- cannot be used in conjuction with EffectVersus*
EffectTrueSeeing has probably the same issue

GetLastSpellHarmful()
- returns exact value passed into EventSpellCastAt function (this can be usefull for custom behavior)

GetTurnResistanceHD
- works on non-undead creatures
- doesnt work on player characters except possesed DM/familiar

GetAILevel
- on creature with unset AI level or ai level set to -1 (default or invalid), function returs AI_LEVEL_LOW when there is a player character in same area as creature or AI_LEVEL_VERY_LOW when not

SetAILevel
- setting AI_LEVEL_VERY_HIGH or any custom value higher than 3 results into AI_LEVEL_HIGH (3)

DecrementRemainingSpellUses
- cannot decrement spell that creature have memorised but shouldn't be able to use, for example if creature has a sixth level memorised under Spells tab but has caster ability only 15 or less, this function fails. Same spell given as Special ability is decremented properly.
- function decrements spontaneuos spell uses properly

GetHasSpell
- returns 1 for each spontaneou use when looking for cure/inflict spells cast by cleric


Not internal functions done by Bioware. Note the remarks Ive written are fixed and corrected in latests Community Patches.

GetIsMagicStatBonus (x2_i0_spells)
- returns strength bonus for target without any caster class
- this function should be avoided as it doesn't function correctly when target has more casting classes, only one spellscript uses this function and thats Shelgarn's persistent blade

GetShouldNotCastSpellsBecauseofArmor (nw_i0_generic)
- doesn't consider bards, doesn't consider autostill spell feat or using still metamagic

chooseTactics (nw_i0_generic)
- missing ClearActions before using rage feat causes not using this feat when caller doing something in that moment
- while checking for rage effect when determining whether to use spells at all, it doesn't check for Mighty rage effects.

DetermineclassToUse (nw_i0_generic)
- if creature has two classes, the function often returns (third) invalid class

CountEnemiesAndAllies (x0_i0_enemy)
- counts dead PCs and henchmans

IsOutOfAmmo (x0_i0_equip)
- doesn't considering throwing weapons correctly, thus default AI thinks its out of ammo and unequips them

WiseToDualWield (x0_i0_equip)
- doesn't considering ranger's dual wield feat

bkEquipMelee (x0_i0_equip)
- considering unidentified weapons and shields even when caller(henchman) cannot equip unidentified items
- considering weapons and shield that cannot equip due to the missing proficiences or size category
- function might equip inappropriate weapon for monk characters
- right hand (oRight) is switched for left hand (oLeft) causing character to equip new shield from inventory while already using shield

VerifyCombatMeleeTalent (x0_i0_match)
- considering vermins to be generally immune to stunning fist
- attempting to use smite to neutral targets

TalentHealingSelf
(x0_i0_talent)
- inapropriate use of bkTalentFilter when trying to use the spell on self - causes using heal spells on self when caller is undead

TalentUseTurning (x0_i0_talent)
- considering animal domain power as qualify for using turn undead on vermins

TalentSneakAttack (x0_i0_talent)
- doesn't consider death attack or sneak attack from BG class

TalentSeeInvisible
(x0_i0_talent)
- doesn't check for true seeing itemproperty
- doesn't consider already existing true seeing, see invisibility effects which might lead into casting the TS over and over

TalentBardSong (x0_i0_talent)
- doesn't check silence which might lead into being stucked
- doesn't check deafness which might lead into repeating this talent over and over

SetLastGenericSpellCast (x0_i0_generic)
- delayed deleting variable in fact leads into casting one spell over and over

bkTalentFilter (x0_i0_generic)
- when checking for PW: Death, the spell is decremented twice

bkRespondToHenchmenShout (x0_i0_henai)
- clearing actions before calling DetermineHenchmanRound might lead into never finishing spellcasting

BehDoFireBeam (x2_inc_beholder)
- BEHOLDER_RAY_FEAR has incorrect value

CICraftBrewPotion
and CICraftScribeScroll (x2_inc_craft)
- removes full stack, if CC allowed empty potions to stack

Modifié par ShaDoOoW, 30 juillet 2012 - 11:31 .


#18
WhiZard

WhiZard
  • Members
  • 1 204 messages

ShaDoOoW wrote...
GetAILevel
- on creature with unset AI level or ai level set to -1 (default or invalid), function returs AI_LEVEL_LOW when there is a player character in same area as creature or AI_LEVEL_VERY_LOW when not


Might add to this that when AI_LEVEL_VERY_LOW is returned (for a creature only) the OnHeartbeat event fires once every 9 seconds (instead of once every 6 seconds).  This allows the Default AI to slow down heartbeat scripts when players leave an area.

#19
acomputerdood

acomputerdood
  • Members
  • 219 messages
a comment came up in another threda that somebody wished the lexicon were a wiki so they didn't have to wait for the admins (who now seem absent) to make the updates for them.

i downloaded the 1.69 lexicon from the vault, did a bunch of formatting scripting to make the pages look nice, and set up a wiki on my server to host them.

http://www.dalakora..../wiki/index.php

i have some work to do yet to make sure everything is how i want it, and then i'll likely blow the whole thing away and reinstall it with a cleaner url.

anyway, check it out and see what you think - though don't bother trying to update any of the pages just yet.

Modifié par acomputerdood, 20 juillet 2012 - 10:25 .


#20
acomputerdood

acomputerdood
  • Members
  • 219 messages
as was sparked in this post:

http://social.biowar...9035/1#13201848

there's been some debate on how to continue with the lexicon. i've heard people say that they can't get a hold of any of the lexicon admins to see about updating the site, and conflicting stories of what version it's updated to. so does anybody know:

a: if the online version has been updated to 1.69 now or not? i'm guessing it's old because the first page of the online version has "Download NWN Lexicon v1.68 by GetLastLexiconUpdateBy from NWVault" on it, but then at the top of the page it says "last update: Wednesday, 22-Apr-2009 01:08:12 EDT". i guess that last update says "April 2009 Release: GetLastLexiconUpdateBy February 2nd, 2009 release. Updated through patch 1.68 with change log.", so it's pretty unlikely that it is 1.69.

at the very least what functions i should compare to the v1.69 lexicon i downloaded from the vault? what pages can i spot check to test?

b: who has tried contacting the sites admins and what means did they use? there are some names listed in the design team, and here is the whois records for them:

Registrant:
Contact Privacy Inc. Customer 0119246184
96 Mowat Ave
Toronto, ON M6K 3M1
CA

Domain name: NWNLEXICON.COM


Administrative Contact:
Contact Privacy Inc. Customer 0119246184, nwnlexicon.com@contactprivacy.com
96 Mowat Ave
Toronto, ON M6K 3M1
CA
+1.4165385457
Technical Contact:
Contact Privacy Inc. Customer 0119246184, nwnlexicon.com@contactprivacy.com
96 Mowat Ave
Toronto, ON M6K 3M1
CA
+1.4165385457


Registration Service Provider:
Hover, help@hover.com
416.538.5498
http://help.hover.com



Registrar of Record: TUCOWS, INC.
Record last updated on 06-Jul-2012.
Record expires on 07-Jul-2013.
Record created on 07-Jul-2002.



#21
acomputerdood

acomputerdood
  • Members
  • 219 messages
i was dorking around with trying to diff the content files from my nwnwiki mirror and the pages downloaded from the vault to see what changes i needed to make to the mirror to have the latest content. was working on this because i like the "feel" or formatting of the mirror moreso than the "windows help" style of the vault entry.

anyway, after an hour or so of this, i realized that all i had to do was copy the vault content into the mirror's pages, overwriting them all. DOPE

http://www.dalakora.com/lexicon/

anyway, i now realize how trivial it is to update the lexicon pages if we only had access to them.

i STILL like the idea of a wiki, and i'll likely still toy with that idea.

Modifié par acomputerdood, 20 juillet 2012 - 12:57 .


#22
acomputerdood

acomputerdood
  • Members
  • 219 messages

acomputerdood wrote...

b: who has tried contacting the sites admins and what means did they use? there are some names listed in the design team, and here is the whois records for them:


oh, and i'm working on this.

#23
acomputerdood

acomputerdood
  • Members
  • 219 messages
i'm in contact with the owner of the lexicon. he seems quite willing to help update it.

in the past, it seems to have been a system where the updates would be put into a database that generated a windows help archive. then, a process would dump all of that and generate the html content.

he offered to try setting it all back up, but we discussed it a bit and that system sounds unnecessarily complex for the minor updates we want to do.

he seems willing to let us just update the HTML directly.

he suggested we use github to push updates to the server or host it directly on github. i'm pretty unfamiliar with that, so if somebody knows more he's welcome to weigh in.


so what's the ideal situation we want?

#24
Shadooow

Shadooow
  • Members
  • 4 465 messages
github uh huh, seems unnecessarily complicated, why just not grant individual peoples ftp access?

Oh one question - are scripters willing to update it to to the community patch 1.70-71? Ive made several changes especially inside AI-related includes and functions and I added few constants too.

Modifié par ShaDoOoW, 21 juillet 2012 - 09:13 .


#25
eeriegeek

eeriegeek
  • Members
  • 47 messages
acomputerdood, what format are the source database files in? Knowing that would help determine what the best workflow is.