Windower / Lua

Lua Addons and Scripts
241 stars 427 forks source link

[Request gearswap] expose current zone/region conquest info #918

Closed smd111 closed 10 years ago

smd111 commented 10 years ago

please expose current zone/region conquest info to gearswap

i have tried to decode the conquest map packet(0x071) but the server sends 2 packets(both the same size) with the different data each time you zone or conquest data is updated so it almost impossible for me to see the first packet sent so i can get my bearings to start decoding it

but if this could be decoded it would expose the conquest data so we could switch to the proper gear when using gear like http://wiki.ffxiclopedia.org/wiki/Republican_Gold_Medal

Byrth commented 10 years ago

I have also looked at this and had a similar reaction to the packets. It seems that SE made these when they were in their hardcore bitpacking phase. I'll try to take a look at it I guess, but I promise nothing.

Byrth commented 10 years ago

Also, the packet that you indicated is not the conquest packet. It's the campaign map packet. If you block them, you still get conquest info.

Byrth commented 10 years ago

Besieged map and Campaign Map are handled by 0x5E, which I haven't looked at in any detail before. So there's hope!

smd111 commented 10 years ago
data.outgoing[0x05E] = {name='Request Zone',        description='Request from the client to zone.'}
data.incoming[0x05E] = {name='Stop Download',       description='Final packet in a DataDld transmission. May be the only packet in a DataDld sequence.'}

data.incoming[0x071] = {name='Campaign Map Info',   description='Populates the Campaign map.'}

this is from the libs/packets/data.lua

but yes Campaign Map Info was what i was thinking about i got it wrong(its not conquest map packet)

Byrth commented 10 years ago

Yeah, I'm investigating the conquest packet now.

Byrth commented 10 years ago

Okay, I pretty much have it figured out minus one pretty important step (mapping zone ID to region ID).

smd111 commented 10 years ago

ok let me know if you want me to test it

Byrth commented 10 years ago

Well, I've deciphered the packet and pushed the updated fields.lua to -dev. The issue with implementing this is that I don't have any way to map Zone ID to Region ID beyond sitting down and doing it manually, which I don't want to do. It needs to be (ideally) added to the resources or put into a custom table that I include with GearSwap before this will go any further.

Here are the regions corresponding to the ID. 1 Ronfaure 2 Zulkheim 3 Norvallen 4 Gustaberg 5 Derfland 6 Sarutabaruta 7 Kolshushu 8 Aragoneu 9 Fauregandi 10 Valdeaunia 11 Qufim 12 Li'Telor 13 Kuzotz 14 Vollbow 15 Elshimo Lowlands 16 Elshimo Uplands 17 Tu'Lia 18 Movapolos *19 Tavnazian Archipelago

