⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 game_master.pas

📁 RO模拟器!!适合玩仙境传说的玩家们呦~
💻 PAS
📖 第 1 页 / 共 5 页
字号:

        ini.ReadSectionValues('Aegis GM Commands', sl);

        GM_AEGIS_B := StrToIntDef(sl.Values['AEGIS_B'], 1);
        GM_AEGIS_NB := StrToIntDef(sl.Values['AEGIS_NB'], 1);
        GM_AEGIS_BB := StrToIntDef(sl.Values['AEGIS_BB'], 1);
        GM_AEGIS_ITEM := StrToIntDef(sl.Values['AEGIS_ITEM'], 1);
        GM_AEGIS_MONSTER := StrToIntDef(sl.Values['AEGIS_MONSTER'], 1);
        GM_AEGIS_HIDE := StrToIntDef(sl.Values['AEGIS_HIDE'], 1);
        GM_AEGIS_RESETSTATE := StrToIntDef(sl.Values['AEGIS_RESETSTATE'], 1);
        GM_AEGIS_RESETSKILL := StrToIntDef(sl.Values['AEGIS_RESETSKILL'], 1);

        ini.ReadSectionValues('Athena GM Commands', sl);

        GM_ATHENA_HEAL := StrToIntDef(sl.Values['ATHENA_HEAL'], 1);
        GM_ATHENA_KAMI := StrToIntDef(sl.Values['ATHENA_KAMI'], 1);
        GM_ATHENA_ALIVE := StrToIntDef(sl.Values['ATHENA_ALIVE'], 1);
        GM_ATHENA_KILL := StrToIntDef(sl.Values['ATHENA_KILL'], 1);
        GM_ATHENA_DIE := StrToIntDef(sl.Values['ATHENA_DIE'], 1);
        GM_ATHENA_JOBCHANGE := StrToIntDef(sl.Values['ATHENA_JOBCHANGE'], 1);
        GM_ATHENA_HIDE := StrToIntDef(sl.Values['ATHENA_HIDE'], 1);
        GM_ATHENA_OPTION := StrToIntDef(sl.Values['ATHENA_OPTION'], 1);
        GM_ATHENA_STORAGE := StrToIntDef(sl.Values['ATHENA_STORAGE'], 1);
        GM_ATHENA_SPEED := StrToIntDef(sl.Values['ATHENA_SPEED'], 1);
        GM_ATHENA_WHO3 := StrToIntDef(sl.Values['ATHENA_WHO3'], 1);
        GM_ATHENA_WHO2 := StrToIntDef(sl.Values['ATHENA_WHO2'], 1);
        GM_ATHENA_WHO := StrToIntDef(sl.Values['ATHENA_WHO'], 1);
        GM_ATHENA_JUMP := StrToIntDef(sl.Values['ATHENA_JUMP'], 1);
        GM_ATHENA_JUMPTO := StrToIntDef(sl.Values['ATHENA_JUMPTO'], 1);
        GM_ATHENA_WHERE := StrToIntDef(sl.Values['ATHENA_WHERE'], 1);
        GM_ATHENA_RURA := StrToIntDef(sl.Values['ATHENA_RURA'], 1);
        GM_ATHENA_WARP := StrToIntDef(sl.Values['ATHENA_WARP'], 1);
        GM_ATHENA_RURAP := StrToIntDef(sl.Values['ATHENA_RURAP'], 1);
        GM_ATHENA_SEND := StrToIntDef(sl.Values['ATHENA_SEND'], 1);
        GM_ATHENA_WARPP := StrToIntDef(sl.Values['ATHENA_WARPP'], 1);
        GM_ATHENA_CHARWARP := StrToIntDef(sl.Values['ATHENA_CHARWARP'], 1);
        GM_ATHENA_HELP := StrToIntDef(sl.Values['ATHENA_HELP'], 1);
        GM_ATHENA_ZENY := StrToIntDef(sl.Values['ATHENA_ZENY'], 1);
        GM_ATHENA_BASELVLUP := StrToIntDef(sl.Values['ATHENA_BASELVLUP'], 1);
        GM_ATHENA_LVUP := StrToIntDef(sl.Values['ATHENA_LVUP'], 1);
        GM_ATHENA_JOBLVLUP := StrToIntDef(sl.Values['ATHENA_JOBLVLUP'], 1);
        GM_ATHENA_JOBLVUP := StrToIntDef(sl.Values['ATHENA_JOBLVUP'], 1);
        GM_ATHENA_SKPOINT := StrToIntDef(sl.Values['ATHENA_SKPOINT'], 1);

        sl.Free;
        ini.Free;

        GM_Access_DB := TIntList32.Create;
    end;


