function script GlobalSkillDebug { function modifySkill { function setSkill { clear; mes l("Enter desired skill level:"); input .@y; skill getarg(0,1), max(0, min(10, .@y)), 0; return; } setnpcdialogtitle l("Skill Debug - Modify Skill"); .@k = getarg(0,1); .@v = getskilllv(.@k); select menuimage("actions/abort", l("Abort")), rif(.@v > 0, menuimage("actions/remove", l("Remove this skill"))), rif(.@v < 10, menuimage("actions/raise", l("Raise this skill"))), rif(.@v > 0, menuimage("actions/lower", l("Lower this skill"))), menuimage("actions/edit", l("Set the level manually")), menuimage("actions/back", l("Return to skill debug menu")); switch (@menu) { case 2: skill .@k, 0, 0; break; case 3: skill .@k, min(10, .@v + 1), 0; break; case 4: skill .@k, max(0, .@v - 1), 0; break; case 5: setSkill .@k; break; } return; } do { clear; setnpcdialogtitle l("Skill Debug"); mes l("This menu allows you to change your skills."); mes ""; mes "---"; .@size = getarraysize(getvariableofnpc(.debug_skills$, "@sdebug")); for (.@s = 0; .@s < .@size; ++.@s) { .@skill$ = getvariableofnpc(.debug_skills$[.@s], "@sdebug"); mesf("%s: %d", .@skill$, getskilllv(string_to_data(.@skill$))); } mes "---"; mes ""; mes l("Which skill do you wish to change?"); next; .@select$ = implode(getvariableofnpc(.debug_skills$, "@sdebug"), ":"); if (getarg(0, 0)) { .@select$ += ":" + menuimage("actions/back", l("Return to Debug menu")); } select(.@select$); if (--@menu == .@size) { return; } else { .@skill$ = getvariableofnpc(.debug_skills$[@menu], "@sdebug"); modifySkill(string_to_data(.@skill$)); } } while (1); } - script @sdebug 32767,{ end; OnCall: if (!debug && !is_admin()) { end; } GlobalSkillDebug; closeclientdialog; end; OnInit: setarray(.debug_skills$, "NV_BASIC", "EVOL_CRAFTING"); bindatcmd "sdebug", "@sdebug::OnCall", 0, 99, 0; }