それを一度試そうと思って コンパイルしようとしたら
下記の様なエラーになりまして・・・
問題の署名:
問題イベント名: BEX
アプリケーション名: hsed3.exe
アプリケーションのバージョン: 3.3.1.0
アプリケーションのタイムスタンプ: 54196142
障害モジュールの名前: hspcmp.dll
障害モジュールのバージョン: 0.0.0.0
障害モジュールのタイムスタンプ: 53c61e3d
↑正直どこに問題があるのかさっぱりな状態です。
今作ってるアクションゲーム以外だと無事コンパイルできたので たぶん
今作ってるやつのどこかに問題があるのだろうとまで考えれましたが
そこから先はさっぱりです。
今迄はコンパイル出来ていたので たぶん、ソースの中に問題があるのだろうと思ったので
ソースを貼ります。
#packopt name "PutitAction" screen 0,400,300 #module #defcfunc mapcheck int nowx, int asimotox return (nowx + asimotox) / 32 #defcfunc movecheck int nowx, int nowy, int asimotox, int asimotoy, int maxx, int maxy, array stagemap if mapcheck(nowx, asimotox) < 0 or mapcheck(nowx, asimotox) >= maxx : return 1 if mapcheck(nowy, asimotoy) < 0 or mapcheck(nowy, asimotoy) >= maxy : return 0 return stagemap(mapcheck(nowx, asimotox), mapcheck(nowy, asimotoy)) #global celload "mainchar.png", 1 : celdiv 1, 32, 32 celload "stage.png", 2 : celdiv 2, 32, 32 celload "enemy_s.png", 3 : celdiv 3, 32, 32 stagewide = 0 : stagehigh = 0 : nowstage_posx = 0 : nowstage_posy = 0 nowchar_posx = 32 : nowchar_posy = 200 mainchar_grv = 0 : mainchar_speed = 0 : damege_cnt = 0 dim dairi, 5 : movestick = 0 temp = 0 enemymem = "" : charvalue = 0 //エネミーデータロード notesel enemymem noteload "edata.txt" : charvalue = noteinfo(0) enemydata = "" : enemy_loadstock = "" : enemy_sidestock = "" : enemy_animestock = "" //先頭画像番号:行動パターン:移動タイプ:上判定,下判定,右判定,左判定:スコア:ダメージ判定:アニメーション切り替え1,2…:フラグ:引数数 //移動タイプ(0=歩行:1=飛行) //ダメージ判定(0=通常:1=投擲物のみ:2=無敵:3=即死:4=最弱) dim e_drawhead, charvalue : dim e_pattern, charvalue : dim e_movetype, charvalue dim e_head, charvalue : dim e_legg, charvalue : dim e_left, charvalue : dim e_right, charvalue dim e_score, charvalue : dim e_dcheck, charvalue repeat charvalue noteget enemydata, cnt split enemydata, ":", enemy_loadstock e_drawhead(cnt) = int(enemy_loadstock(0)) : e_pattern = int(enemy_loadstock(1)) : e_movetype(cnt) = int(enemy_loadstock(2)) split enemy_loadstock(3), ",", enemy_sidestock e_head(cnt) = int(enemy_sidestock(0)) : e_legg(cnt) = int(enemy_sidestock(1)) e_left(cnt) = int(enemy_sidestock(2)) : e_right(cnt) = int(enemy_sidestock(3)) e_score(cnt) = int(enemy_loadstock(4)) e_dcheck(cnt) = int(enemy_loadstock(5)) loop stagedata = "" : loadstage_check = "" : stagemem = "" stagecheck_check = "" : stagedraw_check = "" : enemyreload_check = "" sdim loadstage_check, 99, 999 dim stagemap, 10, 10 : dim stagedraw, 10, 10 //ステージデータロード notesel stagemem noteload "stagedata.mwd" : stagehigh = noteinfo(0) noteget stagedata, 0 split stagedata, ",", loadstage_check stagewide = stat; dim stagemap, stagewide, stagehigh : dim stagedraw, stagewide, stagehigh dim enemyreload, stagewide, stagehigh ENEMY_CNTMAX = stagewide * stagehigh * 15 / 10 dim es_mode, ENEMY_CNTMAX //敵キャラの状態(0=存在しない 1=生存 2=死亡 3=ダメージ) dim es_time, ENEMY_CNTMAX //タイマー dim es_spee, ENEMY_CNTMAX //横スピード dim es_grvi, ENEMY_CNTMAX // dim es_char, ENEMY_CNTMAX //キャラの種類 dim es_patt, ENEMY_CNTMAX //キャラのAIの内容 dim es_posx, ENEMY_CNTMAX //X座標 dim es_posy, ENEMY_CNTMAX //Y座標 dim es_move, ENEMY_CNTMAX //行動パターン dim es_head, ENEMY_CNTMAX //判定↑ dim es_legg, ENEMY_CNTMAX //判定↓ dim es_left, ENEMY_CNTMAX //判定← dim es_right, ENEMY_CNTMAX //判定→ temp = 0 : nowCE = 0 repeat stagehigh noteget stagedata, cnt split stagedata, ",", loadstage_check for dairi(0), 0, stagewide split loadstage_check(dairi(0)), ":", stagecheck_check, stagedraw_check, enemyreload_check stagemap(dairi(0), cnt) = int(stagecheck_check) stagedraw(dairi(0), cnt) = int(stagedraw_check) dairi(1) = int(enemyreload_check) - 1 if dairi(1) >= 0 { es_mode(temp) = 1 es_time(temp) = 0 // es_char(temp) = e_drawhead(dairi(1)) es_patt(temp) = e_pattern(dairi(1)) es_posx(temp) = dairi(0) * 32 es_posy(temp) = cnt * 32 es_move(temp) = e_movetype(dairi(1)) es_head(temp) = e_head(dairi(1)) es_legg(temp) = e_legg(dairi(1)) es_left(temp) = e_left(dairi(1)) es_right(temp) = e_right(dairi(1)) temp++ } next loop *main while redraw 0 stick movestick, 5; gosub *mapchip_draw gosub *chardraw gosub *enemy_draw gosub *damege_check gosub *mainchar_move gosub *movescreen redraw 1 await 16 wend ////////////////////////////////////////// ///////////////////////////////////////// //////////////////////////////////////// *mapchip_draw for dairi(0), mapcheck(nowstage_posx, 0), mapcheck(nowstage_posx, 0) + 14 if dairi(0) >= stagewide : _break for dairi(1), mapcheck(nowstage_posy, 0), mapcheck(nowstage_posy, 0) + 11 if dairi(1) >= stagehigh : _break pos (dairi(0) - mapcheck(nowstage_posx, 0)) * 32 - (nowstage_posx\32), (dairi(1) - mapcheck(nowstage_posy, 0)) * 32 - (nowstage_posy\32) celput 2, stagedraw(dairi(0), dairi(1)) next next return *chardraw pos nowchar_posx - nowstage_posx, nowchar_posy - nowstage_posy if damege_cnt/5\2 = 0 { gmode 2 : celput 1, 0 } return *enemy_draw repeat ENEMY_CNTMAX if es_mode(cnt) = 0 : continue if es_posx(cnt) - nowstage_posx < - 64 || 400 < es_posx(cnt) - nowstage_posx : continue if es_posy(cnt) - nowstage_posy < - 64 || 300 < es_posy(cnt) - nowstage_posy : continue pos es_posx(cnt) - nowstage_posx, es_posy(cnt) - nowstage_posy gmode 2 : celput 3, es_char(cnt) loop return *mainchar_move temp = movecheck(nowchar_posx, nowchar_posy, 15, 32, stagewide, stagehigh, stagemap) if temp = 1 or temp = 3 { if movestick&16 : mainchar_grv = -30 } if movecheck(nowchar_posx, nowchar_posy, 26, 15, stagewide, stagehigh, stagemap) != 1 & movestick = 4 { mainchar_speed++ } if movecheck(nowchar_posx, nowchar_posy, 3, 15, stagewide, stagehigh, stagemap) != 1 & movestick = 1 { mainchar_speed-- } if damege_cnt < 140 { if mainchar_speed > 0 & movestick != 4 : mainchar_speed-- if mainchar_speed < 0 & movestick != 1 : mainchar_speed++ } switch movecheck(nowchar_posx, nowchar_posy, 15, 32, stagewide, stagehigh, stagemap) case 0 mainchar_grv++ swbreak case 3 temp = mapcheck(nowchar_posy, 32) * 32 if nowchar_posy + 31 < temp - 1 or temp + 5 < nowchar_posy + 31 { mainchar_grv++ } swbreak case 4 temp = 0 mainchar_grv = -31 if damege_cnt = 0 { if mainchar_speed > 0 & temp = 0 : mainchar_speed = -25 : temp = 1 if mainchar_speed < 0 & temp = 0 : mainchar_speed = 25 : temp = 1 damege_cnt = 160 } swbreak swend if movecheck(nowchar_posx, nowchar_posy, 15, 0, stagewide, stagehigh, stagemap) = 1 { mainchar_grv++ repeat if movecheck(nowchar_posx, nowchar_posy, 15, 0, stagewide, stagehigh, stagemap) != 1 : break nowchar_posy++ loop } //////////////////////////////////右判定 switch movecheck(nowchar_posx, nowchar_posy, 25, 15, stagewide, stagehigh, stagemap) case 1 mainchar_speed = 0 repeat if movecheck(nowchar_posx, nowchar_posy, 25, 15, stagewide, stagehigh, stagemap) != 1 : break nowchar_posx-- loop swbreak case 4 mainchar_grv = -21 if damege_cnt = 0 : mainchar_speed = -30 : damege_cnt = 160 swbreak swend //////////////////////////////////左判定 switch movecheck(nowchar_posx, nowchar_posy, 4, 15, stagewide, stagehigh, stagemap) case 1 mainchar_speed = 0 repeat if movecheck(nowchar_posx, nowchar_posy, 4, 15, stagewide, stagehigh, stagemap) != 1 : break nowchar_posx++ loop swbreak case 4 mainchar_grv = -21 if damege_cnt = 0 : mainchar_speed = 30 : damege_cnt = 160 swbreak swend /////////////////////////////////////下判定 switch movecheck(nowchar_posx, nowchar_posy, 15, 31, stagewide, stagehigh, stagemap) case 1 mainchar_grv = 0 repeat if movecheck(nowchar_posx, nowchar_posy, 15, 31, stagewide, stagehigh, stagemap) != 1 : break nowchar_posy-- loop swbreak case 3 temp = mapcheck(nowchar_posy, 31) * 32 if temp <= nowchar_posy + 31 & nowchar_posy + 31 <= temp + 6 & mainchar_grv >= 0 { mainchar_grv = 0 repeat if temp > nowchar_posy + 31 : break nowchar_posy-- loop } swbreak case 4 repeat if movecheck(nowchar_posx, nowchar_posy, 15, 31, stagewide, stagehigh, stagemap) != 4 : break nowchar_posy-- loop swbreak swend nowchar_posx += mainchar_speed/4 nowchar_posy += mainchar_grv/4 if mainchar_grv > 30 : mainchar_grv = 30 if mainchar_speed > 12 & mainchar_speed < 20 : mainchar_speed = 12 if mainchar_speed < -12 & mainchar_speed > -20 : mainchar_speed = -12 return *movescreen if nowchar_posx - nowstage_posx > 118 & nowstage_posx + 400 < stagewide * 32 : nowstage_posx++ if nowchar_posx - nowstage_posx < 150 & nowstage_posx > 0 : nowstage_posx-- if nowchar_posx - nowstage_posx > 168 & nowstage_posx + 400 < stagewide * 32 : nowstage_posx = nowchar_posx - 168 if nowchar_posx - nowstage_posx < 100 & nowstage_posx > 0 : nowstage_posx = nowchar_posx - 100 if nowchar_posy - nowstage_posy > 240 & nowstage_posy + 300 < stagehigh * 32 : nowstage_posy++ if nowchar_posy - nowstage_posy < 100 & nowstage_posy > 0 : nowstage_posy-- if nowchar_posy - nowstage_posy > 268 & nowstage_posy + 300 < stagehigh * 32 : nowstage_posy = nowchar_posy - 268 if nowchar_posy - nowstage_posy < 50 & nowstage_posy > 0 : nowstage_posy = nowchar_posy - 50 return *damege_check if damege_cnt > 0 { damege_cnt-- } return *enemy_AI_base return; *enemy_AI_walk temp = movecheck(es_posx(nowCE), es_posy(nowCE), (es_right(nowCE) + es_left(nowCE))/2, es_legg(nowCE) + 1 , stagewide, stagehigh, stagemap) if temp = 1 or temp = 3 { } if movecheck(es_posx(nowCE), es_posy(nowCE), es_right(nowCE), (es_head(nowCE) + es_legg(nowCE))/2, stagewide, stagehigh, stagemap) != 1 { } if movecheck(es_posx(nowCE), es_posy(nowCE), es_left(nowCE), (es_right(nowCE) + es_left(nowCE))/2, stagewide, stagehigh, stagemap) != 1 { } //if mainchar_speed > 0 & movestick != 4 : mainchar_speed-- //if mainchar_speed < 0 & movestick != 1 : mainchar_speed++ switch movecheck(es_posx(nowCE), es_posy(nowCE), (es_right(nowCE) + es_left(nowCE))/2, es_legg(nowCE) + 1 , stagewide, stagehigh, stagemap) case 0 es_grvi(nowCE)++ swbreak case 3 temp = mapcheck(nowchar_posy, 32) * 32 if es_posy(nowCE) + es_legg(nowCE) < temp - 1 or temp + 5 < es_posy(nowCE) + es_legg(nowCE) { es_grvi(nowCE)++ } swbreak case 4 temp = 0 es_grvi(nowCE) = -31 swbreak swend //////////////////////////////////右判定 switch movecheck(es_posx(nowCE), es_posy(nowCE), es_right(nowCE), (es_head(nowCE) + es_legg(nowCE))/2, stagewide, stagehigh, stagemap) case 1 case 4 repeat temp = movecheck(es_posx(nowCE), es_posy(nowCE), es_right(nowCE), (es_head(nowCE) + es_legg(nowCE))/2, stagewide, stagehigh, stagemap) if temp != 1 && temp != 4 : break es_posx(nowCE)-- loop swbreak swend //////////////////////////////////左判定 switch movecheck(es_posx(nowCE), es_posy(nowCE), es_left(nowCE), (es_head(nowCE) + es_legg(nowCE))/2, stagewide, stagehigh, stagemap) case 1 case 4 repeat temp = movecheck(es_posx(nowCE), es_posy(nowCE), es_left(nowCE), (es_head(nowCE) + es_legg(nowCE))/2, stagewide, stagehigh, stagemap) if temp != 1 && temp != 4 : break es_posx(nowCE)++ loop swbreak swend /////////////////////////////////////下判定 switch movecheck(es_posx(nowCE), es_posy(nowCE), (es_left(nowCE) + es_right(nowCE))/2, es_legg(nowCE)), stagewide, stagehigh, stagemap) case 1 case 4 es_grvi(nowCE) = 0 repeat temp = movecheck(es_posx(nowCE), es_posy(nowCE), (es_left(nowCE) + es_right(nowCE))/2, es_legg(nowCE)), stagewide, stagehigh, stagemap) if temp != 1 && temp != 4 : break es_posy(nowCE)-- loop swbreak case 3 temp = mapcheck(es_posy(nowCE), es_legg(nowCE)) * 32 if temp <= es_posy(nowCE) + es_legg(nowCE) & es_posy(nowCE) + es_legg(nowCE) <= temp + 6 & es_grvi(nowCE) >= 0 { mainchar_grv = 0 repeat if temp > es_posy(nowCE) + es_legg(nowCE) : break es_posy(nowCE)-- loop } swbreak swend //es_posx(nowCE) += mainchar_speed/4 es_posy(nowCE) += es_grvi(nowCE)/4 if es_grvi(nowCE) > 30 : es_grvi(nowCE) = 30 //if mainchar_speed > 12 & mainchar_speed < 20 : mainchar_speed = 12 //if mainchar_speed < -12 & mainchar_speed > -20 : mainchar_speed = -12 return
以上です。
これが解決しない事には何もできません。
誰か助けてください。