| 430 |
|
|
| 431 |
|
typedef struct { |
| 432 |
|
char Name[16]; |
| 433 |
< |
int Bit; |
| 433 |
> |
uint64_t Bit; |
| 434 |
|
} KeyBit; |
| 435 |
|
|
| 436 |
< |
KeyBit Actions1[32] = { |
| 436 |
> |
static KeyBit Actions[] = { |
| 437 |
|
{"Escape", Action_Escape}, |
| 438 |
|
{"Console", Action_Console}, |
| 439 |
|
{"PauseScreen", Action_PauseScreen}, |
| 444 |
|
{"F6", Action_F6 }, |
| 445 |
|
{"F7", Action_F7 }, |
| 446 |
|
{"F8", Action_F8 }, |
| 447 |
< |
{"StartRecord", Action_StartRecord }, |
| 448 |
< |
{"StopRecord", Action_StopRecord }, |
| 449 |
< |
{"PlayRecord", Action_PlayRecord }, |
| 447 |
> |
{"StartRecord", Action_StartRecord }, |
| 448 |
> |
{"StopRecord", Action_StopRecord }, |
| 449 |
> |
{"PlayRecord", Action_PlayRecord }, |
| 450 |
|
{"F12", Action_F12 }, |
| 451 |
– |
{"Unknown1", Action_Unknown1 }, |
| 451 |
|
{"LookMode", Action_LookMode }, |
| 452 |
< |
{"Screenshot", Action_Screenshot }, |
| 454 |
< |
{"Unknown2", Action_Unknown2 }, |
| 455 |
< |
{"Unknown3", Action_Unknown3 }, |
| 456 |
< |
{"Unknown4", Action_Unknown4 }, |
| 457 |
< |
{"Unknown5", Action_Unknown5 }, |
| 452 |
> |
{"Screenshot", Action_Screenshot }, |
| 453 |
|
{"Forward", Action_Forward }, |
| 454 |
|
{"Backward", Action_Backward }, |
| 455 |
|
{"TurnLeft", Action_TurnLeft }, |
| 460 |
|
{"Crouch", Action_Crouch }, |
| 461 |
|
{"Punch",Action_Punch }, |
| 462 |
|
{"Kick", Action_Kick }, |
| 463 |
< |
{"Block", Action_Block } |
| 463 |
> |
{"Block", Action_Block }, |
| 464 |
> |
{"Walk", Action_Walk}, |
| 465 |
> |
{"Action", Action_Action}, |
| 466 |
> |
{"Hypo", Action_Hypo}, |
| 467 |
> |
{"Reload", Action_Reload }, |
| 468 |
> |
{"Swap", Action_Swap }, |
| 469 |
> |
{"Drop", Action_Drop }, |
| 470 |
> |
{"Fire1", Action_Fire1 }, |
| 471 |
> |
{"Fire2", Action_Fire2 }, |
| 472 |
> |
{"Fire3", Action_Fire3 } |
| 473 |
|
}; |
| 474 |
|
|
| 471 |
– |
KeyBit Actions2[9] = { |
| 472 |
– |
{"Walk", Action2_Walk}, |
| 473 |
– |
{"Action", Action2_Action}, |
| 474 |
– |
{"Hypo", Action2_Hypo}, |
| 475 |
– |
{"Reload", Action2_Reload }, |
| 476 |
– |
{"Swap", Action2_Swap }, |
| 477 |
– |
{"Drop", Action2_Drop }, |
| 478 |
– |
{"Fire1", Action2_Fire1 }, |
| 479 |
– |
{"Fire2", Action2_Fire2 }, |
| 480 |
– |
{"Fire3", Action2_Fire3 } |
| 481 |
– |
}; |
| 475 |
|
uint16_t ONICALL bsl_holdkey(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret) |
| 476 |
|
{ |
| 477 |
|
uint32_t index; |
| 478 |
|
uint32_t i = 2; |
| 479 |
|
uint32_t j = 0; |
| 480 |
< |
int Input1 = 0; |
| 488 |
< |
int Input2 = 0; |
| 480 |
> |
uint64_t Input = 0; |
| 481 |
|
Character* Chr; |
| 482 |
|
ActiveCharacter* Active; |
| 483 |
|
if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32); |
| 489 |
|
|
| 490 |
|
for(i = 1; i < numargs - 1; i++) { |
| 491 |
|
for(j = 0; j < 32; j++) { |
| 492 |
< |
if(!strcmp(args[i].val.value_str32, Actions1[j].Name)) { |
| 493 |
< |
Input1 = Input1 | Actions1[j].Bit; |
| 502 |
< |
} |
| 503 |
< |
} |
| 504 |
< |
for(j = 0; j < 9; j++) { |
| 505 |
< |
if(!strcmp(args[i].val.value_str32, Actions2[j].Name)) { |
| 506 |
< |
Input2 = Input2 | Actions2[j].Bit; |
| 492 |
> |
if(!strcmp(args[i].val.value_str32, Actions[j].Name)) { |
| 493 |
> |
Input = Input | Actions[j].Bit; |
| 494 |
|
} |
| 495 |
|
} |
| 496 |
|
} |
| 497 |
< |
Active->Input.Current.Actions1 = Active->Input.Current.Actions1 | Input1; |
| 498 |
< |
Active->Input.Current.Actions2 = Active->Input.Current.Actions2 | Input2; |
| 512 |
< |
if( Input1 + Input2 == 0 ) { |
| 497 |
> |
Active->Input.ActionsDown = Active->Input.ActionsDown | Input; |
| 498 |
> |
if( Input == 0 ) { |
| 499 |
|
DDrConsole_PrintF("Func \"%s\", File \"%s\", Line %d: semantic error, \"%s\": No valid keys given.", callinfo->name, callinfo->calllocation, callinfo->linenumber, callinfo->name); |
| 500 |
|
return 0; |
| 501 |
|
} |
| 522 |
|
// if ((int)Active == 0) return 1; |
| 523 |
|
uint32_t i = 2; |
| 524 |
|
uint32_t j = 0; |
| 525 |
< |
int Input1 = 0; |
| 540 |
< |
int Input2 = 0; |
| 525 |
> |
uint64_t Input = 0; |
| 526 |
|
for(i = 0; i < numargs; i++) { |
| 527 |
|
for(j = 0; j < 32; j++) { |
| 528 |
|
//DDrConsole_PrintF("Testing %s against %s 0x%x", args[i].val.value_str32, Actions1[j].Name, Actions1[j].Bit); |
| 529 |
< |
if(!strcmp(args[i].val.value_str32, Actions1[j].Name)) { |
| 530 |
< |
Input1 = Input1 | Actions1[j].Bit; |
| 529 |
> |
if(!strcmp(args[i].val.value_str32, Actions[j].Name)) { |
| 530 |
> |
Input = Input | Actions[j].Bit; |
| 531 |
|
//DDrConsole_PrintF("Success!"); |
| 532 |
|
} |
| 533 |
< |
|
| 549 |
< |
} |
| 550 |
< |
for(j = 0; j < 9; j++) { |
| 551 |
< |
if(!strcmp(args[i].val.value_str32, Actions2[j].Name)) Input2 = Input2 | Actions2[j].Bit; |
| 552 |
< |
|
| 533 |
> |
|
| 534 |
|
} |
| 535 |
|
} |
| 536 |
|
//DDrConsole_PrintF("Testing: 0x%x Input: 0x%x",Input1, *(int*)(ONgGameState + 0xB8 + 0x10)); |
| 537 |
|
ret->val.value_int32 = 0; |
| 538 |
|
ret->type = sl_int32; |
| 539 |
< |
if ( (ONgGameState->Input.Current.Actions1 == Input1) && (ONgGameState->Input.Current.Actions2 == Input2)) ret->val.value_int32 = 1; |
| 539 |
> |
if (ONgGameState->Input.ActionsDown == Input) ret->val.value_int32 = 1; |
| 540 |
|
return 0; |
| 541 |
|
} |
| 542 |
|
|
| 553 |
|
|
| 554 |
|
int i = 2; |
| 555 |
|
int j = 0; |
| 556 |
< |
int Input1 = 0; |
| 576 |
< |
int Input2 = 0; |
| 556 |
> |
uint64_t Input = 0; |
| 557 |
|
/* |
| 558 |
|
numargs = 0; |
| 559 |
|
for(i = 0; args[i].type <= sl_void; i++) |
| 568 |
|
i = 0; |
| 569 |
|
for(j = 0; j < 32; j++) { |
| 570 |
|
//DDrConsole_PrintF("Testing %s against %s 0x%x", args[i].val.value_str32, Actions1[j].Name, Actions1[j].Bit); |
| 571 |
< |
if(!strcmp(args[i].val.value_str32, Actions1[j].Name)) { |
| 572 |
< |
Input1 = Input1 | Actions1[j].Bit; |
| 571 |
> |
if(!strcmp(args[i].val.value_str32, Actions[j].Name)) { |
| 572 |
> |
Input = Input | Actions[j].Bit; |
| 573 |
|
//DDrConsole_PrintF("Success!"); |
| 574 |
|
} |
| 575 |
< |
|
| 596 |
< |
} |
| 597 |
< |
for(j = 0; j < 9; j++) { |
| 598 |
< |
if(!strcmp(args[i].val.value_str32, Actions2[j].Name)) Input2 = Input2 | Actions2[j].Bit; |
| 599 |
< |
|
| 575 |
> |
|
| 576 |
|
} |
| 577 |
|
// } |
| 578 |
|
DDrConsole_PrintF("Waiting..."); |
| 579 |
< |
if ( |
| 604 |
< |
(( ONgGameState->Input.Current.Actions1 & Input1) == Input1) && |
| 605 |
< |
(( ONgGameState->Input.Current.Actions2 & Input2) == Input2) |
| 606 |
< |
) |
| 579 |
> |
if (( ONgGameState->Input.ActionsDown & Input) == Input) |
| 580 |
|
{ |
| 581 |
|
DDrConsole_PrintF("Found key!"); |
| 582 |
|
} |