[RELz] tes3lint, a tool for finding possible problems in a p

Post » Fri May 13, 2011 5:21 am

My earlier stats were a little off, in 2311 plugins/55220 scripts, it was 36 plugins/65 scripts had non-comment code after the end. I think :)
User avatar
Vicki Gunn
 
Posts: 3397
Joined: Thu Nov 23, 2006 9:59 am

Post » Fri May 13, 2011 6:10 pm

the latter I was just musing about, haven't actually done anything yet.
Ah, ok, so it is working as expected
User avatar
Markie Mark
 
Posts: 3420
Joined: Tue Dec 04, 2007 7:24 am

Post » Fri May 13, 2011 5:18 am

I think I found a small dialog error in Bethesda's official plugin "entertainers".

Here is the output of tes3lint:

[MOD-INF]: ID=276181128340255511(Topic:little secret)  tribunal.esm----->|DATA|FNAM:Fighters Guild|NAME:You like to poke your nose into doors out in the backcountry? A little suggestion. The places that look like they're made of a golden metal? With spires and towers? Those are Dwarven ruins. They're kinda dangerous -- partly because of the old Dwarven machines in them, and partly because of the kind of things that like to hide out in such old ruins. All the old ruins inside the Ghostfence, for example, are ancient Dwarven ruins. And I hear that vampires like them, too.|SCVR:02sX4Random100|INTV|SCVR:1CsX0nolore|INTV:  entertainers.esp->|DATA|NAME:Oh. Do you play the lute? You might talk to Dulnea Ralaal in Balmora, at the Eight Plates Cornerclub. I hear she hires performers to entertain her patrons.|SCVR:02sX4Random100|INTV|SCVR:1CsX0NoLore|INTV:|SCVR:25IX3misc_de_lute_01|INTV[MOD-IID]: ID=6543141622156630875  entertainers.esp->You like to poke your nose into doors out in the backcountry? A little suggestion. The places that look like they're made of a golden metal? With spires and towers? Those are Dwarven ruins. They're kinda dangerous -- partly because of the old Dwarven machines in them, and partly because of the kind of things that like to hide out in such old ruins. All the old ruins inside the Ghostfence, for example, are ancient Dwarven ruins. And I hear that vampires like them, too.


What this means is that in entertainers.esp an INFO (ID=276181128340255511) for Dialog Topic "little secret" has had its text and filter changed from a fighter's guild hint about Dwemer ruins to a hint (if you are carrying a lute) that Dulnea Ralaal might hire you to entertain at the Eight Plates. Furthermore, it looks like entertainers.esp moved the text of the original dialog to a new INFO (ID=6543141622156630875).

This kind of situation can happen if you use the CS dialog editor to select an existing line of INFO dialog, copy it, and then accidentally edit the original instead of the copy.

When tes3lint detects this situation, it prints a MOD-INF ("modified info", meaning either the text or filter has changed), followed by a MOD-IID ("modified info ID", meaning for the same dialog text, the ID has been modified). There may be situations where tes3lint would have a false positive because there may be some legitimate reasons for an INFO to have been changed in this manner. But in this case, it really does look like a bug to me. The end result is that you'll never get that "little secret" about Dwemer ruins again if you load entertainers.esp. (If I've made an error in the anolysis, I hope someone will point it out! Thanks.)

If anyone wants to do a project to find dialog bugs and clean them up, I'd like to help out. Maybe I could adapt tes3lint to find more things or be more useful.
User avatar
Kevin Jay
 
Posts: 3431
Joined: Sun Apr 29, 2007 4:29 am

Post » Fri May 13, 2011 2:09 pm

