Personal Star Counter EX+ Update (#432)
* Update personal-starcount-ex.lua Adds an incompatible tag for gamemodes, as you aren't collecting any stars outside of the main game. Also adds some HUD trickery via djui_hud_set_render_behind_hud to draw underneath screen transitions, and the vanilla pause screen. * Update personal-starcount-ex.lua * Update personal-starcount-ex.lua * Update personal-starcount-ex.lua * Update personal-starcount-ex.lua * Update personal-starcount-ex.lua * Personal Star Counter Update + HUD appears along with the vanilla HUD during the intro cutscene. + Hides and redraws the vanilla star HUD to remove HUD alignment issues. + Red and Green star counts move to the top-left and top-right corners of the screen respectively during the credits. Thought it'd be good for content creators. + Ability to see everyone's PSC on the Player Menu (Tab menu? Select menu?) + Light "anti-cheat" If server cheats are enabled, the Star Dance Star and the Grand Star will have their models changed to, with the permission of Blocky.cmd, the "You Tried" star, and the Green Star total will not increase. I have not encountered any unintended behavior of either of these objects in vanilla, any included romhack, or any other released romhack that I have played at the time of this post. * Delete personal-starcount-ex.lua
This commit is contained in:
parent
6a679f00ae
commit
7491c2f6ee
|
@ -1,185 +0,0 @@
|
||||||
-- name: Personal Star Counter EX+
|
|
||||||
-- description: See how many stars you collect!\nIdea by Mr.Needlemouse, created by Sunk\n\nModified by Demnyx.
|
|
||||||
-- incompatible: gamemode arena
|
|
||||||
|
|
||||||
if mod_storage_load("StarCounter") == nil then
|
|
||||||
mod_storage_save("StarCounter", "0")
|
|
||||||
end
|
|
||||||
|
|
||||||
local TotalStarCounter = tonumber(mod_storage_load("StarCounter"))
|
|
||||||
local StarCounter = 0
|
|
||||||
local prevNumStars = 0
|
|
||||||
|
|
||||||
local screenHeight = 0
|
|
||||||
local screenWidth = 0
|
|
||||||
|
|
||||||
local psToggle = 1
|
|
||||||
|
|
||||||
local fadeTimer = 0
|
|
||||||
|
|
||||||
-- junk --
|
|
||||||
cutscenes = {
|
|
||||||
[ACT_END_PEACH_CUTSCENE] = true,
|
|
||||||
[ACT_CREDITS_CUTSCENE] = true,
|
|
||||||
[ACT_END_WAVING_CUTSCENE] = true,
|
|
||||||
[ACT_INTRO_CUTSCENE] = true,
|
|
||||||
}
|
|
||||||
|
|
||||||
---@param m MarioState
|
|
||||||
--Increments an independent counter if a star is collected.
|
|
||||||
function localStarCounter(m, o, type)
|
|
||||||
if (m.playerIndex == 0) and (type == INTERACT_STAR_OR_KEY) then
|
|
||||||
--This ensures that it increments ONLY if a star is collected.
|
|
||||||
if get_id_from_behavior(o.behavior) ~= id_bhvBowserKey then
|
|
||||||
--The hook happens after the star count increments, so this allows the independent counter to increment ONLY when YELLOW star is collected.
|
|
||||||
if m.numStars ~= prevNumStars then
|
|
||||||
StarCounter = StarCounter + 1
|
|
||||||
TotalStarCounter = TotalStarCounter + 1
|
|
||||||
mod_storage_save("StarCounter", tostring(TotalStarCounter))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Hud alpha stuff from Agent X
|
|
||||||
function djui_hud_set_adjusted_color(r, g, b, a)
|
|
||||||
local multiplier = 1
|
|
||||||
if djui_hud_is_pause_menu_created() then multiplier = 0.57 end
|
|
||||||
djui_hud_set_color(r * multiplier, g * multiplier, b * multiplier, a)
|
|
||||||
end
|
|
||||||
|
|
||||||
function displayStarCounter()
|
|
||||||
local m = gMarioStates[0]
|
|
||||||
if psToggle ~= 1 then return end
|
|
||||||
--if cutscenes[m.action] ~= nil then return end
|
|
||||||
if obj_get_first_with_behavior_id(id_bhvActSelector) ~= nil
|
|
||||||
or cutscenes[m.action] ~= nil then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
djui_hud_set_resolution(RESOLUTION_N64)
|
|
||||||
djui_hud_set_font(FONT_HUD)
|
|
||||||
|
|
||||||
--I don't want to put this in a seperate function, there's not enough code for it to be worth it.
|
|
||||||
if m.playerIndex == 0 then
|
|
||||||
prevNumStars = m.numStars
|
|
||||||
else
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
screenHeight = djui_hud_get_screen_height()
|
|
||||||
screenWidth = djui_hud_get_screen_width()
|
|
||||||
|
|
||||||
if a == nil then
|
|
||||||
a = 255
|
|
||||||
end
|
|
||||||
|
|
||||||
local timerValFrames = hud_get_value(HUD_DISPLAY_TIMER)
|
|
||||||
local timerX = 0
|
|
||||||
local timerY = 0
|
|
||||||
|
|
||||||
-- Move HUD graphics away from the TIMER HUD
|
|
||||||
if timerValFrames ~= 0 then
|
|
||||||
timerX = 60
|
|
||||||
timerY = 17
|
|
||||||
end
|
|
||||||
|
|
||||||
--Normal personal star counter (The red one)
|
|
||||||
if StarCounter >= 100 then
|
|
||||||
djui_hud_set_adjusted_color(255, 255, 255, a)
|
|
||||||
djui_hud_print_text(tostring(StarCounter), screenWidth - 60 - timerX, screenHeight - 208 - timerY, 1)
|
|
||||||
djui_hud_set_adjusted_color(232, 17, 35, a)
|
|
||||||
djui_hud_render_texture(gTextures.star, screenWidth - 76 - timerX, screenHeight - 208 - timerY, 1, 1)
|
|
||||||
else
|
|
||||||
djui_hud_set_adjusted_color(246, 246, 246, a)
|
|
||||||
djui_hud_print_text(tostring("X"), screenWidth - 60 - timerX, screenHeight - 208 - timerY, 1)
|
|
||||||
djui_hud_set_adjusted_color(255, 255, 255, a)
|
|
||||||
djui_hud_print_text(tostring(StarCounter), screenWidth - 46 - timerX, screenHeight - 208 - timerY, 1)
|
|
||||||
djui_hud_set_adjusted_color(232, 17, 35, a)
|
|
||||||
djui_hud_render_texture(gTextures.star, screenWidth - 76 - timerX, screenHeight - 208 - timerY, 1, 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
--Total star counter (The green one)
|
|
||||||
if timerValFrames ~= 0 then
|
|
||||||
timerX = 0
|
|
||||||
timerY = -10
|
|
||||||
end
|
|
||||||
|
|
||||||
local perceived_total_counter = TotalStarCounter
|
|
||||||
local milestone_counter = 0
|
|
||||||
while perceived_total_counter >= 10000 do
|
|
||||||
perceived_total_counter = perceived_total_counter - 10000
|
|
||||||
milestone_counter = milestone_counter + 1
|
|
||||||
end
|
|
||||||
|
|
||||||
if perceived_total_counter >= 100 then
|
|
||||||
djui_hud_set_adjusted_color(255, 255, 255, a)
|
|
||||||
djui_hud_print_text(tostring(perceived_total_counter), screenWidth - 60 - timerX, screenHeight - 190 - timerY, 1)
|
|
||||||
djui_hud_set_adjusted_color(50, 176, 40, a)
|
|
||||||
djui_hud_render_texture(gTextures.star, screenWidth - 76 - timerX, screenHeight - 190 - timerY, 1, 1)
|
|
||||||
if milestone_counter ~= 0 then
|
|
||||||
djui_hud_set_adjusted_color(255, 255, 255, a)
|
|
||||||
djui_hud_print_text(string.format("x%d", milestone_counter), screenWidth - 76 - timerX, screenHeight - 174 - timerY, 0.5)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
djui_hud_set_adjusted_color(246, 246, 246, a)
|
|
||||||
djui_hud_print_text(tostring("X"), screenWidth - 60 - timerX, screenHeight - 190 - timerY, 1)
|
|
||||||
djui_hud_set_adjusted_color(255, 255, 255, a)
|
|
||||||
djui_hud_print_text(tostring(perceived_total_counter), screenWidth - 46 - timerX, screenHeight - 190 - timerY, 1)
|
|
||||||
djui_hud_set_adjusted_color(50, 176, 40, a)
|
|
||||||
djui_hud_render_texture(gTextures.star, screenWidth - 76 - timerX, screenHeight - 190 - timerY, 1, 1)
|
|
||||||
if milestone_counter ~= 0 then
|
|
||||||
djui_hud_set_adjusted_color(255, 255, 255, a)
|
|
||||||
djui_hud_print_text(string.format("x%d", milestone_counter), screenWidth - 76 - timerX,
|
|
||||||
screenHeight - 174 - timerY, 0.5)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Trying some HUD trickery here..
|
|
||||||
if is_transition_playing() == true then
|
|
||||||
fadeTimer = 5
|
|
||||||
else
|
|
||||||
if fadeTimer >= 1 then
|
|
||||||
fadeTimer = fadeTimer - 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if fadeTimer > 0
|
|
||||||
or is_game_paused() == true then
|
|
||||||
djui_hud_set_render_behind_hud(true)
|
|
||||||
else
|
|
||||||
djui_hud_set_render_behind_hud(false)
|
|
||||||
end
|
|
||||||
--StarCounter = 120 (Debug thingie)
|
|
||||||
end
|
|
||||||
|
|
||||||
function PSToggle(msg)
|
|
||||||
if msg == string.lower("On") or msg == "1" then
|
|
||||||
psToggle = 1
|
|
||||||
return true
|
|
||||||
elseif msg == string.lower("Off") or msg == "0" then
|
|
||||||
psToggle = 0
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
---------
|
|
||||||
--Hooks--
|
|
||||||
---------
|
|
||||||
hook_event(HOOK_ON_INTERACT, localStarCounter)
|
|
||||||
hook_event(HOOK_ON_HUD_RENDER, displayStarCounter)
|
|
||||||
hook_chat_command('pstarcount', 'On|Off - Displays stars you"ve collected. Default is On.', PSToggle)
|
|
||||||
|
|
||||||
_G.PersonalStarCounter = {
|
|
||||||
get_star_counter = function ()
|
|
||||||
return StarCounter
|
|
||||||
end,
|
|
||||||
|
|
||||||
get_total_star_counter = function ()
|
|
||||||
return TotalStarCounter
|
|
||||||
end,
|
|
||||||
|
|
||||||
hide_star_counters = function (hide)
|
|
||||||
if hide then psToggle = 0 else psToggle = 1 end
|
|
||||||
end,
|
|
||||||
}
|
|
Binary file not shown.
|
@ -0,0 +1,289 @@
|
||||||
|
-- name: Personal Star Counter EX+
|
||||||
|
-- description: See how many stars you've collected!\n\nCredits:\n\\#097419\\Mr.Needlemouse\\#FFFFFF\\ - Concept\nSunk\\#FFFFFF\\ - Creator\n\\#269A91\\Demnyx\\#FFFFFF\\ - Assistance\n\\#0000FF\\Blocky.cmd\\#FFFFFF\\ - Model\nPeachyPeach\\#FFFFFF\\ - Global Functions
|
||||||
|
-- incompatible: gamemode arena
|
||||||
|
|
||||||
|
for i = 0, (MAX_PLAYERS - 1) do
|
||||||
|
gPlayerSyncTable[i].psc = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
if mod_storage_load("StarCounter") == nil then
|
||||||
|
mod_storage_save("StarCounter", "0")
|
||||||
|
end
|
||||||
|
E_MODEL_STAR_CHEATER = smlua_model_util_get_id("star_cheater_geo")
|
||||||
|
|
||||||
|
local starCheater = false
|
||||||
|
local TotalStarCounter = tonumber(mod_storage_load("StarCounter"))
|
||||||
|
local StarCounter = 0
|
||||||
|
local prevNumStars = 0
|
||||||
|
local screenHeight = 0
|
||||||
|
local screenWidth = 0
|
||||||
|
local pscToggle = 1
|
||||||
|
local introTimer = 0
|
||||||
|
|
||||||
|
-- junk --
|
||||||
|
cutscenes = {
|
||||||
|
[ACT_END_PEACH_CUTSCENE] = true,
|
||||||
|
[ACT_CREDITS_CUTSCENE] = true,
|
||||||
|
[ACT_END_WAVING_CUTSCENE] = true,
|
||||||
|
}
|
||||||
|
|
||||||
|
---@param m MarioState
|
||||||
|
--Increments an independent counter if a star is collected.
|
||||||
|
function localStarCounter(m, o, type)
|
||||||
|
if (m.playerIndex == 0) and (type == INTERACT_STAR_OR_KEY) then
|
||||||
|
--This ensures that it increments ONLY if a star is collected.
|
||||||
|
if get_id_from_behavior(o.behavior) ~= id_bhvBowserKey then
|
||||||
|
--The hook happens after the star count increments, so this allows the independent counter to increment ONLY when YELLOW star is collected.
|
||||||
|
if m.numStars ~= prevNumStars then
|
||||||
|
StarCounter = StarCounter + 1
|
||||||
|
gPlayerSyncTable[0].psc = StarCounter
|
||||||
|
if starCheater == false then --Only if not cheating
|
||||||
|
TotalStarCounter = TotalStarCounter + 1
|
||||||
|
mod_storage_save("StarCounter", tostring(TotalStarCounter))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Hud alpha stuff from Agent X
|
||||||
|
function djui_hud_set_adjusted_color(r, g, b, a)
|
||||||
|
local multiplier = 1
|
||||||
|
if djui_hud_is_pause_menu_created() then multiplier = 0.57 end --Star Display compatibility
|
||||||
|
djui_hud_set_color(r * multiplier, g * multiplier, b * multiplier, a)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function displayStarCounter()
|
||||||
|
local m = gMarioStates[0]
|
||||||
|
if pscToggle == 0 then return end
|
||||||
|
if obj_get_first_with_behavior_id(id_bhvActSelector) ~= nil then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
--Make HUD appear when the real one does during the intro
|
||||||
|
if m.action == ACT_INTRO_CUTSCENE then
|
||||||
|
if introTimer ~= 1195 then
|
||||||
|
introTimer = introTimer + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
djui_hud_set_resolution(RESOLUTION_N64)
|
||||||
|
djui_hud_set_font(FONT_HUD)
|
||||||
|
--Draw over credits fades
|
||||||
|
if cutscenes[m.action] ~= true then
|
||||||
|
djui_hud_set_render_behind_hud(true)
|
||||||
|
else
|
||||||
|
djui_hud_set_render_behind_hud(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
--I don't want to put this in a seperate function, there's not enough code for it to be worth it.
|
||||||
|
if m.playerIndex == 0 then
|
||||||
|
prevNumStars = m.numStars
|
||||||
|
else
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
screenHeight = djui_hud_get_screen_height()
|
||||||
|
screenWidth = djui_hud_get_screen_width()
|
||||||
|
|
||||||
|
if a == nil then a = 255 end
|
||||||
|
|
||||||
|
local timerValFrames = hud_get_value(HUD_DISPLAY_TIMER)
|
||||||
|
local timerX = 0
|
||||||
|
local timerY = 0
|
||||||
|
|
||||||
|
-- Move HUD graphics away from the TIMER HUD
|
||||||
|
if timerValFrames ~= 0 then
|
||||||
|
timerX = 60
|
||||||
|
timerY = 17
|
||||||
|
end
|
||||||
|
|
||||||
|
--Normal vanilla star counter (The fake real one)
|
||||||
|
--Yes Im hiding the hardcoded one because alignment is a pain lmao
|
||||||
|
if cutscenes[m.action] ~= true then
|
||||||
|
if introTimer >= 1195
|
||||||
|
or m.action ~= ACT_INTRO_CUTSCENE then
|
||||||
|
if m.numStars >= 100 then
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(tostring(m.numStars), screenWidth - 60, screenHeight - 225, 1)
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_render_texture(gTextures.star, screenWidth - 76, screenHeight - 225, 1, 1.)
|
||||||
|
else
|
||||||
|
djui_hud_set_adjusted_color(246, 246, 246, a)
|
||||||
|
djui_hud_print_text("X", screenWidth - 60, screenHeight - 225, 1)
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(tostring(m.numStars), screenWidth - 46, screenHeight - 225, 1)
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_render_texture(gTextures.star, screenWidth - 76, screenHeight - 225, 1, 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--Normal personal star counter (The red one)
|
||||||
|
if cutscenes[m.action] == true then
|
||||||
|
if StarCounter >= 100 then
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(tostring(StarCounter), screenWidth%2 + 38, screenHeight - 235, 1)
|
||||||
|
djui_hud_set_adjusted_color(232, 17, 35, a)
|
||||||
|
djui_hud_render_texture(gTextures.star, screenWidth%2 + 22, screenHeight - 235, 1, 1)
|
||||||
|
else
|
||||||
|
djui_hud_set_adjusted_color(246, 246, 246, a)
|
||||||
|
djui_hud_print_text(tostring("X"), screenWidth%2 + 38, screenHeight - 235, 1)
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(tostring(StarCounter), screenWidth%2 + 54, screenHeight - 235, 1)
|
||||||
|
djui_hud_set_adjusted_color(232, 17, 35, a)
|
||||||
|
djui_hud_render_texture(gTextures.star, screenWidth%2 + 22, screenHeight - 235, 1, 1)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if introTimer >= 1195
|
||||||
|
or m.action ~= ACT_INTRO_CUTSCENE then
|
||||||
|
if StarCounter >= 100 then
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(tostring(StarCounter), screenWidth - 60 - timerX, screenHeight - 208 - timerY, 1)
|
||||||
|
djui_hud_set_adjusted_color(232, 17, 35, a)
|
||||||
|
djui_hud_render_texture(gTextures.star, screenWidth - 76 - timerX, screenHeight - 208 - timerY, 1, 1)
|
||||||
|
else
|
||||||
|
djui_hud_set_adjusted_color(246, 246, 246, a)
|
||||||
|
djui_hud_print_text(tostring("X"), screenWidth - 60 - timerX, screenHeight - 208 - timerY, 1)
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(tostring(StarCounter), screenWidth - 46 - timerX, screenHeight - 208 - timerY, 1)
|
||||||
|
djui_hud_set_adjusted_color(232, 17, 35, a)
|
||||||
|
djui_hud_render_texture(gTextures.star, screenWidth - 76 - timerX, screenHeight - 208 - timerY, 1, 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
--Total star counter (The green one)
|
||||||
|
if timerValFrames ~= 0 then
|
||||||
|
timerX = 0
|
||||||
|
timerY = -10
|
||||||
|
end
|
||||||
|
|
||||||
|
local perceived_total_counter = TotalStarCounter
|
||||||
|
local milestone_counter = 0
|
||||||
|
while perceived_total_counter >= 10000 do
|
||||||
|
perceived_total_counter = perceived_total_counter - 10000
|
||||||
|
milestone_counter = milestone_counter + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
if cutscenes[m.action] == true then
|
||||||
|
if perceived_total_counter >= 100 then
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(tostring(perceived_total_counter), screenWidth - 60, screenHeight - 235, 1)
|
||||||
|
djui_hud_set_adjusted_color(50, 176, 40, a)
|
||||||
|
djui_hud_render_texture(gTextures.star, screenWidth - 76, screenHeight - 235, 1, 1)
|
||||||
|
if milestone_counter ~= 0 then
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(string.format("x%d", milestone_counter), screenWidth - 76, screenHeight - 235, 0.5)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
djui_hud_set_adjusted_color(246, 246, 246, a)
|
||||||
|
djui_hud_print_text(tostring("X"), screenWidth - 60, screenHeight - 235, 1)
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(tostring(perceived_total_counter), screenWidth - 46, screenHeight - 235, 1)
|
||||||
|
djui_hud_set_adjusted_color(50, 176, 40, a)
|
||||||
|
djui_hud_render_texture(gTextures.star, screenWidth - 76, screenHeight - 235, 1, 1)
|
||||||
|
if milestone_counter ~= 0 then
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(string.format("x%d", milestone_counter), screenWidth - 76, screenHeight - 235, 0.5)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if introTimer >= 1195
|
||||||
|
or m.action ~= ACT_INTRO_CUTSCENE then
|
||||||
|
if perceived_total_counter >= 100 then
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(tostring(perceived_total_counter), screenWidth - 60 - timerX, screenHeight - 190 - timerY, 1)
|
||||||
|
djui_hud_set_adjusted_color(50, 176, 40, a)
|
||||||
|
djui_hud_render_texture(gTextures.star, screenWidth - 76 - timerX, screenHeight - 190 - timerY, 1, 1)
|
||||||
|
if milestone_counter ~= 0 then
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(string.format("x%d", milestone_counter), screenWidth - 76 - timerX, screenHeight - 174 - timerY, 0.5)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
djui_hud_set_adjusted_color(246, 246, 246, a)
|
||||||
|
djui_hud_print_text(tostring("X"), screenWidth - 60 - timerX, screenHeight - 190 - timerY, 1)
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(tostring(perceived_total_counter), screenWidth - 46 - timerX, screenHeight - 190 - timerY, 1)
|
||||||
|
djui_hud_set_adjusted_color(50, 176, 40, a)
|
||||||
|
djui_hud_render_texture(gTextures.star, screenWidth - 76 - timerX, screenHeight - 190 - timerY, 1, 1)
|
||||||
|
if milestone_counter ~= 0 then
|
||||||
|
djui_hud_set_adjusted_color(255, 255, 255, a)
|
||||||
|
djui_hud_print_text(string.format("x%d", milestone_counter), screenWidth - 76 - timerX, screenHeight - 174 - timerY, 0.5)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--Turn server cheats off, silly!
|
||||||
|
--Will be updated immediately when individual cheats get flags.
|
||||||
|
function cheaterStar()
|
||||||
|
if starCheater == true then return end
|
||||||
|
if gServerSettings.enableCheats ~= 0 then
|
||||||
|
djui_popup_create("This server has cheats enabled.\n\\#31AF28\\Total Star Count\\#FFFFFF\\ will not change.", 2)
|
||||||
|
play_sound_button_change_blocked()
|
||||||
|
starCheater = true
|
||||||
|
else
|
||||||
|
starCheater = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--Changes models for the Star Dance Star and the Grand Star.
|
||||||
|
function bhv_star_cheater(o)
|
||||||
|
if starCheater == true then
|
||||||
|
obj_set_model_extended(o, E_MODEL_STAR_CHEATER)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
id_bhvCelebrationStar = hook_behavior(id_bhvCelebrationStar, OBJ_LIST_LEVEL, false, bhv_star_cheater, bhv_star_cheater)
|
||||||
|
id_bhvGrandStar = hook_behavior(id_bhvGrandStar, OBJ_LIST_LEVEL, false, bhv_star_cheater, nil)
|
||||||
|
|
||||||
|
--See how many stars everyone gets!
|
||||||
|
function updatePSC(m)
|
||||||
|
gPlayerSyncTable[0].psc = StarCounter
|
||||||
|
end
|
||||||
|
|
||||||
|
--No star text icon yet, also the text gets removed after the second color change?
|
||||||
|
function update()
|
||||||
|
for i = 0, (MAX_PLAYERS - 1) do
|
||||||
|
gPlayerSyncTable[i].psc = gPlayerSyncTable[i].psc
|
||||||
|
network_player_set_description(gNetworkPlayers[i], "\\#FF0000\\".."Stars"..--[[ "\\#FFFFFF\\".. ]]": " ..tostring(gPlayerSyncTable[i].psc), 255, 255, 255, 255)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function pscToggle(msg)
|
||||||
|
if msg == string.lower("On") or msg == "1" then
|
||||||
|
pscToggle = 1
|
||||||
|
hud_set_value(HUD_DISPLAY_FLAGS, hud_get_value(HUD_DISPLAY_FLAGS) & ~HUD_DISPLAY_FLAG_STAR_COUNT)
|
||||||
|
return true
|
||||||
|
elseif msg == string.lower("Off") or msg == "0" then
|
||||||
|
pscToggle = 0
|
||||||
|
hud_set_value(HUD_DISPLAY_FLAGS, hud_get_value(HUD_DISPLAY_FLAGS) | HUD_DISPLAY_FLAG_STAR_COUNT)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---------
|
||||||
|
--Hooks--
|
||||||
|
---------
|
||||||
|
hook_event(HOOK_ON_INTERACT, localStarCounter)
|
||||||
|
hook_event(HOOK_ON_HUD_RENDER, displayStarCounter)
|
||||||
|
hook_event(HOOK_ON_LEVEL_INIT, cheaterStar)
|
||||||
|
hook_event(HOOK_UPDATE, update)
|
||||||
|
hook_event(HOOK_UPDATE, updatePSC)
|
||||||
|
hook_chat_command('psc', "On|Off - Displays stars you've collected. Default is On.", pscToggle)
|
||||||
|
|
||||||
|
--Global functions for everyone to use!
|
||||||
|
--Thank you, PeachyPeach!
|
||||||
|
_G.PersonalStarCounter = {
|
||||||
|
get_star_counter = function ()
|
||||||
|
return StarCounter
|
||||||
|
end,
|
||||||
|
|
||||||
|
get_total_star_counter = function ()
|
||||||
|
return TotalStarCounter
|
||||||
|
end,
|
||||||
|
|
||||||
|
hide_star_counters = function (hide)
|
||||||
|
if hide then pscToggle = 0 else pscToggle = 1 end
|
||||||
|
end,
|
||||||
|
}
|
Loading…
Reference in New Issue