Need help with any SMBX game-related issues? Ask your questions here.
|
|
|
|
-
Ness-Wednesday
- Purple Yoshi Egg

- Posts: 1544
- Joined: Sun Jun 28, 2015 3:50 pm
- Flair: Diverse Scouts
- Pronouns: He/Him
Postby Ness-Wednesday » Tue Jan 19, 2016 7:15 pm
So I love Link in SMBX, but I just don't like how he lacks so much that should have been there.
I realized that his Jump animation actually shares his crouch animation, I also want to make him climb and spinjump just to have a lot more fun.
Is there a possible way to modify Link, his animation and features with Lunalua?
Update: I wonder, is it possible to modify Peach, or will I have to do the alt jump thing?
Also, am I able to cancel the tail attack and replace it with something else, or also give Peach Link's sword attack?
Last edited by Ness-Wednesday on Mon Feb 15, 2016 9:49 am, edited 1 time in total.
|
|
|
|
|
|
|
|
|
-
HenryRichard
- Birdo

- Posts: 2843
- Joined: Mon Dec 23, 2013 12:09 pm
- Flair: Is this where I type my password?
-
Contact:
Postby HenryRichard » Tue Jan 19, 2016 7:57 pm
Modifying animation is somewhat difficult but possible.
Enabling climbing is easy, you set Defines.player_link_fairyVineEnabled to true.
Enabling spinjump is easy as well, you just need to check if on a jump the player is holding alt jump and if they are make them spinjump (though link's spinjump animation is weird).
|
|
|
|
|
|
|
|
|
-
Ness-Wednesday
- Purple Yoshi Egg

- Posts: 1544
- Joined: Sun Jun 28, 2015 3:50 pm
- Flair: Diverse Scouts
- Pronouns: He/Him
Postby Ness-Wednesday » Sat Jan 23, 2016 6:14 pm
Is it possible to modify Link to earn a tail attack?
Also, I wanna know more about animating so is there a specific code to animate the player (Link in this case)?
|
|
|
|
|
|
|
|
|
-
Ness-Wednesday
- Purple Yoshi Egg

- Posts: 1544
- Joined: Sun Jun 28, 2015 3:50 pm
- Flair: Diverse Scouts
- Pronouns: He/Him
Postby Ness-Wednesday » Mon Jan 25, 2016 7:54 am
(Double posting because it seems to be that the "Bump topic" feature has been removed)
Question, will the alt+jump thing work if I have to force the player to only be Link, or the other player must be Mario, Luigi or Toad?
I added codes for Link to spin jump, hover via Super Leaf, shoot npc-266 with the Fire flower, and sparkle via Ice flower but I think I did something wrong since they aren't working.
In fact, he isn't shooting with the Ice or Fire flower.
Code: Select all local jumpCounter = 4;
function onLoop ()
if player:mem(0x146,FIELD_WORD) == 1 then
jumpCounter = 4;
end
end
function onKeyDown(keycode)
if keycode == KEY_JUMP and jumpCounter > 0 then
player.speedY = -10;
jumpCounter = jumpCounter - 1;
end
end
local upgradedHealth = false;
local bossHealth = 50;
local triggeredBoss2 = false;
function killNPC(npcID)
for k,v in pairs(NPC.get(npcID,-1)) do
v:kill()
end
end
function onLoopSection13()
for k,v in pairs(NPC.get(209,-1)) do
v:mem(0x148,FIELD_FLOAT,-20)
if v:mem(0x156,FIELD_WORD) == 1 then
bossHealth = bossHealth - 1;
Audio.clearSFXBuffer()
playSFX(39)
end
end
end
function onLoop()
if bossHealth <= 0 then
killNPC(209)
triggerEvent("The end")
bossHealth = 1;
end
end
color = {85,87}
function onLoad()
fire = -2
end
function onLoop()
fireball = findnpcs(282,player.section)
ludwig = findnpcs(280,player.section)
for g,h in pairs(ludwig) do
if h.speedY ~= 0 then
fire = -2
end
if h:mem(0x148,FIELD_FLOAT) >= 0 then
if h:mem(0x118,FIELD_DFLOAT) < 55 + h:mem(0x148,FIELD_FLOAT) * 4 then
h:mem(0x118,FIELD_DFLOAT,55 + h:mem(0x148,FIELD_FLOAT) * 4)
end
if h:mem(0x118,FIELD_DFLOAT) == 60 + h:mem(0x148,FIELD_FLOAT) * 4 and fire < (h:mem(0x148,FIELD_FLOAT) + 10) / 2.5 then
fire = fire + 1
h:mem(0x118,FIELD_DFLOAT,h:mem(0x118,FIELD_DFLOAT) - 5)
end
else
if h:mem(0x118,FIELD_DFLOAT) < 55 then
h:mem(0x118,FIELD_DFLOAT,55)
end
if h:mem(0x118,FIELD_DFLOAT) == 60 and fire < (h:mem(0x148,FIELD_FLOAT) + 10) / 2.5 then
fire = fire + 1
h:mem(0x118,FIELD_DFLOAT,h:mem(0x118,FIELD_DFLOAT) - 5)
end
end
if h:mem(0x100,FIELD_DFLOAT) < 10 then
h:mem(0x100,FIELD_DFLOAT,10)
end
end
for a,b in pairs(fireball) do
if b:mem(0x46,FIELD_WORD) ~= -1 then
rand = math.random(1,3)
if rand == 3 then
b:mem(0x46,FIELD_WORD,-1)
else
b:mem(0xE2,FIELD_WORD,color[rand])
end
end
end
end
function onLoad()
-- ....
Level.loadPlayerHitBoxes(5, 1, "link-1.ini")
Level.loadPlayerHitBoxes(5, 2, "link-2.ini")
Level.loadPlayerHitBoxes(5, 3, "link-3.ini")
Level.loadPlayerHitBoxes(5, 4, "link-4.ini")
Level.loadPlayerHitBoxes(5, 5, "link-5.ini")
Level.loadPlayerHitBoxes(5, 6, "link-6.ini")
Level.loadPlayerHitBoxes(5, 7, "link-7.ini")
-- ....
end
function onLoad()
if (player.powerup == PLAYER_SMALL) then
player.powerup = PLAYER_BIG;
end
end
function onEventDirect(eventObj, eventName)
if eventName == "The end" then
eventObj.cancelled = true
end
end
function onEventDirect(butt, calledEvent)
if (calledEvent == "Ignoritus1") then
Audio.playSFX("snd_vc_Ness_CliffCatch.wav");
end
if (calledEvent == "Ignoritus3") then
Audio.playSFX("snd_vc_Ness_Appeal01.wav");
end
if (calledEvent == "Fairy Talk 3") then
Audio.playSFX("snd_vc_Ness_DamageFly01.wav");
end
if (calledEvent == "Moving layer to dungeon") then
Audio.playSFX("snd_vc_Ness_DamageFly01.wav");
end
if (calledEvent == "Go to phase 3") then
Audio.playSFX("snd_se_common_hp_lastAttack.wav");
end
if (calledEvent == "Stop phase 3") then
Audio.playSFX("snd_se_common_hp_lastAttack.wav");
end
if (calledEvent == "Dark secret lava") then
Audio.playSFX("snd_vc_Ness_MissFoot02.wav");
end
if (calledEvent == "Death") then
Audio.playSFX("Dunked da Goose.ogg");
end
if (calledEvent == "Dark secret lava") then
Audio.MusicOpen("illuminati.ogg");
end
end
function onNPCKill (eventObj, killedNPC, killReason)
if killedNPC.id == (285) then
eventObj.cancelled = true
end
end
local starman = loadAPI("starman")
starman.koopaId = 177
function onLoad()
Defines.block_hit_link_rupeeID2 = 10
end
function onLoad()
Defines.block_hit_link_rupeeID1 = 10
end
function onLoad()
Defines.kill_drop_link_rupeeID2 = 10
end
function onLoad()
Defines.kill_drop_link_rupeeID1 = 10
end
function onLoad()
Defines.block_hit_link_rupeeID3 = 10
end
function onLoad()
Defines.kill_drop_link_rupeeID3 = 10
end
function onInputUpdate()
if(player.altJumpKeyPressing) then
player.altJumpKeyPressing = true;
end
if(player2)then
if(player2.altJumpKeyPressing) then
player2.altJumpKeyPressing = true;
end
end
end
--characters.lua
--v1.1.2
--Created by Horikawa Otane, 2015
local characters = {}
local playerCharacters = {}
playerCharacters[1] = "mario"
playerCharacters[2] = "luigi"
playerCharacters[3] = "peach"
playerCharacters[4] = "toad"
playerCharacters[5] = "link"
local intIds = {}
intIds["mario"] = 1
intIds["luigi"] = 2
intIds["peach"] = 3
intIds["toad"] = 4
intIds["link"] = 5
local playerCharacters = {"mario", "luigi", "peach", "toad", "link"}
local function resetCharacter(characterId, powerupId)
loadHitboxes(characterId, powerupId, Misc.resolveFile("character_defaults\\" .. playerCharacters[characterId] .. "-" .. tostring(powerupId) .. ".ini"))
end
local function loadAllHitBoxes()
for _, butts in pairs(playerCharacters) do
for i = 1, 7, 1 do
local theIniFile = Misc.resolveFile(butts .. "-" .. i .. ".ini")
if theIniFile ~= nil then
loadHitboxes(intIds[butts], i, theIniFile)
else
resetCharacter(intIds[butts], i)
end
end
end
end
function characters.onInitAPI()
loadAllHitBoxes()
end
local characters = loadSharedAPI("characters")
local colliders = loadSharedAPI("colliders")
local horikawaTools = loadSharedAPI("horikawaTools")
local pnpc = loadSharedAPI("pnpc")
local rng = loadSharedAPI("rng");
local vectr = loadSharedAPI("vectr")
local vision = loadSharedAPI("visioncone")
local snake = {}
local visioncones = {}
snake.visionSettings = {}
snake.EXCLAMATION = Graphics.loadImage(Misc.resolveFile("graphics\\new_characters\\snake\\" .. "exclaim.png"))
snake.HUD_CAMO = Graphics.loadImage(Misc.resolveFile("graphics\\new_characters\\snake\\" .. "camo.png"))
snake.HUD_POWER_ARMOUR = Graphics.loadImage(Misc.resolveFile("graphics\\new_characters\\snake\\" .. "power_armour.png"))
snake.HUD_POWER_C4 = Graphics.loadImage(Misc.resolveFile("graphics\\new_characters\\snake\\" .. "power_c4.png"))
snake.HUD_POWER_ATHLETIC = Graphics.loadImage(Misc.resolveFile("graphics\\new_characters\\snake\\" .. "power_athletic.png"))
snake.HUD_POWER_BOX = Graphics.loadImage(Misc.resolveFile("graphics\\new_characters\\snake\\" .. "power_box.png"))
snake.HUD_POWER_GRENADE = Graphics.loadImage(Misc.resolveFile("graphics\\new_characters\\snake\\" .. "power_grenade.png"))
snake.HUD_POWER_FREEZE = Graphics.loadImage(Misc.resolveFile("worlds\\Bald Toad's Peak\\" .. "pk_freeze.png"))
local exclamations = {}
local spawningsources = {}
snake.alertTimer = 0;
snake.alertCooldown = 600;
local c4;
local grenades = {};
local function contains(a,b)
if(type(a) == 'number') then return a == b; end
for _,v in ipairs(a) do
if(v == b) then
return true;
end
end
return false;
end
function onInitAPI()
registerEvent(snake, "onLoop", "onLoop", false)
registerEvent(snake, "onHUDDraw", "onHUDDraw", false)
registerEvent(snake, "onKeyDown", "onKeyDown", false)
registerEvent(snake, "onInputUpdate", "onInputUpdate", false)
registerEvent(snake, "onJump", "onJump", true)
registerEvent(snake, "onJumpEnd", "onJumpEnd", false)
if (player.isValid) then
end
end
if keycode == KEY_SPINJUMP and (player:mem(0xF0, FIELD_WORD) == 5) then
player:mem(0x50, FIELD_WORD, -1)
if player:mem(0x52, FIELD_WORD) > 7 then
player:mem(0x11C, FIELD_WORD, 9);
end
end
function onJump()
end
function onKeyDown(key)
if (player:mem(0xF0, FIELD_WORD) == 5) then
if(key == KEY_X and player:mem(0x114,FIELD_WORD) ~= 11 and player:mem(0x114,FIELD_WORD) ~= 10 and player:mem(0x40,FIELD_WORD)~= 3) then
if(player.powerup == PLAYER_FIREFLOWER) then
local yoffset = 0;
if(player:mem(0x12E,FIELD_WORD) == -1) then --player is crouching
yoffset = 8;
local n = pnpc.wrap(NPC.spawn(266,player.x+player.width/2,player.y+yoffset,player.section));
n.speedX = player:mem(0x106,FIELD_WORD)*7;
table.insert(grenades,n);
n.speedY = -2;
end
elseif(player.powerup == PLAYER_HAMMER) then
local yoffset = 0;
if(player:mem(0x12E,FIELD_WORD) == -1) then --player is crouching
yoffset = 8;
end
local n = pnpc.wrap(NPC.spawn(171,player.x+player.width/2,player.y+yoffset,player.section));
n.speedX = player:mem(0x106,FIELD_WORD)*7;
n.speedY = -2;
table.insert(grenades,n);
end
end
end
end
function onLoop()
Defines.player_link_shieldEnabled = false
Defines.player_link_fairyVineEnabled = false
player:mem(0x162, FIELD_WORD, 19)
player:mem(0x0E, FIELD_WORD, 1)
if player:mem(0x11C, FIELD_WORD) > 19 then
player:mem(0x11C, FIELD_WORD, 20);
end
if player.powerup ~= PLAYER_ICE then
player:mem(0x02, FIELD_WORD);
end
if player.powerup ~= PLAYER_LEAF and player:mem(0x11C, FIELD_WORD) > 29 then
player:mem(0x11C, FIELD_WORD, 30);
end
if player.powerup ~= PLAYER_LEAF and keycode == KEY_JUMP and player:mem(0x1A, FIELD_WORD) then
player:mem(0x18, FIELD_WORD);
player:mem(0x1C, FIELD_WORD, 4)
end
if player:mem(0x20, FIELD_FLOAT) > 8 then
player:mem(0x20, FIELD_FLOAT, 9);
end
for k,v in ipairs(NPC.get()) do
if(horikawaTools.npcList[v.id] and not v.friendly) then
local npc = pnpc.wrap(v);
if(visioncones[npc.uid] == nil) then
if (snake.visionSettings[npc.id] == nil) then
snake.visionSettings[npc.id] = {length = 256, angle = 30, height = 8};
end
if (snake.visionSettings[npc.id] ~= nil) then
visioncones[npc.uid] = {cone = vision.VisionCone(npc.x+ npc.width/2, npc.y+snake.visionSettings[npc.id].height, snake.visionSettings[npc.id].length * npc.direction * vectr.right2, snake.visionSettings[npc.id].angle), npc = npc};
end
end
end
end
end
function onHUDDraw()
if(player:mem(0xF0, FIELD_WORD) == 5) then
Graphics.drawImage(snake.HUD_CAMO, 748, 12);
local camo = tostring(math.ceil(1*(snake.alertCooldown-snake.alertTimer)/(snake.alertCooldown)));
Text.print(camo,1,782-#camo*18,36)
if(player:mem(0x16, FIELD_WORD) > 1 and player:mem(0x122, FIELD_WORD) ~= 1 and player:mem(0x122, FIELD_WORD) ~= 4) then
local power = {label = "", graphic = snake.HUD_POWER_ARMOUR}
if(player.powerup <= PLAYER_BIG) then
power.label = "";
power.graphic = snake.HUD_POWER_ARMOUR;
elseif(player.powerup == PLAYER_FIREFLOWER) then
power.label = "PK FIRE";
power.graphic = snake.HUD_POWER_C4;
elseif(player.powerup == PLAYER_LEAF) then
power.label = "LIGHT FEATHER";
power.graphic = snake.HUD_POWER_ATHLETIC;
elseif(player.powerup == PLAYER_TANOOKIE) then
power.label = "FLYING NW";
power.graphic = snake.HUD_POWER_BOX;
elseif(player.powerup == PLAYER_HAMMER) then
power.label = "ARCHERY";
power.graphic = snake.HUD_POWER_GRENADE;
elseif(player.powerup == PLAYER_ICE) then
power.label = "PK FREEZE";
power.graphic = snake.HUD_POWER_FREEZE;
end
Graphics.drawImage(power.graphic, 16, 16);
Text.print(power.label,12,12);
end
end
end
|
|
|
|
|
|
|
|
|
-
Ness-Wednesday
- Purple Yoshi Egg

- Posts: 1544
- Joined: Sun Jun 28, 2015 3:50 pm
- Flair: Diverse Scouts
- Pronouns: He/Him
Postby Ness-Wednesday » Mon Feb 15, 2016 9:53 am
So, this topic's been dead for at least 3 weeks or so, but I wonder if I can do modify Peach with the following ideas on the first post.
Also, can I make it possible for Peach move while in statue form?
|
|
|
|
|
|
|
|
|
-
yoshiegg
- Hoopster

- Posts: 122
- Joined: Mon Jan 25, 2016 9:20 am
Postby yoshiegg » Sun Feb 28, 2016 7:26 am
How do I realize a wall Jump only for a certain player and/or state ( e.g. walljump enabled only for mario-2 (big Mario))?
How do I get a LunaLua compatible version ( please direct download link)?
edit:have 2.0 beta now
|
|
|
|
|
Return to “Help and Support”
Users browsing this forum: No registered users and 1 guest
|