O troche dziwna rzecz prosisz, ale takie rozwiazanie raczej daloby rade:
Mapy zapisują dane w formie "kluczy" będących stringami(tekstem).
Jedna mapa może być jednym texturepackiem.
Założmy że nazywasz te klcuze według takiej zasady: Osoba_Pozycja_CzescCiala
masz np taki wpis "PrzeciwnikStoiGlowa":
GML
//masz mape ktora zapisales do zmiennej Texturepack
Texturepack=ds_map_create();
//Masz wpisany sprite dla glowy stojacego przeciwnika 15..
ds_map_add(Texturepack,"Przeciwnik15StoiGlowa",spr_enemy15_stand_head);
wyszukujesz sprita za pomoca stringa, mniej wiecej tak:
GML
var __search="";
//costam jest tu sprawdzane i dochodzisz do wniosku ze przeciwnik
__search+="Przeciwnik";
//costam jest tu sprawdzane i dochodzisz do wniosku ze przeciwnik ma skin 15(jakis grubas czy ni.. afroamerykanin)
__search+="15";
//costam sprawdzasz i wiesz ze jest w pozycji stojacej
__search+="Stoi";
//Chcesz narysowac glowe
__search+="Glowa";
sprite_index=ds_map_find_value(TexturePack,__search);
To ustawi sprite_index do sprite'a ktorego wartosc jest wpisana pod kluczem o nazwie zapisanej w stringu __search (który notabene zawiera tekst "Przeciwnik15StoiGlowa"). Pod "Przeciwnik15StoiGlowa" zapisane jest spr_enemy15_stand_head, wiec robi poprawnie.
Edit:
Jak chcesz kilka texturepacków, to zrób aby zmienna TexturePack była tablicą i do każdej pozycji tablicy zapisuj jedną mapę danego texturepacka.