(*-----------------------------------------------------------------------------*
Called when we're shutting down the server *only*
- Writes settings to GM_Commands.ini
- Also Frees up GM_AccessDB list.

2004/06/02 - ChrstphrR - added in List Free-up code so that no memory is leaked.
*-----------------------------------------------------------------------------*)
    Procedure save_commands();
    Var
        ini : TIniFile;
        Idx : Integer;
    Begin
        ini := TIniFile.Create(AppPath + 'gm_cs.ini');

        ini.WriteString('Fusion GM Commands', 'ALIVE', IntToStr(GM_ALIVE));
        ini.WriteString('Fusion GM Commands', 'ITEM', IntToStr(GM_ITEM));
        ini.WriteString('Fusion GM Commands', 'SAVE', IntToStr(GM_SAVE));
        ini.WriteString('Fusion GM Commands', 'RETURN', IntToStr(GM_RETURN));
        ini.WriteString('Fusion GM Commands', 'DIE', IntToStr(GM_DIE));
        ini.WriteString('Fusion GM Commands', 'AUTO', IntToStr(GM_AUTO));
        ini.WriteString('Fusion GM Commands', 'HCOLOR', IntToStr(GM_HCOLOR));
        ini.WriteString('Fusion GM Commands', 'CCOLOR', IntToStr(GM_CCOLOR));
        ini.WriteString('Fusion GM Commands', 'HSTYLE', IntToStr(GM_HSTYLE));
        ini.WriteString('Fusion GM Commands', 'KILL', IntToStr(GM_KILL));
        ini.WriteString('Fusion GM Commands', 'GOTO', IntToStr(GM_GOTO));
        ini.WriteString('Fusion GM Commands', 'SUMMON', IntToStr(GM_SUMMON));
        ini.WriteString('Fusion GM Commands', 'WARP', IntToStr(GM_WARP));
        ini.WriteString('Fusion GM Commands', 'BANISH', IntToStr(GM_BANISH));
        ini.WriteString('Fusion GM Commands', 'JOB', IntToStr(GM_JOB));
        ini.WriteString('Fusion GM Commands', 'BLEVEL', IntToStr(GM_BLEVEL));
        ini.WriteString('Fusion GM Commands', 'JLEVEL', IntToStr(GM_JLEVEL));
        ini.WriteString('Fusion GM Commands', 'CHANGESTAT', IntToStr(GM_CHANGESTAT));
        ini.WriteString('Fusion GM Commands', 'SKILLPOINT', IntToStr(GM_SKILLPOINT));
        ini.WriteString('Fusion GM Commands', 'SKILLALL', IntToStr(GM_SKILLALL));
        ini.WriteString('Fusion GM Commands', 'STATALL', IntToStr(GM_STATALL));
        ini.WriteString('Fusion GM Commands', 'SUPERSTATS', IntToStr(GM_SUPERSTATS));
        ini.WriteString('Fusion GM Commands', 'ZENY', IntToStr(GM_ZENY));
        ini.WriteString('Fusion GM Commands', 'CHANGESKILL', IntToStr(GM_CHANGESKILL));
        ini.WriteString('Fusion GM Commands', 'MONSTER', IntToStr(GM_MONSTER));
        ini.WriteString('Fusion GM Commands', 'SPEED', IntToStr(GM_SPEED));
        ini.WriteString('Fusion GM Commands', 'WHOIS', IntToStr(GM_WHOIS));
        ini.WriteString('Fusion GM Commands', 'OPTION', IntToStr(GM_OPTION));
        ini.WriteString('Fusion GM Commands', 'RAW', IntToStr(GM_RAW));
        ini.WriteString('Fusion GM Commands', 'UNIT', IntToStr(GM_UNIT));
        ini.WriteString('Fusion GM Commands', 'STAT', IntToStr(GM_STAT));
        ini.WriteString('Fusion GM Commands', 'REFINE', IntToStr(GM_REFINE));
        ini.WriteString('Fusion GM Commands', 'GLEVEL', IntToStr(GM_GLEVEL));
        ini.WriteString('Fusion GM Commands', 'IRONICAL', IntToStr(GM_IRONICAL));
        ini.WriteString('Fusion GM Commands', 'MOTHBALL', IntToStr(GM_MOTHBALL));
        ini.WriteString('Fusion GM Commands', 'WHERE', IntToStr(GM_WHERE));
        ini.WriteString('Fusion GM Commands', 'REVIVE', IntToStr(GM_REVIVE));
        ini.WriteString('Fusion GM Commands', 'BAN', IntToStr(GM_BAN));
        ini.WriteString('Fusion GM Commands', 'KICK', IntToStr(GM_KICK));
        ini.WriteString('Fusion GM Commands', 'ICON', IntToStr(GM_ICON));
        ini.WriteString('Fusion GM Commands', 'UNICON', IntToStr(GM_UNICON));
        ini.WriteString('Fusion GM Commands', 'SERVER', IntToStr(GM_SERVER));
        ini.WriteString('Fusion GM Commands', 'PVPON', IntToStr(GM_PVPON));
        ini.WriteString('Fusion GM Commands', 'PVPOFF', IntToStr(GM_PVPOFF));
        ini.WriteString('Fusion GM Commands', 'GPVPON', IntToStr(GM_GPVPON));
        ini.WriteString('Fusion GM Commands', 'GPVPOFF', IntToStr(GM_GPVPOFF));
        ini.WriteString('Fusion GM Commands', 'NEWPLAYER', IntToStr(GM_NEWPLAYER));
        ini.WriteString('Fusion GM Commands', 'PWORD', IntToStr(GM_PWORD));
        ini.WriteString('Fusion GM Commands', 'USERS', IntToStr(GM_USERS));
        ini.WriteString('Fusion GM Commands', 'CHARBLEVEL', IntToStr(GM_CHARBLEVEL));
        ini.WriteString('Fusion GM Commands', 'CHARJLEVEL', IntToStr(GM_CHARJLEVEL));
        ini.WriteString('Fusion GM Commands', 'CHARSTATPOINT', IntToStr(GM_CHARSTATPOINT));
        ini.WriteString('Fusion GM Commands', 'CHARSKILLPOINT', IntToStr(GM_CHARSKILLPOINT));
        ini.WriteString('Fusion GM Commands', 'CHANGES', IntToStr(GM_CHANGES));

        ini.WriteString('Aegis GM Commands', 'AEGIS_B', IntToStr(GM_AEGIS_B));
        ini.WriteString('Aegis GM Commands', 'AEGIS_NB', IntToStr(GM_AEGIS_NB));
        ini.WriteString('Aegis GM Commands', 'AEGIS_BB', IntToStr(GM_AEGIS_BB));
        ini.WriteString('Aegis GM Commands', 'AEGIS_ITEM', IntToStr(GM_AEGIS_ITEM));
        ini.WriteString('Aegis GM Commands', 'AEGIS_MONSTER', IntToStr(GM_AEGIS_MONSTER));
        ini.WriteString('Aegis GM Commands', 'AEGIS_HIDE', IntToStr(GM_AEGIS_HIDE));
        ini.WriteString('Aegis GM Commands', 'AEGIS_RESETSTATE', IntToStr(GM_AEGIS_RESETSTATE));
        ini.WriteString('Aegis GM Commands', 'AEGIS_RESETSKILL', IntToStr(GM_AEGIS_RESETSKILL));

        ini.WriteString('Athena GM Commands', 'ATHENA_HEAL', IntToStr(GM_ATHENA_HEAL));
        ini.WriteString('Athena GM Commands', 'ATHENA_KAMI', IntToStr(GM_ATHENA_KAMI));
        ini.WriteString('Athena GM Commands', 'ATHENA_ALIVE', IntToStr(GM_ATHENA_ALIVE));
        ini.WriteString('Athena GM Commands', 'ATHENA_KILL', IntToStr(GM_ATHENA_KILL));
        ini.WriteString('Athena GM Commands', 'ATHENA_DIE', IntToStr(GM_ATHENA_DIE));
        ini.WriteString('Athena GM Commands', 'ATHENA_JOBCHANGE', IntToStr(GM_ATHENA_JOBCHANGE));
        ini.WriteString('Athena GM Commands', 'ATHENA_HIDE', IntToStr(GM_ATHENA_HIDE));
        ini.WriteString('Athena GM Commands', 'ATHENA_OPTION', IntToStr(GM_ATHENA_OPTION));
        ini.WriteString('Athena GM Commands', 'ATHENA_STORAGE', IntToStr(GM_ATHENA_STORAGE));
        ini.WriteString('Athena GM Commands', 'ATHENA_SPEED', IntToStr(GM_ATHENA_SPEED));
        ini.WriteString('Athena GM Commands', 'ATHENA_WHO3', IntToStr(GM_ATHENA_WHO3));
        ini.WriteString('Athena GM Commands', 'ATHENA_WHO2', IntToStr(GM_ATHENA_WHO2));
        ini.WriteString('Athena GM Commands', 'ATHENA_WHO', IntToStr(GM_ATHENA_WHO));
        ini.WriteString('Athena GM Commands', 'ATHENA_JUMP', IntToStr(GM_ATHENA_JUMP));
        ini.WriteString('Athena GM Commands', 'ATHENA_JUMPTO', IntToStr(GM_ATHENA_JUMPTO));
        ini.WriteString('Athena GM Commands', 'ATHENA_WHERE', IntToStr(GM_ATHENA_WHERE));
        ini.WriteString('Athena GM Commands', 'ATHENA_RURA', IntToStr(GM_ATHENA_RURA));
        ini.WriteString('Athena GM Commands', 'ATHENA_WARP', IntToStr(GM_ATHENA_WARP));
        ini.WriteString('Athena GM Commands', 'ATHENA_RURAP', IntToStr(GM_ATHENA_RURAP));
        ini.WriteString('Athena GM Commands', 'ATHENA_SEND', IntToStr(GM_ATHENA_SEND));
        ini.WriteString('Athena GM Commands', 'ATHENA_WARPP', IntToStr(GM_ATHENA_WARPP));
        ini.WriteString('Athena GM Commands', 'ATHENA_CHARWARP', IntToStr(GM_ATHENA_CHARWARP));
        ini.WriteString('Athena GM Commands', 'ATHENA_HELP', IntToStr(GM_ATHENA_HELP));
        ini.WriteString('Athena GM Commands', 'ATHENA_ZENY', IntToStr(GM_ATHENA_ZENY));
        ini.WriteString('Athena GM Commands', 'ATHENA_BASELVLUP', IntToStr(GM_ATHENA_BASELVLUP));
        ini.WriteString('Athena GM Commands', 'ATHENA_LVUP', IntToStr(GM_ATHENA_LVUP));
        ini.WriteString('Athena GM Commands', 'ATHENA_JOBLVLUP', IntToStr(GM_ATHENA_JOBLVLUP));
        ini.WriteString('Athena GM Commands', 'ATHENA_JOBLVUP', IntToStr(GM_ATHENA_JOBLVUP));
        ini.WriteString('Athena GM Commands', 'ATHENA_SKPOINT', IntToStr(GM_ATHENA_SKPOINT));

        ini.Free;

        //Free up the GM Command List when program closes down.
        for Idx := GM_Access_DB.Count-1 downto 0 do begin
            if Assigned(GM_Access_DB.Objects[Idx]) then begin
                (GM_Access_DB.Objects[Idx] AS TGM_Table).Free;
            end;
        end;

    End;(* Proc save_commands()
*-----------------------------------------------------------------------------*)


    procedure parse_commands(tc : TChara; str : String);
    var
        error_msg : String;
        gmstyle : String;
        aegistype : String;
    begin
    	if (Copy(str, 0, 1) = '/') then begin
        	gmstyle := '/';
            aegistype := Copy(str, 2, 1);
            str := Copy(str, 3, length(str) - 2);
        end

        else begin
        	gmstyle := Copy(str, Pos(' : ', str) + 3, 1);
            str := Copy(str, Pos(' : ', str) + 4, 256);
        end;


        error_msg := '';

        if gmstyle = '#' then begin
            if ( (copy(str, 1, length('alive')) = 'alive') and (check_level(tc.ID, GM_ALIVE)) ) then error_msg := command_alive(tc)
            else if ( (copy(str, 1, length('item')) = 'item') and (check_level(tc.ID, GM_ITEM)) ) then error_msg := command_item(tc, str)
            else if ( (copy(str, 1, length('save')) = 'save') and (check_level(tc.ID, GM_SAVE)) ) then error_msg := command_save(tc)
            else if ( (copy(str, 1, length('return')) = 'return') and (check_level(tc.ID, GM_RETURN)) ) then error_msg := command_return(tc)
            else if ( (copy(str, 1, length('die')) = 'die') and (check_level(tc.ID, GM_DIE)) ) then error_msg := command_die(tc)
            else if ( (copy(str, 1, length('auto')) = 'auto') and (check_level(tc.ID, GM_AUTO)) ) then error_msg := command_auto(tc, str)
            else if ( (copy(str, 1, length('hcolor')) = 'hcolor') and (check_level(tc.ID, GM_HCOLOR)) ) then error_msg := command_hcolor(tc, str)
            else if ( (copy(str, 1, length('ccolor')) = 'ccolor') and (check_level(tc.ID, GM_CCOLOR)) ) then error_msg := command_ccolor(tc, str)
            else if ( (copy(str, 1, length('hstyle')) = 'hstyle') and (check_level(tc.ID, GM_HSTYLE)) ) then error_msg := command_hstyle(tc, str)
            else if ( (copy(str, 1, length('kill')) = 'kill') and (check_level(tc.ID, GM_KILL)) ) then error_msg := command_kill(str)
            else if ( (copy(str, 1, length('goto')) = 'goto') and (check_level(tc.ID, GM_GOTO)) ) then error_msg := command_goto(tc, str)
            else if ( (copy(str, 1, length('summon')) = 'summon') and (check_level(tc.ID, GM_SUMMON)) ) then error_msg := command_summon(tc, str)
            else if ( (copy(str, 1, length('warp')) = 'warp') and (check_level(tc.ID, GM_WARP)) ) then error_msg := command_warp(tc, str)
            else if ( (copy(str, 1, length('banish')) = 'banish') and (check_level(tc.ID, GM_BANISH)) ) then error_msg := command_banish(str)
            else if ( (copy(str, 1, length('job')) = 'job') and (check_level(tc.ID, GM_JOB)) ) then error_msg := command_job(tc, str)
            else if ( (copy(str, 1, length('blevel')) = 'blevel') and (check_level(tc.ID, GM_BLEVEL)) ) then error_msg := command_blevel(tc, str)
            else if ( (copy(str, 1, length('jlevel')) = 'jlevel') and (check_level(tc.ID, GM_JLEVEL)) ) then error_msg := command_jlevel(tc, str)
            else if ( (copy(str, 1, length('changestat')) = 'changestat') and (check_level(tc.ID, GM_CHANGESTAT)) ) then error_msg := command_changestat(tc, str)
            else if ( (copy(str, 1, length('skillpoint')) = 'skillpoint') and (check_level(tc.ID, GM_SKILLPOINT)) ) then error_msg := command_skillpoint(tc, str)
            else if ( (copy(str, 1, length('skillall')) = 'skillall') and (check_level(tc.ID, GM_SKILLALL)) ) then error_msg := command_skillall(tc)
            else if ( (copy(str, 1, length('statall')) = 'statall') and (check_level(tc.ID, GM_STATALL)) ) then error_msg := command_statall(tc)
            else if ( (copy(str, 1, length('superstats')) = 'superstats') and (check_level(tc.ID, GM_SUPERSTATS)) ) then error_msg := command_superstats(tc)
            else if ( (copy(str, 1, length('zeny')) = 'zeny') and (check_level(tc.ID, GM_ZENY)) ) then error_msg := command_zeny(tc, str)
            else if ( (copy(str, 1, length('changeskill')) = 'changeskill') and (check_level(tc.ID, GM_CHANGESKILL)) ) then error_msg := command_changeskill(tc, str)
            else if ( (copy(str, 1, length('monster')) = 'monster') and (check_level(tc.ID, GM_MONSTER)) ) then error_msg := command_monster(tc, str)
            else if ( (copy(str, 1, length('speed')) = 'speed') and (check_level(tc.ID, GM_SPEED)) ) then error_msg := command_speed(tc, str)
            else if ( (copy(str, 1, length('whois')) = 'whois') and (check_level(tc.ID, GM_WHOIS)) ) then error_msg := command_whois(tc)
            else if ( (copy(str, 1, length('option')) = 'option') and (check_level(tc.ID, GM_OPTION)) ) then error_msg := command_option(tc, str)
            else if ( (copy(str, 1, length('raw')) = 'raw') and (check_level(tc.ID, GM_RAW)) ) then error_msg := command_raw(tc, str)
            else if ( (copy(str, 1, length('unit')) = 'unit') and (check_level(tc.ID, GM_UNIT)) ) then error_msg := command_unit(tc, str)
            else if ( (copy(str, 1, length('stat')) = 'stat') and (check_level(tc.ID, GM_STAT)) ) then error_msg := command_stat(tc, str)
            else if ( (copy(str, 1, length('refine')) = 'refine') and (check_level(tc.ID, GM_REFINE)) ) then error_msg := command_refine(tc, str)
            else if ( (copy(str, 1, length('glevel')) = 'glevel') and (check_level(tc.ID, GM_GLEVEL)) ) then error_msg := command_glevel(tc, str)
            else if ( (copy(str, 1, length('ironical')) = 'ironical') and (check_level(tc.ID, GM_IRONICAL)) ) then error_msg := command_ironical(tc)
            else if ( (copy(str, 1, length('mothball')) = 'mothball') and (check_level(tc.ID, GM_MOTHBALL)) ) then error_msg := command_mothball(tc)
            else if ( (copy(str, 1, length('where')) = 'where') and (check_level(tc.ID, GM_WHERE)) ) then error_msg := command_where(tc, str)
            else if ( (copy(str, 1, length('revive')) = 'revive') and (check_level(tc.ID, GM_REVIVE)) ) then error_msg := command_revive(str)
            else if ( (copy(str, 1, length('ban')) = 'ban') and (check_level(tc.ID, GM_BAN)) ) then error_msg := command_ban(str)
            else if ( (copy(str, 1, length('kick')) = 'kick') and (check_level(tc.ID, GM_KICK)) ) then error_msg := command_kick(str)
            else if ( (copy(str, 1, length('icon')) = 'icon') and (check_level(tc.ID, GM_ICON)) ) then error_msg := command_icon(tc, str)
            else if ( (copy(str, 1, length('unicon')) = 'unicon') and (check_level(tc.ID, GM_UNICON)) ) then error_msg := command_unicon(tc, str)
            else if ( (copy(str, 1, length('server')) = 'server') and (check_level(tc.ID, GM_SERVER)) ) then error_msg := command_server()
            else if ( (copy(str, 1, length('pvpon')) = 'pvpon') and (check_level(tc.ID, GM_PVPON)) ) then error_msg := command_pvpon(tc)
            else if ( (copy(str, 1, length('pvpoff')) = 'pvpoff') and (check_level(tc.ID, GM_PVPOFF)) ) then error_msg := command_pvpoff(tc)
            else if ( (copy(str, 1, length('gpvpon')) = 'gpvpon') and (check_level(tc.ID, GM_GPVPON)) ) then error_msg := command_gpvpon(tc)
            else if ( (copy(str, 1, length('gpvpoff')) = 'gpvpoff') and (check_level(tc.ID, GM_GPVPOFF)) ) then error_msg := command_gpvpoff(tc)
            else if ( (copy(str, 1, length('newplayer')) = 'newplayer') and (check_level(tc.ID, GM_NEWPLAYER)) ) then error_msg := command_newplayer(str)
            else if ( (copy(str, 1, length('pword')) = 'pword') and (check_level(tc.ID, GM_PWORD)) ) then error_msg := command_pword(tc, str)
            else if ( (copy(str, 1, length('users')) = 'users') and (check_level(tc.ID, GM_USERS)) ) then error_msg := command_users()
            else if ( (copy(str, 1, length('charblevel')) = 'charblevel') and (check_level(tc.ID, GM_CHARBLEVEL)) ) then error_msg := command_charblevel(tc, str)
            else if ( (copy(str, 1, length('charjlevel')) = 'charjlevel') and (check_level(tc.ID, GM_CHARJLEVEL)) ) then error_msg := command_charjlevel(tc, str)
            else if ( (copy(str, 1, length('charstatpoint')) = 'charstatpoint') and (check_level(tc.ID, GM_CHARSTATPOINT)) ) then error_msg := command_charstatpoint(tc, str)
            else if ( (copy(str, 1, length('charskillpoint')) = 'charskillpoint') and (check_level(tc.ID, GM_CHARSKILLPOINT)) ) then error_msg := command_charskillpoint(tc, str)
            else if ( (copy(str, 1, length('changes')) = 'changes') and (check_level(tc.ID, GM_CHANGES)) ) then error_msg := command_changes(tc, str)
        end else if gmstyle = '@' then begin
            if ( (copy(str, 1, length('heal')) = 'heal') and (check_level(tc.ID, GM_ATHENA_HEAL)) ) then error_msg := command_athena_heal(tc, str)
            else if ( (copy(str, 1, length('kami')) = 'kami') and (check_level(tc.ID, GM_ATHENA_KAMI)) ) then error_msg := command_athena_kami(tc, str)
            else if ( (copy(str, 1, length('alive')) = 'alive') and (check_level(tc.ID, GM_ATHENA_ALIVE)) ) then error_msg := command_athena_alive(tc)
            else if ( (copy(str, 1, length('kill')) = 'kill') and (check_level(tc.ID, GM_ATHENA_KILL)) ) then error_msg := command_athena_kill(tc, str)
			else if ( (copy(str, 1, length('die')) = 'die') and (check_level(tc.ID, GM_ATHENA_DIE)) ) then error_msg := command_athena_die(tc)
            else if ( (copy(str, 1, length('jobchange')) = 'jobchange') and (check_level(tc.ID, GM_ATHENA_JOBCHANGE)) ) then error_msg := command_athena_jobchange(tc, str)
            else if ( (copy(str, 1, length('hide')) = 'hide') and (check_level(tc.ID, GM_ATHENA_HIDE)) ) then error_msg := command_athena_hide(tc)
            else if ( (copy(str, 1, length('option')) = 'option') and (check_level(tc.ID, GM_ATHENA_OPTION)) ) then error_msg := command_athena_option(tc, str)
            else if ( (copy(str, 1, length('storage')) = 'storage') and (check_level(tc.ID, GM_ATHENA_STORAGE)) ) then error_msg := command_athena_storage(tc)
            else if ( (copy(str, 1, length('speed')) = 'speed') and (check_level(tc.ID, GM_ATHENA_SPEED)) ) then error_msg := command_athena_speed(tc, str)
            else if ( (copy(str, 1, length('who3')) = 'who3') and (check_level(tc.ID, GM_ATHENA_WHO3)) ) then error_msg := command_athena_who3(tc, str)
            else if ( (copy(str, 1, length('who2')) = 'who2') and (check_level(tc.ID, GM_ATHENA_WHO2)) ) then error_msg := command_athena_who2(tc, str)
            else if ( (copy(str, 1, length('who')) = 'who') and (check_level(tc.ID, GM_ATHENA_WHO)) ) then error_msg := command_athena_who(tc, str)
            else if ( (copy(str, 1, length('jumpto')) = 'jumpto') and (check_level(tc.ID, GM_ATHENA_JUMPTO)) ) then error_msg := command_athena_jumpto(tc, str)
            else if ( (copy(str, 1, length('jump')) = 'jump') and (check_level(tc.ID, GM_ATHENA_JUMP)) ) then error_msg := command_athena_jump(tc, str)
            else if ( (copy(str, 1, length('where')) = 'where') and (check_level(tc.ID, GM_ATHENA_WHERE)) ) then error_msg := command_athena_where(tc, str)
            else if ( (copy(str, 1, length('rura+')) = 'rura+') and (check_level(tc.ID, GM_ATHENA_RURAP)) ) then error_msg := command_athena_rurap(tc, str)
            else if ( (copy(str, 1, length('rura')) = 'rura') and (check_level(tc.ID, GM_ATHENA_RURA)) ) then error_msg := command_athena_rura(tc, str)
            else if ( (copy(str, 1, length('warp+')) = 'warp+') and (check_level(tc.ID, GM_ATHENA_WARPP)) ) then error_msg := command_athena_warpp(tc, str)
            else if ( (copy(str, 1, length('warp')) = 'warp') and (check_level(tc.ID, GM_ATHENA_WARP)) ) then error_msg := command_athena_warp(tc, str)
            else if ( (copy(str, 1, length('send')) = 'send') and (check_level(tc.ID, GM_ATHENA_SEND)) ) then error_msg := command_athena_send(tc, str)
            else if ( (copy(str, 1, length('charwarp')) = 'charwarp') and (check_level(tc.ID, GM_ATHENA_CHARWARP)) ) then error_msg := command_athena_charwarp(tc, str)
            else if ( (copy(str, 1, length('help')) = 'help') and (check_level(tc.ID, GM_ATHENA_HELP)) ) then error_msg := command_athena_help(tc)
            else if ( (copy(str, 1, length('zeny')) = 'zeny') and (check_level(tc.ID, GM_ATHENA_ZENY)) ) then error_msg := command_athena_zeny(tc, str)
			else if ( (copy(str, 1, length('baselvlup')) = 'baselvlup') and (check_level(tc.ID, GM_ATHENA_BASELVLUP)) ) then error_msg := command_athena_baselvlup(tc, str)
            else if ( (copy(str, 1, length('lvup')) = 'lvup') and (check_level(tc.ID, GM_ATHENA_LVUP)) ) then error_msg := command_athena_lvup(tc, str)
            else if ( (copy(str, 1, length('joblvlup')) = 'joblvlup') and (check_level(tc.ID, GM_ATHENA_JOBLVLUP)) ) then error_msg := command_athena_joblvlup(tc, str)
            else if ( (copy(str, 1, length('joblvup')) = 'joblvup') and (check_level(tc.ID, GM_ATHENA_JOBLVUP)) ) then error_msg := command_athena_joblvup(tc, str)
            else if ( (copy(str, 1, length('skpoint')) = 'skpoint') and (check_level(tc.ID, GM_ATHENA_SKPOINT)) ) then error_msg := command_athena_skpoint(tc, str)
        end else if gmstyle = '/' then begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -