モジュール。マイナーアップデートです 登録する時、番号が登録されてるか調べるようにしました
#module mod_label i_name,i_ID,i_l_value ;i_nameラベル変数の名前 ;i_nameラベル変数のID ;i_nameラベル変数の値、コマンド番号を格納する(だったようなw) #modinit str p_name,int p_ID,int p_l_value i_name=p_name i_ID=p_ID i_l_value=p_l_value return ;モジュールのメンバ変数に値を代入。変数とか言って ;代入する命令がないので、定数を格納するかんじだったか、とりあえずで作ってほっといたかw ;getter #modcfunc local get_i_name return i_name #modcfunc local get_i_ID return i_ID #modcfunc local get_i_l_value return i_l_value #modfunc local set_i_l_value var _p4set_value i_l_value = _p4set_value return #modfunc local dump mes "dump_A"+i_l_value mes "dump_B"+i_ID return #global #module label_manage #deffunc local set_ID_sw_zero ; global fv_ID fv_ID=0 return #deffunc local x_label_search_init str _p_name,int _p_ID,int _p_l_value,local loc_r loc_r=label_search_from_ID_non_error_mes(_p_ID) if loc_r==-1{ newmod o_label,mod_label,_p_name,_p_ID,_p_l_value fv_ID++ return } dialog "your ID already rgst:"+_p_ID,1 return #defcfunc local label_search_from_ID_non_error_mes int _3p_ID,local loc_i,local loc_get_index for loc_i,0,fv_ID,1 loc_get_index=get_i_ID@mod_label(o_label.loc_i) ; mes "ID"+get_i_ID@mod_variable(o_var.loc_i) if loc_get_index==_3p_ID:return loc_i next return -1 #defcfunc local label_search_from_ID int _3p_ID,local loc_i,local loc_get_index for loc_i,0,fv_ID,1 loc_get_index=get_i_ID@mod_label(o_label.loc_i) ; mes "ID"+get_i_ID@mod_variable(o_var.loc_i) if loc_get_index==_3p_ID:return loc_i next dialog "don't find from labelID"+_3p_ID,1 return -1 #defcfunc local is_hit_after_label_search str _4p_name,int _4p_i if _4p_i==-1:return -1 rr_name=get_i_name@mod_label(o_label._4p_i) if rr_name==_4p_name:return 1 dialog "don't hit from labelID"+_4p_i,1 ; dialog ""+rr_name,1 return -1 #defcfunc local pre_get_x_label_value str __p_name,int __p_ID,local r_name r_name=get_i_name@mod_label(o_label.__p_ID) if r_name!=__p_name:return -1 return get_i_l_value@mod_label(o_label.__p_ID) #defcfunc local get_x_label_value str __p_name,int _p3b_ID,local loc_sch,local loc_hit loc_sch=label_search_from_ID@label_manage(_p3b_ID) loc_hit=is_hit_after_label_search@label_manage(__p_name,loc_sch) if (loc_sch!=-1){ if (loc_hit!=-1){ return pre_get_x_label_value@label_manage(__p_name,loc_sch) } } return -1 #deffunc local pre_set_x_label_value str __p_name,int __p_ID,var __p4set,local r_name r_name=get_i_name@mod_label(o_label.__p_ID) logmes ""+__p4set logmes ""+r_name if r_name!=__p_name:return -1 set_i_l_value@mod_label o_label.__p_ID,__p4set return #deffunc local set_x_label_value str _p3c_name,int _p3c_ID,var _p3c_4set,local loc_sch_b,local loc_hit_b loc_sch_b=label_search_from_ID@label_manage(_p3c_ID) loc_hit_b=is_hit_after_label_search@label_manage(_p3c_name,loc_sch_b) if (loc_sch_b!=-1){ if (loc_hit_b!=-1){ pre_set_x_label_value@label_manage _p3c_name,loc_sch_b,_p3c_4set } } return -1 #deffunc local dump dump@mod_label o_label.0 dump@mod_label o_label.1 return #global ;変数をIDだけでも名前だけで識別してるわけでもなく ;IDを渡して返ってきた名前と引数で指定した名前が等しい時 指定が正しい。としています ;IDだけだと間違いやすく ;名前だけだと検索するのに時間がかかるので ;取得はめんどくさいですが ;二つのやり方のいいとこどりとなっています set_ID_sw_zero@label_manage ; x_label_init@label_manage "x",3,10 ; x_label_init@label_manage "y",6,20 x_label_search_init@label_manage "x",3,10 x_label_search_init@label_manage "y",6,20 x_label_search_init@label_manage "z",3,30;error dump@label_manage l1=pre_get_x_label_value@label_manage("x",0) l2=pre_get_x_label_value@label_manage("y",1) ; l3=pre_get_x_label_value@label_manage("xx",3);error ; l4=pre_get_x_label_value@label_manage("x",9);error dump@label_manage sch1=label_search_from_ID@label_manage(3) mes "search "+sch1 sch2=label_search_from_ID@label_manage(6) mes "search "+sch2 sch3=label_search_from_ID@label_manage(9);error mes "search "+sch3 mes "hit"+is_hit_after_label_search@label_manage("x",sch1) mes "hit"+is_hit_after_label_search@label_manage("xx",sch1);error mes "hit"+is_hit_after_label_search@label_manage("y",sch2) mes "hit"+is_hit_after_label_search@label_manage("z",sch3);error v1=0 v2=0 v1=get_x_label_value@label_manage("x",3) v2=get_x_label_value@label_manage("y",6) v3=get_x_label_value@label_manage("z",9);error dump@label_manage ; sch1=var_search_from_ID@variable_manage(1) ; mes "search "+sch1 ; hit1=is_hit_after_var_search@variable_manage("x",sch1) ; mes "hit"+hit1 ; if (sch1!=-1)&&(hit1!=-1){ ; v1=get_x_var_value@variable_manage("x",sch1) ; } ; sch2=var_search_from_ID@variable_manage(6) ; mes "search "+sch2 ; hit2=is_hit_after_var_search@variable_manage("y",sch2) ; mes "hit"+hit2 ; if (sch2!=-1)&&(hit2!=-1){ ; v2=pre_get_x_var_value@variable_manage("y",sch2) ; } f1=100 set_x_label_value@label_manage "x",3,f1 f2=200 set_x_label_value@label_manage "y",6,f2 f3=300 set_x_label_value@label_manage "z",9,f3;error dump@label_manage ; sch1=var_search_from_ID@variable_manage(1) ; mes "search "+sch1 ; hit1=is_hit_after_var_search@variable_manage("x",sch1) ; mes "hit"+hit1 ; if (sch1!=-1)&&(hit1!=-1){ ;; v1=get_x_var_value@variable_manage("x",hit1) ; pre_set_x_var_value@variable_manage "x",sch1,v1 ; } ;; set_x_var_value@variable_manage "x",1,v1 ; sch2=var_search_from_ID@variable_manage(6) ; mes "search "+sch2 ; hit2=is_hit_after_var_search@variable_manage("y",sch2) ; mes "hit"+hit2 ; if (sch2!=-1)&&(hit2!=-1){ ;; v2=get_x_var_value@variable_manage("y",hit2) ; pre_set_x_var_value@variable_manage "y",sch2,v2 ; } ;; set_x_var_value@variable_manage "y",6,v2 ; mes v1 ; mes v2 ; dump@variable_manage ; button "NEXT",*l_add ; stop