z Baldur's Gate 3

Upload your cheat tables here (No requests)
justbenhere
What is cheating?
What is cheating?
Posts: 1
Joined: Tue Aug 08, 2023 10:51 pm
Reputation: 0

Re: z Baldur's Gate 3

Post by justbenhere »

Nvm I fixed it.

How to use this cheat table?
  1. Install Cheat Engine
  2. Double-click the .CT file in order to open it.
  3. Click the PC icon in Cheat Engine in order to select the game process.
  4. Keep the list.
  5. Activate the trainer options by checking boxes or setting values from 0 to 1

User avatar
kyoski
Expert Cheater
Expert Cheater
Posts: 90
Joined: Tue Jun 05, 2018 9:19 am
Reputation: 15

Re: z Baldur's Gate 3

Post by kyoski »

anyone find any other passive permanent stat upgrades like AbilityImprovement_ and Resilient_ that persist between saves and work in druid forms?

reeko24
Noobzor
Noobzor
Posts: 11
Joined: Tue Sep 19, 2017 2:35 pm
Reputation: 1

Re: z Baldur's Gate 3

Post by reeko24 »

browdybrembo wrote:
Tue Aug 08, 2023 9:36 pm
When you guys add soo many spells are you not getting any stuttering/lagging? I'm surprised only few are saying this, almost all of you are either ok with the cancerous stutter or maybe its working for you guys, if so please share what you're doing bcuz i get stutters every 5 seconds to just turning camera, if someone has any solution please share :)
Definitely lagging, don't add so many spells, even in the early access version it lags, maybe it is the engine limitation, but I'm not sure also,
Btw, why do we need so many spells in one character :?: :D , I get it's nice for variety of reasons, but I don't think you will use all of it, my suggestion which I use right now to install mod OmniscientWizards & Unearthed Arcana that will make other class beside wizard to learn spell from a scroll (all scroll)
I use it with my bard and it keeps the spell list manageable and doesn't stutter the game

hellbiter88
Noobzor
Noobzor
Posts: 13
Joined: Mon Mar 13, 2017 2:12 am
Reputation: 0

Re: z Baldur's Gate 3

Post by hellbiter88 »

EvenLess wrote:
Fri Aug 04, 2023 11:42 pm
I have added a LOT of items to the Item Spawner. Primarily Legendary and Very Rare, and some Rare and Uncommon. I have sorted and color-coded them.
All this is in the attached bg3_items_spells.CT table, which is based Zanzer's bg3.CT v4.1.1.3624901 (2) table.

You can also use one of the attached tables that only contains the items (bg3_armor.CT, bg3_weapon.CT, and bg3_object.CT). They contain a LOT more items, but are not as pretty and sorted as the ones I manually added in the bg3_items_spells.CT table.
To use these you must load Zanzer's bg3.CT table first, then and Activate Console Commands, then Register Commands, before being able to use the Item Spawner.
Then from the already opened Cheat Engine, with Zanzer's bg3.CT loaded, open my bg3_armor.CT, or bg3_weapon.CT, or bg3_object.CT and merge it into Zanzer's bg3.CT.
Image

These (incomplete) lists are based on all the items found in the armor.txt, weapon.txt, and armor.txt files, found in the following unpacked folders, and a list of those are added in the bg_items.txt (CSV) file:
  • Gustav\Public\Gustav\Stats\Generated\Data
  • Gustav\Public\GustavDev\Stats\Generated\Data
  • Shared\Public\Shared\Stats\Generated\Data
  • Shared\Public\SharedDev\Stats\Generated\Data
I've attached another, more complete and more searchable list, as bg3_items_v2.txt (CSV) file. This one contains all items found in the all the RootTemplates-files. This does include a lot of items that cannot be added to inventory, from the looks of it. It does not contain all files, I've discovered, but it is the most complete list so far.

