X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
| Revision | 254 (tree) |
|---|---|
| Time | 2020-12-30 23:06:58 |
| Author | |
死亡判定後から死体になるまでの間に一部裏技を使用できるよう改善、死亡した人への弾の当たり判定を無効化。
| @@ -2167,36 +2167,36 @@ | ||
| 2167 | 2167 | ObjMgr.ChangeScopeMode(PlayerID); |
| 2168 | 2168 | } |
| 2169 | 2169 | |
| 2170 | - //カメラ表示モード変更操作かチェック | |
| 2171 | - if( inputCtrl->CheckKeyDown( GetFunctionKeycode(1) ) ){ | |
| 2172 | - if( Camera_F1mode == false ){ | |
| 2173 | - Camera_F1mode = true; | |
| 2174 | - view_rx = 0.0f; | |
| 2175 | - view_ry = VIEW_F1MODE_ANGLE; | |
| 2176 | - } | |
| 2177 | - else{ | |
| 2178 | - Camera_F1mode = false; | |
| 2179 | - view_rx = 0.0f; | |
| 2180 | - view_ry = 0.0f; | |
| 2181 | - } | |
| 2170 | + } | |
| 2171 | + | |
| 2172 | + //カメラ表示モード変更操作かチェック | |
| 2173 | + if( inputCtrl->CheckKeyDown( GetFunctionKeycode(1) ) ){ | |
| 2174 | + if( Camera_F1mode == false ){ | |
| 2175 | + Camera_F1mode = true; | |
| 2176 | + view_rx = 0.0f; | |
| 2177 | + view_ry = VIEW_F1MODE_ANGLE; | |
| 2182 | 2178 | } |
| 2179 | + else{ | |
| 2180 | + Camera_F1mode = false; | |
| 2181 | + view_rx = 0.0f; | |
| 2182 | + view_ry = 0.0f; | |
| 2183 | + } | |
| 2184 | + } | |
| 2183 | 2185 | |
| 2184 | - //カメラ操作 | |
| 2185 | - if( Camera_F1mode == true ){ | |
| 2186 | - if( inputCtrl->CheckKeyNow( OriginalkeycodeToDinputdef(0x0C) ) ){ //NUM8 | |
| 2187 | - view_ry -= INPUT_F1NUMKEYS_ANGLE; | |
| 2188 | - } | |
| 2189 | - if( inputCtrl->CheckKeyNow( OriginalkeycodeToDinputdef(0x09) ) ){ //NUM5 | |
| 2190 | - view_ry += INPUT_F1NUMKEYS_ANGLE; | |
| 2191 | - } | |
| 2192 | - if( inputCtrl->CheckKeyNow( OriginalkeycodeToDinputdef(0x08) ) ){ //NUM4 | |
| 2193 | - view_rx -= INPUT_F1NUMKEYS_ANGLE; | |
| 2194 | - } | |
| 2195 | - if( inputCtrl->CheckKeyNow( OriginalkeycodeToDinputdef(0x0A) ) ){ //NUM6 | |
| 2196 | - view_rx += INPUT_F1NUMKEYS_ANGLE; | |
| 2197 | - } | |
| 2186 | + //カメラ操作 | |
| 2187 | + if( Camera_F1mode == true ){ | |
| 2188 | + if( inputCtrl->CheckKeyNow( OriginalkeycodeToDinputdef(0x0C) ) ){ //NUM8 | |
| 2189 | + view_ry -= INPUT_F1NUMKEYS_ANGLE; | |
| 2198 | 2190 | } |
| 2199 | - | |
| 2191 | + if( inputCtrl->CheckKeyNow( OriginalkeycodeToDinputdef(0x09) ) ){ //NUM5 | |
| 2192 | + view_ry += INPUT_F1NUMKEYS_ANGLE; | |
| 2193 | + } | |
| 2194 | + if( inputCtrl->CheckKeyNow( OriginalkeycodeToDinputdef(0x08) ) ){ //NUM4 | |
| 2195 | + view_rx -= INPUT_F1NUMKEYS_ANGLE; | |
| 2196 | + } | |
| 2197 | + if( inputCtrl->CheckKeyNow( OriginalkeycodeToDinputdef(0x0A) ) ){ //NUM6 | |
| 2198 | + view_rx += INPUT_F1NUMKEYS_ANGLE; | |
| 2199 | + } | |
| 2200 | 2200 | } |
| 2201 | 2201 | |
| 2202 | 2202 | // ここまで通常操作系 |
| @@ -2203,16 +2203,16 @@ | ||
| 2203 | 2203 | // |
| 2204 | 2204 | // ここから裏技系 |
| 2205 | 2205 | |
| 2206 | + //裏技・上昇の操作かチェック | |
| 2207 | + if( (inputCtrl->CheckKeyNow( GetFunctionKeycode(5) ))&&(inputCtrl->CheckKeyNow(OriginalkeycodeToDinputdef(0x0F))) ){ // F5 + [ENTER] | |
| 2208 | + Cmd_F5 = true; | |
| 2209 | + } | |
| 2210 | + else{ | |
| 2211 | + Cmd_F5 = false; | |
| 2212 | + } | |
| 2213 | + | |
| 2206 | 2214 | if( myHuman->GetHP() > 0 ){ |
| 2207 | 2215 | |
| 2208 | - //裏技・上昇の操作かチェック | |
| 2209 | - if( (inputCtrl->CheckKeyNow( GetFunctionKeycode(5) ))&&(inputCtrl->CheckKeyNow(OriginalkeycodeToDinputdef(0x0F))) ){ // F5 + [ENTER] | |
| 2210 | - Cmd_F5 = true; | |
| 2211 | - } | |
| 2212 | - else{ | |
| 2213 | - Cmd_F5 = false; | |
| 2214 | - } | |
| 2215 | - | |
| 2216 | 2216 | //裏技・弾追加の操作かチェック |
| 2217 | 2217 | if( inputCtrl->CheckKeyNow( GetFunctionKeycode(6) ) ){ |
| 2218 | 2218 | if( inputCtrl->CheckKeyDown(OriginalkeycodeToDinputdef(0x0F)) ){ // [ENTER] |
| @@ -2288,63 +2288,60 @@ | ||
| 2288 | 2288 | } |
| 2289 | 2289 | } |
| 2290 | 2290 | |
| 2291 | - if( myHuman->GetHP() > 0 ){ | |
| 2291 | + //裏技・人追加の操作かチェック | |
| 2292 | + if( inputCtrl->CheckKeyNow( GetFunctionKeycode(9) ) ){ | |
| 2293 | + if( (inputCtrl->CheckKeyDown(OriginalkeycodeToDinputdef(0x00)))||(inputCtrl->CheckKeyDown(OriginalkeycodeToDinputdef(0x01))) ){ // [↑]・[↓] | |
| 2294 | + float x, y, z, r; | |
| 2295 | + int param, dataid, team; | |
| 2296 | + int selectweapon; | |
| 2297 | + weapon *weapon[TOTAL_HAVEWEAPON]; | |
| 2298 | + int weapon_paramid[TOTAL_HAVEWEAPON]; | |
| 2299 | + for(int i=0; i<TOTAL_HAVEWEAPON; i++){ | |
| 2300 | + weapon[i] = NULL; | |
| 2301 | + weapon_paramid[i] = 0; | |
| 2302 | + } | |
| 2303 | + int id; | |
| 2292 | 2304 | |
| 2293 | - //裏技・人追加の操作かチェック | |
| 2294 | - if( inputCtrl->CheckKeyNow( GetFunctionKeycode(9) ) ){ | |
| 2295 | - if( (inputCtrl->CheckKeyDown(OriginalkeycodeToDinputdef(0x00)))||(inputCtrl->CheckKeyDown(OriginalkeycodeToDinputdef(0x01))) ){ // [↑]・[↓] | |
| 2296 | - float x, y, z, r; | |
| 2297 | - int param, dataid, team; | |
| 2298 | - int selectweapon; | |
| 2299 | - weapon *weapon[TOTAL_HAVEWEAPON]; | |
| 2300 | - int weapon_paramid[TOTAL_HAVEWEAPON]; | |
| 2301 | - for(int i=0; i<TOTAL_HAVEWEAPON; i++){ | |
| 2302 | - weapon[i] = NULL; | |
| 2303 | - weapon_paramid[i] = 0; | |
| 2305 | + //プレイヤーの座標や武器を取得 | |
| 2306 | + myHuman->GetPosData(&x, &y, &z, &r); | |
| 2307 | + myHuman->GetParamData(¶m, &dataid, NULL, &team); | |
| 2308 | + myHuman->GetWeapon(&selectweapon, weapon, NULL, NULL); | |
| 2309 | + for(int i=0; i<TOTAL_HAVEWEAPON; i++){ | |
| 2310 | + if( weapon[i] != NULL ){ | |
| 2311 | + weapon[i]->GetParamData(&weapon_paramid[i], NULL, NULL); | |
| 2304 | 2312 | } |
| 2305 | - int id; | |
| 2313 | + } | |
| 2306 | 2314 | |
| 2307 | - //プレイヤーの座標や武器を取得 | |
| 2308 | - myHuman->GetPosData(&x, &y, &z, &r); | |
| 2309 | - myHuman->GetParamData(¶m, &dataid, NULL, &team); | |
| 2310 | - myHuman->GetWeapon(&selectweapon, weapon, NULL, NULL); | |
| 2311 | - for(int i=0; i<TOTAL_HAVEWEAPON; i++){ | |
| 2312 | - if( weapon[i] != NULL ){ | |
| 2313 | - weapon[i]->GetParamData(&weapon_paramid[i], NULL, NULL); | |
| 2314 | - } | |
| 2315 | - } | |
| 2315 | + //プレイヤーの目の前の座標を取得 | |
| 2316 | + x += cos(r*-1 + (float)M_PI/2)*10.0f; | |
| 2317 | + y += 5.0f; | |
| 2318 | + z += sin(r*-1 + (float)M_PI/2)*10.0f; | |
| 2316 | 2319 | |
| 2317 | - //プレイヤーの目の前の座標を取得 | |
| 2318 | - x += cos(r*-1 + (float)M_PI/2)*10.0f; | |
| 2319 | - y += 5.0f; | |
| 2320 | - z += sin(r*-1 + (float)M_PI/2)*10.0f; | |
| 2320 | + //人を追加 | |
| 2321 | + id = ObjMgr.AddHumanIndex(x, y, z, r, param, team, weapon_paramid); | |
| 2322 | + if( id >= 0 ){ | |
| 2323 | + ObjMgr.ChangeHaveWeapon(id, selectweapon); | |
| 2321 | 2324 | |
| 2322 | - //人を追加 | |
| 2323 | - id = ObjMgr.AddHumanIndex(x, y, z, r, param, team, weapon_paramid); | |
| 2324 | - if( id >= 0 ){ | |
| 2325 | - ObjMgr.ChangeHaveWeapon(id, selectweapon); | |
| 2326 | - | |
| 2327 | - //AIを設定 | |
| 2328 | - HumanAI[id].Init(); | |
| 2329 | - if( inputCtrl->CheckKeyDown(OriginalkeycodeToDinputdef(0x00)) ){ // [↑] | |
| 2330 | - HumanAI[id].SetHoldTracking(PlayerID); | |
| 2331 | - } | |
| 2332 | - if( inputCtrl->CheckKeyDown(OriginalkeycodeToDinputdef(0x01)) ){ // [↓] | |
| 2333 | - HumanAI[id].SetHoldWait(x, z, r); | |
| 2334 | - } | |
| 2325 | + //AIを設定 | |
| 2326 | + HumanAI[id].Init(); | |
| 2327 | + if( inputCtrl->CheckKeyDown(OriginalkeycodeToDinputdef(0x00)) ){ // [↑] | |
| 2328 | + HumanAI[id].SetHoldTracking(PlayerID); | |
| 2335 | 2329 | } |
| 2330 | + if( inputCtrl->CheckKeyDown(OriginalkeycodeToDinputdef(0x01)) ){ // [↓] | |
| 2331 | + HumanAI[id].SetHoldWait(x, z, r); | |
| 2332 | + } | |
| 2336 | 2333 | } |
| 2337 | 2334 | } |
| 2335 | + } | |
| 2338 | 2336 | |
| 2339 | - //裏技・腕描画の操作かチェック | |
| 2340 | - if( inputCtrl->CheckKeyDown( GetHomeKeycode() ) ){ | |
| 2341 | - if( Camera_HOMEmode == false ){ | |
| 2342 | - Camera_HOMEmode = true; | |
| 2343 | - } | |
| 2344 | - else{ | |
| 2345 | - Camera_HOMEmode = false; | |
| 2346 | - } | |
| 2337 | + //裏技・腕描画の操作かチェック | |
| 2338 | + if( inputCtrl->CheckKeyDown( GetHomeKeycode() ) ){ | |
| 2339 | + if( Camera_HOMEmode == false ){ | |
| 2340 | + Camera_HOMEmode = true; | |
| 2347 | 2341 | } |
| 2342 | + else{ | |
| 2343 | + Camera_HOMEmode = false; | |
| 2344 | + } | |
| 2348 | 2345 | } |
| 2349 | 2346 | } |
| 2350 | 2347 |
| @@ -1699,6 +1699,12 @@ | ||
| 1699 | 1699 | if( CollD == NULL ){ return 0; } |
| 1700 | 1700 | if( EnableFlag == false ){ return 0; } |
| 1701 | 1701 | |
| 1702 | + //F5を使用していれば、強制的に上昇 | |
| 1703 | + if( F5mode == true ){ | |
| 1704 | + move_y = 0.0f; | |
| 1705 | + pos_y += 5.0f; | |
| 1706 | + } | |
| 1707 | + | |
| 1702 | 1708 | if( deadstate == 5 ){ return 3; } |
| 1703 | 1709 | |
| 1704 | 1710 | int WeaponReloadMotionCnt; |
| @@ -1772,10 +1778,6 @@ | ||
| 1772 | 1778 | if( F5mode == false ){ |
| 1773 | 1779 | pos_y += FallDistance; |
| 1774 | 1780 | } |
| 1775 | - else{ | |
| 1776 | - move_y = 0.0f; | |
| 1777 | - pos_y += 5.0f; //使用していれば、強制的に上昇 | |
| 1778 | - } | |
| 1779 | 1781 | |
| 1780 | 1782 | //今回の当たり判定で-100.0より下に落ちたら、死亡 |
| 1781 | 1783 | if( CheckDead == 0 ){ |
| @@ -718,7 +718,8 @@ | ||
| 718 | 718 | |
| 719 | 719 | //使用されていないか、死体ならば処理しない。 |
| 720 | 720 | if( HumanIndex[i].GetEnableFlag() == false ){ continue; } |
| 721 | - if( HumanIndex[i].GetDeadFlag() == true ){ continue; } | |
| 721 | + //if( HumanIndex[i].GetDeadFlag() == true ){ continue; } | |
| 722 | + if( HumanIndex[i].GetHP() <= 0 ){ continue; } | |
| 722 | 723 | |
| 723 | 724 | //既に当たった人なら、処理しない。 |
| 724 | 725 | if( BulletObj_HumanIndex[objectID].GetIndexFlag(i) == true ){ continue; } |