Ideally this would turn into a map of zone ID to region ID, but something like this would also work: region_to_zone_map = { [1] = S{100,101,139,140,141,142,167,190}, 1 would be Ronfaure's zone, and 100,101,139,140,141,142,167,190 are the zone IDs. If you want to make the full table, I'll implement it in gearswap!

smd111 commented 10 years ago

ill do that give me until tomorrow tho and it will be done

smd111 commented 10 years ago

here you go

*1 Ronfaure
*2 Zulkheim
*3 Norvallen
*4 Gustaberg
*5 Derfland
*6 Sarutabaruta
*7 Kolshushu
*8 Aragoneu
*9 Fauregandi
*10 Valdeaunia
*11 Qufim
*12 Li'Telor
*13 Kuzotz
*14 Vollbow
*15 Elshimo Lowlands
*16 Elshimo Uplands
*17 Tu'Lia
*18 Movapolos
*19 Tavnazian Archipelago
region_to_zone_map = { 
    [1] = S{100,101,139,140,141,142,167,190},
    [2] = S{102,103,108,193,196,248},
    [3] = S{1,2,104,105,149,150,195},
    [4] = S{106,107,143,144,172,173,191},
    [5] = S{109,110,147,148,197},
    [6] = S{115,116,145,146,169,170,192,194},
    [7] = S{3,4,117,118,198,213,249},
    [8] = S{7,8,119,120,151,152,200},
    [9] = S{9,10,111,166,203,204,206},
    [10] = S{5,6,112,161,162,165},
    [11] = S{126,127,157,158,179,184},
    [12] = S{121,122,153,154,202,251},
    [13] = S{114,125,168,208,209,247},
    [14] = S{113,128.174,201,212},
    [15] = S{123,176,250,252},
    [16] = S{124,159,160,163,205,207,211},
    [17] = S{130,177,178,180,181},
    [18] = S{11,12,13},
    [19] = S{24,25,26,27,28,29,30,31,32},
    }
    [Lumoria] = S{33,34,35,36} -- sea
    [Tavnazian Marquisate] = S{26} -- 
    [Abdhaljs] = S{43,44,183} -- private balista

--- Main city's
    [The Republic of Bastok] = S{234,235,236,237}
    [The Kingdom of San d'Oria] = S{230,231,232,233}
    [The Federation of Windurst] = S{238,239,240,241,242}
    [The Grand Duchy of Jeuno] = S{243,244,245,246}

---The Aradjiah Continent
    [Arrapago Islands] = S{53,54,55,56,57,60,69,78,79}
    [Halvung Territory] = S{61,62,63,64}
    [Mamool Ja Savagelands] = S{51,65,66,67,68}
    [Ruins of Alzadaal] = S{72,73,74,75,76,77}
    [West Aht Urhgan] = S{48,50,52,71}

--- The Shadowreign Era
    [The Aragoneu Front] = S{97,98,99,164,}
    [The Derfland Front] = S{83,90,91,92,171,}
    [The Fauregandi Front] = S{136}
    [The Gustaberg Front] = S{87,88,89,93}
    [The Norvallen Front] = S{8284,85,175}
    [The Ronfaure Front] = S{80,81,86,}
    [The Sarutabaruta Front] = S{94,95,96,129}
    [The Threshold] = S{182,222}
    [The Valdeaunia Front] = S{137,138,155,156}

--- other
    [Abyssea] = S{15,45,132,215,216,217,218,253,254,255}
    [Dynamis] = S{39,40,41,42,134,135,185,186,187,188}
    [Promyvion] = S{14,16,17,18,19,20,21,22,23} -- not sure if region maters
    [Limbus] = S{37,38}
    [Airships] = S{223,224,225,226} 
    [Ferries] = S{46,47,58,59,220,221,227,228} -- not sure of the regions used
    [Misc] = S{0,70,131,214,285}
Nezkeys commented 10 years ago

wow you guys are amazing. This is way beyond my code writing "skills" but the end product of what you are trying to achieve is great lol. Thank you if you implement this

ps...in the jeuno box since there are 4 numbers i assume theyre referring to the 4 different jeuno zones. so lets say 243 is port jeuno would you just write S{243} ? (im assuming it would need some more text before that as well though)

smd111 commented 10 years ago

what i posted was just organizing the zones with there regions nothing more its not hard to do

also this was how Byrth wanted it laid out but if you were checking to see if a zone was in jeuno in gs(right now) its more complicated then this

Nezkeys commented 10 years ago

yeah im basically intersted in the ability of equipping Republic Aketon whenever I enter any bastok zone for example, just used jeuno as an example

Byrth commented 10 years ago

Thanks, I will implement this tonight.

Byrth commented 10 years ago

It looks like something is a little off from what I mapped out originally, so this is taking longer than expected. Pushing what I have to -dev now, but the individual nation strengths don't seem to be accurate.

Byrth commented 10 years ago

Because I've fulfilled your basic quest (world.conquest.nation will tell you who owns a zone in a conquest area), I'm going to close this issue and open one regarding world.conquest.strengths on my own tracker.

smd111 commented 10 years ago

can i ask one question should it be like this world.conquest.nation == player.nation or is it world.conquest.nation == world.zone_id or something else i.e. world.conquest.nation[world.zone_id][player.nation] > 2 or world.conquest.nation[3] == "Windurst"