変数manage書きましたよー
ちゃんとID代入して
繰り返しで検索するようにしましたw
しかし、現在、二つくらい改善案あります
・配列にマイナスのインデックスを渡すバグ修正
使う人のバグではあるがw
#module mod_variable v_i_name,v_i_ID,v_i_v_value #modinit str p_name,int p_ID,int p_v_value v_i_name=p_name v_i_ID=p_ID v_i_v_value=p_v_value return #modcfunc local get_i_name return v_i_name #modcfunc local get_i_ID return v_i_ID #modcfunc local get_i_v_value return v_i_v_value #modfunc local set_i_v_value var _p4set_value v_i_v_value = _p4set_value return #modfunc local dump mes "dump_A"+v_i_v_value mes "dump_B"+v_i_ID return #global #module variable_manage #deffunc local set_ID_sw_zero fv_ID=0 return #deffunc local x_var_init str _p_name,int _p_ID,int _p_v_value newmod o_var,mod_variable,_p_name,_p_ID,_p_v_value ; mes get_i_ID@mod_variable(o_var.fv_ID) fv_ID++ return #defcfunc local var_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_variable(o_var.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 varID"+_3p_ID,1 return -1 #defcfunc local is_hit_after_var_search str _4p_name,int _4p_i if _4p_i==-1:return -1 rr_name=get_i_name@mod_variable(o_var._4p_i) if rr_name==_4p_name:return 1 dialog "don't hit from varID"+_4p_i,1 ; dialog ""+rr_name,1 return -1 #deffunc local set_x_var_value str _p3c_name,int _p3c_ID,var _p3c_4set,local loc_sch_b,local loc_hit_b loc_sch_b=var_search_from_ID@variable_manage(_p3c_ID) loc_hit_b=is_hit_after_var_search@variable_manage(_p3c_name,loc_sch_b) if (loc_sch_b!=-1){ if (loc_hit_b!=-1){ pre_set_x_var_value@variable_manage _p3c_name,loc_sch_b,_p3c_4set } } return -1 #defcfunc local pre_get_x_var_value str __p_name,int __p_ID,local r_name r_name=get_i_name@mod_variable(o_var.__p_ID) if r_name!=__p_name:return -1 return get_i_v_value@mod_variable(o_var.__p_ID) #deffunc local pre_set_x_var_value str __p_name,int __p_ID,var __p4set,local r_name r_name=get_i_name@mod_variable(o_var.__p_ID) logmes ""+__p4set logmes ""+r_name if r_name!=__p_name:return -1 set_i_v_value@mod_variable o_var.__p_ID,__p4set return #defcfunc local get_x_var_value str __p_name,int _p3b_ID,local loc_sch,local loc_hit loc_sch=var_search_from_ID@variable_manage(_p3b_ID) loc_hit=is_hit_after_var_search@variable_manage(__p_name,loc_sch) if (loc_sch!=-1){ if (loc_hit!=-1){ return pre_get_x_var_value@variable_manage(__p_name,loc_sch) } } return -1 #deffunc local dump dump@mod_variable o_var.0 dump@mod_variable o_var.1 return #global set_ID_sw_zero@variable_manage x_var_init@variable_manage "x",1,2 x_var_init@variable_manage "y",6,4 dump@variable_manage ;sch1=var_search_from_ID@variable_manage(1) ;mes "search "+sch1 ;sch2=var_search_from_ID@variable_manage(6) ;mes "search "+sch2 ;sch3=var_search_from_ID@variable_manage(3) ;mes "search "+sch3 ;mes "hit"+is_hit_after_var_search@variable_manage("x",sch1) ;mes "hit"+is_hit_after_var_search@variable_manage("xx",sch1) ;mes "hit"+is_hit_after_var_search@variable_manage("y",sch2) ;mes "hit"+is_hit_after_var_search@variable_manage("y",sch3) *begin cls 0 button "add",*l_add stop *l_add cls 0 v1=0 v2=0 v1=get_x_var_value@variable_manage("x",1) v1=get_x_var_value@variable_manage("x",10);error v2=get_x_var_value@variable_manage("y",6) dump@variable_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) ; } mes v1 mes v2 v1=v1+1 v2=v2+2 set_x_var_value@variable_manage "x",1,v1 set_x_var_value@variable_manage "y",6,v2 set_x_var_value@variable_manage "z",11,v2;error mes v1 mes v2 dump@variable_manage button "NEXT",*l_add stop ; 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