Added mongodb, many updates & bug fixes

- Added mongodb database
- Removed dumps
- Added jwt google auth decode plugin
- Added long decode plugin
- Updated protos to latest commit
- Updated readme
- Added avatar saving
- Fixed bug, where username, level and exp didnt got displayed
- Default username is "undefined"
- Clear console stdin
- Save players into db stdin
- Seperated login/register phase
- Added decode long util method
This commit is contained in:
Felix
2016-08-08 22:25:28 +02:00
parent dbddba2eee
commit e9ccb672dc
30 changed files with 662 additions and 17469 deletions

View File

@@ -0,0 +1,18 @@
import proto from "../proto";
/**
* @param {Object}
* @return {Object}
*/
export default function DownloadUrlEntry(obj) {
return (
new proto.Data.DownloadUrlEntry({
url: obj.url,
asset_id: obj.id,
size: obj.size,
checksum: obj.checksum
})
);
}

View File

@@ -11,7 +11,7 @@ export default function ResponseEnvelope(obj) {
status_code: obj.status,
unknown6: new proto.Networking.Envelopes.Unknown6Response({
response_type: 6,
response_data: new proto.Networking.Envelopes.Unknown6Response.Unknown2({
unknown2: new proto.Networking.Envelopes.Unknown6Response.Unknown2({
unknown1: 1
})
}),

View File

@@ -26,7 +26,7 @@ export default function DownloadSettings(obj) {
get_map_objects_min_refresh_seconds: 5,
get_map_objects_max_refresh_seconds: 30,
get_map_objects_min_distance_meters: 10,
google_maps_api_key: "AIzaSyDF9rkP8lhcddBtvH9gVFzjnNo13WtmJIM"
google_maps_api_key: CFG.SERVER_GMAPS_API_KEY
}),
inventory_settings: new proto.Settings.InventorySettings({
max_pokemon: 1000,

View File

@@ -0,0 +1,25 @@
import proto from "../proto";
import DownloadUrlEntry from "./Data.DownloadUrlEntry";
/**
* @return {Object}
*/
export default function GetDownloadUrls() {
let download_urls = [
DownloadUrlEntry({
url: "",
asset_id: "",
size: 0,
checksum: 0
})
];
return (
new proto.Networking.Responses.GetDownloadUrlsResponse({
download_urls: download_urls
}).encode()
);
}

View File

@@ -10,37 +10,81 @@ export default function GetInventoryData(obj) {
new proto.Networking.Responses.GetInventoryResponse({
success: true,
inventory_delta: new proto.Inventory.InventoryDelta({
original_timestamp_ms: new Date().getTime * 1000,
new_timestamp_ms: new Date().getTime * 1000,
inventory_items: [
// player stats
new proto.Inventory.InventoryItem({
inventory_item_data: new proto.Inventory.InventoryItemData({
pokemon_data: new proto.Data.PokemonData({
id: 123781297398,
pokemon_id: 25,
cp: 10000000000,
is_egg: false,
height_m: 100,
weight_kg: 1,
move_1: 219,
move_2: 26,
deployed_fort_id: 0,
owner_name: "",
origin: 0,
individual_attack: 100,
individual_defense: 100,
individual_stamina: 100,
cp_multiplier: 100,
pokeball: 1,
creation_time_ms: new Date().getTime() * 1000
"player_stats": new proto.Data.Player.PlayerStats({
"level": 99,
"experience": 1304364,
"prev_level_xp": 900000,
"next_level_xp": 1350000,
"km_walked": 54.55459213256836,
"pokemons_encountered": 3942,
"unique_pokedex_entries": 93,
"pokemons_captured": 3569,
"evolutions": 782,
"poke_stop_visits": 3113,
"pokeballs_thrown": 5783,
"eggs_hatched": 27,
"big_magikarp_caught": 11,
"battle_attack_won": 36,
"battle_attack_total": 44,
"battle_defended_won": 0,
"battle_training_won": 1,
"battle_training_total": 2,
"prestige_raised_total": 190,
"prestige_dropped_total": 27000,
"pokemon_deployed": 2,
"small_rattata_caught": 79
})
})
}),
// pokedex entry
new proto.Inventory.InventoryItem({
inventory_item_data: new proto.Inventory.InventoryItemData({
item: new proto.Inventory.Item({
item_id: 4,
count: 1000
"pokedex_entry": new proto.Data.PokedexEntry({
"pokemon_id": 147,
"times_encountered": 7,
"times_captured": 6,
"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({
"id": 151,
"pokemon_id": 151,
"cp": 9454,
"stamina": 53,
"stamina_max": 53,
"move_1": 221,
"move_2": 80,
"deployed_fort_id": "",
"owner_name": "",
"is_egg": false,
"egg_km_walked_target": 0,
"egg_km_walked_start": 0,
"origin": 0,
"height_m": 0.3461824357509613,
"weight_kg": 2.0753486156463623,
"individual_attack": 2,
"individual_defense": 0,
"individual_stamina": 9,
"cp_multiplier": 0.5974000096321106,
"pokeball": 2,
"battles_attacked": 0,
"battles_defended": 0,
"egg_incubator_id": "",
"creation_time_ms": new Date().getTime() * 1000,
"num_upgrades": 0,
"additional_cp_multiplier": 0,
"favorite": 0,
"nickname": "Ad°0lf_fH$TL3R",
"from_fort": 0
})
})
})

View File

@@ -0,0 +1,52 @@
import proto from "../proto";
/**
* @param {Request} request
* @return {Object}
*/
export default function GetMapObjects(request) {
var cells = proto.Networking.Requests.Messages.GetMapObjectsMessage.decode(request.request_message.toBuffer()).cell_id;
var cellsRes = [];
cells.forEach((cell)=>{
cellsRes.push(new proto.Map.MapCell({
s2_cell_id: cell,
current_timestamp_ms: new Date().getTime() * 1000,
forts: [
new proto.Map.Fort.FortData({
id: "wuff",
last_modified_timestamp_ms: new Date().getTime() * 1000,
latitude: 39.1893730163574220,
longitude: -96.5853271484375000,
owned_by_team: 2,
guard_pokemon_id: 150,
guard_pokemon_cp: 2000,
gym_points: 1000,
is_in_battle: false,
enabled: true,
type: proto.Map.Fort.FortType.GYM,
sponsor: proto.Map.Fort.FortSponsor.MCDONALDS,
rendering_type: proto.Map.Fort.FortRenderingType.DEFAULT
})
],
spawn_points: [ ],
deleted_objects: [ ],
is_truncated_list: false,
fort_summaries: [ ],
decimated_spawn_points: [ ],
wild_pokemons: [ ],
catchable_pokemons: [ ],
nearby_pokemons: [ ]
}));
});
return (
new proto.Networking.Responses.GetMapObjectsResponse({
status: 1,
map_cells: cellsRes
}).encode()
);
}

View File

@@ -10,7 +10,7 @@ function getPlayerDataPacket(obj) {
new proto.Data.PlayerData({
creation_timestamp_ms: 1467936859925,
username: obj.username,
team: obj.team,
team: proto.Enums.TeamColor.YELLOW,
tutorial_state: obj.tutorial_state,
avatar: new proto.Data.Player.PlayerAvatar(obj.avatar),
max_pokemon_storage: 250,
@@ -18,7 +18,6 @@ function getPlayerDataPacket(obj) {
daily_bonus: new proto.Data.Player.DailyBonus({
next_defender_bonus_collect_timestamp_ms: 1470174535972
}),
// equipped_badge: new proto.Data.Player.EquippedBadge({}),
contact_settings: new proto.Data.Player.ContactSettings({
send_marketing_emails: true
}),
@@ -40,17 +39,25 @@ function buildPlayerData(obj) {
let pokecoins = obj.pokecoins;
let stardust = obj.stardust;
let avatar = {
skin: 2,
let avatar = obj.avatar || {
skin: 0,
hair: 2,
shirt: 1,
pants: 2,
hat: 1,
hat: 0,
shoes: 2,
eyes: 3,
gender: proto.Enums.Gender.MALE,
backpack: 1
};
let tutorial_state = [0, 1, 3, 4, 7];
let tutorial_state = [
proto.Enums.TutorialState.LEGAL_SCREEN,
proto.Enums.TutorialState.AVATAR_SELECTION,
proto.Enums.TutorialState.POKEMON_CAPTURE,
proto.Enums.TutorialState.NAME_SELECTION,
proto.Enums.TutorialState.FIRST_TIME_EXPERIENCE_COMPLETE
];
let currencies = [
new proto.Data.Player.Currency({
@@ -87,7 +94,7 @@ export default function GetPlayer(obj) {
new proto.Networking.Responses.GetPlayerResponse({
success: true,
player_data: packet
}).encode()
})
);
}

View File

@@ -49,6 +49,7 @@ export default function ItemTemplates(obj) {
"damage_window_end_ms": 3400,
"energy_delta": -20
}),
// unused but saved here for later use
move_sequence_settings: new proto.Settings.Master.MoveSequenceSettings({
"sequence": ["anim attacker atk-move", "f2fvfx attacker acid_fast", "sfx attacker 051-0_acid", "wait 0.15", "vfx defender acid_fast_hit", "anim defender damageS01", "wait 0.35", "sys ui-sync", "sys complete"]
}),

View File

@@ -7,8 +7,11 @@ export GetInventory from "./Responses.GetInventory";
export GetPlayer from "./Responses.GetPlayer";
export GetPlayerProfile from "./Responses.GetPlayerProfile";
export GetMapObjects from "./Responses.GetMapObjects";
export ItemTemplates from "./Responses.ItemTemplates";
export CheckAwardedBadges from "./Responses.CheckAwardedBadges";
export GetDownloadUrls from "./Responses.GetDownloadUrls";
export AuthTicket from "./Envelopes.AuthTicket";
export ResponseEnvelope from "./Envelopes.ResponseEnvelope";