Code Monkey home page Code Monkey logo

sse-mod-skyrim-search-se's Introduction

Skyrim Search SE

This is new version of Skyrim Search Plugin for Skyrim Special Edition.

This plugin adds some console commands that allows you to search for NPCs, cells, and quests by FormID/EditorID/Name. Moreover, you can find refIds of NPCs, codes for coc command, and quest stage number for completequest command. The most important point of using this plugin over other tools is that it works in game, and fully-synchronized with your environment. (it can search custom followers too!)

Usage

Skyrim console usage: https://en.uesp.net/wiki/Skyrim:Console

Basic

The command added by this plugin is ss (or skyrimsearch). You can view usage by typing ss --help in game. Also, You can view your inputs and outputs in log file in \My Games\Skyrim Special Edition\SKSE\skyrim-search-se.log

  • help command: ss --help
ss --help
skyrim-search-se 0.7.0
Author: qbx2/lukasaldersley | GitHub: https://github.com/qbx2/sse-mod-skyrim-search-se

USAGE:
    ss [FLAGS] <SUBCOMMAND>

FLAGS:
        --debug
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    cell           search cell (location)
    npc            search npc/reference
    quest          search quest
    quest_stage    search quest (prints additional stage information)
    raw            execute raw query. quote your query as in unix shell if needed.

Search NPCs

  • command: ss npc <query>
  • query: FormID/EditorId/Name/RefId of the npc which you want to search
  • Search by name
ss npc lydia
 form_id  | editor_id         | name  | ref_id
----------+-------------------+-------+----------
 000A2C8E | HousecarlWhiterun | Lydia | 000A2C94
  • Search by EditorId

(In my case, there were no reference to HousecarlMarkarth/HousecarlSolitude/HousecarlWindhelm)

ss npc housecarl
 form_id  | editor_id               | name                    | ref_id
----------+-------------------------+-------------------------+----------
 000A2C8C | HousecarlMarkarth       | Argis the Bulwark       | <null>
 000A2C8E | HousecarlWhiterun       | Lydia                   | 000A2C94
 000A2C8F | HousecarlSolitude       | Jordis the Sword-Maiden | <null>
 000A2C90 | HousecarlWindhelm       | Calder                  | <null>
 000A2C91 | HousecarlRiften         | Iona                    | 000A2C93
 03005215 | BYOHHousecarlFalkreath  | Rayya                   | 03005216
 0300521B | BYOHHousecarlHjaalmarch | Valdimar                | 0300521D
 0300521E | BYOHHousecarlPale       | Gregor                  | 0300521F
  • Search by FormId/RefId
ss npc a2c8e
 form_id  | editor_id         | name  | ref_id
----------+-------------------+-------+----------
 000A2C8E | HousecarlWhiterun | Lydia | 000A2C94

ss npc a2c94
 form_id  | editor_id         | name  | ref_id
----------+-------------------+-------+----------
 000A2C8E | HousecarlWhiterun | Lydia | 000A2C94

Search Cells

  • command: ss cell <query>
  • query: FormID/EditorId/Name of the cell which you want to search
ss cell breezehome
 form_id  | editor_id          | name
----------+--------------------+------------
 000165A8 | WhiterunBreezehome | Breezehome

Search Quests

  • command: ss quest <query>
  • query: FormID/EditorId/Name of the quest which you want to search
ss quest forbidden legend
 form_id  | editor_id        | name
----------+------------------+------------------
 000E4D31 | dunGauldursonQST | Forbidden Legend

Search Quest Stages

  • command: ss quest_stage <query> / ss qs <query>
  • query: FormID/EditorId/Name of the quest which you want to search
ss qs forbidden
 form_id  | editor_id        | name             | stage | log
----------+------------------+------------------+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 000E4D31 | dunGauldursonQST | Forbidden Legend | 6     | In Reachwater Rock, I found a cryptic message that said the tomb here had been sealed, and should be forgotten forever. What is the story of this place?
 000E4D31 | dunGauldursonQST | Forbidden Legend | 7     | In Folgunthur, I found a cryptic message on the body of a powerful Draugr, condemning him for his ancient crimes. What was his story? Why was he entombed with a broken amulet?
 000E4D31 | dunGauldursonQST | Forbidden Legend | 8     | In Geirmund's Hall, I found a cryptic message on the body of a powerful Draugr, condemning him for his ancient crimes. What was his story? Why was he entombed with a broken amulet?
 000E4D31 | dunGauldursonQST | Forbidden Legend | 9     | In Saarthal, I found a cryptic message on the body of a powerful Draugr, condemning him for his ancient crimes. What was his story? Why was he entombed with a broken amulet?
 000E4D31 | dunGauldursonQST | Forbidden Legend | 10    | Long ago, the Archmage Gauldur was murdered, and his three sons were hunted down by King Harald's personal battlemage. The entire incident was covered up, their names struck from every record. But the legend survived. Perhaps someone still knows the truth of this ancient tale.
 000E4D31 | dunGauldursonQST | Forbidden Legend | 20    | Long ago, the Archmage Gauldur was murdered, and his three sons were hunted down by King Harald's personal battlemage. The mage Daynas Valen spent his life searching for the truth of this tale, and came to Folgunthur with the key needed to unlock its secret.
 000E4D31 | dunGauldursonQST | Forbidden Legend | 30    | Long ago, the Archmage Gauldur was murdered by his three sons, who stole his amulet of power and divided it among themselves. The brothers were hunted down in secret and sealed in tombs across Skyrim. To reclaim the amulet, I will need to seek out their final resting places.
 000E4D31 | dunGauldursonQST | Forbidden Legend | 100   | Long ago, the Archmage Gauldur was murdered by his three sons, who stole his amulet of power and divided it among themselves. I defeated the brothers and reclaimed the fragments of the amulet. Perhaps Gauldur's tomb holds the secret to restoring it to its original form.
 000E4D31 | dunGauldursonQST | Forbidden Legend | 105   | Long ago, the Archmage Gauldur was murdered by his three sons, who stole his amulet of power and divided it among themselves. I collected the fragments of the shattered amulet and brought them to Gauldur's tomb, where the ghosts of the three brothers ambushed me.
 000E4D31 | dunGauldursonQST | Forbidden Legend | 150   | Long ago, the Archmage Gauldur was murdered by his three sons, who stole his amulet of power and divided it among themselves. I defeated the undead brothers, located the fragments of the shattered amulet, and forged it anew in Gauldur's tomb.

