|
Post by naraku on Aug 29, 2006 17:33:54 GMT
ok I run Shayan's (rhun team) PW Rhun the downloadable one from NWNVault. believe its 1.7b or something. it has his ILR/Subrace engine installed. believe its 2.5 on the subrace engine...that said. i downloaded your HGLL system to let my character progress past lvl 40.
is there anything i need to adjust in the other scripts to allow your system to function.. or if i follow the install and add it to my module will it work ok with no mods on my other scripts?
i also use scarface pw banker system/socketed items/ and item crafter. the banker uses the standard nwn database for storage. will this interfer?
thanks =)
|
|
|
Post by FunkySwerve on Aug 29, 2006 18:21:37 GMT
No, if you install the HGLL system correctly it should run fine, though you may have to be carful with combining module events if you are using letoscript for other things - you have to check to make sure only one leto edit is attempted at once. Without seeing your onvlientexit I can't tell you more than that. If you follow the install instuctions the system is totally self-sufficient. You should make sure that you are running letoscript 24, however, as an old version of shayans may well be running letoscript 18, which uses an outdated language. You may well have to switch to a new version of Shayans. Alternatively you can select the PHOENIX toggle on HGLL. That will make it compatible with with the older leto language. One thing I just realized, however, is that the ability to swap spell selections is not PHOENIX compatible, so you will have to upgrade to a newer version of shayan's if it is using leto 18(I could rewrite the language to work, but with nwn2 toolset beta and cep2 about to release, I just don't have much time atm). Alternatively, you could go to weathersong and ask dragonsong for the PHOENIX translation of these lines: sLeto += "replace 'Spell', " + IntToString(nSpell) + ", " + IntToString(nSpell2) + ", /LvlStatList;"; sLeto += "replace 'Spell', " + IntToString(nSpell) + ", " + IntToString(nSpell2) + ", /ClassList;"; They are the extent of the incompatibility with PHOENIX. If all that confused you, find out what version of letoscript you are using and get back to me. As far as using nwn database goes, thats no problem, nwnx databasing and/or other functions wiull not affect them at all. You should be aware that bioware databases eventually explode, however, causes crashes whenever accessed and rendering their data permanently irretrievable. If you are setting up a large-scale PW project I would give seriuous consideration to using nwnx databasing instead. [Edit] I'm asking ds about translating those lines myself, as I need to update HGLL for the one person out there still using Phoenix) Best, Funky
|
|
|
Post by naraku on Aug 30, 2006 4:01:41 GMT
nwnx/leto24 is what i got from your post on NWNVault an dno my module has never had nwnx or leto before installing your addition.. it will be the only thing in my module useing leto or nwnx.
just wanted to be sure there would be no iteerference with useing bioware database for my banker & subrace engine and letting nwnx/leto run your legendary levels.
thanks for the help and info =)
|
|
|
Post by naraku on Aug 31, 2006 22:06:28 GMT
ok im no scripter by far but im learning a lil as i go and edit and try to fix things in my PW. what im wondering is.. is it possible to add permanent visual effects to the player as he goes thru the legendary levels. a simple example using in game content would be as soon a i become 41 i gain the vfx magic sparks white applied to my character at all times. at 42 43 ect up to 49 i get different colored version of the magic sparks. until at 50 through 60 i change to shaft of light and conitnue through those colors and at 60 i get sparks and shaft of light.. is this possible and can you help me out doing it?
|
|
|
Post by FunkySwerve on Aug 31, 2006 23:31:50 GMT
Sure, you can do that, but it's WAAAAY outside of tech support for HGLL. You should post on the Bioware forums with this one. You can easilt tell how many LL a character hass with this handy lil function:
int GetNumberOfLegendaryLevels(object oChar = OBJECT_SELF) { int nLoot = GetLootable(oChar) - 40; if (nLoot < 0) nLoot = 0; return nLoot; }
That function will return 0 if they do not yet have LL, so you can find their total levels by calling GetHitDice and then adding it to the above.
Best, Funky
|
|
|
Post by naraku on Sept 1, 2006 18:58:08 GMT
so if i understand you correctly.. the first line of your code is the fetch for the number of legendary levels. and it will return 1 or 2 or 5 or 19 if your lvl 60 if i am correct. that said i should be able to make a onclient enter check the number of levels and award a vfx according to the number of LL attained =) gonna try to code it up now.. thanks for the help =)
Hmmm tried the listd commands in the script editor today and got nothing but errors.. will keep pecking at it and asking round. what i need is a oncliententer level check.. i need it to return to me the lvl number so i can feed it to if statements to add the proper VFX. any help would be appreciated. i think it goes like you said but i just can call the actuall LL number.. // this is just what i think it would be like im not sure. int lLvl = gethitdice(opc) + getlegendarylevel(opc); if (lLvl == 41) applyeffecttoobject(opc, vfx,perm); if (lLvl == 42) ect ect ect you get the picture..
can ya help me out here? thanks again =)
|
|
|
Post by FunkySwerve on Sept 2, 2006 0:26:31 GMT
It'll return between 1 and 20, 1 at level 41, and 20 at 60. Funky I would do a switch like so:
object oPC = GetEnteringObject(); int nLL = GetLootable(oPC); if (nLL)//returns troe if non-zero (ie, they have LL) { switch (nLL) { case 1: case 2: //and so on } }
Bear in mind you'll have to reapply effects when rezzing/raising/etc. Funky
|
|
|
Post by naraku on Sept 2, 2006 21:04:46 GMT
ah i see the errr in my ways.. i did not realize the loottable call was gathering the LL number.. i got the effects part completed and ready to place soon as i make my check system now its gonna be fireworks =)
thank you very much for your assistance
|
|
|
Post by naraku on Sept 5, 2006 19:10:44 GMT
im flustered now. i thought i had it figured out and it compiled flawlesly. but that said.. nothing happens when i log into the module. and what should happen is i get my aura for my level number. so im posting my OnClientEnter here to see if you see my problem.. thank you for the help. =)
#include "x0_i0_campaign" #include "taip_r_header" #include "sha_subr_methds" #include "dem_color_text" #include "sha_artif_syste2"
int CheckHasDied(object oPC) { return GetCampaignDBInt(oPC, "PLAYERHASDIED"); } void main() { object oPC = GetEnteringObject(); string Script = GetLocalString(oPC, "LetoScript"); if( Script != "" ) { SetLocalString(oPC, "LetoScript", ""); } int nLL = GetLootable(oPC); if (nLL) { switch (nLL) { case 1: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_PURPLE_BLACK), oPC); break; case 2: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_BROWN_BLACK), oPC); break; case 3: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_CYAN_BLACK), oPC); break; case 4: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_GREY_BLACK), oPC); break; case 5: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_MAGENTA_BLACK), oPC); break; case 6: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_ORANGE_BLACK), oPC); break; case 7: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_BLUE_BLACK), oPC); break; case 8: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_YELLOW_BLACK), oPC); break; case 9: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_GREEN_BLACK), oPC); break; case 10: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_RED_BLACK), oPC); break; case 11: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_PURPLE_WHITE), oPC); break; case 12: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_BROWN_WHITE), oPC); break; case 13: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_CYAN_WHITE), oPC); break; case 14: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_GREY_WHITE), oPC); break; case 15: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_MAGENTA_WHITE), oPC); break; case 16: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_ORANGE_WHITE), oPC); break; case 17: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_BLUE_WHITE), oPC); break; case 18: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_YELLOW_WHITE), oPC); break; case 19: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_GREEN_WHITE), oPC); break; case 20: ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_AURA_PULSE_RED_WHITE), oPC); break; } } if (!GetIsObjectValid(GetItemPossessedBy(oPC, "dmfi_pc_dicebag"))) CreateItemOnObject("dmfi_pc_dicebag", oPC); if (!GetIsObjectValid(GetItemPossessedBy(oPC, "dmfi_pc_follow"))) CreateItemOnObject("dmfi_pc_follow", oPC); object oRag = GetItemPossessedBy(oPC, "rag");
if (GetIsObjectValid(oRag)) DestroyObject(oRag);
CreateItemOnObject("rag", oPC);
ExecuteScript("bpm_mod_enter",GetEnteringObject());
if(!GetLocalInt(oPC, "RHUN_ONCE")) { SendMessageToPC(oPC, ColorText("Welcome to the World of Rhun!", "red")); }
SubraceOnClientEnter();
if(!GetLocalInt(oPC, "RHUN_ONCE")) { ExecuteScript("s_factions", oPC); SetLocalInt(oPC, "RHUN_ONCE", TRUE); }
CheckItemLevelRestriction(oPC);
if(CheckHasDied(oPC)) { object oPlayer = oPC; DelayCommand(7.0, ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect(EffectDeath()), oPlayer)); SendMessageToPC(oPlayer, "You have died previously, and your death did not cause any consequence."); if(GetTag(GetArea(oPlayer)) == "GatewaytoRhun") { PopUpDeathGUIPanel(oPlayer, TRUE, FALSE); } else { ExecuteScript("s_pc_death", oPlayer); } } DelayCommand(10.0, ExecuteScript("rude_deathrow", oPC)); }
|
|
|
Post by FunkySwerve on Sept 5, 2006 22:50:07 GMT
Use the function I gave you, not GetLootable. That was a typo in my last post, which was only intended to show how I'd set up the switch. Lootable returns 60 for a level 60, and 41 for a level 41, but 0 below that, so you need to subtract 40 and return 0 if the result is 0 or below. That's exactly what the funtion I originally gave you, called GetLegendary Level, does. Funky
|
|
|
Post by naraku on Sept 6, 2006 3:28:56 GMT
horray! after a few lil edits of the code. to fix MY screwups.. it works perfectly. thank you for your help with this modification. it looks fantastic in game =) we love it.
|
|