Author Topic: Getting a print name from ID? [Solved]  (Read 1464 times)

How do I get:
Letters/A
from:
49

?



Solution:
Easier than I imagined.

Code: [Select]
function getPrintName(%id)
{
%texture = getPrintTexture(%id);
%package = getField(strreplace(%texture,"/","\t"),1);
%category = getField(strReplace(%package,"_","\t"),1);
%name = fileBase(%texture);
%return = %category @ "/" @ %name;
return %return;
}
« Last Edit: February 17, 2012, 07:51:09 PM by Chrono »

Check the tutorial code, can't remember if it's dso'd or not.

Otherwise export all the $ variables to a file and have a look - it's a string table in there I think.

Check the tutorial code, can't remember if it's dso'd or not.
Code: [Select]
%object.getPrintID() $= $printNameTable["Letters/-minus"]It does this, which the name is already known and compares it to the ID.
Otherwise export all the $ variables to a file and have a look - it's a string table in there I think.
All I get is a table for getting IDs from names. I need to get a name from an ID.
Code: [Select]
$Con::printLevel = "10";
$printAREnd1x1 = "24";
$printAREnd1x1f = "24";
$printAREnd1x2f = "24";
$printAREnd2x2f = "14";
$printAREnd2x2r = "7";
$printAREndLetters = "77";
$printARNumPrints1x1 = "0";
$printARNumPrints1x1f = "0";
$printARNumPrints1x2f = "10";
$printARNumPrints2x2f = "7";
$printARNumPrints2x2r = "7";
$printARNumPrintsLetters = "53";
$printARStart1x1 = "24";
$printARStart1x1f = "24";
$printARStart1x2f = "14";
$printARStart2x2f = "7";
$printARStart2x2r = "0";
$printARStartLetters = "24";
$printNameTable1x2f/blank = "21";
$printNameTable1x2f/BLP = "23";
$printNameTable1x2f/caution1 = "20";
$printNameTable1x2f/chip1 = "19";
$printNameTable1x2f/computer1 = "18";
$printNameTable1x2f/controller = "17";
$printNameTable1x2f/keyboard = "16";
$printNameTable1x2f/letter1 = "15";
$printNameTable1x2f/tvremote = "22";
$printNameTable1x2f/vent = "14";
$printNameTable2x2f/arrow = "13";
$printNameTable2x2f/blank = "12";
$printNameTable2x2f/cautionTriangle = "11";
$printNameTable2x2f/circle = "10";
$printNameTable2x2f/handicap = "9";
$printNameTable2x2f/square = "8";
$printNameTable2x2f/vent = "7";
$printNameTable2x2r/medical1 = "6";
$printNameTable2x2r/monitor1 = "5";
$printNameTable2x2r/monitor2 = "4";
$printNameTable2x2r/monitor3 = "0";
$printNameTable2x2r/phone = "3";
$printNameTable2x2r/radar1 = "2";
$printNameTable2x2r/vent = "1";
$printNameTableLetters/-and = "76";
$printNameTableLetters/-apostrophe = "75";
$printNameTableLetters/-asterisk = "74";
$printNameTableLetters/-at = "73";
$printNameTableLetters/-bang = "72";
$printNameTableLetters/-caret = "71";
$printNameTableLetters/-dollar = "70";
$printNameTableLetters/-equals = "69";
$printNameTableLetters/-greater_than = "68";
$printNameTableLetters/-less_than = "67";
$printNameTableLetters/-minus = "66";
$printNameTableLetters/-percent = "65";
$printNameTableLetters/-period = "64";
$printNameTableLetters/-plus = "63";
$printNameTableLetters/-pound = "62";
$printNameTableLetters/-qmark = "61";
$printNameTableLetters/-space = "60";
$printNameTableLetters/0 = "59";
$printNameTableLetters/1 = "58";
$printNameTableLetters/2 = "57";
$printNameTableLetters/3 = "56";
$printNameTableLetters/4 = "55";
$printNameTableLetters/5 = "54";
$printNameTableLetters/6 = "53";
$printNameTableLetters/7 = "52";
$printNameTableLetters/8 = "51";
$printNameTableLetters/9 = "50";
$printNameTableLetters/A = "49";
$printNameTableLetters/B = "48";
$printNameTableLetters/C = "47";
$printNameTableLetters/D = "46";
$printNameTableLetters/E = "45";
$printNameTableLetters/F = "44";
$printNameTableLetters/G = "43";
$printNameTableLetters/H = "42";
$printNameTableLetters/I = "41";
$printNameTableLetters/J = "40";
$printNameTableLetters/K = "39";
$printNameTableLetters/L = "38";
$printNameTableLetters/M = "37";
$printNameTableLetters/N = "36";
$printNameTableLetters/O = "35";
$printNameTableLetters/P = "34";
$printNameTableLetters/Q = "33";
$printNameTableLetters/R = "32";
$printNameTableLetters/S = "31";
$printNameTableLetters/T = "30";
$printNameTableLetters/U = "29";
$printNameTableLetters/V = "28";
$printNameTableLetters/W = "27";
$printNameTableLetters/X = "26";
$printNameTableLetters/Y = "25";
$printNameTableLetters/Z = "24";


I need to get a name from an ID.
I'd say your best chance is a big ass switch. As far as I know there's no reverse way to get name from ID.

I'd say your best chance is a big ass switch. As far as I know there's no reverse way to get name from ID.
How come the default game can do it then through saving?

Alright, I found a way. A stuffty way, but a way nonetheless.


getPrintTexture(%id)


You can parse the file name into a variable name however you like, but I'm not sure how well it'll support custom add-ons.

Yeah I seen that function, tested it. It gives the full filepath.

But now looking back at the $PrintNameTable, it includes two parts of the filepath.
Letters/-space
Add-ons/Print_Letters_Default/prints/-space.png
1x2f/keyboard
Add-ons/Print_1x2f_Default/prints/keyboard.png

I could just snag those 2 parts and get it from there.

Easier than I imagined.

Code: [Select]
function getPrintName(%id)
{
%texture = getPrintTexture(%id);
%package = getField(strreplace(%texture,"/","\t"),1);
%category = getField(strReplace(%package,"_","\t"),1);
%name = fileBase(%texture);
%return = %category @ "/" @ %name;
return %return;
}