Big update

- Added asset session downloader
- Added on off option logging request types
- Updated proto files
- Updated readme.md
- Smoother setup process
- Added various console commands
- Added claim codename packet
- Added encounter packet
- Added *fixed* download url packet
- Various changes, cant remember at all
This commit is contained in:
Felix
2016-08-15 13:09:42 +02:00
parent 1db70b4d96
commit bf4e26e338
41 changed files with 1971 additions and 324 deletions

View File

@@ -10,7 +10,9 @@ export default function CheckAwardedBadges(obj) {
return (
new proto.Networking.Responses.CheckAwardedBadgesResponse({
success: true
success: true,
awarded_badges: [],
awarded_badge_levels: []
}).encode()
);

View File

@@ -0,0 +1,25 @@
import proto from "../proto";
import { GetPlayer } from "./";
/**
* @param {Request} req
* @param {Player} player
* @return {Object}
*/
export default function ClaimCodeName(req, player) {
let data = proto.Networking.Requests.Messages.ClaimCodenameMessage.decode(req.request_message.toBuffer());
player.username = data.codename;
return (
new proto.Networking.Responses.ClaimCodenameResponse({
codename: data.codename,
user_message: data.codename,
is_assignable: true,
status: 1
}).encode()
);
}

View File

@@ -9,8 +9,8 @@ export default function DownloadRemoteConfigVersion(obj) {
return (
new proto.Networking.Responses.DownloadRemoteConfigVersionResponse({
result: 1,
item_templates_timestamp_ms: 1468540960537,
asset_digest_timestamp_ms: 1467338276561000
item_templates_timestamp_ms: new Date().getTime() * 1e3,
asset_digest_timestamp_ms: new Date().getTime() * 1e3
}).encode()
);

View File

@@ -10,30 +10,37 @@ export default function DownloadSettings(obj) {
return (
new proto.Networking.Responses.DownloadSettingsResponse({
hash: "54b359c97e46900f87211ef6e6dd0b7f2a3ea1f5",
hash: "2788184af4004004d6ab0740f7632983332106f6",
settings: new proto.Settings.GlobalSettings({
fort_settings: new proto.Settings.FortSettings({
interaction_range_meters: 40,
max_total_deployed_pokemon: 10,
max_player_deployed_pokemon: 1,
deploy_stamina_multiplier: 2,
far_interaction_range_meters: 1000
"interaction_range_meters": 40.25098039215686,
"max_total_deployed_pokemon": 10,
"max_player_deployed_pokemon": 1,
"deploy_stamina_multiplier": 8.062745098039215,
"deploy_attack_multiplier": 0,
"far_interaction_range_meters": 1000.0156862745098
}),
map_settings: new proto.Settings.MapSettings({
pokemon_visible_range: 70,
poke_nav_range_meters: 751,
encounter_range_meters: 50,
get_map_objects_min_refresh_seconds: 10,
get_map_objects_max_refresh_seconds: 30,
get_map_objects_min_distance_meters: 10,
google_maps_api_key: CFG.SERVER_GMAPS_API_KEY
"pokemon_visible_range": 70.00196078431372,
"poke_nav_range_meters": 751.0156862745098,
"encounter_range_meters": 50.25098039215686,
"get_map_objects_min_refresh_seconds": 10.007843017578125,
"get_map_objects_max_refresh_seconds": 30.01568603515625,
"get_map_objects_min_distance_meters": 10.007843017578125,
"google_maps_api_key": CFG.SERVER_GMAPS_API_KEY
}),
inventory_settings: new proto.Settings.InventorySettings({
max_pokemon: 1000,
max_bag_items: 1000,
base_pokemon: 250,
base_bag_items: 350,
base_eggs: 9
"max_pokemon": 1000,
"max_bag_items": 1000,
"base_pokemon": 250,
"base_bag_items": 350,
"base_eggs": 9
}),
gps_settings: new proto.Settings.GpsSettings({
driving_warning_speed_meters_per_second: 10,
driving_warning_cooldown_minutes: 0,
driving_speed_sample_interval_seconds: 0,
driving_speed_sample_count: 0
}),
minimum_client_version: CFG.MINIMUM_CLIENT_VERSION
})

View File

@@ -10,46 +10,68 @@ import { decodeLong } from "../utils";
*/
export default function Encounter(req) {
let data = proto.Networking.Requests.Messages.EncounterMessage.decode(req.request_message.toBuffer());
let encounter_id = decodeLong(
data.encounter_id.high, data.encounter_id.low, data.encounter_id.unsigned
);
let id = decodeLong({
"low": 0,
"high": 0,
"unsigned": true
});
return (
new proto.Networking.Responses.EncounterResponse({
wild_pokemon: new proto.Map.Pokemon.WildPokemon({
encounter_id: 11810991820755313517,
last_modified_timestamp_ms: 1470787552996,
latitude: 39.19047143172622,
longitude: -96.58502161502839,
spawn_point_id: "87bdd289c69",
pokemon_data: new proto.Data.PokemonData({
pokemon_id: 19,
cp: 277,
stamina: 41,
stamina_max: 41,
move_1: 221,
move_2: 26,
height_m: 0.22802678267819977,
weight_kg: 1.3452539511871338,
individual_attack: 9,
individual_defense: 13,
individual_stamina: 14,
cp_multiplier: 0.5663545199394226
wild_pokemon: new proto.Map.Pokemon.WildPokemon({
encounter_id: decodeLong({
"low": -1477718883,
"high": -1178282273,
"unsigned": true
}),
time_till_hidden_ms: 730176
last_modified_timestamp_ms: decodeLong({
"low": 2047340539,
"high": 342,
"unsigned": false
}),
latitude: 39.19071817474392,
longitude: -96.58505386390713,
spawn_point_id: "87bdcd8e959",
pokemon_data: new proto.Data.PokemonData({
id: id,
pokemon_id: 17,
cp: 48,
stamina: 22,
stamina_max: 22,
move_1: 210,
move_2: 45,
deployed_fort_id: "",
owner_name: "",
is_egg: false,
egg_km_walked_target: 0,
egg_km_walked_start: 0,
origin: 0,
height_m: 0.8371214866638184,
weight_kg: 19.039264678955078,
individual_attack: 6,
individual_defense: 12,
individual_stamina: 7,
cp_multiplier: 0.16639786958694458,
pokeball: 0,
captured_cell_id: id,
battles_attacked: 0,
battles_defended: 0,
egg_incubator_id: "",
creation_time_ms: id,
num_upgrades: 0,
additional_cp_multiplier: 0,
favorite: 0,
nickname: "",
from_fort: 0
}),
time_till_hidden_ms: 336009
}),
background: proto.Networking.Responses.EncounterResponse.Background.PARK,
status: proto.Networking.Responses.EncounterResponse.Status.ENCOUNTER_SUCCESS,
background: 0,
status: 1,
capture_probability: new proto.Data.Capture.CaptureProbability({
pokeball_type: [1, 2, 3],
capture_probability: [
0.352886438369751,
0.47944003343582153,
0.5812440514564514
],
reticle_difficulty_scale: 2
capture_probability: [0.6009692549705505, 0.7479367256164551, 0.8407744765281677],
reticle_difficulty_scale: 0
})
}).encode()
);

View File

@@ -6,10 +6,10 @@ import * as CFG from "../../cfg";
let asset = fs.readFileSync(CFG.ASSET_DIGEST_PATH);
/**
* @param {Object} obj
* @param {Request} req
* @return {Object}
*/
export default function GetAssetDigest(obj) {
export default function GetAssetDigest(req) {
return (asset);

View File

@@ -2,24 +2,42 @@ import proto from "../proto";
import DownloadUrlEntry from "./Data.DownloadUrlEntry";
import {
getDownloadUrlByAssetId
} from "../utils.js";
/**
* @return {Object}
*/
export default function GetDownloadUrls() {
export default function GetDownloadUrls(req, download) {
let download_urls = [
DownloadUrlEntry({
asset_id: "9649e04b-ccd8-4b1c-b066-cc75ed4c0976/1467338147687000",
url: "https://storage.googleapis.com/cloud_assets_pgorelease/bundles/android/pm0101?generation=1467338147687000&GoogleAccessId=pgorelease-service-account@pgorelease.iam.gserviceaccount.com&Expires=1469970173&Signature=CY4YbWipMVMUzyDgHGceoo2NO429spFyH39p%2FSMltBlQOBYLcRD8panRgTH8tuMc3uB65rtp613IkGwUMaMMXx40v0NBECEsRXcggYxYluO2k4waShMyOmWHOomMPKwGXg5ot93wLH6aXFwv0%2FD%2FUaqZDrJYJ9bMRcsF2KlPPy363XbrbcSCcT19otqU3D9yjWU1mDbzRy9yZRqmaCu%2FPtWHKKWnUKiN2f2UqL8Gbulex8BDpm4OKf4lXnOwAKYDpcAMph%2FC3LKVhvoRuryzPRJgXojb1CvfHaY0svUFoKq0N%2FuFl9hzR8RAVLsAPaD%2FpKuql4BUm%2BZtoc%2BWi0lQXA%3D%3D",
size: 169205,
checksum: 0xbe30d925
})
];
let data = proto.Networking.Requests.Messages.GetDownloadUrlsMessage.decode(req.request_message.toBuffer());
return (
new proto.Networking.Responses.GetDownloadUrlsResponse({
download_urls: download_urls
}).encode()
);
let key = data.asset_id[0];
let download_urls = [];
let obj = getDownloadUrlByAssetId(key);
return new Promise((resolve) => {
download(key).then((asset) => {
download_urls.push(
new proto.Data.DownloadUrlEntry({
url: asset[0].asset,
asset_id: key,
size: obj.size,
checksum: obj.checksum
})
);
let output = (
new proto.Networking.Responses.GetDownloadUrlsResponse({
download_urls: download_urls
}).encode()
);
resolve(output);
});
});
}

View File

@@ -13,21 +13,39 @@ export default function GetInventoryData(obj) {
success: true,
inventory_delta: new proto.Inventory.InventoryDelta({
inventory_items: [
// player stats
new proto.Inventory.InventoryItem({
inventory_item_data: new proto.Inventory.InventoryItemData({
"modified_timestamp_ms": new Date().getTime() * 1e3,
"inventory_item_data": new proto.Inventory.InventoryItemData({
"candy": new proto.Inventory.Candy({
"family_id": 48,
"candy": 3
})
})
}),
new proto.Inventory.InventoryItem({
"modified_timestamp_ms": new Date().getTime() * 1e3,
"inventory_item_data": new proto.Inventory.InventoryItemData({
"candy": new proto.Inventory.Candy({
"family_id": 16,
"candy": 3
})
})
}),
new proto.Inventory.InventoryItem({
"modified_timestamp_ms": new Date().getTime() * 1e3,
"inventory_item_data": new proto.Inventory.InventoryItemData({
"player_stats": new proto.Data.Player.PlayerStats({
"level": 98,
"experience": 2000,
"prev_level_xp": 1000,
"next_level_xp": 6000,
"km_walked": 0.55459213256836,
"pokemons_encountered": 1,
"unique_pokedex_entries": 1,
"pokemons_captured": 1,
"level": 3,
"experience": 0,
"prev_level_xp": 0,
"next_level_xp": 0,
"km_walked": 1.017870306968689,
"pokemons_encountered": 6,
"unique_pokedex_entries": 3,
"pokemons_captured": 3,
"evolutions": 0,
"poke_stop_visits": 1,
"pokeballs_thrown": 1,
"poke_stop_visits": 25,
"pokeballs_thrown": 11,
"eggs_hatched": 0,
"big_magikarp_caught": 0,
"battle_attack_won": 0,
@@ -42,66 +60,109 @@ export default function GetInventoryData(obj) {
})
})
}),
// player camera
new proto.Inventory.InventoryItem({
inventory_item_data: new proto.Inventory.InventoryItemData({
"player_camera": new proto.Data.Player.PlayerCamera({
is_default_camera: true
})
})
}),
// player currencies
new proto.Inventory.InventoryItem({
inventory_item_data: new proto.Inventory.InventoryItemData({
"player_currency": new proto.Data.Player.PlayerCurrency({
gems: 0
})
})
}),
// item
new proto.Inventory.InventoryItem({
inventory_item_data: new proto.Inventory.InventoryItemData({
"modified_timestamp_ms": new Date().getTime() * 1e3,
"inventory_item_data": new proto.Inventory.InventoryItemData({
"item": new proto.Inventory.Item.ItemData({
item_id: proto.Inventory.Item.ItemId.ITEM_MASTER_BALL,
count: 4,
unseen: false
"item_id": 901,
"count": 1,
"unseen": true
})
})
}),
// pokedex entry
new proto.Inventory.InventoryItem({
inventory_item_data: new proto.Inventory.InventoryItemData({
"modified_timestamp_ms": new Date().getTime() * 1e3,
"inventory_item_data": new proto.Inventory.InventoryItemData({
"pokemon_data": new proto.Data.PokemonData({
"id": 16,
"pokemon_id": proto.Enums.PokemonId.PIDGEY,
"cp": 10,
"stamina": 10,
"stamina_max": 10,
"move_1": 219,
"move_2": 121,
"deployed_fort_id": "",
"owner_name": "",
"is_egg": false,
"egg_km_walked_target": 0,
"egg_km_walked_start": 0,
"origin": 0,
"height_m": 0.29406625032424927,
"weight_kg": 2.070491313934326,
"individual_attack": 3,
"individual_defense": 5,
"individual_stamina": 10,
"cp_multiplier": 0.09399999678134918,
"pokeball": 1,
"captured_cell_id": 2277362944,
"battles_attacked": 0,
"battles_defended": 0,
"egg_incubator_id": "",
"creation_time_ms": 9029623884583797000,
"num_upgrades": 0,
"additional_cp_multiplier": 0,
"favorite": 0,
"nickname": "",
"from_fort": 0
})
})
}),
new proto.Inventory.InventoryItem({
"modified_timestamp_ms": new Date().getTime() * 1e3,
"inventory_item_data": new proto.Inventory.InventoryItemData({
"item": new proto.Inventory.Item.ItemData({
"item_id": 1,
"count": 145,
"unseen": false
})
})
}),
new proto.Inventory.InventoryItem({
"modified_timestamp_ms": new Date().getTime() * 1e3,
"inventory_item_data": {
"candy": new proto.Inventory.Candy({
"family_id": 7,
"candy": 3
})
}
}),
new proto.Inventory.InventoryItem({
"modified_timestamp_ms": new Date().getTime() * 1e3,
"inventory_item_data": new proto.Inventory.InventoryItemData({
"pokedex_entry": new proto.Data.PokedexEntry({
"pokemon_id": 6,
"times_encountered": 1,
"pokemon_id": 16,
"times_encountered": 3,
"times_captured": 1,
"evolution_stone_pieces": 0,
"evolution_stones": 0
})
})
}),
// pokemon
new proto.Inventory.InventoryItem({
inventory_item_data: new proto.Inventory.InventoryItemData({
"pokemon_data": new proto.Data.PokemonData({
pokemon_id: 19,
cp: 277,
stamina: 41,
stamina_max: 41,
move_1: 221,
move_2: 26,
height_m: 0.22802678267819977,
weight_kg: 1.3452539511871338,
individual_attack: 9,
individual_defense: 13,
individual_stamina: 14,
cp_multiplier: 0.5663545199394226,
additional_cp_multiplier: 0,
favorite: 0,
nickname: "BauerVomLande",
owner_name: "Administrator",
origin: 0,
is_egg: false
"modified_timestamp_ms": new Date().getTime() * 1e3,
"inventory_item_data": new proto.Inventory.InventoryItemData({
"egg_incubators": new proto.Inventory.EggIncubators({
"egg_incubator": [
new proto.Inventory.EggIncubator({
"id": "EggIncubatorProto-2589714687259241229",
"item_id": 901,
"incubator_type": 1,
"uses_remaining": 0,
"pokemon_id": 0,
"start_km_walked": 0,
"target_km_walked": 0
})
]
})
})
}),
new proto.Inventory.InventoryItem({
"modified_timestamp_ms": new Date().getTime() * 1e3,
"inventory_item_data": new proto.Inventory.InventoryItemData({
"item": new proto.Inventory.Item.ItemData({
"item_id": 401,
"count": 2,
"unseen": true
})
})
})

View File

@@ -1,5 +1,9 @@
import proto from "../proto";
import {
decodeLong
} from "../utils";
/**
* @param {Request} request
* @return {Object}

View File

@@ -1,5 +1,4 @@
import proto from "../proto";
/**
* @param {Object} obj
* @return {Object}
@@ -16,10 +15,12 @@ function getPlayerDataPacket(obj) {
max_pokemon_storage: 250,
max_item_storage: 350,
daily_bonus: new proto.Data.Player.DailyBonus({
next_collected_timestamp_ms: 1470174535972,
next_defender_bonus_collect_timestamp_ms: 1470174535972
}),
contact_settings: new proto.Data.Player.ContactSettings(obj.contact_settings),
currencies: obj.currencies
currencies: obj.currencies,
remaining_codename_claims: 0
})
);

View File

@@ -10,13 +10,8 @@ export default function LevelUpRewards(obj) {
return (
new proto.Networking.Responses.LevelUpRewardsResponse({
result: proto.Networking.Responses.LevelUpRewardsResponse.Result.SUCCESS,
items_awarded: [
new proto.Inventory.Item.ItemAward({
item_id: proto.Inventory.Item.ItemId.ITEM_GREAT_BALL,
item_count: 2
})
],
result: 2,
items_awarded: [],
items_unlocked: []
}).encode()
);

View File

@@ -9,7 +9,7 @@ import { GetPlayer } from "./";
export default function MarkTutorialComplete(player) {
return (
new proto.Networking.Respones.MarkTutorialCompleteResponse({
new proto.Networking.Responses.MarkTutorialCompleteResponse({
success: true,
player_data: GetPlayer(player).player_data
}).encode()

View File

@@ -14,14 +14,21 @@ export default function SfidaActionLog(obj) {
log_entries: [
new proto.Data.Logs.ActionLogEntry({
timestamp_ms: (new Date().getTime() - 1e4) * 1e3,
sfida: false,
catch_pokemon: null,
fort_search: new proto.Data.Logs.FortSearchLogEntry({
result: proto.Data.Logs.FortSearchLogEntry.Result.SUCCESS,
fort_id: "wurf",
fort_id: "",
items: [
new proto.Inventory.Item.ItemData({
item_id: proto.Inventory.Item.ItemId.ITEM_MASTER_BALL,
count: 2,
unseen: false
}),
new proto.Inventory.Item.ItemData({
item_id: proto.Inventory.Item.ItemId.ITEM_ULTRA_BALL,
count: 2,
unseen: false
})
]
})

View File

@@ -18,6 +18,7 @@ export CheckAwardedBadges from "./Responses.CheckAwardedBadges";
export GetDownloadUrls from "./Responses.GetDownloadUrls";
export MarkTutorialComplete from "./Responses.MarkTutorialComplete";
export ClaimCodeName from "./Responses.ClaimCodeName";
export LevelUpRewards from "./Responses.LevelUpRewards";