Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def xdrng(seed,j):
- k = 0
- while (k <= j):
- newseed = seed
- seed = (0x000043FD*(seed&0xFFFF)+((0x00000003*(seed&0xFFFF)+0x000043FD*int(seed/0x10000))&0xFFFF)*0x10000+0x00269EC3)&(0xFFFFFFFF) #formula
- k += 1
- return seed
- natures = ['Hardy ', 'Lonely ', 'Brave ', 'Adamant', 'Naughty', 'Bold ', 'Docile ', 'Relaxed', 'Impish ', 'Lax ', 'Timid ', 'Hasty ', 'Serious', 'Jolly ', 'Naive ', 'Modest ', 'Mild ', 'Quiet ', 'Bashful', 'Rash ', 'Calm ', 'Gentle ', 'Sassy ', 'Careful', 'Quirky ']
- def genlist(seed):
- m = 0
- ms = []
- genlistout = str(seed >> 30)
- F = seed >> 30
- checker = [0,0,0,0]
- backseed = seed
- advance = 8
- while m < 35:
- backseed = xdrngr(backseed,0)
- genlistout = str(backseed >> 30) + "|" + genlistout
- ## if m == 4:
- ## ais = genlistout[5] + genlistout[3] + genlistout[1]
- ## advance = 3
- ## for i in range(0,len(ais)):
- ## if ais[i] == "0" and i < 3:
- ## advance = i
- ##
- ##
- ## advance = advance+5
- if m == advance-1:
- F = backseed >> 30
- ms = []
- checker = [0,0,0,0]
- genlistout = " M: " + genlistout
- G = backseed >> 30
- if ms == [] and G == F:
- if m >= 8:
- if "XXX" not in genlistout:
- genlistout = "XXX" + genlistout
- if G != 0:
- if checker[G] != 1:
- checker[G] = 1
- if checker == [0,1,1,1]:
- checker = [0,0,0,0]
- ms.append(m)
- m += 1
- return genlistout
- def rngcheck(rng1,rng2,rng3,rng4,rng5,rng6,rng7,rng8,rng9,rng10,rng11,rng12,i,seed,thresh):
- rng2 = rng2 + 0x80000000
- if rng2 > 0xFFFFFFFF:
- rng2 = rng2 - 0x100000000
- rng1 = str(hex(rng1))[2:]
- rng1 = rng1.replace("L","")
- rng2 = str(hex(rng2))[2:]
- rng2 = rng2.replace("L","")
- rng3 = str(hex(rng3))[2:]
- rng3 = rng3.replace("L","")
- rng4 = str(hex(rng4))[2:]
- rng4 = rng4.replace("L","")
- rng5 = str(hex(rng5))[2:]
- rng5 = rng5.replace("L","")
- rng6 = str(hex(rng6))[2:]
- rng6 = rng6.replace("L","")
- #rng7 = str(hex(rng7))[2:]
- #rng7 = rng7.replace("L","")
- rng8 = str(hex(rng8))[2:]
- rng8 = rng8.replace("L","")
- #rng9 = str(hex(rng9))[2:]
- #rng9 = rng9.replace("L","")
- rng10 = str(hex(rng10))[2:]
- rng10 = rng10.replace("L","")
- rng11 = str(hex(rng11))[2:]
- rng11 = rng11.replace("L","")
- rng12 = str(hex(rng12))[2:]
- rng12 = rng12.replace("L","")
- while len(rng1) < 8:
- rng1 = "0" + rng1
- while len(rng2) < 8:
- rng2 = "0" + rng2
- while len(rng3) < 8:
- rng3 = "0" + rng3
- while len(rng4) < 8:
- rng4 = "0" + rng4
- while len(rng5) < 8:
- rng5 = "0" + rng5
- while len(rng6) < 8:
- rng6 = "0" + rng6
- #while len(rng7) < 8:
- # rng7 = "0" + rng7
- while len(rng8) < 8:
- rng8 = "0" + rng8
- #while len(rng9) < 8:
- #rng9 = "0" + rng9
- while len(rng10) < 8:
- rng10 = "0" + rng10
- while len(rng11) < 8:
- rng11 = "0" + rng11
- while len(rng12) < 8:
- rng12 = "0" + rng12
- ivs = [rng7,rng8,rng9,rng10,rng11,rng12]
- IVs = [0,0,0,0,0,0]
- SID = str(int(rng1[0:4],16))
- PID = rng2[0:4] + rng3[0:4]
- XDPID = rng4[0:4] + rng5[0:4]
- XDIV = rng1[0:4]
- for j in range(0,len(ivs)):
- IVs[j] = iv(ivs[j])
- if (IVs[3] + IVs[5] + IVs[2] + IVs[1] + IVs[0]) > thresh or (IVs[0] + IVs[2] + IVs[3] + IVs[4] + IVs[5]) > thresh:
- nature = natures[int(PID,16)%25]
- if nature in ['Adamant','Jolly ','Modest ','Hasty ','Naive ','Calm ','Impish ','Bold ','Careful','Timid ','Mild ','Rash ']:
- XDIV = xdivs(XDIV)
- genlistout = genlist(seed)
- genlistend = genlistout[-7:]
- advance = 3
- #print genlistend
- if genlistend[0] == "0":
- advance = 7
- if genlistend[2] == "0" and advance == 3:
- advance = 5
- if genlistend[4] == "0" and advance == 3:
- advance = 3
- if genlistend[6] == "0" and advance == 3:
- advance = 3
- mm = genlistout.index('M')
- genlistout = genlistout[:mm+advance] + "T" + genlistout[mm+advance:]
- genlistout = genlistout[2:]
- #print advance
- print "_______________________________________________________________________________"
- print str(hex(seed))[:-1] + " " + PID +" " + nature + " " +str(IVs[0]) + "/"+str(IVs[1]) + "/"+str(IVs[2]) + "/"+str(IVs[4]) + "/"+str(IVs[5]) + "/"+str(IVs[3]) + " " + "F: " + str(i+1) + " SID: " + SID + " " + XDPID
- print "Probable generation pattern: " + XDIV
- print genlistout
- print "_______________________________________________________________________________"
- def xdrngr(seed,j):
- k = 0
- while (k <= j):
- seedr = (0x00003155*(seed&0xFFFF)+((0x0000B9B3*(seed&0xFFFF)+0x00003155*int(seed/0x10000))&0xFFFF)*0x10000+0xA170F641)&(0xFFFFFFFF) #formula
- seed = seedr
- k += 1
- return seedr
- def iv(rng):
- rng = rng[0:4]
- rng = bin(int(rng,16))[2:]
- while len(rng) < 16:
- rng = '0' + rng
- # if rng == "0":
- # rng = rng[1:]
- # rng = "1" + rng
- #else:
- # rng = rng[1:]
- # rng = "0" + rng
- iv1 = (int(rng[-5:],2))
- iv1 = int(rng,2) >> 11
- return iv1
- def xdivs(rng):
- rng = bin(int(rng,16))[2:]
- while len(rng) < 16:
- rng = '0'+rng
- xdiv = str(int(rng[11:16],2)) + "/" + str(int(rng[6:11],2)) + "/" + str(int(rng[1:6],2))
- return xdiv
- def __main__(seed,frame,desir,thresh):
- i = 0
- while i < int(frame,10):
- div = int(desir,10)
- rng7 = xdrng(seed,6)
- rng7 = str(hex(rng7))[2:]
- rng7 = rng7.replace("L","")
- rng9 = xdrng(seed,8)
- rng9 = str(hex(rng9))[2:]
- rng9 = rng9.replace("L","")
- while len(rng7) < 8:
- rng7 = '0' + rng7
- while len(rng9) < 8:
- rng9 = '0' + rng9
- testiv = iv(rng7)
- if testiv >= div or div == 32:
- testiv = iv(rng9)
- if testiv >=div or div == 32:
- rng1 = xdrng(seed,0) #sid
- rng2 = xdrng(rng1,0) #pidu
- rng3 = xdrng(rng2,0) #pl
- rng4 = xdrng(rng3,0) #spe
- rng5 = xdrng(rng4,0) #spa
- rng6 = xdrng(rng5,0) #spd
- #rng7 = xdrng(seed,6)
- rng8 = xdrng(seed,7) #spa
- #rng9 = xdrng(seed,8)
- rng10 = xdrng(seed,9)
- rng11 = xdrng(rng10,0)
- rng12 = xdrng(rng11,0)#spd
- rngcheck(rng1,rng2,rng3,rng4,rng5,rng6,rng7,rng8,rng9,rng10,rng11,rng12,i,seed,thresh)
- seed = rng1
- i = i + 1
- else:
- i = i + 1
- seed = xdrng(seed,0)
- else:
- i = i + 1
- seed = xdrng(seed,0)
- again = "y"
- seed = raw_input('Seed = ')
- frame = raw_input('Frame = ')
- desir = raw_input('IV = ')
- seed = int(seed,16)
- thresh = int(raw_input("thresh = "))
- while again == "y":
- __main__(seed,frame,desir,thresh)
- again = raw_input("again y/n? ")
- if again == "y":
- seed = raw_input('Seed = ')
- seed = int(seed,16)
RAW Paste Data