Raw Query (Advanced)

  • Query example

(Note that you may quote your sql because the input is parsed by shlex)

ss raw SELECT * FROM npc WHERE form_id > 0xa2c00 AND form_id < 0xa2d00;
 form_id  | editor_id             | name
----------+-----------------------+-------------------------
 000A2C8C | HousecarlMarkarth     | Argis the Bulwark
 000A2C8E | HousecarlWhiterun     | Lydia
 000A2C8F | HousecarlSolitude     | Jordis the Sword-Maiden
 000A2C90 | HousecarlWindhelm     | Calder
 000A2C91 | HousecarlRiften       | Iona
 000A2CAF | DA01LvlDremoraWarlock |
 000A2CEB | ArgonianMalePreset03  |
 000A2CEF | ArgonianMalePreset04  |
 000A2CF0 | ArgonianMalePreset05  |

Requirements

Build Requirements

Build

cargo build

Credits

  • kmdreko on Stack Overflow for helping with some Rust problems
  • meh321 for distributing versionlib for easy update

Disclaimer

This plugin was not created by, and is not affiliated with, the website SkyrimSearch.com.

sse-mod-skyrim-search-se's People

Contributors

lukasaldersley avatar qbx2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

sse-mod-skyrim-search-se's Issues

GOG branch and SKSE versioning

I saw on nexus you mentioned you didn't have the GOG version so couldn't do much in terms of testing. I'm just letting you know what I've seen, what I accomplished and what I didn't accomplish.

In src/lib.rs around line 64 you are providing the version number that matches the address library bin file and that you've configured with the file target version.txt

compatibleVersions: [ target_version!(), 0, 0,

Unfortunately looking at the SKSE source, if you decide you want to make a GOG or EPIC games build you might need another config file or something. In SKSE they have the following

#define RUNTIME_TYPE_BETHESDA	0
#define RUNTIME_TYPE_GOG		1
#define RUNTIME_TYPE_EPIC		2
.
.
.
#define RUNTIME_VERSION_1_6_659_GOG	MAKE_EXE_VERSION_EX(1, 6, 659, RUNTIME_TYPE_GOG)
															// 0x01062931
#define RUNTIME_VERSION_1_6_678_EPIC	MAKE_EXE_VERSION_EX(1, 6, 678, RUNTIME_TYPE_EPIC)
															// 0x01062A62

But the target_version!() macro is using the version string that is made for the path to the address library file. So when SKSE tries to load the compiled dll it will complain. I ended up just manually adding 0x01062931 as a compatible version in that list on line 65 to get things running and indeed it does. We can launch the gog version of skyrim we can type commands like ss help.

But thats about as far as I could get it. Any sort of command like ss cell whiterun will crash the program and I being a Rust newb and completely oblivious to how SKSE works have found myself stuck in progressing more without learning more about both of these things which I don't really have time for right now.

Anyway do with this info as you will, Imma go back to the steam version for now. But I wanted to say aside from SKSE itself, this is probably the best tool/mod ever made for the game when trying to build large orders. Thanks for your contribution.

[Project Notice]

I won't be able to maintain this project from March 24 to April 14 for personal reasons.

Magic numbers for versionlib macro?

Hiya! I'm trying to update this for more recent versions of the game; I've got it compiling for 1.6.659.0, and got the newer versionlibs from the Address Library for SKSE project. After editing the target_version.txt file, I get:

error: proc macro panicked
  --> src\console.rs:83:46
   |
83 |     let target_addr = transmute(image_base + versionlib!(21890));
   |                                              ^^^^^^^^^^^^^^^^^^
   |
   = help: message: no entry found for key

This holds for 1.6.1130 and onwards. From looking up the behavior when building against 1.6.318.0, it seems the macro looks up the corresponding address for a given offset? (e.g. mapping 21890 to 0d3127808 | 0x2fba00, which tracks with what I'm seeing from the offsets file for 1.6.318.0, which has that at 1402fba00)

I see their usage in console, actor reference, cell, mod, npc, and quest contexts. What is the significance of the numbers used for versionlib? How would one find the relevant bits on newer versionslibs ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.