Advanced Sprites Script [Easy to use]

Hey Guys , as you all know Blender doesn’t support sprites full control , so I made this script to do the job.
all you have to do is setting the properties, and connect the script to an always sensor .
blend file attached.
#report for bugs please.
#Credit if used please ^^



#Screen Shot and instructions
2 Platformer games are presented in the demo .
here is the Script :


############################### Advanced sprites by Zero   
# 
# Create properties:    * means you must not touch it
#   spr_name (string)  =  Your Sprite Name
#   spr_loop (bool)    =  If you want your sprite to loop
#   spr_frame(integer) =  Your Sprite's Frame
#   *spr_framer(float) =  0
#   spr_speed(float)   =  1 means your game's FPS (30 frames/sec)
#   *spr_old(string)   =  "" <<<< leave this empty
#
# All your sprites shall be named   ######.0 , ######.01 , ####.02   (Name.FrameNumber)
# You should make all your sprites Invisible before the game begin
###############################




#initialization
import bge
def spriter():
    cont = bge.logic.getCurrentController()
    own = cont.owner
    scene= bge.logic.getCurrentScene()
    Sobjects = scene.objects 
    
    
    #Sprite Attributes fix and update
    
    sprite_list = [] 
    if own["spr_speed"] > 1:
        own["spr_speed"] = 1
    elif own["spr_speed"] < 0 :
        own["spr_speed"] = 0       
        
    
    #Get sprite Objects
    for i in scene.objects:
        if i.name[:(len(own["spr_name"])+1)]==own["spr_name"]+".":
            sprite_list.append(i.name)
    sprite_list.sort()  
    
    #Replaces the Sprites
    
    if  (own["spr_name"] != own["spr_old"]) and (own["spr_old"]) !="":
        own["spr_frame"] = 0
        own["spr_frame"] = 0
        sprite_list=[]
        for i in scene.objects:
            if i.name[:(len(own["spr_name"])+1)]==own["spr_name"]+".":
                sprite_list.append(i.name)
        sprite_list.sort()
        
        for i in Sobjects:
            if i.name[:(len(own["spr_old"])+1)]==own["spr_old"]+".":
                i.visible=False
        
        
               
    #animating 
    for name in sprite_list:
        Sobjects[name].visible =( (str(Sobjects[name]) == str(sprite_list[own["spr_frame"]]))  )        
    if (own["spr_framer"] > 1):
        own["spr_framer"] = 0
        own["spr_frame"] += 1
         
    
    if own["spr_loop"] == True:
        if own["spr_frame"] > len(sprite_list)-1:
            own["spr_frame"] = 0  
    else :
        if own["spr_frame"] > len(sprite_list)-1:
            own["spr_frame"] = len(sprite_list)-1 
            
            
    own["spr_framer"] += own["spr_speed"]
    own["spr_old"] = own["spr_name"]
    
#Function call
spriter()
    

Attachments

Advanced Sprites.blend (660 KB)Advanced Sprites updated.blend (758 KB)