Coder Social home page Coder Social logo

snorlax's Introduction

Snorlax Build Status License Donate

Check pokemons stats. Available through Xposed repository

This module acts as a man in the middle on Pokémon Go's communications with the server, and allows us to add extra features to the game.

Features:

  • Prevent PokemonGo from detecting GPS is being spoofed (similar to Mock Mock Locations)
  • Show pokemon stats on the inventory with custom formats
  • Show pokemon stats as a system notification when you encounter them: IV's, HP, CP, level, moves, catch probability
  • Show catch results: Success, missed, flee, etc.

Check out the Wiki page to learn how to use custom formats.

Libraries and tools

Build requirements

  • JDK 1.8
  • Android SDK
  • Android N (API 24)
  • Latest Android SDK Tools and build tools
  • Lombok plugin for Android Studio / IntelliJ IDEA
  • Your device must be rooted and the xposed framekwork must be installed. You can download the xposed framework here.

Build source

Clone the repository (you must have Git installed)

git clone https://github.com/igoticecream/Snorlax.git
cd .\Snorlax\
git submodule update --init

Build

.\gradlew build

To build a release APK

.\gradlew assembleRelease

To install directly to the phone connected via ADB

.\gradlew installRelease

Contributing

  • Fork it!
  • Create your feature branch: git checkout -b my-new-feature
  • Commit your changes: git commit -am 'Useful information about your new features'
  • Push to the branch: git push origin my-new-feature
  • Submit a pull request on the dev (all pull request on master branch will be rejected)

Special thanks

Snorlax would not have been possible without:

Donation

I hope you are liking Snorlax!

If you do, you can support this project to keep coming with new features by buying me a cup of coffee (so i can code by night) or a BigMac at McDonalds. Click the link below and thanks you!

Donate

License

Copyright (c) 2016. Pedro Diaz <[email protected]>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

snorlax's People

Contributors

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

snorlax's Issues

Add extra options for custom format.

Adding the option for move types has already been suggested here but in addition to that it would be nice to see;

  • HP: this would be most useful as 3 different possible strings. Total HP %HPT%, Current HP %HPC%, and HP remaining %HPR% The last of these would be the most useful honestly as it would serve as a quick and accurate way to know which potions to use for what pokes without wastage.
  • Candy %CDY%: simply shows the amount of candy currently available for specific pokemon. ie bulbasaur, ivysaur and venusaur would all show the current amount of bulbasaur candy the player has. Useful for mass evolutions.
  • Nick %NICK%:- In it's current state this shows the pokemon's original name which isn't optimal and I would like to see this show what a pokemon has been renamed as. %NAME% may be a better string to use for showing a pokemons name if that feature is kept.
  • Moveset perfection %MOP%: this is a rather complex one. This would show how good a moveset is for a pokemon compared to the best possible moveset as a percentage. ie a hydro pump vaporeon would show 100% but with water pulse would be 78%
    For this I'm taking combined fast+charge STAB DPS from this site and taking the highest one as 100% for any specific pokemon then calculating the rest by dividing their stab DPS by the optimal stab DPS and multiplying by 100. But I'm not entirely sure how accurate those figures are and if there's a better way to calculate the perfection of a moveset.

Export csv pokemon list

To be able to export a csv file with the ivs and stats of all our pokemons was an option in one of the iv apps before. It could be very useful for the moments when google safety net updates and we are left for a while without snorlax.

Format bug

try this
%NICK% %IV%%,%ATT%/%DEF%/%STA%,%LVL%

Translatable movesets

In the same way you did for pokemon names, would be great to have movesets in seperate xml files so it can be easily translated.

Snorlax not working with latest version

Hi,

Is there any chance that you'll update the module to support the latest version of Pokemon Go? As you may be aware, this module is no longer working with Pokemon Go.

Notifications fail after PoGo Error

Sorry to have to reopen this, user exodius48 on XDA clearly was referring to their own issue thread closed 4 days hence. Late to the party, at least they showed..

To reiterate with a little more detail. Once in a while I get an in game in which the Pokemon I selected to catch vanishes from my screen, the pink box at the top shows up saying ERROR and your system notifications upon encounter fail. It appears to be happening when the pokemon are spawning at <5 sec. before despawn, so when I select them the server communicates back that there is no pokemon there and client-side it throws a "pokemon 151" error, for lack of a better term.

Here is the relevant time span in Xposed logs:

