Giter Site home page Giter Site logo

pogoprotos's Introduction

This project is no longer maintained. Please use https://github.com/Furtif/POGOProtos instead, which is a fork of this project.

POGOProtos

This repository contains the ProtoBuf .proto files needed to decode the PokémonGo RPC.

If you want to know which messages are implemented right now, click here.

Usage

Versioning

We are following semantic versioning for POGOProtos. Every version will be mapped to their current PokémonGo version.

Version Android iOS Extra
2.14.0 0.71.0 1.41.0
2.13.0 0.69.1 1.39.1
2.12.0 0.69.0 1.39.0
2.11.0 0.67.2 1.37.2
2.11.0-beta 0.67.1 1.37.1
2.10.x 0.63.1 1.33.1
2.9.2 0.61.0 1.31.0 Updated protobuf to 3.3.0
2.9.1 0.61.0 1.31.0 Updated protobuf to 3.2.0
2.9.0 0.61.0 1.31.0
2.8.0 0.59.1 1.29.1
2.7.0 0.57.2 1.27.2
2.6.x 0.55.0 1.25.0
2.5.x 0.53.1 1.23.1
2.4.x 0.51.0 1.21.0
2.3.0 0.49.1 1.19.1
2.2.0 0.47.1 1.17.0
2.1.0 0.45.0 1.15.0
2.1.0-beta 0.45.0 1.15.0
2.0.x 0.43.4 1.13.4

If you want to figure out the current version in an automated system, use this file.

https://raw.githubusercontent.com/AeonLucid/POGOProtos/master/.current-version

Note: This file will contain pre-release versions too.

Preparation

Current recommended protoc version: "Protocol Buffers v3.3.0".

You can find download links here.

Windows

Be sure to add protoc to your environmental path.

*nix

Ensure that you have the newest version of protoc installed.

OS X

Use homebrew to install protobuf with brew install --devel protobuf.

Compilation

The compilation creates output specifically for the target language, i.e. respecting naming conventions, etc.
This is an example of how the generated code will be organized:

python compile.py cpp:
 - POGOProtos/Data/PlayerData.proto -> POGOProtos/Data/PlayerData.pb.cpp
python compile.py csharp:
 - POGOProtos/Data/PlayerData.proto -> POGOProtos/Data/PlayerData.g.cs
python compile.py go:
- POGOProtos/Data/*.proto -> github.com/aeonlucid/pogoprotos/data
- POGOProtos/Data/PlayerData.proto -> github.com/aeonlucid/pogoprotos/data/player_data.pb.go
python compile.py java:
 - POGOProtos/Data/*.proto -> com/github/aeonlucid/pogoprotos/Data.java
python compile.py js:
- POGOProtos/**/*.proto -> pogoprotos.js
python compile.py objc:
 - POGOProtos/Data/PlayerData.proto -> POGOProtos/Data/PlayerData.pbobjc.m