If you want to find more items yourself, I created a small guide in another post, but have added it here as well, to have all the tidbits gathered in one post. The guide is based on the [Link] (which CKeylos also pointed out.
  1. Download and extract the latest version of Norbyte's ExportTool [Link].
  2. Download and extract the latest version of ShinyHobo's BG3-Modders-Multitool [Link].
    I extracted the BG3-Modders-Multitool to the base directory of Norbyte's ExportTool, as the Multitool requires divine.exe from this.
  3. Open the multitool (bg3-modders-multitool.exe).
  4. Add the paths to divine.exe and bg3.exe by clicking the asterisk in the lower right hand corner after opening the Multitool.
    Image
  5. Unpack .pak Files and select at least Gustav.pak and Shared.pak. I recommend also unpacking English.pak as this contains the translations you see in-game.
    Image
    This step takes a while and takes up a around 30 GB of disk space.
  6. Index Files. This step also takes a while.
    Image
  7. Index Search to search for things. If you search for the in-game name, you should get results from English.loca. The line here contains a "handle" (ID). Use this handle to do a new search, and you will find the files that contain references to this handle. These files likely contains the UUID/MapKey.
    Image
  8. For more control/advanced use, use the ConverterApp.exe to batch convert all .lsf-files (binary) to .lsj-files (json) to make them more readable. Also use ConvertApp.exe to convert English.loca (binary) to xml.
    Image
    Image
The way I created the lists and the item Cheat Tables, was with a few PowerShell scripts I wrote.

The first script, which only inventories the before-mentioned .txt-files, is pretty fast to run. It creates both the CSV and the 3 item Cheat Tables. Remember to update paths to your locations.
bg3_items.ps1

Code: Select all

# Get the path for the My Documents folder.
$DocumentsFolder = [System.Environment]::GetFolderPath('MyDocuments')

# The default location where Cheat Engine saves cheat tables.
$CheatTablesFolder = Join-Path -Path $DocumentsFolder -ChildPath 'My Cheat Tables'

$ItemsCsvFile = 'bg3_items.csv'
$ItemsCsvPath = Join-Path -Path $CheatTablesFolder -ChildPath $ItemsCsvFile
$ItemsCtFile = 'bg3_armor.CT'
$ItemsCtPath = Join-Path -Path $CheatTablesFolder -ChildPath $ItemsCtFile

# Base-path of the unpacked data/.pak-files.
$BasePath = 'C:\Games\BG3-Tools\UnpackedData'
# Get tools to extract with here:
# https://github.com/Norbyte/lslib/releases/latest
# https://github.com/ShinyHobo/BG3-Modders-Multitool/releases/latest

# Sub-paths to the armor, object, and weapon .txt-files.
$ArmorFiles = @(
     'Shared\Public\Shared\Stats\Generated\Data\Armor.txt'
    ,'Shared\Public\SharedDev\Stats\Generated\Data\Armor.txt'
    ,'Gustav\Public\Gustav\Stats\Generated\Data\Armor.txt'
    ,'Gustav\Public\GustavDev\Stats\Generated\Data\Armor.txt'
)
$WeaponFiles = @(
     'Shared\Public\Shared\Stats\Generated\Data\Weapon.txt'
    ,'Shared\Public\SharedDev\Stats\Generated\Data\Weapon.txt'
    ,'Gustav\Public\Gustav\Stats\Generated\Data\Weapon.txt'
    ,'Gustav\Public\GustavDev\Stats\Generated\Data\Weapon.txt'
)
$ObjectFiles = @(
     'Shared\Public\Shared\Stats\Generated\Data\Object.txt'
    ,'Shared\Public\SharedDev\Stats\Generated\Data\Object.txt'
    ,'Gustav\Public\Gustav\Stats\Generated\Data\Object.txt'
    ,'Gustav\Public\GustavDev\Stats\Generated\Data\Object.txt'
)

# Combine to one.
#$Files = $ArmorFiles + $WeaponFiles + $ObjectFiles
$Files = $ArmorFiles + $WeaponFiles + $ObjectFiles

$RarityColor = @{
    'RARITY_UNKNOWN' = 'C0C0C0'
    'Uncommon'       = '00FF00'
    'Rare'           = 'FFFF00'
    'VeryRare'       = 'FF00FF'
    'Legendary'      = '4080FF'
}

$CheatTableHead = @"
<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
    <CheatEntries>
        <CheatEntry>
            <ID>@@CE_ID@@</ID>
            <Description>"Item Spawner"</Description>
            <Options moHideChildren="1"/>
            <GroupHeader>1</GroupHeader>
            <CheatEntries>
"@
$CheatTableFoot = @"
            </CheatEntries>
        </CheatEntry>
    </CheatEntries>
    <UserdefinedSymbols>
        <SymbolEntry>
            <Name>playerCharactersPtr</Name>
            <Address>1D4526F0000</Address>
        </SymbolEntry>
    </UserdefinedSymbols>
    <DisassemblerComments>
        <DisassemblerComment>
            <Address>"bg3.exe"+25C0F20</Address>
            <Comment>Zanzer</Comment>
        </DisassemblerComment>
    </DisassemblerComments>
</CheatTable>
"@
$CheatEntryTemplate = @"
                <CheatEntry>
                    <ID>@@CE_ID@@</ID>
                    <Description>"@@ITEM_NAME@@"</Description>
                    <Color>@@RARITY_COLOR@@</Color>
                    <VariableType>Auto Assembler Script</VariableType>
                    <AssemblerScript Async="1">[ENABLE]
{`$lua}
if syntaxcheck then return end

local uuid = "@@ITEM_UUID@@"

local cmdCall = getAddress("cmdCall")
local cmdAddr = getAddress("cmdAddr")
local cmdArgs = getAddress("cmdArgs")
local cmdStr1 = getAddress("cmdStr1")
PrepareCall("GetHostCharacter")
executeCodeEx(0, nil, cmdCall)

writePointer(cmdArgs + 0x18, readPointer(cmdArgs + 0x08))
PrepareCall("CreateAtObject")
writePointer(cmdArgs + 0x08, cmdStr1)
writeString(cmdStr1, uuid)
writeBytes(cmdStr1 + #uuid, 0)
writeQword(cmdArgs + 0x28, 0)
writeQword(cmdArgs + 0x38, 0)
writeQword(cmdArgs + 0x48, 0)
writeQword(cmdArgs + 0x58, 0)
executeCodeEx(0, nil, cmdCall)

{`$asm}
assert(true)
[DISABLE]
                    </AssemblerScript>
                </CheatEntry>
"@

# Regular Expression to check if the UUID looks right.
$RegexUUID = [regex]'^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$'

# Create an empty array to store all the items.
$Items = ''

# Create an empty string variable to store the content of the files.
$Content = ''
# Loop through the files and read their contents into one big string.
foreach ($File in $Files) {
    # Combine base-path and sub-path to the full path.
    $FullPath = Join-Path -Path $BasePath -ChildPath $File
    $Content += Get-Content -Raw -Path $FullPath
}
# Split the content string into an array of lines.
$Line = $Content -split '\n'

# Create an empty array to store the item objects in.
$Items = @()
# Ensure the Item variable is empty for the first iteration.
Clear-Variable -Name Item -ErrorAction SilentlyContinue
# Loop through all the lines.
for ($l = 0; $l -lt $Line.Count; $l++) {
    # Check if the current line is the start of a new item entry.
    if ($Line[$l] -match '^new entry "(?<Name>\w+)"') {
        # Store the items "name" in a new variable, so it does not get overwritten by following mathes.
        $ItemName = $Matches.Name
        # Check if we already have an item object, and if that item object contains a valid UUID.
        if ($Item -and $Item.UUID -match $RegexUUID) {
            # Store the previous item object in the array.
            $Items += New-Object -TypeName psobject -Property $Item
        }
        # Create a fresh hashtable and populate it with the default values.
        $Item = [ordered]@{
            Name   = $ItemName
            UUID   = $null
            Type   = 'TYPE_UNKNOWN'
            Rarity = 'RARITY_UNKNOWN'
        }
    }
    else {
        # Not a new item entry, so look for the current item entrys data.
        # Check if the current line is the item type.
        if ($Line[$l] -match 'type "(?<Type>\w+)"') {
            # Update the hashtable with the found value.
            $Item.Type = $Matches.Type
        }
        # Check if the current line is the item rarity.
        if ($Line[$l] -match '^data "Rarity" "(?<Rarity>\w+)"') {
            # Update the hashtable with the found value.
            $Item.Rarity = $Matches.Rarity
        }
        # Check if the current line is the item UUID.
        if ($Line[$l] -match '^data "RootTemplate" "(?<UUID>[a-f0-9-]+)"') {
            # Update the hashtable with the found value.
            $Item.UUID = $Matches.UUID
        }
    }
}

# Export the items to a the items CSV-file. Using semi-colon (;) as delimiter, simply because the CSV file will automatically be shown in colums, in spreadsheet programs.
$Items | Sort-Object -Property Name | Export-Csv -Force -NoTypeInformation -Encoding Default -Delimiter ';' -Path $ItemsCsvPath

# Build the Cheat Table.
foreach ($t in ($Items | Select-Object -ExpandProperty Type -Unique)) {
    $CtFile = "bg3_$($t.ToLower()).CT"
    $CtPath = Join-Path -Path $CheatTablesFolder -ChildPath $CtFile
    $CheatID = 1
    $CheatTableHead.Replace('@@CE_ID@@', $CheatID) | Out-File -Force -Encoding default -FilePath $CtPath
    foreach ($i in ($Items | Where-Object { $_.Type -eq $t} | Sort-Object -Property Name)) {
        $CheatID++
        $CheatEntryTemplate.Replace('@@CE_ID@@', $CheatID).Replace('@@ITEM_NAME@@', $i.Name).Replace('@@RARITY_COLOR@@', $RarityColor."$($i.Rarity)").Replace('@@ITEM_UUID@@', $i.UUID) | Out-File -Append -Encoding default -FilePath $CtPath
    }
    $CheatTableFoot | Out-File -Append -Encoding default -FilePath $CtPath
}
The second script was an attempt to find ALL items, as it looked like all items were stored in the RootTemplates-files. I also wanted the localized names, so the script will also find that and add to the list. This script is VERY SLOW. First run (which generated the attached bg3_items_v2.txt-file) took more than 14 hours to complete (14 hours, 5 minutes, 2 seconds and 404 milliseconds to be exact).
It requires all the binary .lsf-files to be converted .lsj JSON-files. Easily done using the ConverterApp.exe that is included in Norbyte's ExportTool.
bg3_items_v2.ps1

Code: Select all

$VerbosePreference = 'SilentlyContinue'
$VerbosePreference = 'Continue'
$Stopwatch = New-Object -TypeName System.Diagnostics.Stopwatch
$Stopwatch.Start()

$DocumentsFolder = [System.Environment]::GetFolderPath('MyDocuments')
$CheatTablesFolder = Join-Path -Path $DocumentsFolder -ChildPath 'My Cheat Tables'
$CsvFile = 'bg3_allitems.csv'
$CsvPath = Join-Path -Path $CheatTablesFolder -ChildPath $CsvFile

$BasePath = 'C:\Games\BG3-Tools\UnpackedData'

$LocalizationPath = "$($BasePath)\English\Localization\English\english.xml"

$RootTemplates = @(
     "$($BasePath)\Shared\Public\Shared\RootTemplates"
    ,"$($BasePath)\Shared\Public\SharedDev\RootTemplates"
    ,"$($BasePath)\Gustav\Public\Gustav\RootTemplates"
    ,"$($BasePath)\Gustav\Public\GustavDev\RootTemplates"
)

$LocalizationData = [xml](Get-Content -Encoding Default -Path $LocalizationPath)

$RegexUUID = [regex]'^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$'

function Get-TemplateData {
	[CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [System.IO.FileInfo]
        $Path
        ,
        [Parameter(Mandatory = $true)]
        [guid]
        $Id
    )
    Write-Verbose -Message "Fn: Get-TemplateData -Id '$($Id)'"
    $Template = Join-Path -Path $Path -ChildPath "$($Id).lsj"
    $Success = $false
    if (Test-Path -Path $Template) {
        $Success = $true
        try {
            $Data = Get-Content -Raw -Encoding Default -Path $Template | ConvertFrom-Json
        }
        catch {
            $Success = $false
        }
    }
    if ($Success) {
        return $Data.save.regions.Templates.GameObjects[0]
    }
}


$Items = @()
$Files = Get-ChildItem -Path $RootTemplates -Filter *.lsj
Write-Output '"UUID";"Name";"Stats";"DisplayName";"Description"' | Out-File -Force -Encoding default -FilePath $CsvPath
foreach ($f in $Files) {
    $TemplatePath = $f.Directory.FullName
    $TemplateId   = $f.BaseName
    $Item = [ordered]@{
        UUID        = $f.BaseName
        Name        = $null
        Stats       = $null
        DisplayName = $null
        Description = $null
    }
    Write-Verbose -Message "L1: Read '$($f.BaseName)'."
    do {
        $Data = Get-TemplateData -Path $TemplatePath -Id $TemplateId
        if ('Name' -notin $Data.psobject.Properties.Name) {
            Write-Verbose -Message "L2: Name missing for '$($f.BaseName)'."
            break
        }
        foreach ($p in $Data.psobject.Properties.Name) {
            switch ($p) {
                'Name' {
                    if ($null -eq $Item.Name) {
                        Write-Verbose -Message "L3: Adding Name '$($Data.Name.value)'."
                        $Item.Name = $Data.Name.value
                    }
                }
                'Stats' {
                    if ($null -eq $Item.Stats) {
                        Write-Verbose -Message "L3: Adding Stats '$($Data.Stats.value)'."
                        $Item.Stats = $Data.Stats.value
                    }
                }
                'DisplayName' {
                    if ($null -eq $Item.DisplayName) {
                        $LocalizedName = ($LocalizationData.contentList.content | Where-Object {
                            $_.contentuid -eq $Data.DisplayName.handle
                        }).'#text'
                        Write-Verbose -Message "L3: Adding DisplayName '$($LocalizedName)'."
                        $Item.DisplayName = $LocalizedName
                    }
                }
                'Description' {
                    if ($null -eq $Item.Description) {
                        $LocalizedName = ($LocalizationData.contentList.content | Where-Object {
                            $_.contentuid -eq $Data.Description.handle
                        }).'#text'
                        Write-Verbose -Message "L3: Adding Description '$($LocalizedName)'."
                        $Item.Description = $LocalizedName
                    }
                }
            }
        }
        $TemplateId = $Data.ParentTemplateId.value
    } while ($Data.psobject.Properties.Name -contains 'ParentTemplateId' -and $Data.ParentTemplateId.value -match $RegexUUID)
    Write-Verbose -Message "L1: Done '$($f.BaseName)'."
    if ($null -eq $Item.DisplayName) {
        Write-Verbose -Message "L1: DisplayName missing for '$($f.BaseName)'."
        continue
    }
    $ItemObject = New-Object -TypeName psobject -Property $Item
    $ItemObject | ConvertTo-Csv -NoTypeInformation -Delimiter ';' | Select-Object -Skip 1 | Out-File -Append -Encoding default -FilePath $CsvPath
    #$Items += $ItemObject
}

#$Items | Export-Csv -Force -NoTypeInformation -Encoding Default -Delimiter ';' -Path $CsvPath

$Stopwatch.Stop()
$Stopwatch.Elapsed
Disclaimer!
Zanzer deserves all the credit for the Cheat Tables.
This is incredible, thank you for all of this work :wub:

keyinbit
What is cheating?
What is cheating?
Posts: 3
Joined: Wed Aug 09, 2023 12:31 am
Reputation: 0

Re: z Baldur's Gate 3

Post by keyinbit »

browdybrembo wrote:
Tue Aug 08, 2023 10:18 pm
DarkFearless wrote:
Tue Aug 08, 2023 9:50 pm
Also how do you remove passives? Like I've accidentally added a passive that requires "Sorcery Points" on my Barb. XD.
in the script of the passive, change AddPassive to RemovePassive and click on the box again
So i added a wild shape charge as well as 4 lvl 2 spell slots im just not sure how to pull up the script to remove it

Zadkielsan
Expert Cheater
Expert Cheater
Posts: 70
Joined: Wed Mar 29, 2017 2:54 am
Reputation: 4

Re: z Baldur's Gate 3

Post by Zadkielsan »

henlo, does the last table works when playing in coop ?

Stellays
What is cheating?
What is cheating?
Posts: 1
Joined: Wed Aug 09, 2023 1:08 am
Reputation: 0

Re: z Baldur's Gate 3

Post by Stellays »

Anyone manage to find the UUID for parts 2 and 3 of Orpheus, Prince of the Comet?
Managed to find part 1: 0f5d749b-b620-43e0-bf06-ea4e9f63b642
but the other two I can't find for the life of me, any ideas?

Subslover
What is cheating?
What is cheating?
Posts: 1
Joined: Sun Aug 06, 2023 12:32 am
Reputation: 0

Re: z Baldur's Gate 3

Post by Subslover »

Anyone know how to add spells for sorcerer so it can be upcasted and also be used with metamagic?

I used for example (local spell = "Shout_ArmorOfAgathys"), but then it works as basic lvl1 spells only. :(
(It's a spell that works with upcasting/metamagic when choosing a certain draconic bloodline)

TheTangeMan
What is cheating?
What is cheating?
Posts: 1
Joined: Wed Aug 09, 2023 1:39 am
Reputation: 0

Re: z Baldur's Gate 3

Post by TheTangeMan »

EDIT: NVM, I figured it out.


Hi, my game crashes and I keep getting this error on CE when I try to spawn any item
This script uses nearby allocation but it is impossible to allocate nearby A0000. Please rewrite the script to function without nearby allocation. Try executing the script anyhow and allocate on a region outside reach of 2GB? (The target will crash if the script was not designed with this failure in mind.)
I've followed the tutorial on how to load up the tables at the front of this thread. Did I do something wrong?
Last edited by TheTangeMan on Wed Aug 09, 2023 2:03 am, edited 1 time in total.

nicko123
What is cheating?
What is cheating?
Posts: 1
Joined: Wed Aug 09, 2023 1:48 am
Reputation: 0

Re: z Baldur's Gate 3

Post by nicko123 »

Is there a way to fix romances with companions?

DarkFearless
Expert Cheater
Expert Cheater
Posts: 138
Joined: Sat Jan 26, 2019 5:38 am
Reputation: 2

Re: z Baldur's Gate 3

Post by DarkFearless »

Sorry for being off-topic but I wanted to ask what would be some of the best spells / passives and legendary armor/weapons to use for Barbarian (or perhaps in general)? =).

User avatar
Chicchi
Noobzor
Noobzor
Posts: 8
Joined: Wed Aug 09, 2023 2:06 am
Reputation: 3

Re: z Baldur's Gate 3

Post by Chicchi »

Thank you for the table!

I was messing around with Console Commands - Register Commands - Dialog Tags and I added a few things.

Is there a way to remove them from my character after I added them?
Last edited by Chicchi on Wed Aug 09, 2023 2:18 am, edited 1 time in total.

dimakserpg
What is cheating?
What is cheating?
Posts: 1
Joined: Wed Aug 09, 2023 2:06 am
Reputation: 0

Re: z Baldur's Gate 3

Post by dimakserpg »

nicko123 wrote:
Wed Aug 09, 2023 1:49 am
Is there a way to fix romances with companions?
Yeah, i have same question.

Is there any way to restart romance or trigger romance dialogue with characters?

Because i missed that one and now i don't want to go back to my old save and lose 25 hours of playing.

Ðogma
What is cheating?
What is cheating?
Posts: 2
Joined: Wed Aug 09, 2023 2:39 am
Reputation: 0

Re: z Baldur's Gate 3

Post by Ðogma »

Bigfeelsman wrote:
Tue Aug 08, 2023 4:30 pm
The UUID for Astral-Touched Tadpole is 4a82e6f2-839f-434e-addf-b07dd1578194

When you put in the code, right-click Pick Up, and interact when it is in your inventory. You can gain all the benefits that way.
First off thank you; Where did you find this UUID? I searched forever and couldn't find it. And if you can find it what is the UUID for the Supreme Tadpole that you use after this one?

User avatar
Ang3lic
Novice Cheater
Novice Cheater
Posts: 24
Joined: Thu Sep 29, 2022 12:33 am
Reputation: 2

Re: z Baldur's Gate 3

Post by Ang3lic »

DarkFearless wrote:
Tue Aug 08, 2023 9:28 pm
Ang3lic wrote:
Tue Aug 08, 2023 7:02 pm
I think we have to be careful adding certain items early.
TRUE !!! i am keeping items, and if it breaks somewhere, i can reload from the previous save and drop that item. but it could become a problem, to know what item to drop...

Post Reply

Who is online

Users browsing this forum: Anacra, azamen87, Baidu [Spider], emmiiz, EphenSteve, Exodus, Google [Bot], Google Adsense [Bot], korell, Mango, ThukkataAB