PHP Code:
//#CLIENTSIDE
function showInterface() {
if (CreateChar_Window != null) {
CreateChar_Window.destroy();
}
new GuiWindowCtrl("CreateChar_Window") {
profile = "GuiBlueWindowProfile";
width = 212;
height = 356;
x = GraalControl.width / 2 - (width / 2);
y = GraalControl.height / 2 - (height / 2);
canClose = visible = true;
canMaximize = canMinimize = canResize = false;
text = "Character Creation";
new GuiShowImgCtrl("CreateChar_Doll") {
ani = "idle";
x = CreateChar_Window.width / 2 - 25;
y = 32;
hint = "Click to change direction.";
}
temp.fields = {
{"bodyimg", "Body"},
{"headimg", "Head"},
{"shield", "Shield"},
{"attr[1]", "Hat"},
{"ani", "Ani"}
};
temp.parts = getParts();
temp.colors = getColors();
for (temp.field : fields) {
new GuiTextCtrl("CreateChar_FieldLabel_" @ field[1]) {
profile = "GuiBlueTextProfile";
x = 13;
y = 90 + 23 * fields.index(@ field);
text = field[1] @ ":";
}
new GuiTextEditCtrl("CreateChar_Field_" @ field[1]) {
profile = "GuiBlueTextEditProfile";
width = 150;
height = 20;
x = 50;
y = 90 + (height + 3) * fields.index(@ field);
if (field[0] == "attr[1]") {
text = CreateChar_Doll.actor.attr[1];
} else {
text = CreateChar_Doll.actor.(@ field[0]);
}
if (text == null) {
text = "";
}
thiso.catchevent(name, "onAction", "onTextChanges");
this.part = field[0];
}
}
for (temp.part : parts) {
new GuiTextCtrl("CreateChar_PartLabel_" @ part) {
profile = "GuiBlueTextProfile";
x = 13;
y = 206 + 23 * parts.index(@ part);
text = part @ ":";
}
new GuiPopUpMenuCtrl("CreateChar_Part_" @ part) {
profile = "GuiBluePopUpMenuProfile";
scrollprofile = "GuiBlueScrollProfile";
textprofile = "GuiBlueTextListProfile";
width = 150;
height = 20;
x = 50;
y = 206 + (height + 3) * parts.index(@ part);
clearRows();
for (temp.c : colors) {
addRow(0, c);
}
setSelectedRow(CreateChar_Doll.actor.colors[parts.index(@ part)]);
thiso.catchevent(name, "onSelect", "onColorSelected");
this.p = part;
}
}
new GuiButtonCtrl("CreateChar_Generate") {
profile = "GuiBlueButtonProfile";
width = 60;
height = 22;
x = CreateChar_Window.width / 2 - (width / 2);
y = 323;
text = "Generate";
}
}
}
function CreateChar_Generate.onAction() {
temp.char = CreateChar_Doll;
// {dir, body, head, shield, hat, ani, colors}
temp.generateFrom = {char.actor.dir, char.actor.bodyimg, char.actor.headimg, char.actor.shield, char.actor.attr[1], char.ani, char.actor.colors};
generateCode(generateFrom);
CreateChar_Window.destroy();
}
function CreateChar_Doll.onMouseDown() {
CreateChar_Doll.actor.dir ++;
}
function onTextChanges(control, newtext) {
temp.part = control.part;
if (part == "attr[1]") {
CreateChar_Doll.actor.attr[1] = newtext;
return;
}
if (part == "ani") {
CreateChar_Doll.ani = newtext;
}
CreateChar_Doll.actor.(@ part) = newtext;
}
function onColorSelected(control) {
temp.colors = getColors();
temp.parts = getParts();
temp.part = parts.index(@ (@control).p);
temp.c = colors.index(@ (@ control).getSelectedText());
CreateChar_Doll.actor.colors[part] = c;
}
function getParts() {
return {
"Skin",
"Coat",
"Sleeves",
"Shoes",
"Belt"
};
}
function getColors() {
return {
"White",
"Yellow",
"Orange",
"Pink",
"Red",
"Dark Red",
"Light Green",
"Green",
"Dark Green",
"Light Blue",
"Blue",
"Dark Blue",
"Brown",
"Cynober",
"Purple",
"Dark Purple",
"Light Gray",
"Gray",
"Black",
"Transparent"
};
}
function generateCode(from) {
// {dir, body, head, shield, hat, ani, colors}
temp.lines = {"/" @ "/ Made by" SPC player.nick, "/" @ "/#CLIENTSIDE", "function onCreated() {", " showcharacter();"};
temp.vars = {
"bodyimg",
"headimg",
"shield",
"attr[1]",
"ani"
};
lines.add(" this.dir = " @ from[0] @ ";");
temp.inc = 1;
for (temp.v : vars) {
if (from[inc] != null) {
lines.add(" this." @ v SPC "= \"" @ from[inc] @ "\";");
}
inc ++;
}
for (temp.c = 0; c < 5; c ++) {
lines.add(" this.colors[" @ c @ "] =" SPC from[6][c] @ ";");
}
lines.add("}");
lines.add("function onPlayerEnters() {");
lines.add(" onCreated();");
lines.add("}");
if (CreateCharOutput_Window != null) {
CreateCharOutput_Window.destroy();
}
new GuiWindowCtrl("CreateCharOutput_Window") {
profile = "GuiBlueWindowProfile";
width = 212;
height = 356;
x = GraalControl.width / 2 - (width / 2);
y = GraalControl.height / 2 - (height / 2);
canClose = visible = true;
canMinimize = canMaximize = canResize = false;
text = "Create Character: Output";
new GuiScrollCtrl("CreateCharOutput_Scroll") {
profile = "GuiBlueScrollProfile";
x = 10;
y = 28;
width = 192;
height = 319;
vScrollBar = "alwaysOn";
hScrollBar = "alwaysOff";
new GuiMLTextCtrl("CreateCharOutput_Text") {
profile = "GuiBlueTextProfile";
width = 202;
x = 0;
y = 1;
text = null;
for (temp.line : lines) {
if (text == null) {
text = line;
} else {
text @= "\n" @ line;
}
}
}
}
}
}
function onPlayerChats() {
if (player.chat == "/create char") {
showInterface();
}
}
- fixed some imaginary variable I invented called "this.hat" to "this.attr[1]"...