(If I've made an error in the anolysis, I hope someone will point it out! Thanks.)

Nope, you've got it exactly right. :)

This is precisely the kind of thing that caused the troublesome 'Thieves Guild bug' with Tamriel Rebuilt.
User avatar
Elizabeth Lysons
 
Posts: 3474
Joined: Fri Feb 02, 2007 7:16 am

Post » Fri May 13, 2011 5:06 pm

I am looking forward to making greater use of this potentially very helpful utility, but I am encountering difficulties from not having it report all the records it claims to merely getting the program to run.

After a few dozen variations on command lines terminating with and I finally ran a successful(?) check. All of failed attempts were directory path issues. If I specified \Bethesda Softworks\Morrowind\ as part of the path I received the latter error message. Yes, the tes3lint folder is directly off the Morrowind folder and I am running tes3lint.bat from within that folder. The only way that I could process a plug-in is if I moved it to that same folder so there was no need to specify the path to the file. It did not first occur to me that was your intention nor I am not convinced that it ever was.

It was a rather anti-climatic triumph as the rather dirty mod I was examining only turned up two records (a couple altered NPCs). None of the altered official dialog records were identified, but perhaps it does not report those flagged as changed but there is no change in the content or filters (uncleaned insertion points). However, when I dig deeper into this mod I expect to find 'legitimate' dirty dialog changes.

It did not recognize any of the scripts that did not check for menumode (I ran tes3lint with the -a flag). Perhaps you have removed this record since you last updated the Wiki for tes3lint.

I recall the discussion the previous thread that discussed the importance of including this check. For the record I routinely write scripts that do not check for menumode. In the mod on which I just ran a diagnosis there were timer scripts that checked if ( currentDay == Day ). There are also doOnce scripts, scripts that just declare variables used as dialog filters (such as noLore) - I have even written scripts that must run when inventory is open. I think I am mindful of the efficiency of my scripts and the load that they place on the engine when they run. I do not see that including a menumode check for a script that tests a few short variables before returning is at all essential and in many of my scripts it would actually slow down the processing (by an undetectable amount) part of the time. That undetectable amount is also the savings in many cases when menumode is checked. Certainly in scripts that are running resource-hungry functions such as GetDistance, GetInventoryCount and the like menumode should be checked as long as it does not interfere with the execution of the script.

Back to tes3lint: I checked another mod (LGNPC Pelagiad) and it did return the three scripts that reference Tribunal functions, but it failed not notice the absence of menumode in those scripts. It also ignored changes to existing NPCs, and likely many other things (I have trouble imagining that the three scripts are the only concerns in that mod). John, we discussed the Tribunal functions before and I thank you for pointing them out for me. You may recall that two of the three scripts had commented out or moved the line of code containing the offending function after the 'End'. As it turned out, the third script was replaced with a new one but never cleaned out of the mod - it does not execute, but perhaps it will still generate a warning when the plug-in loads with a Morrowind-only installation. It may interest you to know that I devised acceptable workarounds for the Tribunal functions used in LGNPC Pax Redoran and LGNPC Vivec Redoran.

Not that I think appending comments/previous versions of code after the end is a good practice...

@abot: What is the reason for this? As I stated in the previous paragraph, it is not uncommon for me to move code below the 'End'. When working on mods that I did not create in the editor (most of the LGNPC line), I like to preserve a copy of the original code in case my changes are a disaster and I want to examine the previous solution to develop a new approach. Is the concern that the engine might not recognize the 'End' and continue to process the code included beyond that point perhaps resulting in problems? I should think that not recognizing the 'End' in a script would be a problem in its own right - if not, why is it necessary to include it at all. Talk to me as if I am not a programmer...because I am not.

In short, if the reason I am not getting satisfaction from tes3lint is that I not using it properly could you give a more detailed explanation of the set up and command lines for its use. At the moment, http://code.google.com/p/mlox/wiki/Tes3lint#Installing_and_Running_tes3lint has been my guide.


OK, after reading the other of abot's posts that I quoted it appears that I did type the command line incorrectly. I used the -a flag after the plug-in name rather than following tes3lint.bat directly. I also wrapped the path to the plug-in in quotes and now at least I do not get the error when I run tes3lint. However, now the reports on the two plug-ins I previously checked return nothing (no text, not even CLEAN). Clearly I need help.
User avatar
lydia nekongo
 
Posts: 3403
Joined: Wed Jul 19, 2006 1:04 pm

Post » Fri May 13, 2011 11:33 am

Edit: I've fixed the problem with finding code after the "End" of the script. I had made a mistake in the regular expression I used for chopping off the end of the script. If you'd like to try the new version it is tes3lint-0.53:
http://code.google.com/p/mlox/downloads/list

Apologies for the trouble, one of the reasons that tes3lint is maybe not so easy to use is that I am pretty ignorant of Windows. I literally have only started using it for the first time last month since the days of Win 95/98 (when I only used it for games). I'll try to make it easier to use based on feedback, of course.

To that end, it would help if you could give an example of the complete command line you used that did not work. Or maybe suggest a specific plugin that I should test to see if tes3lint fails on it for some reason.

As for the menumode flag, it is supposed to tell you scripts that do not use menumode. What that information actually means, is up to the person running the test. As you say, not all scripts need to check menumode, so the whether it's a good thing or a bad thing that menumode is not being checked is a matter of interpretation. A number of the flags that tes3lint reports are like that.

There are a couple of batch files to run tes3lint that get put in the tes3lint directory. The one you were using does not print out all the flags, which is why you appeared to be missing some of the things you were looking for. If you use tes3lintfull.bat, it will do the tests for all flags:

Here's an example of running tes3lintfull (print out all flags) on LGNPC_Pelagiad_v1_13.esp (I ran this on Windows XP):
I was in my morrowind\tes3lint directory and typed this command line:
(note that with the new version of tes3lint 0.53, it only reports the one script lgnpc_pela_enceamulet_sc_01 as having a dependency on tribunal functions.)
tes3lintfull "..\Data Files\LGNPC_Pelagiad_v1_13.esp"
..\Data Files\LGNPC_Pelagiad_v1_13.esp: DUP-REC EXP-DEP MENUMOD MOD-INF OVR-REC    [EXP-DEP] Expansion Dependency: Tribunal Functions:	SCPT(lgnpc_meb_shirtscript_02)       hasitemequipped	SCPT(lgnpc_pela_enceamulet_sc_01)    hasitemequipped	SCPT(max_lgnpc_pela_bragor_sc_01)    hasitemequipped    [MENUMOD] Scripts not checking menumode:	SCPT(LGNPC_pelagiad_counter_sc_01)	SCPT(LGNPC_pelagiad_counter_sc_02)	SCPT(lgnpc_Pub_Pelagiad_Halfway)	SCPT(lgnpc_meb_shirtscript_01)	SCPT(lgnpc_mebestian_sc_01)	SCPT(lgnpc_pela_ShirtSwitch)	SCPT(lgnpc_pela_enceamulet_sc_01)	SCPT(lgnpc_pela_enceamulet_sc_02)	SCPT(lgnpc_pela_flyer_sc_01)	SCPT(lgnpc_pela_murbdoor_sc_01)	SCPT(max_lgnpc_adanja_sc_01)	SCPT(max_lgnpc_disableonce_sc)	SCPT(max_lgnpc_farusea_sc_01)	SCPT(max_lgnpc_jernelle_blood_sc)	SCPT(max_lgnpc_meb_couponcont_sc)	SCPT(max_lgnpc_meb_payday_sc_01)	SCPT(max_lgnpc_meb_payday_sc_02)	SCPT(max_lgnpc_meb_payday_sc_03)	SCPT(max_lgnpc_meb_payday_sc_04)	SCPT(max_lgnpc_meb_payday_sc_05)	SCPT(max_lgnpc_meb_payday_sc_06)	SCPT(max_lgnpc_meb_payday_sc_10)	SCPT(max_lgnpc_meb_payday_sc_20)	SCPT(max_lgnpc_meb_payday_sc_21)	SCPT(max_lgnpc_meb_raoulG_sc)	SCPT(max_lgnpc_meb_rat_sc_01)	SCPT(max_lgnpc_meb_rat_sc_02)	SCPT(max_lgnpc_monty_sc_01)	SCPT(max_lgnpc_murb_ring_sc_01)	SCPT(max_lgnpc_murberius_sc_01)	SCPT(max_lgnpc_nelos_bag_sc_01)	SCPT(max_lgnpc_pela_guarddis_01)	SCPT(max_lgnpc_pela_guarddis_02)	SCPT(max_lgnpc_pela_job_sc_01)	SCPT(max_lgnpc_pela_shoestrans)	SCPT(max_lgnpc_raoulreceipt_sc)	SCPT(max_lgnpc_shadbak_sc_01)	SCPT(max_lgnpc_tonii_sc_01)	SCPT(max_lgnpc_yakumnote_sc)	SCPT(max_lgnpc_ygfa_sc_01)    [OVR-REC] Overridden Records:	From Master         Type    Name	bloodmoon.esm       DIAL    blades	bloodmoon.esm       DIAL    greeting 4	bloodmoon.esm       DIAL    imperial law	bloodmoon.esm       DIAL    service refusal	morrowind.esm       CONT    chest_small_01_tgbb	morrowind.esm       DIAL    ahnassi	morrowind.esm       DIAL    ald'ruhn	morrowind.esm       DIAL    altmer	morrowind.esm       DIAL    argonian	morrowind.esm       DIAL    ash yam	morrowind.esm       DIAL    ashlanders	morrowind.esm       DIAL    bad people	morrowind.esm       DIAL    balmora	morrowind.esm       DIAL    beluelle's silver bowl	morrowind.esm       DIAL    bosmer	morrowind.esm       DIAL    breton	morrowind.esm       DIAL    cave rat	morrowind.esm       DIAL    clothes	morrowind.esm       DIAL    cyrodiilic brandy	morrowind.esm       DIAL    daedra	morrowind.esm       DIAL    dagoth ur	morrowind.esm       DIAL    dunmer	morrowind.esm       DIAL    dwemer	morrowind.esm       DIAL    enchantments	morrowind.esm       DIAL    flin	morrowind.esm       DIAL    foyada	morrowind.esm       DIAL    frost salts	morrowind.esm       DIAL    ghostfence	morrowind.esm       DIAL    great houses	morrowind.esm       DIAL    greef	morrowind.esm       DIAL    greeting 2	morrowind.esm       DIAL    guild guide	morrowind.esm       DIAL    help me	morrowind.esm       DIAL    high rock	morrowind.esm       DIAL    house hlaalu	morrowind.esm       DIAL    house telvanni	morrowind.esm       DIAL    hrordis	morrowind.esm       DIAL    imperial	morrowind.esm       DIAL    imperial cult	morrowind.esm       DIAL    imperial legion	morrowind.esm       DIAL    khajiit	morrowind.esm       DIAL    kiss	morrowind.esm       DIAL    llovyn andus	morrowind.esm       DIAL    manat varnan-adda	morrowind.esm       DIAL    maurrie and nelos	morrowind.esm       DIAL    mazte	morrowind.esm       DIAL    moon sugar	morrowind.esm       DIAL    n'wah must die	morrowind.esm       DIAL    nelos onmar	morrowind.esm       DIAL    nels llendo	morrowind.esm       DIAL    news	morrowind.esm       DIAL    nord	morrowind.esm       DIAL    orc	morrowind.esm       DIAL    pelagiad	morrowind.esm       DIAL    price on your head	morrowind.esm       DIAL    red mountain	morrowind.esm       DIAL    redguard	morrowind.esm       DIAL    shein	morrowind.esm       DIAL    silt strider	morrowind.esm       DIAL    sixth house	morrowind.esm       DIAL    skooma	morrowind.esm       DIAL    slave	morrowind.esm       DIAL    sugar-lips habasi	morrowind.esm       DIAL    sujamma	morrowind.esm       DIAL    telvanni bug musk	morrowind.esm       DIAL    temple	morrowind.esm       DIAL    thieves guild	morrowind.esm       DIAL    valenwood	morrowind.esm       DIAL    verethi gang	morrowind.esm       DIAL    vivec	morrowind.esm       NPC_    adanja	morrowind.esm       NPC_    dralas gilu	morrowind.esm       NPC_    farusea salas	morrowind.esm       NPC_    junal_lei	morrowind.esm       NPC_    mash gro-burol	morrowind.esm       NPC_    mebestian ence	morrowind.esm       NPC_    murberius harmevus	morrowind.esm       NPC_    new_shoes bragor	morrowind.esm       NPC_    shadbak gra-burbug	morrowind.esm       NPC_    yakum hairshashishi	morrowind.esm       NPC_    ygfa	tribunal.esm        DIAL    background	tribunal.esm        DIAL    beds	tribunal.esm        DIAL    camonna tong	tribunal.esm        DIAL    greeting 1	tribunal.esm        DIAL    greeting 5	tribunal.esm        DIAL    greeting 7	tribunal.esm        DIAL    guard	tribunal.esm        DIAL    latest rumors	tribunal.esm        DIAL    little advice	tribunal.esm        DIAL    little secret	tribunal.esm        DIAL    morrowind lore	tribunal.esm        DIAL    my trade	tribunal.esm        DIAL    nerevarine	tribunal.esm        DIAL    services	tribunal.esm        DIAL    someone in particular	tribunal.esm        DIAL    specific place[MOD-INF]: ID=1926254563774775(Topic:dagoth ur)  morrowind.esm------------>|DATA|ONAM:Dralas Gilu|NAME:It is the Hour of  Wakening. He comes forth in his glory, and his people shall rejoice, and his  enemies shall scatter like  dust.|SCVR:04JX3A2_2_6thHouse|INTV:2|SCVR:16DX0dagoth  fovon|INTV:|BNAM:;Sleepers; Journal A2_2_6thHouse >= 50; Dagoth Fovon not  dead  LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:It is the Hour of  Wakening. He comes forth in his glory, and his people shall rejoice, and his  enemies shall scatter like  dust.|SCVR:04JX3A2_2_6thHouse|INTV:2|SCVR:16DX0dagoth  fovon|INTV:|SCVR:51680|INTV:d|BNAM:;Sleepers; Journal A2_2_6thHouse >= 50;  Dagoth Fovon not dead ; LGNPC Pelagiad ; re-filtered not to appear[MOD-INF]: ID=27080241158521748(Topic:services)  morrowind.esm------------>|DATA|ONAM:ygfa|NAME:You can find Imperial cult  services in Fort Buckmoth, Fort Moonmoth, Fort Pelagiad, Fort Darius,  Wolverine Hall in Sadrith Mora, Vivec Foreign Quarter, and Imperial chapels  in Ebonheart. Seek training at Wolverine Hall, Fort Buckmoth, Fort Moonmoth,  Ebonheart Imperial Chapels, Governor's Hall in Caldera, and Ald Velothi  Outpost. Many Imperial cult locations have healing altars.  LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:ygfa|NAME:You can find Imperial cult  services in Fort Buckmoth, Fort Moonmoth, Fort Pelagiad, Fort Darius,  Wolverine Hall in Sadrith Mora, Vivec Foreign Quarter, and Imperial chapels  in Ebonheart. Seek training at Wolverine Hall, Fort Buckmoth, Fort Moonmoth,  Ebonheart Imperial Chapels, Governor's Hall in Caldera, and Ald Velothi  Outpost. Many Imperial cult locations have healing  altars.|SCVR:32sX4Random100|INTV:2|BNAM:; re-filtered for LGNPC Pelagiad[MOD-INF]: ID=91127355340130582(Greeting:greeting 1)  tribunal.esm------------->|DATA|ONAM:Dralas Gilu|NAME:I feel as though I've  just awakened from a dream... a terrible dream of the Sixth  House.|SCVR:04JX3C3_DestroyDagoth|INTV:2  LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:I feel as though I've  just awakened from a dream... a terrible dream of the Sixth  House.|SCVR:04JX3C3_DestroyDagoth|INTV:2|SCVR:51680|INTV:d|BNAM:; LGNPC  Pelagiad ; intentionally disabled[MOD-INF]: ID=106822524524143702(Topic:sixth house)  morrowind.esm------------>|DATA|ONAM:Dralas Gilu|NAME:Do you mean... have I  been... under a spell? A curse? And this was caused by Sixth House cultists?  Good grief. What have I done... I hope... but I haven't thanked you. Please  forgive me. I have nothing to offer but my thanks. But I will tell everyone  I know how you have saved my  life.|SCVR:04JX3C3_DestroyDagoth|INTV:2|BNAM:;Sleepers; Dagoth Fovon dead  player->ModReputation 1 Journal A1_Sleepers_Dralas 1  LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:Do you mean... have I  been... under a spell? A curse? And this was caused by Sixth House cultists?  Good grief. What have I done... I hope... but I haven't thanked you. Please  forgive me. I have nothing to offer but my thanks. But I will tell everyone  I know how you have saved my  life.|SCVR:04JX3C3_DestroyDagoth|INTV:2|SCVR:51680|INTV:d|BNAM:;Sleepers;  Dagoth Fovon dead ; LGNPC Pelagiad ; intentionally disabled  player->ModReputation 1 Journal A1_Sleepers_Dralas 1[MOD-INF]: ID=759714111504811569(Topic:dagoth ur)  morrowind.esm------------>|DATA|ONAM:Dralas Gilu|NAME:He is the Lord, and  Father of the Mountain. He sleeps, but when he wakes, we shall rise from our  dreams, shall sweep our land clean of the n'wah. Why have you denied him? As  Lord Dagoth has said. 'All shall greet him as flesh, or as  dust.'|SCVR:04JX3A1_2_AntabolisInformant|INTV: |SCVR:16DX0dagoth  fovon|INTV:|BNAM:;Sleepers; A1_2_AntabolisInformant >= 10;; Dagoth Fovon not  dead  LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:He is the Lord, and  Father of the Mountain. He sleeps, but when he wakes, we shall rise from our  dreams, shall sweep our land clean of the n'wah. Why have you denied him? As  Lord Dagoth has said, 'All shall greet him as flesh, or as dust.  '|SCVR:04JX3A1_2_AntabolisInformant|INTV: |SCVR:16DX0dagoth  fovon|INTV:|SCVR:51680|INTV:d|BNAM:;Sleepers; A1_2_AntabolisInformant >=  10;; Dagoth Fovon not dead ; LGNPC Pelagiad ; modification of official entry[MOD-INF]: ID=766510841054417088(Topic:sixth house)  morrowind.esm------------>|DATA|ONAM:Dralas Gilu|NAME:Thank you again. I  will tell everyone I know how you have saved my  life.|SCVR:04JX3C3_DestroyDagoth|INTV:2|SCVR:24JX3A1_Sleepers_Dralas|INTV|BNAM:;Sleepers;  Dagoth Fovon dead  LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:Thank you again. I  will tell everyone I know how you have saved my  life.|SCVR:04JX3C3_DestroyDagoth|INTV:2|SCVR:24JX3A1_Sleepers_Dralas|INTV|SCVR:51680|INTV:d|BNAM:;Sleepers;  Dagoth Fovon dead ; LGNPC Pelagiad ; intentionally disabled[MOD-INF]: ID=1703220502371112246(Topic:dagoth ur)  morrowind.esm------------>|DATA|ONAM:Dralas Gilu|NAME:The Devil Dagoth Ur is  dead, and all his kin. And the Blight has gone, too, and the skies are blue  over Red Mountain.|SCVR:04JX3C3_DestroyDagoth|INTV:2  LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:The Devil Dagoth Ur is  dead, and all his kin. It only proves that no one can avoid  death.|SCVR:04JX3C3_DestroyDagoth|INTV:2|BNAM:; LGNPC Pelagiad ; slight  modification of official entry[MOD-INF]: ID=1708521252295971279(Topic:sixth house)  morrowind.esm------------>|DATA|ONAM:Dralas Gilu|NAME:Thank you again. I  will tell everyone I know how you have saved my  life.|SCVR:04JX3A1_2_AntabolisInformant|INTV: |SCVR:16DX0dagoth  fovon|INTV|SCVR:24JX3A1_Sleepers_Dralas|INTV|BNAM:;Sleepers; Dagoth Fovon  dead   LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:Thank you again. I  will tell everyone I know how you have saved my  life.|SCVR:04JX3A1_2_AntabolisInformant|INTV: |SCVR:16DX0dagoth  fovon|INTV|SCVR:24JX3A1_Sleepers_Dralas|INTV|SCVR:51680|INTV:d|BNAM:;Sleepers;  Dagoth Fovon dead    ; LGNPC Pelagiad  ; intentionally disabled [MOD-INF]: ID=2171077941547022148(Topic:n'wah must die)  morrowind.esm------------>|DATA|ONAM:Dralas Gilu|NAME:You, foreigner! You  must die. Beasts and men, outlander mer, all must die. Flee his wrath and  quit this land, if you would live, or your flesh shall feed the  earth.|SCVR:04JX3A2_3_CorprusCure|INTV:2|SCVR:11450|INTV:|SCVR:26DX0dagoth  fovon|INTV:|BNAM:;sleeper; Journal A2_3_CorprusCure >= 50; not dunmer;  Dagoth Fovon not dead  ModFight 10  ModDisposition -10   LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:You, foreigner! You  must die. Beasts and men, outlander mer, all must die. Flee his wrath and  quit this land, if you would live, or your flesh shall feed the  earth.|SCVR:04JX3A2_3_CorprusCure|INTV:2|SCVR:11450|INTV:|SCVR:26DX0dagoth  fovon|INTV:|SCVR:51680|INTV:d|BNAM:;sleeper; Journal A2_3_CorprusCure >= 50;  not dunmer; Dagoth Fovon not dead  ModFight 10  ModDisposition -10    ;  LGNPC Pelagiad  ; intentionally disabled [MOD-INF]: ID=2228820944513115945(Topic:sixth house)  morrowind.esm------------>|DATA|ONAM:Dralas Gilu|NAME:The Sixth House, the  Sleeping House, House Dagoth, the House of Lord Dagoth. The true house, the  one house to welcome all true Dunmer, and drive the n'wah from our land.  Take heed, outlander. The day of reckoning is at hand. Take what you can,  and leave our place, for when Lord Dagoth comes, this will be no place for  you.|SCVR:04JX3A1_2_AntabolisInformant|INTV:  |SCVR:11450|INTV:|BNAM:;Sleepers; A1_2_AntabolisInformant >= 10  ModFight 10  ModDisposition -10   LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:The Sixth House, the  Sleeping House, House Dagoth, the House of Lord Dagoth. The true house, the  one house to welcome all true Dunmer, and drive the n'wah from our land.  Take heed, outlander. The day of reckoning is at hand. Take what you can,  and leave our place, for when Lord Dagoth comes, this will be no place for  you.|SCVR:04JX3A1_2_AntabolisInformant|INTV:  |SCVR:11450|INTV:|SCVR:21590|INTV:{|BNAM:;Sleepers; A1_2_AntabolisInformant  >= 10  ModFight 10  ModDisposition -10  ;Topic impossible to reach - done to  prevent the sleeper story as a whole, and avoid straightforward deleting.  LGNPC. [MOD-INF]: ID=2238124702247159062(Greeting:greeting 1)  tribunal.esm------------->|DATA|ONAM:Dralas Gilu|NAME:I feel as though I've  just awakened from a dream... a terrible dream of the Sixth  House.|SCVR:04JX3A1_2_AntabolisInformant|INTV: |SCVR:16DX0dagoth fovon|INTV   LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:I feel as though I've  just awakened from a dream... a terrible dream of the Sixth  House.|SCVR:04JX3A1_2_AntabolisInformant|INTV: |SCVR:16DX0dagoth  fovon|INTV|SCVR:51680|INTV:d|BNAM:; LGNPC Pelagiad  ; intentionally disabled [MOD-INF]: ID=2474714781646417790(Topic:sixth house)  morrowind.esm------------>|DATA|ONAM:Dralas Gilu|NAME:Do you mean... have I  been... under a spell? A curse? And this was caused by Sixth House cultists?  Good grief. What have I done... I hope... but I haven't thanked you. Please  forgive me. I have nothing to offer but my thanks. But I will tell everyone  I know how you have saved my life.|SCVR:04JX3A1_2_AntabolisInformant|INTV:  |SCVR:16DX0dagoth fovon|INTV|BNAM:;Sleepers; Dagoth Fovon dead  player->ModReputation 1  Journal A1_Sleepers_Dralas 1   LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:Do you mean... have I  been... under a spell? A curse? And this was caused by Sixth House cultists?  Good grief. What have I done... I hope... but I haven't thanked you. Please  forgive me. I have nothing to offer but my thanks. But I will tell everyone  I know how you have saved my life.|SCVR:04JX3A1_2_AntabolisInformant|INTV:  |SCVR:16DX0dagoth fovon|INTV|SCVR:51680|INTV:d|BNAM:;Sleepers; Dagoth Fovon  dead    ; LGNPC Pelagiad  ; intentionally disabled    player->ModReputation  1  Journal A1_Sleepers_Dralas 1 [MOD-INF]: ID=2590612561104779013(Topic:services)  morrowind.esm------------>|DATA|ONAM:ladia flarugrius|NAME:Mebestien Ence,  the Breton, he's a trader, deals in a bit of everything. Uulernil is a High  Elf, and fair armorer. Fort Pelagiad has Imperial Legion services. Some  folks offer training, but you have to know the right people. And who are the  right people? If you don't know, I can't tell you. And they say the Thieves  Guild has some people in Pelagiad. But why would I know anything about  that?|BNAM:; Ladia Flarugrius   LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:ladia flarugrius|NAME:Mebestien Ence,  the Breton, he's a trader, deals in a bit of everything. Uulernil is a High  Elf, and fair armorer. Fort Pelagiad has Imperial Legion services. Some  folks offer training, but you have to know the right people. And who are the  right people? If you don't know, I can't tell you. And they say the Thieves  Guild has some people in Pelagiad. But why would I know anything about  that?|SCVR:32sX4Random100|INTV:2|BNAM:; re-filtered for LGNPC Pelagiad  ;  Ladia Flarugrius [MOD-INF]: ID=10767131922673432549(Topic:n'wah must die)  morrowind.esm------------>|DATA|ONAM:Dralas Gilu|NAME:The slave and  foreigner, beast and man, all must die. All mer must accept our dominion, or  flee our  wrath.|SCVR:04JX3A2_3_CorprusCure|INTV:2|SCVR:11450|INTV|SCVR:26DX0dagoth  fovon|INTV:|BNAM:;sleeper; Journal A2_3_CorprusCure >= 50 ;dunmer; Dagoth  Fovon not dead   LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:The slave and  foreigner, beast and man, all must die. All mer must accept our dominion, or  flee our  wrath.|SCVR:04JX3A2_3_CorprusCure|INTV:2|SCVR:11450|INTV|SCVR:26DX0dagoth  fovon|INTV:|SCVR:51680|INTV:d|BNAM:;sleeper; Journal A2_3_CorprusCure >= 50  ;dunmer; Dagoth Fovon not dead    ; LGNPC Pelagiad  ; intentionally disabled [MOD-INF]: ID=27838159622142612029(Topic:sixth house)  morrowind.esm------------>|DATA|ONAM:Dralas Gilu|NAME:The Sixth House, the  Sleeping House, House Dagoth, the House of Lord Dagoth. The true house, the  one house to welcome all true Dunmer, and drive the n'wah from our land.  Rejoice, and join us. Come to Red Mountain, and prepare the way for his  coming.|SCVR:04JX3A1_2_AntabolisInformant|INTV:  |SCVR:11450|INTV|BNAM:;Sleepers; A1_2_AntabolisInformant >= 10   LGNPC_Pelagiad_v1_13.esp->|DATA|ONAM:Dralas Gilu|NAME:The Sixth House, the  Sleeping House, House Dagoth, the House of Lord Dagoth. The true house, the  one house to welcome all true Dunmer, and drive the n'wah from our land.  Rejoice, and join us. Come to Red Mountain, and prepare the way for his  coming.|SCVR:04JX3A1_2_AntabolisInformant|INTV:  |SCVR:11450|INTV|SCVR:51680|INTV:d|BNAM:;Sleepers; A1_2_AntabolisInformant  >= 10    ; LGNPC Pelagiad  ; intentionally disabled 

User avatar
josh evans
 
Posts: 3471
Joined: Mon Jun 04, 2007 1:37 am

Post » Fri May 13, 2011 7:55 pm

cyran0: Using tes3lint on Windows has been a bit counter-intuitive for me too (PERL didn't give me a choice where to install it, and I had directory issues as well, although I unfortunately don't recall the details, I simply tinkered around until it worked).

It seems that mainly dirty entries copied from the original esms aren't found in your example, so perhaps tes3lint doesn't find the original esms to use them as a basis to check against? Just speculating.

Regarding the "menumode" check: I don't think anyone claimed that all scripts *nned* a menumode check, you gave several valid examples of conditions under which they would be unnecessary, counter-productive, or impossible. However there are also (probably) many older mods which don't use such checks although they could and should. So if a script gets flagged as "not checking menumode", then this doesn't mean "This script is broken and needs to be fixed", but merely "Here's a *potential* source of trouble or inefficiency, it might be worth having a look at it." I guess this will be made clear in the program's documentation.

Regarding the "code behind the "End" command" issue: Imagine you're editing a huge script, and paste parts of it behind the "End" command because you replaced them with your own code. Now imagine that someone else wants to understand the script, perhaps he wants to improve it, fix a bug, make it compatible with something else, or simply learn from it. This person now makes a text search for certain variables that interests him. This search will turn up the code you pasted away as well, and the user will have no imediate indication that this code won't ever be run. To understand that, he must see the "End" command above, which may or may not be easily visible, depending on the length and structure of the script.

It is therefore preferable to comment out any code that isn't actually ever running, because this makes it immediately clear, for anyone looking at the script, without knowledge of the context, that these commands won't be executed. So this practice reduces the chances to misunderstand the scripts in question. It also opens up the possibility of leaving the "removed" code in the place where it was supposed to be, which (depending on the circumstances) might also help in understanding the script and the different approaches that were taken in writing it.
User avatar
Nathan Barker
 
Posts: 3554
Joined: Sun Jun 10, 2007 5:55 am

Post » Fri May 13, 2011 6:14 am

-clip-
It is therefore preferable to comment out any code that isn't actually ever running, because this makes it immediately clear, for anyone looking at the script, without knowledge of the context, that these commands won't be executed. So this practice reduces the chances to misunderstand the scripts in question. It also opens up the possibility of leaving the "removed" code in the place where it was supposed to be, which (depending on the circumstances) might also help in understanding the script and the different approaches that were taken in writing it.

Agreed. Commenting out code that's been modified and leaving it in it's original position within the script is less confusing and more efficient imo.

Moving code below the End statement while developing a script is perfectly fine, however best practice would be to completely remove any code below the End before making a public release. Why introduce a chance of potential problems for the user or unnecessarily inflate the size of the script (if the code isn't commented out then it's going to get compiled along with the Begin/End blocked code - correct me if I'm wrong)?

I think we are all capable of making a release plugin version from a copy of the dev version and work from the dev version if modifications need to be revised/reversed. ;)
User avatar
Nymph
 
Posts: 3487
Joined: Thu Sep 21, 2006 1:17 pm

Post » Fri May 13, 2011 9:34 am

(if the code isn't commented out then it's going to get compiled along with the Begin/End blocked code - correct me if I'm wrong)?

I believe, from looking at the strings in the compiled code section, that the code after the "End" is not compiled. So it actually is an efficient way to remove portions of the code from the script without actually deleting it.
User avatar
Jhenna lee Lizama
 
Posts: 3344
Joined: Wed Jun 06, 2007 5:39 am

Post » Fri May 13, 2011 10:40 am

Regarding the "menumode" check: I don't think anyone claimed that all scripts *nned* a menumode check, you gave several valid examples of conditions under which they would be unnecessary, counter-productive, or impossible. However there are also (probably) many older mods which don't use such checks although they could and should. So if a script gets flagged as "not checking menumode", then this doesn't mean "This script is broken and needs to be fixed", but merely "Here's a *potential* source of trouble or inefficiency, it might be worth having a look at it." I guess this will be made clear in the program's documentation.

To play the devils advocate, none has shown me that we need a menu mode check. Sure, I understand that in theory it sounds a good idea, but assumptions should not be made?


I have also found scripts like this (excuse the invlaid code), which the menumode check is most likely going to do more harm that good. But then again, removing it would have absolutely no effect on the users FPS.

begin foobar	 if ( menuMode )		 reteurn	 endif	 if ( getScale == 1 )		 setScale 5	 endifend

Sure, if you wanted, I could possibly write every script as very tight script, that used the minimum number of variables, never ran in memumode. But I doubt I would get any noticeable difference in most cases. 80 20 rule and all that.
The biggest optimization I have found, in most cases, is to restructure the scripts, drastically change how things work.

In other words, where are the benchmarks? How do you know that the script having to calculate the block not in menumode doesn't have more of an effect than the possibly less processing the game engine itself does when in memumode? Personally I notice the a lack of FPS when I am running about more than when I am moving my cursor around the screen.

This quote fits the post I think.
"More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason - including blind stupidity."
- W.A. Wulf

EDIT
@john.moonsugar
Sorry for highjacking the thread. I would be very instrested to know if anyone has any answers to my questions.
User avatar
ONLY ME!!!!
 
Posts: 3479
Joined: Tue Aug 28, 2007 12:16 pm

Post » Fri May 13, 2011 3:15 pm

EDIT
@john.moonsugar
Sorry for highjacking the thread. I would be very instrested to know if anyone has any answers to my questions.

No worries! I find it an interesting topic. I don't mind going off on tangents. I do it all the time.

Personally I notice the a lack of FPS when I am running about more than when I am moving my cursor around the screen.

I have seen people mention how the cursor can slow down very noticeably during menumode due to scripts, but I don't know if there is any real evidence behind the claim.
User avatar
Scott Clemmons
 
Posts: 3333
Joined: Sun Sep 16, 2007 5:35 pm

Post » Fri May 13, 2011 8:42 pm

@John: Thank you for the update. I was just dabbling with your program when I ran tes3lint.bat. I planned to explore tes3lintfull.bat but I wanted to start simple. Then after my difficulties I just wanted to start... period. I quickly forgot about the other batch files and that here might be differences in the output that they would generate.

For the record, I am running Windows 2000. My system and most program files (including Perl now) are in the primary partition (C:\), but all my data and games are run from the secondary partition (D:\) including Morrowind. Tes3lint.bat is located in D:\Bethesda Softworks\Morrowind\tes3lint\. Originally I tried to anolyze plug-ins in the D:\Bethesda Softworks\Morrowind\Data Files\ directory, but perhaps because I had not placed the path in quotes it didn't properly parse the space between 'Bethesda' and 'Softworks'. So I copied a couple plug-ins to the \tes3lint directory and at it would find the file I specified.

In those instances, I used the command line:

C:\>cd d:\bethesda softworks\morrowind\tes3lint\C:\>d:D:\Bethesda Softworks\Morrowind\tes3lint\>tes3lint.bat lgnpc_indarys_manor_v1_45.esp -algnpc_indarys_manor_v1_45.esp: DUP-REC	[DUP-REC] Duplicate Records:	From Master		 Type	Name	morrowind.esm	   NPC_	aryni orethi	morrowind.esm	   NPC_	fathusa girethi"(Output saved in tes3lint.log)"Press any key to continue . . .

Before that I used:

D:\Bethesda Softworks\Morrowind\tes3lint\>tes3lint.bat ..\data files\lgnpc_indarys_manor_v1_45.esp -aError opening ..\data for input (No such file or directory)"(Output saved in tes3lint.log)"Press any key to continue . . .

I seem to recall from the Golden Age of DOS that '..\' refers to the parent of the current directory, but it did not appear to work.

And later:

D:\Bethesda Softworks\Morrowind\tes3lint\>tes3lint.bat -a "lgnpc_indarys_manor_v1_45.esp""(Output saved in tes3lint.log)"Press any key to continue . . .

tes3lint.log was blank

D:\Bethesda Softworks\Morrowind\tes3lint\>tes3lint.bat -a "..\data files\lgnpc_indarys_manor_v1_45.esp""(Output saved in tes3lint.log)"Press any key to continue . . .

tes3lint.log was blank

It seems that the ?a flag has been interfering with my success. Even...

D:\Bethesda Softworks\Morrowind\tes3lint\>tes3lint.bat -a "lgnpc_indarys_manor_v1_45.esp""(Output saved in tes3lint.log)"Press any key to continue . . .

tes3lint.log was blank

But if I try again with...

D:\Bethesda Softworks\Morrowind\tes3lint\>tes3lint.bat "..\data files\lgnpc_indarys_manor_v1_45.esp"lgnpc_indarys_manor_v1_45.esp: DUP-REC	[DUP-REC] Duplicate Records:	From Master		 Type	Name	morrowind.esm	   NPC_	aryni orethi	morrowind.esm	   NPC_	fathusa girethi"(Output saved in tes3lint.log)"Press any key to continue . . .

And...

D:\Bethesda Softworks\Morrowind\tes3lint\>tes3lintfull.bat "..\data files\lgnpc_indarys_manor_v1_45.esp"..\data files\lgnpc_indarys_manor_v1_45.esp: DUP-INF DUP-REC MENUMOD MOD-INF NUMRECS OVR-REC	[NUMRECS]: number of records in TES3.HEDR (1693) != Actual count (1621)	[MENUMOD] Scripts not checking menumode:	etc."(Output saved in tes3lint.log)"Press any key to continue . . .

At last success. Running...

D:\Bethesda Softworks\Morrowind\tes3lint\>tes3lintfull.bat "..\data files\lgnpc_pelagiad_v1_13.esp"

Generates a log resembling the one you posted.

So it appears that I have things working rather well thanks to your clarification. I hope that my experiences will make it easier for others to benefit from this fine utility. I know that it will cut many hours from the work I have yet to do on several LGNPC mods.

@Psyringe: Thank you for the explanation. So it is not that End could be unreliable (only earlier versions of tes3lint to detect it), but it could generate confusion for someone else studying the code. I agree that commenting-out a few lines of code is a better solution, but when I am replacing a large block of code it is more difficult for me to see the new structure of the script unless I cut out the original code. As for the use of menumode, while it was not declared essential to good script design there were some that seemed almost incredulous that some modders would omit it in a script.

@Yakoby: You view is always welcome. I am not certain that I can answer your questions, but I do agree too much faith is placed in menumode. It has value where there are many conditionals downstream of it, some of which may be running fairly intensive functions. For timers to work properly it is essential that they not run with the menu open. Perhaps when Morrowind was first released and it was run on platforms that could barely handle it streamlining our code was rather important. However a system that is capable of running Oblivion tolerably well should handle just about anything under Morrowind.

I do not have any benchmarks to offer only the usual (and usually unreliable) anecdotal evidence. Once when I was trying to get a bead on the 'cost' of the long travel scripts in Traveling Merchants, I compare FPS with the menu open and closed (the scripts checked for menumode). To my surprise I found that the game appeared to run slower when the menu was open, but I assumed it was due to other (uncontrolled and unidentified) variables. Lately I have been working on an ingredient sorter that runs over a hundred scripts (over forty thousand lines of code) simultaneously. I have included a menumode check where I could, but some of the code needs to process with menus open. During testing I have not experienced any noticeable lag when the inventory is open.

Edit: misleading typo in one of the command lines (is there any way to cut and paste in the command window?)
User avatar
Dominic Vaughan
 
Posts: 3531
Joined: Mon May 14, 2007 1:47 pm

Post » Fri May 13, 2011 4:06 pm

Well, I don't have benchmarks about script processing. I haven't ever seen the menumode check being criticized or questioned though. My basis are recommendations like the one MWSFD (which you're probably familiar with ;) ):

"It is common practice to put the following lines at the beginning of almost any script, to prevent unnecessary or problematic functions being processed in MenuMode."

It also seems very plausible to me that a menumode check uses very little time, so that it should be able to save time in most situations - and contrary to you, I do experience lag in menu mode.

I agree with you that drastical restructuring of the (say) upper 10% of the resource hog scripts would probably have a much bigger effect than going through every small script and giving it a menumode check. However, finding possibilities for such optimizations is beyond the scope of this utility, while checking for menumode is. And I also think that with several hundreds of scripts running (which is well possible in a gighly modded game), even small ineficiencies can pile up to a noticeable lag, so that adding menumode checks where appropriate would indeed be an improvement. At the very least it wouldn't do any harm.

However, I realize that I *am* working on the basis of assumptions and plausibility here, I do not have any hard data, which is definitaly unsatisfactory if a devil's advocate comes along and questions said assumptions. ;)
User avatar
Gisela Amaya
 
Posts: 3424
Joined: Tue Oct 23, 2007 4:29 pm

Post » Fri May 13, 2011 3:31 pm


Edit: misleading typo in one of the command lines (is there any way to cut and paste in the command window?)
Right click command window's title bar Edit > Mark

Cursor changes, select text to Copy, hit Enter and then Paste wherever you want.

Also, appending >output.txt will create a text document in the working directory with the MS-DOS command's output in.
User avatar
SWagg KId
 
Posts: 3488
Joined: Sat Nov 17, 2007 8:26 am

Post » Fri May 13, 2011 7:59 am

but perhaps because I had not placed the path in quotes it didn't properly parse the space between 'Bethesda' and 'Softworks'.

Yes, but more important is the space between "Data" and "Files", because you can install tes3lint in Morrowind directly or in a subdirectory (using ..\ to go back). Including the full path within quotes is thus necessary.

Unless you do like me and place tes3lint in Data Files directly...

Note: another possibility to deal with the hassles of command lines and Swiss-cheese-like paths is to right-click on an esp or esm file to anolyze and select "Open with..."; then browse to find the batch file of your choice (tes3lint.bat, tes3lintfull.bat, your own variant of it...) and choose to always open these files with it. It'll create a permanent association. (If it make the files lose their Swiss Army knife icons, you can repeat that procedure to always open them with the CS. The CS cannot actually open them with "Open with" anyway as it has its own very specific way of opening files, but it'll restore the icon.) Do this for both esp and esm. From then on, you can always right-click on a esp or esm file and choose Open with -> tes3lint.bat. No command line involved!
User avatar
Laura-Jayne Lee
 
Posts: 3474
Joined: Sun Jul 02, 2006 4:35 pm

Post » Fri May 13, 2011 7:35 am

Well, I don't have benchmarks about script processing. I haven't ever seen the menumode check being criticized or questioned though. My basis are recommendations like the one MWSFD (which you're probably familiar with ;) ):

"It is common practice to put the following lines at the beginning of almost any script, to prevent unnecessary or problematic functions being processed in MenuMode."

This sounds like people did it at first, because the devs did it, and then it became common, and then it was what you did. I am fairly sure that it is a good idea... However in some cases IMHO it is overused, simply because people put it in without understanding why.

It also seems very plausible to me that a menumode check uses very little time, so that it should be able to save time in most situations - and contrary to you, I do experience lag in menu mode.

Mod related I assume?

I agree with you that drastical restructuring of the (say) upper 10% of the resource hog scripts would probably have a much bigger effect than going through every small script and giving it a menumode check. However, finding possibilities for such optimizations is beyond the scope of this utility

Not to mention exceedingly hard.

And I also think that with several hundreds of scripts running (which is well possible in a gighly modded game), even small ineficiencies can pile up to a noticeable lag, so that adding menumode checks where appropriate would indeed be an improvement. At the very least it wouldn't do any harm.

:nod:
User avatar
Cathrin Hummel
 
Posts: 3399
Joined: Mon Apr 16, 2007 7:16 pm

Post » Fri May 13, 2011 8:02 pm

The following seems to be a more "Windows-y" way to run tes3lint:

* Open the tes3lint directory in the Windows filesystem explorer.
* Create a shortcut to tes3lintfull.bat (you do not have to change anything, just make a shortcut).
* Now you can drag and drop an icon for any plugin onto the shortcut and it will generate a report.

If anyone wants to give me feedback on this, let me know if it does or does not work for you.
I might be able to generate a correct shortcut if I ever decide to make a Windows installer for this tool, but maybe that is overkill?

Also, I'm thinking of changing the .bat files to use the "more" command on the output, instead of "type", would that be okay?

Thanks.
User avatar
Ash
 
Posts: 3392
Joined: Tue Jun 13, 2006 8:59 am

Post » Fri May 13, 2011 9:25 am

Ok i have a problem, i can not get Tes3Lint to work. I have it installed in this directory;

C:\Program Files\Bethesda Softworks\Morrowind\tes3lint

I made a shortcut to the tes3full.bat to my desktop, and then dragged and dropped a esp on it. Instead of showing it is scanning the esp i keep getting the message Access denied..and below that "Output saved to tes3lint.log".

Now i have a new computer which has Vista Home Premium Service Pack 2, and i hat to give some tools Admin rights before they would work correctly. But i can not seem to do that with a bat file, so i tried compatibility mode "Windows XP(Service pack 2)...did not work either? Now i am new to Vista, but MW itself and all tools i have installed so far are now working, but some how Tes3lint will not work. I am pretty sure it might be something that i am doing wrong or that i am missing, i just do not know what?
User avatar
lacy lake
 
Posts: 3450
Joined: Sun Dec 31, 2006 12:13 am

Post » Fri May 13, 2011 2:47 pm

Ok i have a problem, i can not get Tes3Lint to work. I have it installed in this directory;

C:\Program Files\Bethesda Softworks\Morrowind\tes3lint

I made a shortcut to the tes3full.bat to my desktop, and then dragged and dropped a esp on it. Instead of showing it is scanning the esp i keep getting the message Access denied..and below that "Output saved to tes3lint.log".


Does tes3lint.log contain anything?
Have you http://code.google.com/p/mlox/wiki/InstallPerl?
User avatar
Alisha Clarke
 
Posts: 3461
Joined: Tue Jan 16, 2007 2:53 am

Post » Fri May 13, 2011 4:51 pm

Does tes3lint.log contain anything?
Have you http://code.google.com/p/mlox/wiki/InstallPerl?


Yes i installed Strawberry Perl before Tes3lint.

Oh and no the log file does not contain anything, it is 0 bytes?
User avatar
Jodie Bardgett
 
Posts: 3491
Joined: Sat Jul 29, 2006 9:38 pm

Post » Fri May 13, 2011 4:42 am

Yes i installed Strawberry Perl before Tes3lint.

Oh and no the log file does not contain anything, it is 0 bytes?


What happens if you try using it from the command line, instead of the .bat file?
User avatar
Victoria Vasileva
 
Posts: 3340
Joined: Sat Jul 29, 2006 5:42 pm

Post » Fri May 13, 2011 9:03 am

What happens if you try using it from the command line, instead of the .bat file?


I never used it with a commandline before, but i tried this example:(I hope i typed it correctly.)

perl tes3lint -f exp-dep,bm-dep Creatures.esp

I tried that example from the Tes3lint directory and from the Morrowind Data File directory. In both cases i get the message

"Error opening Creatures.esp for Input (No such file or Directory)"
User avatar
BrEezy Baby
 
Posts: 3478
Joined: Sun Mar 11, 2007 4:22 am

Post » Fri May 13, 2011 6:57 pm

I tried that example from the Tes3lint directory and from the Morrowind Data File directory. In both cases i get the message

"Error opening Creatures.esp for Input (No such file or Directory)"


That's strange. If you have Creatures.esp in your "Data Files" directory, and that's where you are running tes3lint, then I don't know why it wouldn't find it. I guess I'm stumped.
User avatar
Justin Hankins
 
Posts: 3348
Joined: Fri Oct 26, 2007 12:36 pm

Post » Fri May 13, 2011 3:11 pm

That's strange. If you have Creatures.esp in your "Data Files" directory, and that's where you are running tes3lint, then I don't know why it wouldn't find it. I guess I'm stumped.


Well in that case i will have to use EE to just search for the junkcells and Yacoby's Escog for the GMST's. Shame really, i hope you or some else will come up with an idea as to what could be my problem? As for Fog bugs, well if those happen then i will have to accept it...oh well.

Thanks john.moonsugar. :)
User avatar
ijohnnny
 
Posts: 3412
Joined: Sun Oct 22, 2006 12:15 am

Post » Fri May 13, 2011 8:05 pm

Can't use, Strawberry Perl doesn't know Windows 2000 is an operating system :S
User avatar
Jessie Rae Brouillette
 
Posts: 3469
Joined: Mon Dec 11, 2006 9:50 am

PreviousNext

Return to III - Morrowind