python compile.py python:
 - POGOProtos/Data/*.proto -> pogoprotos/data/__init__.py
 - POGOProtos/Data/PlayerData.proto -> pogoprotos/data/player_data_pb2.py
python compile.py ruby:
 - POGOProtos/Data/*.proto -> pogoprotos/data.rb
 - POGOProtos/Data/PlayerData.proto -> pogoprotos/data/player_data.rb

Command

Run python compile.py --help for help.

Extra information

You can find all available languages here https://github.com/google/protobuf.

Libraries

If you don't want to compile POGOProtos but instead use it directly, check out the following repository.

Language Source
NodeJS https://github.com/rastapasta/node-pokemongo-protobuf
NodeJS (pure JS) https://github.com/cyraxx/node-pogo-protos
.NET https://github.com/AeonLucid/POGOProtos.NetStandard1
.NET https://github.com/Necrobot-Private/POGOProtos
.NET https://github.com/johnduhart/POGOProtos-dotnet
PHP https://github.com/jaspervdm/pogoprotos-php
Go https://github.com/pkmngo-odi/pogo-protos
Haskell https://github.com/relrod/pokemon-go-protobuf-types
Rust https://github.com/rockneurotiko/pokemon-go-protobuf-rs

pogoprotos's People

Contributors

aeonlucid avatar alucas avatar cyraxx avatar dev7355608 avatar dmadisetti avatar drdelay avatar fkloft avatar furtif avatar gegy avatar grover-c13 avatar ibotpeaches avatar igio90 avatar jabbink avatar johnduhart avatar keyphact avatar kvey avatar laverdet avatar lennix avatar lord-haji avatar mjmjelde avatar nicoschmitt avatar noctem avatar nostrademous avatar rastapasta avatar relrod avatar shargon avatar spl3en avatar wallycz avatar zechrales avatar zeevallin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pogoprotos's Issues

PokemonData.proto not entirely correct

Testing against some data i got by mitming the game running on a virtual android ive found out that parsing the PokemonData results in some skiped bytes. This indicates strongly, that the current proto definition is not entierly correct. I'll investigate this further but since i havnt worked with protobuf before this will take some time (if i even manage to figure something out).

Import was not found or had errors.

I tried to compile the latest master (cbf0b08), it gave me a bunch of errors:

  • POGOProtos/Inventory/PokemonFamily.proto: File not found.
  • POGOProtos/Inventory/InventoryItemData.proto: Import "POGOProtos/Inventory/PokemonFamily.proto" was not found or had errors.
  • POGOProtos/Inventory/InventoryItemData.proto:25:9: ".POGOProtos.Inventory.Candy" is not defined.
  • POGOProtos/Inventory/InventoryItem.proto: Import "POGOProtos/Inventory/InventoryItemData.proto" was not found or had errors.
  • POGOProtos/Inventory/InventoryItem.proto:9:9: ".POGOProtos.Inventory.InventoryItemData" is not defined.
  • POGOProtos/Inventory/InventoryDelta.proto: Import "POGOProtos/Inventory/InventoryItem.proto" was not found or had errors.
  • POGOProtos/Inventory/InventoryDelta.proto:9:18: ".POGOProtos.Inventory.InventoryItem" is not defined.
  • POGOProtos/Networking/Responses/GetInventoryResponse.proto: Import "POGOProtos/Inventory/InventoryDelta.proto" was not found or had errors.
  • POGOProtos/Networking/Responses/GetInventoryResponse.proto:8:9:".POGOProtos.Inventory.InventoryDelta" is not defined.
  • POGOProtos/Settings/Master/PokemonSettings.proto: Import "POGOProtos/Enums/PokemonId.proto" was listed twice.
  • POGOProtos/Networking/Responses/DownloadItemTemplatesResponse.proto: Import "POGOProtos/Settings/Master/PokemonSettings.proto" was not found or had errors.
  • POGOProtos/Networking/Responses/DownloadItemTemplatesResponse.proto:29:17: ".POGOProtos.Settings.Master.PokemonSettings" is not defined.
  • POGOProtos/Networking/Responses/GetIncensePokemonResponse.proto:6:9: ".POGOProtos.Enums.PokemonId" is not defined.
  • POGOProtos/Inventory/PokemonFamily.proto: File not found.
  • POGOProtos/Inventory/InventoryItemData.proto: Import "POGOProtos/Inventory/PokemonFamily.proto" was not found or had errors.
  • POGOProtos/Inventory/InventoryItemData.proto:25:9: ".POGOProtos.Inventory.Candy" is not defined.
  • POGOProtos/Inventory/InventoryItem.proto: Import "POGOProtos/Inventory/InventoryItemData.proto" was not found or had errors.
  • POGOProtos/Inventory/InventoryItem.proto:9:9: ".POGOProtos.Inventory.InventoryItemData" is not defined.
  • POGOProtos/Inventory/InventoryDelta.proto: Import "POGOProtos/Inventory/InventoryItem.proto" was not found or had errors.
  • POGOProtos/Inventory/InventoryDelta.proto:9:18: ".POGOProtos.Inventory.InventoryItem" is not defined.

I think there are more but I just copied some of them. Am I doing something wrong or should these proto's be fixed?

POGOProtos.Data.PlayerData.tutorialState invalid

Using the latest Protobufs, I get ERROR: Illegal wire type for field Message.Field .POGOProtos.Data.PlayerData.tutorialState: 2 (0 expected) when trying to convert them using protobufjs.

This occurs when doing a RequestType.GET_PLAYER request and I decode the response using the Networking.Responses.GetPlayerResponse protobuf.

I guess the TutorialState enum is incorrect. I can convert the response correctly if I set https://github.com/AeonLucid/POGOProtos/blob/master/src/POGOProtos/Data/PlayerData.proto#L15 to bytes

GetMapObjectsMessage not returning anything.

I can't get a GetMapObjects call to return anything. Other messages work so it's not my call mechanism. The only difference between my requests and pgoapi (working) requests is the latter uses a long instead of a double to represent the lat/lon.

Envelope:

status_code: 2
request_id: 8145806132888207460
requests {
  request_type: GET_MAP_OBJECTS
  request_message: "\n\310\001\200\200\200\200\264\317\235\356\200\001\200\200\200\200\274\317\235\356\200\001\200\200\200\200\304\317\235\356\200\001\200\200\200\200\314\317\235\356\200\001\200\200\200\200\324\317\235\356\200\001\200\200\200\200\334\317\235\356\200\001\200\200\200\200\344\317\235\356\200\001\200\200\200\200\354\317\235\356\200\001\200\200\200\200\364\317\235\356\200\001\200\200\200\200\374\317\235\356\200\001\200\200\200\200\204\320\235\356\200\001\200\200\200\200\214\320\235\356\200\001\200\200\200\200\224\320\235\356\200\001\200\200\200\200\234\320\235\356\200\001\200\200\200\200\244\320\235\356\200\001\200\200\200\200\254\320\235\356\200\001\200\200\200\200\264\320\235\356\200\001\200\200\200\200\274\320\235\356\200\001\200\200\200\200\304\320\235\356\200\001\200\200\200\200\314\320\235\356\200\001\022\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\324]h<\032\232@@!\276\337tM\360M]\300"
}
latitude: 33.20392565818807
longitude: -117.21779190457798
auth_info {
  provider: "ptc"
  token {
    contents: "TGT-4285335-DMZW3ZpdoxiSOXl2hNDuJbQaV3aKjHrbWhoQgffA1MfkdTN0Oo-sso.pokemon.com"
    unknown2: 59
  }
}
unknown12: 989

Message:

cell_id: 9285426803457916928
cell_id: 9285426805605400576
cell_id: 9285426807752884224
cell_id: 9285426809900367872
cell_id: 9285426812047851520
cell_id: 9285426814195335168
cell_id: 9285426816342818816
cell_id: 9285426818490302464
cell_id: 9285426820637786112
cell_id: 9285426822785269760
cell_id: 9285426824932753408
cell_id: 9285426827080237056
cell_id: 9285426829227720704
cell_id: 9285426831375204352
cell_id: 9285426833522688000
cell_id: 9285426835670171648
cell_id: 9285426837817655296
cell_id: 9285426839965138944
cell_id: 9285426842112622592
cell_id: 9285426844260106240
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
since_timestamp_ms: 0
latitude: 33.20392565818807
longitude: -117.21779190457798

Response:

status_code: 3
request_id: 8145806132888207460
auth_ticket {
  start: "\3622\252#\340\330D\365\356X\035\325\200\004w\200 \v\000\227\342\333R\004z\272\177{2\341eF>\3750\230E\304\231\304iq\256M`\351\274\253;UQ\322\344)\"&sp#\017\260D8c"
  expire_timestamp_ms: 1469426830935
  end: "G()\374\\J6\203U\'\366\206.](\016"
}
returns: ""

EggIncubator pokemon_id

The pokemon_id field in the EggIncubator message seems to be uint64 instead of fixed64. After the last commit the returned pokemonId of an incubator is always 0 and the next fields are also wrong.
Example code that works with uint64

public async Task<IEnumerable<PokemonData>> GetPokemons()
{
    var inventory = await session.GetInventory();
    return
        inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData?.PokemonData)
            .Where(p => p != null);
}
private async Task<EggIncubators> GetPlayerIncubators()
{
    var inventory = await session.GetInventory();

    return
        inventory.InventoryDelta.InventoryItems.Select(i => i.InventoryItemData.EggIncubators)
            .Where(p => p != null).First();
}
private async Task IncubateEggs()
{
    var playerPokemons = await GetPlayerPokemonsData();
    var playerIncubators = await GetPlayerIncubators();

    var eggs = playerPokemons
        .Where(p => p.IsEgg)
        .Where(p => p.EggIncubatorId == string.Empty)
        .OrderByDescending(p => p.EggKmWalkedTarget).ToList();

    if (eggs.Count() == 0)
        return;

    var incubators = playerIncubators.EggIncubator
        .Where(p => p.IncubatorType != EggIncubatorType.IncubatorUnset)
        .Where(p => p.UsesRemaining > 0 || p.ItemId == ItemId.ItemIncubatorBasicUnlimited)
        .Where(p => p.PokemonId == 0)
        .OrderByDescending(p => p.UsesRemaining).ToList();

    if (incubators.Count() == 0)
        return;

    foreach (var incubator in incubators)
    {
        if (eggs.Count() == 0)
            break;

        var firstEgg = eggs.First();
        eggs.Remove(firstEgg);

        var useIncubatorResponse = await session.UseItemEggIncubator(incubator.Id, firstEgg.Id);

        Log.Info($"incubator used [ {useIncubatorResponse?.Result} ]");

        await Task.Delay(250);
    }
}

ResponseEnvelope.status_code occasionally length-delimited

ResponseEnvelope.status_code very occasionally seems to be length-delimited, as in these two log excerpts:

[+++] Request to pgorelease.nianticlabs.com//plfe/287/rpc
[+] Request for action GetMapObjects:
[+] Request for action GetHatchedEggs:
[+] Request for action GetInventory:
[+] Request for action CheckAwardedBadges:
[+] Request for action DownloadSettings:
[+] Waiting for response...
[+] Response for action GetMapObjects
[+] Response for action GetHatchedEggs
[+] Response for action GetInventory
[+] Response for action CheckAwardedBadges
[+] Response for action DownloadSettings
[-] Parsing protobuf of ResponseEnvelope failed: Error: Illegal wire type for field Message.Field .POGOProtos.Networking.Envelopes.ResponseEnvelope.status_code: 2 (0 expected)

[+++] Request to pgorelease.nianticlabs.com//plfe/287/rpc
[+] Request for action GetAssetDigest:
[+] Request for action GetHatchedEggs:
[+] Request for action GetInventory:
[+] Request for action CheckAwardedBadges:
[+] Request for action DownloadSettings:
[+] Waiting for response...
[+] Response for action GetAssetDigest
[+] Response for action GetHatchedEggs
[+] Response for action GetInventory
[+] Response for action CheckAwardedBadges
[+] Response for action DownloadSettings
[-] Parsing protobuf of ResponseEnvelope failed: Error: Illegal wire type for field Message.Field .POGOProtos.Networking.Envelopes.ResponseEnvelope.status_code: 2 (0 expected)

Maybe FortData is wrong?

I'm currently using a bot based on an api wrote on c# and i noticed it actually catch lured pokemons. Checking out rocket api and their protos files, i found this:

On message PokemonFortProto, the number 13 points to MapPokemonProto (https://github.com/Maufeat/Pokemon-Go-Rocket-API/blob/master/PokemonGo/RocketAPI/Proto/MapObjectsResponse.proto#L83)

While on POGOProtos's protos the #13 points to FortLureInfo (https://github.com/AeonLucid/POGOProtos/blob/master/src/POGOProtos/Map/Fort/FortData.proto#L44)

Could you please take a second look to this? Seems likes its mappokemon instead of lureinfo.

Catch a pokemon can never get a nice/great/execllent throw response now.

When catching a pokemon, we never get a nice/great/execllent throw award, for whatever parameters we used.

Only award we can get now is the curve ball.

Request:

catch_pokemon(encounter_id=encounter_id,
                                                   pokeball=pokeball,
                                                   normalized_reticle_size=1.950,
                                                   spawn_point_id=self.spawn_point_guid,
                                                   hit_pokemon=1,
                                                   spin_modifier=1,
                                                   NormalizedHitPosition=1)

Response

'responses': {
        'CATCH_POKEMON': {
            'status': 1,
            'capture_award': {
                'xp': [100, 10],
                'stardust': [100, 0],
                'candy': [3, 0],
                'activity_type': ['ACTIVITY_CATCH_POKEMON', 'ACTIVITY_CURVE_BALL']
            },
            'captured_pokemon_id': 14826612040371619295 L
        }
    },

Does the server have update CatchPokemon_Request or something?

POGOProtos/Inventory/InventoryItemData.proto

I need to find the Unlimited Incubator ID.
I dont get them. I only get the one with Uses left ( at EggIncubators )
and the UNLIMITED is an item without the explicit ItemID!

Thank You :)

Cant get "GetPokemonFamilies"

var myPokemonFamilies = await GetPokemonFamilies(); var pokemonFamilies = myPokemonFamilies as PokemonFamily[] ?? myPokemonFamilies.ToArray();

Set lure module on Pokestop?

I just stumbled over the repo over reddit and did not think, the protos reengineering is already that far. Incredible.

As far as I can tell, is it possible to programmatically set lure modules on pokestops? I.e. I want to set two lure modules and have two players walk back and forth.

Currently using the node wrapper.

StartGymBattleMessage

I'm using the C# api and basically

PostProtoPayload<Request, StartGymBattleResponse>(RequestType.StartGymBattle, message)

is always returning an empty reponse.

StartGymBattle response is empty

e.g.
GymId = "the long gym ID I got with GetGymDetails"
DefendingPokemonId = the Id of the pokemon of the first member of the gym from GetGymDetails
AttackingPokemonIds = [list of 6 Ids of the player's pokemon - resp. 1 if the gym is owned by the player's team]

Response:
Status = 3
Success = Unset

Anyone else tried it and could confirm?

RPC API Changes

Hi @Grover-c13, @AeonLucid
thanks for the awesome work.
I am having an issue and cannot retrieve the catchable pokemons (I am using the Java API from @Grover-c13 ). The error suggests an IndexOutOfBoundsException which makes me think something could have been changed on the API.
Any chance you guys have experienced some issues as well?
(Or maybe am I doing it wrong!)
How can I help? (Anything to get me started on protobuf and how to fix this ^^)

Thanks a lot

Problem with SetFavoritePokemonMessage

This works fine:
message {{ "pokemonId": "123", "nickname": "My_Pinsir" }} Google.Protobuf.IMessage {POGOProtos.Networking.Requests.Messages.NicknamePokemonMessage}

But this does not:
message {{ "pokemonId": "123", "isFavorite": true }} Google.Protobuf.IMessage {POGOProtos.Networking.Requests.Messages.SetFavoritePokemonMessage}

It always sends back:
parsedPayload {{ "result": "ERROR_POKEMON_NOT_FOUND" }} POGOProtos.Networking.Responses.SetFavoritePokemonResponse

Removing BOM from files

Some of the .proto files have a ByteOrderMark set which confuses some scanners/parser.

Could we please remove these?

UpgradePokemonMessage

UpgradePokemonMessage.proto has a uint64 for the pokemon_id and i think it's wrong...
I tried multiple times to get this to work but i can't,
so im guessing it has to be fixed64?!

source for .proto files

This is just a question, not an issue - didn't know where else to ask.

How did you get all these .proto files? Was it all intelligent guess work or there is some better, more formal method?

GetLuredFort

Is there any response to get all lured forts? because the response isnt getting the lured forts, only non-lured.

Disconnect the Session?

Is the something like a session.Shutdown()? I know there isn't that exact one but a similar functionally (besides killing the loop). I did not see anything in RequestMessages either for something like this. I have the startup code from the demo shoved into a function that gets called from the HandleCommands loop, and would like to add a disconnect command so a user could log out without closing the window and change the passed arguments to the StartUp. BTW great work on the API, once I get more familiar with it and setup some basic stuff I am hoping to wrap it all up inside an Xna project.

Syntax errors when compiling with square/wire

Exception in thread "main" java.lang.IllegalStateException: Syntax error in POGOProtos/src/POGOProtos/Data/Battle/BattleAction.proto at 1:1: expected a word at com.squareup.wire.schema.internal.parser.ProtoParser.unexpected(ProtoParser.java:1086) at com.squareup.wire.schema.internal.parser.ProtoParser.unexpected(ProtoParser.java:1082) at com.squareup.wire.schema.internal.parser.ProtoParser.readWord(ProtoParser.java:883) at com.squareup.wire.schema.internal.parser.ProtoParser.readDeclaration(ProtoParser.java:105) at com.squareup.wire.schema.internal.parser.ProtoParser.readProtoFile(ProtoParser.java:82) at com.squareup.wire.schema.internal.parser.ProtoParser.parse(ProtoParser.java:34) at com.squareup.wire.schema.SchemaLoader.loadFromDirectories(SchemaLoader.java:146) at com.squareup.wire.schema.SchemaLoader.load(SchemaLoader.java:106) at com.squareup.wire.WireCompiler.compile(WireCompiler.java:211) at com.squareup.wire.WireCompiler.main(WireCompiler.java:126)

This can be recreated by cloning square/wire, running mvn clean install, and using the generated jar as such

java -jar wire-compiler-2.2.0-jar-with-dependencies.jar --proto_path=src/POGOProtos/ --java_out=generated-java/wire

Let me know if there is any easy fix or if this is completely out of the scope of the library.

Thanks.

can add a proxy option?

In china, we should use a proxy or a vpn to visit google.
proxy = {'http': 'http://127.0.0.1:1080'}

UseItemPotionMessage problem

Hi,

i think that UseItemPotionMessage should be
fixed64 pokemon_id
instead of uint64

also this probably apply as well to ALL others pokemon_id, i can see that the value are mixed, some are uint64 someother fixed64

Incense Encounters Don't Work

Using latest commits for protos

I can do: UseIncense -> GetIncensePokemon() -> IncenseEncounter() and here it complaints and throws "INCENSE_ENCOUNTER_NOT_AVAILABLE"

GetIncensePokemon() returns "INCENSE ENCOUNTER AVAILABLE". I then invoke IncenseEncounter with the fixed64 encounter_id and string encounter_location, but get the INCENSE_ENCOUNTER_NOT_AVAILABLE return.

I did modify my proto for IncenseEncounterMessage to be fixed64 for encounter_id to match the GetIncensePokemon response.

Still doesn't work unfortunately.

Is POGOProtos.Inventory.InventoryItem deleted_item_key incorrect?

It seems like InventoryItem has an incorrect type. I'm currently running with the following changes applied and everything is great.. But this message is in a very commonly used request (GetInventoryResponse) so I'm hesitant to submit a PR because I feel like others would have run into this already.

Also when this key is set it means a Pokemon has been deleted from the player's "inventory" (i.e. it was released), and key represents the pokemon_id. There may be other cases, but if so I haven't seen them yet.

Has anyone else seen this yet?

--- a/src/POGOProtos/Inventory/InventoryItem.proto
+++ b/src/POGOProtos/Inventory/InventoryItem.proto
@@ -5,6 +5,9 @@ import "POGOProtos/Inventory/InventoryItemData.proto";

 message InventoryItem {
        int64 modified_timestamp_ms = 1;
-       int64 deleted_item_key = 2;
+       message DeletedItem {
+               fixed64 key = 1;
+       }
+       DeletedItem deleted_item_key = 2;
        .POGOProtos.Inventory.InventoryItemData inventory_item_data = 3;
 }

Egg target km always 0

Server response contains eggs have egg_km_walked_target and egg_km_walked_start is 0
Is this protobuff problem?

Extracting the .proto files

Any chance you could explain how you go the .proto files for Pokemon Go? I've tried for hours to find a way to extract them myself and eventually gave up. I'd love to better understand how you were able to get ahold of them.

var type problem with hatchedeggs response

Hello from the JavaAPI, we are currently implementing the egg handling into our api, but we got problem with it this var .
As you can see that should be a pokemonID or smth like that, but we always get a big number that doesnt look like a PokemonID, any idea for this ?

There is still problem with proto compilation for java at least (inventory related)

Compiling \POGOProtos\Networking\Responses\GetInventoryResponse.proto.. POGOProtos/Inventory/PokemonFamily.proto: File not found. POGOProtos/Inventory/InventoryItemData.proto: Import "POGOProtos/Inventory/PokemonFamily.proto" was not found or had errors. POGOProtos/Inventory/InventoryItemData.proto:25:9: ".POGOProtos.Inventory.Candy" is not defined. POGOProtos/Inventory/InventoryItem.proto: Import "POGOProtos/Inventory/InventoryItemData.proto" was not found or had errors. POGOProtos/Inventory/InventoryItem.proto:9:9: ".POGOProtos.Inventory.InventoryItemData" is not defined. POGOProtos/Inventory/InventoryDelta.proto: Import "POGOProtos/Inventory/InventoryItem.proto" was not found or had errors. POGOProtos/Inventory/InventoryDelta.proto:9:18: ".POGOProtos.Inventory.InventoryItem" is not defined. POGOProtos/Networking/Responses/GetInventoryResponse.proto: Import "POGOProtos/Inventory/InventoryDelta.proto" was not f

Nickname_Pokemon returns either status 2(invalid name) or 3(pokemon not found)

using python compiled version v1.0

2 fields:

e.g.
pokemon_id = (the super long pokemon integer id from pokemon['id'])
nickname = "test123"
response {status: 3}

pokemon_id = (the super long pokemon integer id from pokemon['id'])
nickname = "12.34-56A-78B-90D" # too long
response {status: 2}

I was planning to use the nickname feature to tag my pokemons with their IV values. All chars are ASCII, so there shouldn't be any encoding issue.

Compiled version for Node

Hi, @rastapasta wrote a script that compiles your protos to a desc file. I quickly created a requirable node package for easy use across projects, no need to have to recompile the protos myself all the time if the libraries I depend on have them anyway. Here it is: https://github.com/rubenvereecken/node-pokemongo-protobuf

It's different from the code generation approach in that requiring this module gives you an object you can work with and has everything contained.

Think we could link this here?

Question: Function to retrieve other user's details?

Hello,

I am looking to see if there is a function to retrieve another user's basic details, like level, pokemon caught, etc.
The best I could see was the GetPlayerProfile call, but it seems to retrieve my own details even if I provide the player_name in the message... any ideas or tips?

Note: wouldnt let me label this as question, I guess I dont have permissions. :P

1 click db creation

if you include a create_db.py file with contents:

import db
db.Base.metadata.create_all(db.get_engine())

one can create the db.sqlite without any typing

Rename Reserved keyword "class"?

Settings.Master.PokemonSettings uses "class" as one of the properties:

.POGOProtos.Enums.PokemonClass class = 14;

"class" is a reserved word in various languages and when running protoc for those languages, it can result in some invalid code.

Ideally the fix for this issue is in the code generators, but while we wait for those parsers to get better, a quick solution here is rename "class" to "clazz".

.POGOProtos.Enums.PokemonClass clazz = 14;

CaptureAward has some invalid types

Well, all invalid types. They're all sent as bytes.

image

This doesn't look correct at all... I'll MITM my phone today while capturing a Pokemon and see if I can get a rough message from that.

Software License

I would love if this codebase had some kind of software license. I would suggest MIT since that protects you from liability and lets anyone use this for any project. Closed or open source. Thoughts?

get_map_objects not returning forts/pokemon

Using the latest version of the Protos, I can't seem to get the forts and pokemon listed in the response dictionary when I call get_map_objects. The version used in the pgoapi (https://github.com/tejado/pgoapi) seems to work perfectly fine, but when the same request is made using the latest code, it doesn't seem to list any forts or pokemon. It still lists cell ids and session timestamps and the status returned is 1.

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.