just a few more improvements (#207)
Add get_dialog_box_state Prevent some attacks from registering as pvp attacks. Clean up all cases of camera.lua Put gLastCollectedStarOrKey in a better spot. Clean up my moderator code a bit, changing gIsModerator to boolean. Brang back kicked, banned and full party messages. Fixed a warning on older compilers like raspberry pi's and use configAmountofPlayers instead of MAX_PLAYERS Fixed compiling with the flag DISCORD_SDK off. Added "Fixed Collisions" to the debug menu. Added HMC, CCM, RR, BITDW, PSS and TTC to the main menu options. Fix my own oversight; Prevent the port from being duplicated in the join menu. (temporary fix) Hopefully bring back the crash handler on windows by not checking for termination signals on windows
This commit is contained in:
parent
8c23221187
commit
89afa8181e
|
@ -7749,6 +7749,11 @@ function get_current_save_file_num()
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @return integer
|
||||
function get_dialog_box_state()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return integer
|
||||
function get_dialog_id()
|
||||
-- ...
|
||||
|
|
|
@ -6830,6 +6830,24 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [get_dialog_box_state](#get_dialog_box_state)
|
||||
|
||||
### Lua Example
|
||||
`local integerValue = get_dialog_box_state()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
- `integer`
|
||||
|
||||
### C Prototype
|
||||
`s8 get_dialog_box_state();`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [get_dialog_id](#get_dialog_id)
|
||||
|
||||
### Lua Example
|
||||
|
|
|
@ -1454,6 +1454,7 @@
|
|||
- [camera_unfreeze](functions-4.md#camera_unfreeze)
|
||||
- [deref_s32_pointer](functions-4.md#deref_s32_pointer)
|
||||
- [get_current_save_file_num](functions-4.md#get_current_save_file_num)
|
||||
- [get_dialog_box_state](functions-4.md#get_dialog_box_state)
|
||||
- [get_dialog_id](functions-4.md#get_dialog_id)
|
||||
- [get_environment_region](functions-4.md#get_environment_region)
|
||||
- [get_hand_foot_pos_x](functions-4.md#get_hand_foot_pos_x)
|
||||
|
|
|
@ -17,11 +17,7 @@ local m = gMarioStates[0]
|
|||
function override_camera()
|
||||
local np = gNetworkPlayers[0]
|
||||
|
||||
if sOverrideCameraModes[m.area.camera.mode] == nil then
|
||||
return
|
||||
end
|
||||
|
||||
if (np.currLevelNum == LEVEL_BOWSER_1 or np.currLevelNum == LEVEL_BOWSER_2 or np.currLevelNum == LEVEL_BOWSER_3) then
|
||||
if sOverrideCameraModes[m.area.camera.mode] == nil or np.currLevelNum == LEVEL_BOWSER_1 or np.currLevelNum == LEVEL_BOWSER_2 or np.currLevelNum == LEVEL_BOWSER_3 then
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -29,21 +25,11 @@ function override_camera()
|
|||
end
|
||||
|
||||
function on_set_camera_mode(c, mode, frames)
|
||||
if mode == CAMERA_MODE_ROM_HACK then
|
||||
return true
|
||||
end
|
||||
|
||||
if sOverrideCameraModes[mode] ~= nil then
|
||||
if sOverrideCameraModes[mode] ~= nil and mode ~= CAMERA_MODE_ROM_HACK then
|
||||
-- do not allow change
|
||||
if mode ~= CAMERA_MODE_ROM_HACK then
|
||||
set_camera_mode(c, CAMERA_MODE_ROM_HACK, frames)
|
||||
return false
|
||||
end
|
||||
set_camera_mode(c, CAMERA_MODE_ROM_HACK, frames)
|
||||
return false
|
||||
end
|
||||
|
||||
-- allow camera change
|
||||
return true
|
||||
end
|
||||
|
||||
hook_event(HOOK_ON_SET_CAMERA_MODE, on_set_camera_mode)
|
||||
|
|
|
@ -15,11 +15,7 @@ local m = gMarioStates[0]
|
|||
function override_camera()
|
||||
local np = gNetworkPlayers[0]
|
||||
|
||||
if sOverrideCameraModes[m.area.camera.mode] == nil then
|
||||
return
|
||||
end
|
||||
|
||||
if (np.currLevelNum == LEVEL_BOWSER_1 or np.currLevelNum == LEVEL_BOWSER_2 or np.currLevelNum == LEVEL_BOWSER_3) then
|
||||
if sOverrideCameraModes[m.area.camera.mode] == nil or np.currLevelNum == LEVEL_BOWSER_1 or np.currLevelNum == LEVEL_BOWSER_2 or np.currLevelNum == LEVEL_BOWSER_3 then
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -27,21 +23,11 @@ function override_camera()
|
|||
end
|
||||
|
||||
function on_set_camera_mode(c, mode, frames)
|
||||
if mode == CAMERA_MODE_ROM_HACK then
|
||||
return true
|
||||
end
|
||||
|
||||
if sOverrideCameraModes[mode] ~= nil then
|
||||
if sOverrideCameraModes[mode] ~= nil and mode ~= CAMERA_MODE_ROM_HACK then
|
||||
-- do not allow change
|
||||
if mode ~= CAMERA_MODE_ROM_HACK then
|
||||
set_camera_mode(c, CAMERA_MODE_ROM_HACK, frames)
|
||||
return false
|
||||
end
|
||||
set_camera_mode(c, CAMERA_MODE_ROM_HACK, frames)
|
||||
return false
|
||||
end
|
||||
|
||||
-- allow camera change
|
||||
return true
|
||||
end
|
||||
|
||||
hook_event(HOOK_ON_SET_CAMERA_MODE, on_set_camera_mode)
|
||||
|
|
|
@ -15,11 +15,7 @@ local m = gMarioStates[0]
|
|||
function override_camera()
|
||||
local np = gNetworkPlayers[0]
|
||||
|
||||
if sOverrideCameraModes[m.area.camera.mode] == nil then
|
||||
return
|
||||
end
|
||||
|
||||
if (np.currLevelNum == LEVEL_BOWSER_1 or np.currLevelNum == LEVEL_BOWSER_2 or np.currLevelNum == LEVEL_BOWSER_3) then
|
||||
if sOverrideCameraModes[m.area.camera.mode] == nil or np.currLevelNum == LEVEL_BOWSER_1 or np.currLevelNum == LEVEL_BOWSER_2 or np.currLevelNum == LEVEL_BOWSER_3 then
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -27,21 +23,11 @@ function override_camera()
|
|||
end
|
||||
|
||||
function on_set_camera_mode(c, mode, frames)
|
||||
if mode == CAMERA_MODE_ROM_HACK then
|
||||
return true
|
||||
end
|
||||
|
||||
if sOverrideCameraModes[mode] ~= nil then
|
||||
if sOverrideCameraModes[mode] ~= nil and mode ~= CAMERA_MODE_ROM_HACK then
|
||||
-- do not allow change
|
||||
if mode ~= CAMERA_MODE_ROM_HACK then
|
||||
set_camera_mode(c, CAMERA_MODE_ROM_HACK, frames)
|
||||
return false
|
||||
end
|
||||
set_camera_mode(c, CAMERA_MODE_ROM_HACK, frames)
|
||||
return false
|
||||
end
|
||||
|
||||
-- allow camera change
|
||||
return true
|
||||
end
|
||||
|
||||
hook_event(HOOK_ON_SET_CAMERA_MODE, on_set_camera_mode)
|
||||
|
|
|
@ -45,8 +45,6 @@ void bhv_bowser_key_loop(void) {
|
|||
} else {
|
||||
obj_set_hitbox(o, &sBowserKeyHitbox);
|
||||
if (o->oInteractStatus & INT_STATUS_INTERACTED) {
|
||||
extern u8 gLastCollectedStarOrKey;
|
||||
gLastCollectedStarOrKey = 1;
|
||||
mark_obj_for_deletion(o);
|
||||
o->oInteractStatus = 0;
|
||||
}
|
||||
|
|
|
@ -35,8 +35,6 @@ void bhv_spawned_star_init(void) {
|
|||
void set_sparkle_spawn_star_hitbox(void) {
|
||||
obj_set_hitbox(o, &sSparkleSpawnStarHitbox);
|
||||
if (o->oInteractStatus & INT_STATUS_INTERACTED) {
|
||||
extern u8 gLastCollectedStarOrKey;
|
||||
gLastCollectedStarOrKey = 0;
|
||||
mark_obj_for_deletion(o);
|
||||
o->oInteractStatus = 0;
|
||||
}
|
||||
|
|
|
@ -31,8 +31,6 @@ void bhv_collect_star_loop(void) {
|
|||
o->oFaceAngleYaw += 0x800;
|
||||
|
||||
if (o->oInteractStatus & INT_STATUS_INTERACTED) {
|
||||
extern u8 gLastCollectedStarOrKey;
|
||||
gLastCollectedStarOrKey = 0;
|
||||
mark_obj_for_deletion(o);
|
||||
o->oInteractStatus = 0;
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ struct StarPositions {
|
|||
};
|
||||
|
||||
struct LevelValues {
|
||||
u8 fixCollisionBugs;
|
||||
bool fixCollisionBugs;
|
||||
enum LevelNum entryLevel;
|
||||
enum LevelNum exitCastleLevel;
|
||||
s16 exitCastleArea;
|
||||
|
|
|
@ -144,6 +144,7 @@ static u32 sBackwardKnockbackActions[][3] = {
|
|||
static u8 sDisplayingDoorText = FALSE;
|
||||
static u8 sJustTeleported = FALSE;
|
||||
u8 gPssSlideStarted = FALSE;
|
||||
extern u8 gLastCollectedStarOrKey;
|
||||
|
||||
/**
|
||||
* Returns the type of cap Mario is wearing.
|
||||
|
@ -890,6 +891,12 @@ u32 interact_star_or_key(struct MarioState *m, UNUSED u32 interactType, struct O
|
|||
u8 stayInLevelCommon = !(gCurrLevelNum == LEVEL_BOWSER_1 || gCurrLevelNum == LEVEL_BOWSER_2 || gCurrLevelNum == LEVEL_BOWSER_3);
|
||||
if (stayInLevelCommon && gServerSettings.stayInLevelAfterStar) { noExit = TRUE; }
|
||||
|
||||
if (o->behavior == bhvBowserKey) {
|
||||
gLastCollectedStarOrKey = 1;
|
||||
} else {
|
||||
gLastCollectedStarOrKey = 0;
|
||||
}
|
||||
|
||||
if (m->health >= 0x100) {
|
||||
mario_stop_riding_and_holding(m);
|
||||
queue_rumble_data_mario(m, 5, 80);
|
||||
|
@ -1336,7 +1343,11 @@ u8 passes_pvp_interaction_checks(struct MarioState* attacker, struct MarioState*
|
|||
isInCutscene = isInCutscene || (attacker->action == ACT_IN_CANNON) || (victim->action == ACT_IN_CANNON);
|
||||
u8 isAttackerInvulnerable = (attacker->action & ACT_FLAG_INVULNERABLE) || attacker->invincTimer != 0 || attacker->hurtCounter != 0;
|
||||
u8 isInvulnerable = (victim->action & ACT_FLAG_INVULNERABLE) || victim->invincTimer != 0 || victim->hurtCounter != 0 || isInCutscene;
|
||||
u8 isIgnoredAttack = (attacker->action == ACT_JUMP || attacker->action == ACT_DOUBLE_JUMP || attacker->action == ACT_LONG_JUMP || attacker->action == ACT_SIDE_FLIP);
|
||||
u8 isIgnoredAttack = (attacker->action == ACT_JUMP || attacker->action == ACT_DOUBLE_JUMP
|
||||
|| attacker->action == ACT_LONG_JUMP || attacker->action == ACT_SIDE_FLIP
|
||||
|| attacker->action == ACT_BACKFLIP || attacker->action == ACT_TRIPLE_JUMP
|
||||
|| attacker->action == ACT_WALL_KICK_AIR || attacker->action == ACT_WATER_JUMP
|
||||
|| attacker->action == ACT_STEEP_JUMP || attacker->action == ACT_HOLD_JUMP);
|
||||
u8 isVictimIntangible = (victim->action & ACT_FLAG_INTANGIBLE);
|
||||
if (victim->knockbackTimer > 0) {
|
||||
return false;
|
||||
|
|
|
@ -1328,6 +1328,12 @@ void update_menu_level(void) {
|
|||
case 8: curLevel = LEVEL_BBH; break;
|
||||
case 9: curLevel = LEVEL_LLL; break;
|
||||
case 10: curLevel = LEVEL_THI; break;
|
||||
case 11: curLevel = LEVEL_HMC; break;
|
||||
case 12: curLevel = LEVEL_CCM; break;
|
||||
case 13: curLevel = LEVEL_RR; break;
|
||||
case 14: curLevel = LEVEL_BITDW; break;
|
||||
case 15: curLevel = LEVEL_PSS; break;
|
||||
case 16: curLevel = LEVEL_TTC; break;
|
||||
default: curLevel = LEVEL_CASTLE_GROUNDS; break;
|
||||
}
|
||||
|
||||
|
@ -1433,6 +1439,35 @@ void update_menu_level(void) {
|
|||
obj_mark_for_deletion(o);
|
||||
}
|
||||
break;
|
||||
case LEVEL_HMC:
|
||||
vec3f_set(gMarioState->pos, -3600, -4279, 3616);
|
||||
vec3f_set(gLakituState.curPos, -6000, -2938, 600);
|
||||
gMarioState->faceAngle[1] = -0x6000;
|
||||
break;
|
||||
case LEVEL_CCM:
|
||||
vec3f_set(gMarioState->pos, -1127, -3580, 6162);
|
||||
vec3f_set(gLakituState.curPos, -1330, -2830, 9099);
|
||||
gMarioState->faceAngle[1] = -0x1000;
|
||||
break;
|
||||
case LEVEL_RR:
|
||||
vec3f_set(gMarioState->pos, 1418, 3167, -2349);
|
||||
vec3f_set(gLakituState.curPos, -1518, 4567, -4549);
|
||||
gMarioState->faceAngle[1] = -0x6000;
|
||||
break;
|
||||
case LEVEL_BITDW:
|
||||
vec3f_set(gMarioState->pos, -4507, 1126, -285);
|
||||
vec3f_set(gLakituState.curPos, -2507, 2126, -285);
|
||||
break;
|
||||
case LEVEL_PSS:
|
||||
vec3f_set(gMarioState->pos, -4729, -3057, -3025);
|
||||
vec3f_set(gLakituState.curPos, -2729, -1557, -5025);
|
||||
gMarioState->faceAngle[1] = 0x5000;
|
||||
break;
|
||||
case LEVEL_TTC:
|
||||
vec3f_set(gMarioState->pos, -645, 0, -750);
|
||||
vec3f_set(gLakituState.curPos, 2500, 570, -240);
|
||||
gMarioState->faceAngle[1] = 0x2000;
|
||||
break;
|
||||
}
|
||||
|
||||
gMarioState->health = 0x880;
|
||||
|
|
|
@ -2095,7 +2095,8 @@ s32 execute_mario_action(UNUSED struct Object *o) {
|
|||
|
||||
// Both of the wind handling portions play wind audio only in
|
||||
// non-Japanese releases.
|
||||
if (gMarioState->floor->type == SURFACE_HORIZONTAL_WIND) {
|
||||
extern bool gDjuiInMainMenu;
|
||||
if (gMarioState->floor->type == SURFACE_HORIZONTAL_WIND && !gDjuiInMainMenu) {
|
||||
spawn_wind_particles(0, (gMarioState->floor->force << 8));
|
||||
#ifndef VERSION_JP
|
||||
play_sound(SOUND_ENV_WIND2, gMarioState->marioObj->header.gfx.cameraToObject);
|
||||
|
|
|
@ -194,7 +194,8 @@ u32 mario_update_moving_sand(struct MarioState *m) {
|
|||
u32 mario_update_windy_ground(struct MarioState *m) {
|
||||
struct Surface *floor = m->floor;
|
||||
|
||||
if (floor->type == SURFACE_HORIZONTAL_WIND) {
|
||||
extern bool gDjuiInMainMenu;
|
||||
if (floor->type == SURFACE_HORIZONTAL_WIND && !gDjuiInMainMenu) {
|
||||
f32 pushSpeed;
|
||||
s16 pushAngle = floor->force << 8;
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include "level_table.h"
|
||||
|
||||
|
||||
extern u8 gIsModerator;
|
||||
extern bool gIsModerator;
|
||||
static enum ChatConfirmCommand sConfirming = CCC_NONE;
|
||||
static u8 sConfirmPlayerIndex = 0;
|
||||
|
||||
|
@ -46,7 +46,7 @@ bool exec_chat_command(char* command) {
|
|||
sConfirming = CCC_NONE;
|
||||
|
||||
if (ccc != CCC_NONE && strcmp("/confirm", command) == 0) {
|
||||
if (gNetworkType == NT_SERVER || gIsModerator == 1) {
|
||||
if (gNetworkType == NT_SERVER || gIsModerator) {
|
||||
if (ccc == CCC_KICK) {
|
||||
struct NetworkPlayer* np = &gNetworkPlayers[sConfirmPlayerIndex];
|
||||
if (!np->connected) { return true; }
|
||||
|
@ -62,7 +62,7 @@ bool exec_chat_command(char* command) {
|
|||
return true;
|
||||
}
|
||||
}
|
||||
if (gNetworkType == NT_SERVER || gIsModerator == 1) {
|
||||
if (gNetworkType == NT_SERVER || gIsModerator) {
|
||||
if (ccc == CCC_BAN) {
|
||||
struct NetworkPlayer* np = &gNetworkPlayers[sConfirmPlayerIndex];
|
||||
if (!np->connected) { return true; }
|
||||
|
@ -120,7 +120,7 @@ bool exec_chat_command(char* command) {
|
|||
}
|
||||
|
||||
if (str_starts_with("/kick ", command)) {
|
||||
if (gNetworkType != NT_SERVER && gIsModerator == 0) {
|
||||
if (gNetworkType != NT_SERVER && !gIsModerator) {
|
||||
djui_chat_message_create("You do not have permission to use this command.");
|
||||
return true;
|
||||
}
|
||||
|
@ -147,7 +147,7 @@ bool exec_chat_command(char* command) {
|
|||
}
|
||||
|
||||
if (str_starts_with("/ban ", command)) {
|
||||
if (gNetworkType != NT_SERVER && gIsModerator == 0) {
|
||||
if (gNetworkType != NT_SERVER && !gIsModerator) {
|
||||
djui_chat_message_create("You do not have permission to use this command.");
|
||||
return true;
|
||||
}
|
||||
|
@ -174,7 +174,7 @@ bool exec_chat_command(char* command) {
|
|||
}
|
||||
|
||||
if (str_starts_with("/permban ", command)) {
|
||||
if (gNetworkType != NT_SERVER && gIsModerator == 0) {
|
||||
if (gNetworkType != NT_SERVER && !gIsModerator) {
|
||||
djui_chat_message_create("You do not have permission to use this command.");
|
||||
return true;
|
||||
}
|
||||
|
@ -319,7 +319,7 @@ bool exec_chat_command(char* command) {
|
|||
|
||||
void display_chat_commands(void) {
|
||||
djui_chat_message_create("/players - List all players and their IDs");
|
||||
if (gNetworkType == NT_SERVER || gIsModerator == 1) {
|
||||
if (gNetworkType == NT_SERVER || gIsModerator) {
|
||||
djui_chat_message_create("/kick [NAME|ID] - Kick this player from the current game");
|
||||
djui_chat_message_create("/ban [NAME|ID] - Ban this player from the current game");
|
||||
djui_chat_message_create("/permban [NAME|ID] - Ban this player from any game you host");
|
||||
|
|
|
@ -100,7 +100,6 @@ static void djui_panel_join_ip_text_change(struct DjuiBase* caller) {
|
|||
|
||||
static void djui_panel_join_ip_text_set_new(void) {
|
||||
char buffer[256] = { 0 };
|
||||
gGetHostName = sInputboxIp->buffer;
|
||||
if (snprintf(buffer, 256, "%s", sInputboxIp->buffer) < 0) {
|
||||
LOG_INFO("truncating IP");
|
||||
}
|
||||
|
@ -119,6 +118,9 @@ static void djui_panel_join_ip_text_set_new(void) {
|
|||
}
|
||||
}
|
||||
|
||||
gGetHostName = buffer;
|
||||
printf("gGetHostName: %s\n", gGetHostName); /* Log the value of gGetHostName.
|
||||
For some reason this fixes some formatting issues? LOG_INFO isn't working at all in this file. */
|
||||
if (snprintf(configJoinIp, MAX_CONFIG_STRING, "%s", buffer) < 0) {
|
||||
LOG_INFO("truncating IP");
|
||||
}
|
||||
|
@ -140,7 +142,6 @@ static void djui_panel_join_ip_text_set(struct DjuiInputbox* inputbox1) {
|
|||
}
|
||||
|
||||
djui_inputbox_set_text(inputbox1, buffer);
|
||||
djui_inputbox_select_all(inputbox1);
|
||||
}
|
||||
|
||||
void djui_panel_join_do_join(struct DjuiBase* caller) {
|
||||
|
|
|
@ -16,7 +16,7 @@ void djui_panel_main_menu_create(struct DjuiBase* caller) {
|
|||
struct DjuiFlowLayout* body = (struct DjuiFlowLayout*)djui_three_panel_get_body(panel);
|
||||
|
||||
{
|
||||
char* levelChoices[11] = {
|
||||
char* levelChoices[17] = {
|
||||
"CG",
|
||||
"BOB",
|
||||
"WF",
|
||||
|
@ -28,8 +28,14 @@ void djui_panel_main_menu_create(struct DjuiBase* caller) {
|
|||
"BBH",
|
||||
"LLL",
|
||||
"THI",
|
||||
"HMC",
|
||||
"CCM",
|
||||
"RR",
|
||||
"BITDW",
|
||||
"PSS",
|
||||
"TTC",
|
||||
};
|
||||
struct DjuiSelectionbox* selectionbox1 = djui_selectionbox_create(&body->base, "Level", levelChoices, 11, &configMenuLevel);
|
||||
struct DjuiSelectionbox* selectionbox1 = djui_selectionbox_create(&body->base, "Level", levelChoices, 17, &configMenuLevel);
|
||||
djui_base_set_size_type(&selectionbox1->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE);
|
||||
djui_base_set_size(&selectionbox1->base, 1.0f, 32);
|
||||
djui_base_set_enabled(&selectionbox1->base, !configMenuRandom);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "djui.h"
|
||||
#include "src/pc/utils/misc.h"
|
||||
#include "src/pc/configfile.h"
|
||||
#include "game/hardcoded.h"
|
||||
|
||||
#ifdef DEVELOPMENT
|
||||
void djui_panel_options_debug_create(struct DjuiBase* caller) {
|
||||
|
@ -16,6 +17,11 @@ void djui_panel_options_debug_create(struct DjuiBase* caller) {
|
|||
djui_base_set_size(&checkbox1->base, 1.0f, 32);
|
||||
defaultBase = &checkbox1->base;
|
||||
|
||||
struct DjuiCheckbox* checkbox2 = djui_checkbox_create(&body->base, "Fixed Collisions", &gLevelValues.fixCollisionBugs);
|
||||
djui_base_set_size_type(&checkbox2->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE);
|
||||
djui_base_set_size(&checkbox2->base, 1.0f, 32);
|
||||
defaultBase = &checkbox2->base;
|
||||
|
||||
struct DjuiButton* button2 = djui_button_create(&body->base, "Back");
|
||||
djui_base_set_size_type(&button2->base, DJUI_SVT_RELATIVE, DJUI_SVT_ABSOLUTE);
|
||||
djui_base_set_size(&button2->base, 1.0f, 64);
|
||||
|
|
|
@ -17076,6 +17076,15 @@ int smlua_func_get_current_save_file_num(UNUSED lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_get_dialog_box_state(UNUSED lua_State* L) {
|
||||
if(!smlua_functions_valid_param_count(L, 0)) { return 0; }
|
||||
|
||||
|
||||
lua_pushinteger(L, get_dialog_box_state());
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_get_dialog_id(UNUSED lua_State* L) {
|
||||
if(!smlua_functions_valid_param_count(L, 0)) { return 0; }
|
||||
|
||||
|
@ -19689,6 +19698,7 @@ void smlua_bind_functions_autogen(void) {
|
|||
smlua_bind_function(L, "camera_unfreeze", smlua_func_camera_unfreeze);
|
||||
smlua_bind_function(L, "deref_s32_pointer", smlua_func_deref_s32_pointer);
|
||||
smlua_bind_function(L, "get_current_save_file_num", smlua_func_get_current_save_file_num);
|
||||
smlua_bind_function(L, "get_dialog_box_state", smlua_func_get_dialog_box_state);
|
||||
smlua_bind_function(L, "get_dialog_id", smlua_func_get_dialog_id);
|
||||
smlua_bind_function(L, "get_environment_region", smlua_func_get_environment_region);
|
||||
smlua_bind_function(L, "get_hand_foot_pos_x", smlua_func_get_hand_foot_pos_x);
|
||||
|
|
|
@ -57,6 +57,11 @@ void set_last_star_or_key(u8 value) {
|
|||
gLastCollectedStarOrKey = value;
|
||||
}
|
||||
|
||||
extern s8 gDialogBoxState;
|
||||
s8 get_dialog_box_state() {
|
||||
return gDialogBoxState;
|
||||
}
|
||||
|
||||
s32 hud_get_value(enum HudDisplayValue type) {
|
||||
switch (type) {
|
||||
case HUD_DISPLAY_LIVES: return gHudDisplay.lives;
|
||||
|
|
|
@ -64,6 +64,7 @@ void camera_config_set_deceleration(u32 value);
|
|||
bool is_game_paused(void);
|
||||
bool is_transition_playing(void);
|
||||
|
||||
s8 get_dialog_box_state();
|
||||
s16 get_dialog_id(void);
|
||||
s32 get_last_star_or_key(void);
|
||||
void set_last_star_or_key(u8 value);
|
||||
|
|
|
@ -535,8 +535,8 @@ void network_shutdown(bool sendLeaving, bool exiting, bool popup) {
|
|||
extern s16 gMenuMode;
|
||||
gMenuMode = -1;
|
||||
|
||||
extern u8 gIsModerator;
|
||||
gIsModerator = 0;
|
||||
extern bool gIsModerator;
|
||||
gIsModerator = false;
|
||||
|
||||
djui_panel_shutdown();
|
||||
extern bool gDjuiInMainMenu;
|
||||
|
|
|
@ -412,7 +412,7 @@ void network_player_update_course_level(struct NetworkPlayer* np, s16 courseNum,
|
|||
}
|
||||
|
||||
// If this machine's player changed to a different location, then all of the other np locations are no longer valid
|
||||
for (u32 i = 0; i < MAX_PLAYERS + 1; i++) {
|
||||
for (u32 i = 1; i < configAmountofPlayers; i++) {
|
||||
struct NetworkPlayer* npi = &gNetworkPlayers[i];
|
||||
if ((!npi->connected) || npi == gNetworkPlayerLocal) { continue; }
|
||||
npi->currPositionValid = false;
|
||||
|
|
|
@ -23,8 +23,12 @@ u8 network_local_index_from_global(u8 globalIndex) {
|
|||
return globalIndex + ((globalIndex < gNetworkPlayerLocal->globalIndex) ? 1 : 0);
|
||||
}
|
||||
|
||||
#ifdef DISCORD_SDK
|
||||
char* network_discord_id_from_local_index(u8 localIndex) {
|
||||
if (gNetworkSystem == &gNetworkSystemDiscord) { return gNetworkSystem->get_id_str(localIndex); }
|
||||
#else
|
||||
char* network_discord_id_from_local_index(UNUSED u8 localIndex) {
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -33,7 +37,7 @@ bool network_is_server(void) {
|
|||
}
|
||||
|
||||
bool network_is_moderator(void) {
|
||||
extern u8 gIsModerator;
|
||||
extern bool gIsModerator;
|
||||
return gIsModerator;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
#include "pc/network/ban_list.h"
|
||||
#include "pc/network/moderator_list.h"
|
||||
|
||||
u8 gIsModerator = 0;
|
||||
bool gIsModerator = false;
|
||||
|
||||
void network_send_chat_command(u8 globalIndex, enum ChatConfirmCommand ccc) {
|
||||
if (gIsModerator == 1) {
|
||||
if (gIsModerator) {
|
||||
u8 cccType = ccc;
|
||||
struct Packet p = { 0 };
|
||||
packet_init(&p, PACKET_COMMAND, false, PLMT_NONE);
|
||||
|
@ -17,7 +17,7 @@ void network_send_chat_command(u8 globalIndex, enum ChatConfirmCommand ccc) {
|
|||
}
|
||||
}
|
||||
|
||||
void network_recieve_chat_command(struct Packet* p) {
|
||||
void network_recieve_chat_command(struct Packet *p) {
|
||||
if (!moderator_list_contains(gNetworkSystem->get_id_str(p->localIndex))) {
|
||||
return;
|
||||
}
|
||||
|
@ -26,22 +26,28 @@ void network_recieve_chat_command(struct Packet* p) {
|
|||
packet_read(p, &player, sizeof(u8));
|
||||
packet_read(p, &CCC, sizeof(u8));
|
||||
if (gNetworkType == NT_SERVER && CCC == CCC_KICK) {
|
||||
struct NetworkPlayer* np = &gNetworkPlayers[player];
|
||||
if (!np->connected) { return; }
|
||||
struct NetworkPlayer *np = &gNetworkPlayers[player];
|
||||
if (!np->connected) {
|
||||
return;
|
||||
}
|
||||
network_send_kick(np->localIndex, EKT_KICKED);
|
||||
network_player_disconnected(np->localIndex);
|
||||
char message[256] = { 0 };
|
||||
snprintf(message, 256, "\\#fff982\\Kicked '%s%s\\#fff982\\'!", network_get_player_text_color_string(np->localIndex), np->name);
|
||||
snprintf(message, 256, "\\#fff982\\Kicked '%s%s\\#fff982\\'!",
|
||||
network_get_player_text_color_string(np->localIndex), np->name);
|
||||
djui_chat_message_create(message);
|
||||
}
|
||||
if (gNetworkType == NT_SERVER && CCC == CCC_BAN) {
|
||||
struct NetworkPlayer* np = &gNetworkPlayers[player];
|
||||
if (!np->connected) { return; }
|
||||
struct NetworkPlayer *np = &gNetworkPlayers[player];
|
||||
if (!np->connected) {
|
||||
return;
|
||||
}
|
||||
network_send_kick(np->localIndex, EKT_BANNED);
|
||||
ban_list_add(gNetworkSystem->get_id_str(np->localIndex), false);
|
||||
network_player_disconnected(np->localIndex);
|
||||
char message[256] = { 0 };
|
||||
snprintf(message, 256, "\\#fff982\\Banned '%s%s\\#fff982\\'!", network_get_player_text_color_string(np->localIndex), np->name);
|
||||
snprintf(message, 256, "\\#fff982\\Banned '%s%s\\#fff982\\'!",
|
||||
network_get_player_text_color_string(np->localIndex), np->name);
|
||||
djui_chat_message_create(message);
|
||||
}
|
||||
}
|
||||
|
@ -52,15 +58,11 @@ void network_send_moderator(u8 localIndex) {
|
|||
network_send_to(localIndex, &p);
|
||||
}
|
||||
|
||||
void network_recieve_moderator(struct Packet* p) {
|
||||
if (gIsModerator == 1) {
|
||||
void network_recieve_moderator(struct Packet *p) {
|
||||
if ((gIsModerator) || (network_player_any_connected() && gNetworkPlayers[p->localIndex].type != NPT_SERVER)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (network_player_any_connected() && gNetworkPlayers[p->localIndex].type != NPT_SERVER) {
|
||||
return;
|
||||
}
|
||||
|
||||
gIsModerator = 1;
|
||||
gIsModerator = true;
|
||||
djui_chat_message_create("\\#fff982\\You are now a Moderator.");
|
||||
}
|
|
@ -27,10 +27,10 @@ void network_receive_kick(struct Packet* p) {
|
|||
enum KickReasonType kickReason = kickReasonType;
|
||||
|
||||
switch (kickReason) {
|
||||
case EKT_FULL_PARTY: djui_panel_join_message_error("\\#ffa0a0\\Error:\\#c8c8c8\\ The party is full."); break;
|
||||
case EKT_KICKED: djui_panel_join_message_error("\\#ffa0a0\\Error:\\#c8c8c8\\ The server kicked you."); break;
|
||||
case EKT_BANNED: djui_panel_join_message_error("\\#ffa0a0\\Error:\\#c8c8c8\\ The server banned you."); break;
|
||||
default: djui_panel_join_message_error("\\#ffa0a0\\Error:\\#c8c8c8\\ Host has closed the connection."); break;
|
||||
case EKT_FULL_PARTY: djui_popup_create("\\#ffa0a0\\Disconnected:\\#c8c8c8\\ The party is full.", 1); break;
|
||||
case EKT_KICKED: djui_popup_create("\\#ffa0a0\\Disconnected:\\#c8c8c8\\ The server kicked you.", 1); break;
|
||||
case EKT_BANNED: djui_popup_create("\\#ffa0a0\\Disconnected:\\#c8c8c8\\ The server banned you.", 1); break;
|
||||
default: djui_popup_create("\\#ffa0a0\\Disconnected:\\#c8c8c8\\ Host has closed the connection.", 1); break;
|
||||
}
|
||||
network_shutdown(false, false, false);
|
||||
}
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
#include <netdb.h>
|
||||
#endif
|
||||
|
||||
char* gGetHostName = NULL;
|
||||
char *gGetHostName = NULL;
|
||||
|
||||
void domain_resolution(void) {
|
||||
struct in_addr addr;
|
||||
char *host_name = configJoinIp;
|
||||
struct hostent *remoteHost;
|
||||
char* domainname = "";
|
||||
char *domainname = "";
|
||||
|
||||
if (gGetHostName == NULL) {
|
||||
return;
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#ifndef _WIN32
|
||||
#include <signal.h>
|
||||
#endif
|
||||
|
||||
#include "sm64.h"
|
||||
|
||||
|
@ -390,14 +392,10 @@ void main_func(void) {
|
|||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
#ifndef _WIN32
|
||||
#ifdef SIGINT
|
||||
signal(SIGINT, inthand);
|
||||
#endif
|
||||
#ifdef SIGQUIT
|
||||
signal(SIGQUIT, inthand);
|
||||
#endif
|
||||
#ifdef SIGTERM
|
||||
signal(SIGTERM, inthand);
|
||||
#endif
|
||||
parse_cli_opts(argc, argv);
|
||||
main_func();
|
||||
|
|
Loading…
Reference in New Issue