10-01 03:51:22.831 E/Xposed (19395): java.lang.ArrayIndexOutOfBoundsException: length=151; index=-1
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b$a.m(SourceFile:263)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.b.a.a(SourceFile:143)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.b.a.a(SourceFile:107)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.b.a.a(SourceFile:90)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.b.c.a(Unknown Source)
10-01 03:51:22.831 E/Xposed (19395): at d.d.e.b.a(SourceFile:39)
10-01 03:51:22.831 E/Xposed (19395): at d.f.a.a(SourceFile:134)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.a(SourceFile:514)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.b(SourceFile:469)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.a(SourceFile:247)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.a(SourceFile:148)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.i$a.a(SourceFile:77)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.e$a.a(SourceFile:76)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.d$a.a(SourceFile:101)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.j$2.a(SourceFile:120)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.o$b.f(SourceFile:587)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.o$b.a(SourceFile:285)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.a(SourceFile:398)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.a(SourceFile:358)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$c.a(SourceFile:849)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.i$a.a(SourceFile:77)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.e$a.a(SourceFile:76)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.m$a.a(SourceFile:69)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.g$b.f(SourceFile:403)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.g$b.a(SourceFile:336)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.c.s.a(Unknown Source)
10-01 03:51:22.831 E/Xposed (19395): at d.d.e.b.a(SourceFile:39)
10-01 03:51:22.831 E/Xposed (19395): at d.f.a.a(SourceFile:134)
10-01 03:51:22.831 E/Xposed (19395): at com.b.b.c$a.a(SourceFile:208)
10-01 03:51:22.831 E/Xposed (19395): at com.b.b.a.a(SourceFile:47)
10-01 03:51:22.831 E/Xposed (19395): at com.b.b.d.a(SourceFile:84)
10-01 03:51:22.831 E/Xposed (19395): at com.b.b.e.a(SourceFile:20)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.c.m.a(SourceFile:70)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.c.k.b(SourceFile:105)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.c.d.a(SourceFile:99)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.c.d.available(SourceFile:86)

There are thousands of devices begging for an "update"

Since latest SafetyNet update there are thousands of devices unable to use Xposed framework and modules. BUT there is a new tool called Magisk which allows installing modules without being detected by SafetyNet checks.

I don't know anything about porting/or writing a Magisk module, but I have been dying to ask you this: is there, by any chance, a possibility of you having a look on what Magisk is to see if your module can be ported to Magisk?

Please :). I now maaanyyy people would be relieved.

Your module is awesome.

CP formula changed by Niantic today

I saw Niantic changed CP and probably stats formula on todays server update. Levels displayed by the module seem not to be affected, but I wonder if IVs are.

If they changed, could you update the module to reflect them correctly? :)

Thanks!!!, and I really like your module/work. I wouldn't play the game without it.

Crash after error in PoGo

Once in a while I get an in game in which the Pokemon I selected to catch vanishes from my screen, the pink box at the top shows up saying ERROR and your system notifications upon encounter fail. Here is the relevant time span in Xposed logs.

10-01 03:51:22.831 E/Xposed  (19395): java.lang.ArrayIndexOutOfBoundsException: length=151; index=-1

10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b$a.m(SourceFile:263)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.b.a.a(SourceFile:143)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.b.a.a(SourceFile:107)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.b.a.a(SourceFile:90)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.b.c.a(Unknown Source)
10-01 03:51:22.831 E/Xposed (19395): at d.d.e.b.a(SourceFile:39)
10-01 03:51:22.831 E/Xposed (19395): at d.f.a.a(SourceFile:134)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.a(SourceFile:514)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.b(SourceFile:469)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.a(SourceFile:247)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.a(SourceFile:148)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.i$a.a(SourceFile:77)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.e$a.a(SourceFile:76)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.d$a.a(SourceFile:101)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.j$2.a(SourceFile:120)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.o$b.f(SourceFile:587)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.o$b.a(SourceFile:285)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.a(SourceFile:398)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$e.a(SourceFile:358)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.n$c.a(SourceFile:849)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.i$a.a(SourceFile:77)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.e$a.a(SourceFile:76)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.m$a.a(SourceFile:69)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.g$b.f(SourceFile:403)
10-01 03:51:22.831 E/Xposed (19395): at d.d.a.g$b.a(SourceFile:336)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.c.s.a(Unknown Source)
10-01 03:51:22.831 E/Xposed (19395): at d.d.e.b.a(SourceFile:39)
10-01 03:51:22.831 E/Xposed (19395): at d.f.a.a(SourceFile:134)
10-01 03:51:22.831 E/Xposed (19395): at com.b.b.c$a.a(SourceFile:208)
10-01 03:51:22.831 E/Xposed (19395): at com.b.b.a.a(SourceFile:47)
10-01 03:51:22.831 E/Xposed (19395): at com.b.b.d.a(SourceFile:84)
10-01 03:51:22.831 E/Xposed (19395): at com.b.b.e.a(SourceFile:20)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.c.m.a(SourceFile:70)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.c.k.b(SourceFile:105)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.c.d.a(SourceFile:99)
10-01 03:51:22.831 E/Xposed (19395): at com.icecream.snorlax.module.b.c.d.available(SourceFile:86)

Add IV to head up notification.

As suggested by nachomagic on XDA this would be a useful feature as it would save expanding the notification. From a personal perspective I would also suggest altering the second line to add this.
The line currently shows as something like;

  • 64.4% [A/D/S 14/9/6]

I would suggest removing the A/D/S part as it doesn't really server a purpose which would give more space on that line for catch %

  • 64.4% [14/9/6] P: 27.8% G: 38.6% U: 47.9%

Great to see something coming along

Any plans to expand support? I'm sing Android N only? If not you may get alot about it not working especially when the xposed download doesn't mention it that I saw.

I just want to confirm this is just for notification of what it is, not an overlay like other modules that change nicknames? Correct? Either way glad somethings going and suggest moving in name changing direction with actual IV's.

Built release

Great work!

Unfortunately, I don't have setup to build this repo. Any chance on a built release please?

Pattern to rename with mon's attack type

Example: STE-FIR 80% (20)

In this example my pokemon got:

  • Stell fast attack
  • Fire charge attack
  • 80% IV
  • level 20

Bug BUG
Dark DAR
Dragon DRA
Electric ELE
Fairy FAI
Fighting FIG
Fire FIR
Flying FLY
Ghost GHO
Grass GRA
Ground GRO
Ice ICE
None NON
Normal NOR
Poison POI
Psychic PSY
Rock ROC
Steel STE
Water WAT

I don't know if it's possible to add something more fancy like symbols: thunder instead of a ELE

fisherman and youngster medals

@igoticecream hi thanks for your great work and sorry for puting this in the issue section
is it possible to check if Rattata is extra small and Magikarp extra large
to help achieve fisherman and youngster medals that would be awesome

Edxposed passing safety net

Ditto

Will your module be able to detect ditto disguised? Or will it show the disguised pokemons name?

Run on disabled Xposed

First let me say thank you for your app

Is some how posible to make the app to work with the disabled xposed (installed) untill 1 day ago it was working fine whit it disabled and from latest pogo updates is not working anymore no IV showing and Failed to detect Location

It will be great if you can some how try to include magisk in the game as magisk always bypassed safteynet easy and xposed is ported already there .

Port to Magisk Manager

Hi there,

With all the issue surrounding Xposed and Chainfire's suhide, would it be possible to port this module to Magisk Manager?

Nickname limited in number of characters

The official client can display nicknames with more than 12 characters, but you will not be able to manually write (that is, renaming through client) more than 12 chars.

While there has been no word that the client/server detect tampering of responses through checking the length of nicknames, this is a potential giveaway. You may want to issue a warning to users.

Payload validation failed

hello friend, come tell something that happened to me, I do not know if it was by your module, but it happened so, I have a s5 with rom ressurection remix v5.7.4 day 23 using magisk migration method for suhide, installed your module and it worked perfect, turned off the function to detect the GPS soon after went to a website and I logged my account, the site was pogobag, compared iv and transfer some pokemons, log out and went pro game, worked regular, spent about 30 minutes not I was more into the game, I logged my account on the phone my wife and work, there on my phone I tested the application "SafetyNET for help" and was giving error "response payload validation failed", I had to reset my phone to voltata to work, however today took a sleep in the afternoon and when I woke up gave the same problem, and after a few minutes returned to work! I really want to use Snorlax module, but to give apprehending some new problem. I await your help

Just a question. No issue

Would it be possible to implement the nickname changer to show IV and stats? Attack, defense, stamina. Cheers

Small issue with the types (FIre vs FIght / GRass vs GRound)

Originally Posted by MrGodMan (xda)
Small issue with the types;

You have the option to limit the types to a chosen length of characters but it simply clips the strings which means at 2 characters Fire and Fighting are the same as well as Ground and Grass.
A simple fix for this is at 2 characters changing Fire to display as Fr and Ground to show as Gd as was suggested on some reddit thread and used in ivy.

Although this issue is very minimal as no pokemon I can think of that has ground and grass moves or fire and fighting which makes the move type clear from context.

Enhancement: broadcast responses

Hello,

I implemented a prototype module for Snorlax, to act as a "Mitm broadcaster". The module translates get map objects responses into an intent with extra data (in JSON format), and my own app capture the intent and track my spawn encounters.

Why did not I do my spawn diary directly as a module for Snorlax? An xposed module is cumbersome to develop and test (forced reboot everytime it is updated...). An app that captures intent is much faster to develop and easier to test. I actually develop and compile my app on the go, something I can't do when I dabble with Snorlax source code.

I have very limited android experience, but if this broadcast thing is generalized to other responses, I believe Snorlax has the potential to become a platform over which other app developpers can plug in through Intent broadcast.

Any thoughts on this?

Buddy pokemon's distance shows incorrectly.

With the rename feature enabled your buddy pokemon total distance shows wrongly. The total will only show as the small distance you have accumulated toward the current candy, not the true total.

https://imgur.com/a/UnLRh

This happens even if the name has not been changed by snorlax. ie, if you have it set to not replace custom nicks.

Winter costumes doesn't show

It seems that costumes support is missing which is causing Pikachu's christmas hat to disappears after you have capture it.

Feature - History / Log

Would it be possible to keep a log of all encountered Pokemon in Snorlax? Something that will keep track of the species, IV, location, date & time ?

I've been out and about for a couple of hours today and was thinking when i got back that it would be good to go through & review.

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.