Author Topic: Danmakufu Q&A/Problem Thread  (Read 172165 times)

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: Danmakufu Q&A/Problem Thread
« Reply #300 on: July 14, 2009, 08:41:06 PM »
Actually keep it as ShotDataA as ShotDataA allows more control such as first making it move slowly then faster. If you modify the 0.05 you can increase the acceleration.

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: Danmakufu Q&A/Problem Thread
« Reply #301 on: July 15, 2009, 09:24:12 AM »
Hmmm reading the Intermediate tutorial about Events and stages did succeeded in making a dialogue and a stage but I somehow cannot seem to end the dialogue aswell as making the boss spawn after the dialogue. Right now as it is in my script it spawns directly during the dialogue.


Edit: NVM, Forum effect detected! I was writing getEventStep with a lower g instead of capital G =.=
« Last Edit: July 15, 2009, 10:10:22 AM by Helepolis »

Re: Danmakufu Q&A/Problem Thread
« Reply #302 on: July 15, 2009, 03:28:56 PM »
if(OnEvent==true){yield;}

Might be a bit easier than using GetEventStep....

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: Danmakufu Q&A/Problem Thread
« Reply #303 on: July 15, 2009, 03:50:54 PM »
I do have one question. What is the general reason for danmakufu (a plurar script) to slowdown after like 2 non-spells and 2 spellcards and eventually receiving critical error and it shuts down. As currently I am having it and before I didn't except I cannot remember what exactly I have added or not so what are things to watch out for?

Drake

  • *
Re: Danmakufu Q&A/Problem Thread
« Reply #304 on: July 15, 2009, 07:18:22 PM »
If you don't delete any data on Finalize, it could build up. Or maybe objects don't entirely dissapear, or something of the sort. Something is lingering in your script.

A Colorful Calculating Creative and Cuddly Crafty Callipygous Clever Commander
- original art by Aiけん | ウサホリ -

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: Danmakufu Q&A/Problem Thread
« Reply #305 on: July 15, 2009, 07:46:30 PM »
Stuffman discovered the error on IRC. It was inside my stage script afterall.

?20:57:12? <Stuffman> Okay! I think I fixed it Helepolis
?20:57:46? <Stuffman> First, move BeginShowDown from @MainLoop to the end of @Initialize
?20:58:47? <Stuffman> Then go to BeginShowDown and put a loop(60){yield;} before CreateEnemyBossFromFile, you need to do this because if you try to load the boss too fast it fails
?20:58:58? <Helepolis> rgr
?21:04:49? <Stuffman> Yeah see what was happening was, in your stage it was calling BeginShowDown every loop, so over the course of the fight it builds up a million of those tasks
?21:04:53? <Stuffman> And it causes slowdown
?21:05:00? <Helepolis> That is perhaps also why the next Afro spawned
?21:05:07? <Helepolis> it was waiting for the enemyzero probably
?21:05:12? <Stuffman> Yeah
?21:03:56? <Helepolis> Awesome Stuffman.
?21:04:08? <Helepolis> Thanks ( '_' )=b
?21:04:11? <Stuffman> That fixed it for you too right?
?21:04:16? <Helepolis> Like a charm.

So there you see that somehow the most annoying things are caused by the most simple. =S
Thanks all though who helped.

Drake

  • *
Re: Danmakufu Q&A/Problem Thread
« Reply #306 on: July 15, 2009, 07:51:15 PM »
Oh god lol.

I had a similar thing with enemy targeting for Reimu. It kept spawning targeting objects every frame for every enemy, and it slowed down really, really fast.

A Colorful Calculating Creative and Cuddly Crafty Callipygous Clever Commander
- original art by Aiけん | ウサホリ -

Henry

  • The observer
  • Exploring to the new world of Danmaku
Problems concerning subroutines, functions and tasks
« Reply #307 on: July 16, 2009, 12:14:55 PM »
It may be a little bit silly to ask:

If I what to simplify statements using subroutine, for example:
(only MainLoop is shown for convenience)
Code: [Select]
@MainLoop {
        SetCollisionA(GetX, GetY, 32);
        SetCollisionB(GetX, GetY, 16);

        if(frame%10==0&&frame>0) {
            CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 30, RED02, 0);
            CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 20, RED02, 0);
            CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 10, RED02, 0);
            CreateShot01(GetX, GetY, 3, GetAngleToPlayer, RED02, 0);
            CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 10, RED02, 0);
            CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 20, RED02, 0);
            CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 30, RED02, 0);
        }
        frame++;
}

then I attempted to use the following statements:
Code: [Select]
#TouhouDanmakufu
#Title[... "..."]
#Text[Test script for subroutine]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
    let ImgBoss = "script\img\ExRumia.png";

    let frame = -120;
    @Initialize {
       SetLife(3000);
       SetTimer(120);
       SetScore(1000000);
       SetDurableSpellCard();
       SetDamageRate(50,0);
       SetMovePosition02(GetCenterX, GetClipMinY+120, 120);
       SetInvincibility(120);
       Concentration01(120);
       PlaySE(GetCurrentScriptDirectory~"SFX\Charge.wav");
       CutIn(YOUMU, "... "\""..."\", "", 0, 0, 0, 0);
       LoadGraphic(ImgBoss);
       SetTexture(ImgBoss);
       SetGraphicRect(0, 0, 64, 64);
    }

    @MainLoop {
        SetCollisionA(GetX, GetY, 32);
        SetCollisionB(GetX, GetY, 16);

        if(frame%10==0&&frame>0) {
            firebullets;
        }
        frame++;
    }

    @DrawLoop {
        DrawGraphic(GetX, GetY);
    }

    @Finalize {
        DeleteGraphic(ImgBoss);
    }
}
sub firebullets{
   CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 30, RED02, 0);
   CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 20, RED02, 0);
   CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 10, RED02, 0);
   CreateShot01(GetX, GetY, 3, GetAngleToPlayer, RED02, 0);
   CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 10, RED02, 0);
   CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 20, RED02, 0);
   CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 30, RED02, 0);
}
However, this is unsuccessful. I would like to ask that if we want to use subroutine/function/task, where should I put the sub{}/function(){}/task() block?
Also, when is the statement "yield;" used?

P.S. If I have some statements (such as background setting in a stage) to use, can I put the statements in a function in a new file, then I call them in the files I would like to apply to?
« Last Edit: July 16, 2009, 01:14:33 PM by Henry »
Old/Forgotten member.

Old Patchouli Project was outdated but new one is in progress.

Kylesky

  • *The Unknown*
  • Local Unbalanced Danmakufu Idiot Scripter
    • My useless youtube account... (will be useful in the future *I promise*)
Re: Danmakufu Q&A/Problem Thread
« Reply #308 on: July 16, 2009, 01:42:49 PM »
The sub/function/task should be before the last bracket "}" which is after @finalize but before you end the script which is what the last "}" does, or before the @initialize... "yield;" is used for tasks...
Danmakufu Script Thread :V Latest Script: Intertwining Mechanical Intervention (temp name)

Yooooouuutuuuubeeee Channel Latest Video: Contest #8 Entry

Henry

  • The observer
  • Exploring to the new world of Danmaku
Re: Danmakufu Q&A/Problem Thread
« Reply #309 on: July 16, 2009, 02:37:30 PM »
thanks a lot. However, I also see that we can use #include_function, should it be put after @finalize or before the @initialize?
Old/Forgotten member.

Old Patchouli Project was outdated but new one is in progress.

Kylesky

  • *The Unknown*
  • Local Unbalanced Danmakufu Idiot Scripter
    • My useless youtube account... (will be useful in the future *I promise*)
Re: Danmakufu Q&A/Problem Thread
« Reply #310 on: July 17, 2009, 01:24:34 AM »
I think it should be before the "script_enemy_main" part where you put the:
#TouhouDanmakufu
#Title[...]
#Text[...]
#Image[...]
#ScriptVersion[2]

that's where I've seen people placing it... but I'm not sure since I've never used that...
Danmakufu Script Thread :V Latest Script: Intertwining Mechanical Intervention (temp name)

Yooooouuutuuuubeeee Channel Latest Video: Contest #8 Entry

Re: Danmakufu Q&A/Problem Thread
« Reply #311 on: July 17, 2009, 01:35:00 AM »
Before @Initialize is where I usually put anything outside of @Loops (tasks, #includes, global variables) but it doesn't actually matter. Whenever you want it to be seen, included, or delcared. The reason why i put it before everything is so you can see the things I'm going to be using before you actually dive into the script, instead of "wtf is this parameter I haven't seen this".

Chronojet ⚙ Dragon

  • The Oddity
  • 今コソ輝ケ、我ガ未来、ソノ可能性!!
Re: Danmakufu Q&A/Problem Thread
« Reply #312 on: July 17, 2009, 01:55:39 AM »
One very pointless thing:
How do you make it so that Danmakufu will let a boss drop a power item things? As in, one of those blocks with the "P" on them?

Drake

  • *
Re: Danmakufu Q&A/Problem Thread
« Reply #313 on: July 17, 2009, 02:09:09 AM »
There aren't any measurements of Power in Danmakufu, so if you're aiming to make a player with different capabilities at different levels, you're going to have to make custom objects.

A Colorful Calculating Creative and Cuddly Crafty Callipygous Clever Commander
- original art by Aiけん | ウサホリ -

Henry

  • The observer
  • Exploring to the new world of Danmaku
Re: Danmakufu Q&A/Problem Thread
« Reply #314 on: July 17, 2009, 04:08:49 AM »
Code: [Select]
#TouhouDanmakufu
#Title[... "..."]
#Text[Test script for tasks]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
    let ImgBoss = "script\img\ExRumia.png";
    let frame = -120;
    @Initialize {
       SetLife(3000);
       SetTimer(120);
       SetScore(1000000);
       SetDurableSpellCard();
       SetDamageRate(50,0);
       SetMovePosition02(GetCenterX, GetClipMinY+120, 120);
       SetInvincibility(120);
       Concentration01(120);
       PlaySE(GetCurrentScriptDirectory~"SFX\Charge.wav");
       CutIn(YOUMU, "... "\""..."\", "", 0, 0, 0, 0);
       LoadGraphic(ImgBoss);
       SetTexture(ImgBoss);
       SetGraphicRect(0, 0, 64, 64);
       LoadUserShotData(GetCurrentScriptDirectory~"images\shot_All.txt");
    }

    @MainLoop {
        SetCollisionA(GetX, GetY, 32);
        SetCollisionB(GetX, GetY, 16);

        if(frame%10==0&&frame>0) {
            yield;
        }
        frame++;
    }

    @DrawLoop {
        DrawGraphic(GetX, GetY);
    }

    @Finalize {
        DeleteGraphic(ImgBoss);
    }
    task fireshot3{
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 30, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 20, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 10, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 10, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 20, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 30, RED02, 0);
       yield;
    }
}
Why these statements don't work?
Old/Forgotten member.

Old Patchouli Project was outdated but new one is in progress.

Stuffman

  • *
  • We're having a ball!
Re: Danmakufu Q&A/Problem Thread
« Reply #315 on: July 17, 2009, 04:14:41 AM »
You need to actually call fireshot3. You've declared it but you aren't using it anywhere.

Add fireshot3(); to your @MainLoop, just above the yield.

Thaws

  • _m廿廿m_
Re: Danmakufu Q&A/Problem Thread
« Reply #316 on: July 17, 2009, 04:57:21 AM »
Code: [Select]
#TouhouDanmakufu
#Title[... "..."]
#Text[Test script for tasks]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
    let ImgBoss = "script\img\ExRumia.png";
    let frame = -120;
    @Initialize {
       SetLife(3000);
       SetTimer(120);
       SetScore(1000000);
       SetDurableSpellCard();
       SetDamageRate(50,0);
       SetMovePosition02(GetCenterX, GetClipMinY+120, 120);
       SetInvincibility(120);
       Concentration01(120);
       PlaySE(GetCurrentScriptDirectory~"SFX\Charge.wav");
       CutIn(YOUMU, "... "\""..."\", "", 0, 0, 0, 0);
       LoadGraphic(ImgBoss);
       SetTexture(ImgBoss);
       SetGraphicRect(0, 0, 64, 64);
       LoadUserShotData(GetCurrentScriptDirectory~"images\shot_All.txt");
    }

    @MainLoop {
        SetCollisionA(GetX, GetY, 32);
        SetCollisionB(GetX, GetY, 16);

        if(frame%10==0&&frame>0) {
            yield;
        }
        frame++;
    }

    @DrawLoop {
        DrawGraphic(GetX, GetY);
    }

    @Finalize {
        DeleteGraphic(ImgBoss);
    }
    task fireshot3{
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 30, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 20, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer - 10, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 10, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 20, RED02, 0);
       CreateShot01(GetX, GetY, 3, GetAngleToPlayer + 30, RED02, 0);
       yield;
    }
}
Why these statements don't work?

By the way, the yield command at the end of the task here and at the MainLoop is unnecessary actually, the yield is only needed when you want to pause the task for a moment (such as create a bunch of bullets that appear one by one not simultaneously) or "cut off" a loop so that Danmakufu will process stuff in the MainLoop as well (and to prevent a never ending loop in certain situations).

Just letting you know...so you don't think yield; as something that's just someting you just include in your task because the guide says so or whatever...

Sorry if you already know about these though... if so, then just ignore this post. :P

Henry

  • The observer
  • Exploring to the new world of Danmaku
Re: Danmakufu Q&A/Problem Thread
« Reply #317 on: July 17, 2009, 05:57:43 AM »
nevermind.

I REALLY think yield; is some most-powerful statements in the script because I see SO many scripts containing it. lol

Thanks a lot :)

P.S. Is there a time limit for the background music used?
I have 2 version of a music.
1 is 2.93MB (6:24 length)
Another is 4.16 MB (4:32 length)
I can use the 4:32 version but not the 6:24 version, why?

P.S. the 6:24 version is MONO, can DMF play mono music?
« Last Edit: July 17, 2009, 03:17:23 PM by Henry »
Old/Forgotten member.

Old Patchouli Project was outdated but new one is in progress.

Stuffman

  • *
  • We're having a ball!
Re: Danmakufu Q&A/Problem Thread
« Reply #318 on: July 17, 2009, 05:04:09 PM »
What filetype are they? I had a lot of trouble getting OGGs to work in Danmakufu.

Danmakufu has very buggy sound code, I can't get any of the commands that are supposed to stop the music to work for some reason.

Re: Danmakufu Q&A/Problem Thread
« Reply #319 on: July 17, 2009, 08:42:20 PM »
I can use the 4:32 version but not the 6:24 version, why?

Filetypes, variable bitrates, Danmakufu being a bitch.... Any of the above really. Try converting it to .wav (will be a massive file), it should play then. .mp3 usually works as well, so throw it through a few music converters and see if it works then.

Danmakufu has very buggy sound code, I can't get any of the commands that are supposed to stop the music to work for some reason.

DeleteMusic(music);

I don't dick around with any of this StopSE bullshit or anything, I just get rid of the damn file to stop it from playing. Works like a charm for me.

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: Danmakufu Q&A/Problem Thread
« Reply #320 on: July 18, 2009, 11:33:00 AM »
Question regarding the bouncing object asers on wiki.

The lasers dissapear upon impact so I added a line which OnTheNet suggested me: SetShotAutoDeleteClip(GetClipMinX,GetClipMinY,GetClipMaxX,GetClipMaxY);

However the right side of the gamefield works like a charm. The lasers no longer instant dissapear but go "inside" the wall as if they are being reflected. However the left side of the game field is not looking beautiful as the lasers instant dissapear. I even tried to add a negative value in the Left / Top bound but no results.

Thaws

  • _m廿廿m_
Re: Danmakufu Q&A/Problem Thread
« Reply #321 on: July 18, 2009, 11:46:08 AM »
Question regarding the bouncing object asers on wiki.

The lasers dissapear upon impact so I added a line which OnTheNet suggested me: SetShotAutoDeleteClip(GetClipMinX,GetClipMinY,GetClipMaxX,GetClipMaxY);

However the right side of the gamefield works like a charm. The lasers no longer instant dissapear but go "inside" the wall as if they are being reflected. However the left side of the game field is not looking beautiful as the lasers instant dissapear. I even tried to add a negative value in the Left / Top bound but no results.

Try something like
SetShotAutoDeleteClip(100, 100, 100, 100);
or larger.
It seems that this function's parameters actually means that the bullet deletion border on the respective sides will be *inserted number* away from the edge of the game field.

This is why the right side works, because the border for detection of deleting bullets is now 448 (value of GetClipMaxX) away from the right edge of the game field.

It got me so confused when I tried to use it for the first time too. >_>
« Last Edit: July 18, 2009, 11:48:42 AM by Thaws »

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: Danmakufu Q&A/Problem Thread
« Reply #322 on: July 18, 2009, 02:55:32 PM »
Ah, 100,100,100,100 was not enough but adding 300 solved the problem. Now the lasers don't dissapear but flow into the wall. Now it looks much more beautiful ^^ .

Nimono

  • wat
Re: Danmakufu Q&A/Problem Thread
« Reply #323 on: July 18, 2009, 09:41:25 PM »
Hey, does anyone know how to make a boss enemy stay on-screen after it's defeated, then leave the screen afterwards? I'd like to have this be done to a familiar enemy in one of my spellcards that isn't spawned by the boss, but instead just comes onto the screen like the boss itself does, then, after the spellcard is defeated, said enemy doesn't blow up, but instead just leaves the screen, like CtC somehow did. I'd look in CtC's scripts for an answer, but last time I did, I found a whole bunch of calls to other files, barely even finding what I wanted... I don't think it's worth it.

Re: Danmakufu Q&A/Problem Thread
« Reply #324 on: July 19, 2009, 01:36:04 AM »
Stage file. ->
Spawning enemies and such. ->
Spawn your midboss plural file. ->
On the last script of your plural file, at the very end (When GetEnemyLife<=0), set two sets of common data: the boss's last x and y position. ->
The same frame the plural file ends, spawn an enemy with the same graphic as the midboss on the common data coordinates you saved. Have the enemy's script only have SetMovePosition or something in it so that it moves off screen and kills itself without having that big-assed explosion effect you always see.

Thats what I can think of that will work relatively well. The other way I thought of was to have the rest of the stage programmed into the last file of the plural script, like this:

Plural file script: the last script in it only has the boss move offscreen, then the script proceeds into a task that plays out like a stage; Spawning enemies and whatnot. The only problem I can think of is that homing character scripts might still try to target the offscreen boss, or you might have a problem getting rid of the healthbar (I don't know the function offhand).

Infy♫

  • Demonic★Moe
  • *
Re: Danmakufu Q&A/Problem Thread
« Reply #325 on: July 19, 2009, 02:13:20 PM »
hello, i have a question :/
i want to create a c4 bomb attack for the playable character Rumia so i needed a button to use and GetKeyState says there's an user-defined key available... how can I define this user-defined key?

Cabblecorento

  • I'm a cat!
  • MEOW.
Re: Danmakufu Q&A/Problem Thread
« Reply #326 on: July 19, 2009, 04:59:45 PM »
For some reason when I try to load my danmakufu script, it has an error. I'm just trying to get the enemy to show.  :V

Code: [Select]
#TouhouDanmakufu
#Title[Queen's Demise "De-Coronation"]
#Text[De-Coronation]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main {
let imgExRumia=GetCurrentScriptDirectory~"img\ExRumia.png";
let imgExRumiaBack=GetCurrentScriptDirectory~"img\ExRumiaBack.png";
    @Initialize {
SetMovePosition02(cx,60,60);
SetGraphicRect(1,1,64,64);
        LoadGraphic(imgExRumia);
LoadGraphic(imgExRumiaBack);
        SetLife(100);
        SetDamageRate(10, 10);
        SetTimer(50);
        SetInvincibility(5);
        CutIn(YOUMU, Queen's Demise "De-Coronation", imgExRumiaBack, 0, 0, 200, 600);
        SetScore(500000);
        SetEnemyMarker(true);
        SetDurableSpellCard;
        MagicCircle(false);
        SetEffectForZeroLife(180, 100, 1);
    }

    @MainLoop {
        SetCollisionA(GetX, GetY, 32);
        SetCollisionB(GetX, GetY, 24);
        if(frame==60){
            CreateShot01(GetX, GetY, 3, GetAngleToPlayer, RED01, 10);
            frame = 0;
        }
        frame++;
    }

    @DrawLoop {
SetAlpha(255);
SetTexture(imgExRumia);
DrawGraphic(GetX(),GetY());
       
    }

    @Finalize {
    }
}

Any help? I'm using the default rumia texture.

Stuffman

  • *
  • We're having a ball!
Re: Danmakufu Q&A/Problem Thread
« Reply #327 on: July 19, 2009, 05:33:55 PM »
The problem is in your cutin. Whenever you're putting in text for a function it needs to be in quotes. So instead of
CutIn(YOUMU, Queen's Demise "De-Coronation", imgExRumiaBack, 0, 0, 200, 600);
it should be
CutIn(YOUMU, "Queen's Demise [De-Coronation]", imgExRumiaBack, 0, 0, 200, 600);
It's giving you an error because the whole thing wasn't specified as a string, and it doesn't know what a "Queen's Demise" is.

Also, you need to declare cx and frame.

Quote
i want to create a c4 bomb attack for the playable character Rumia so i needed a button to use and GetKeyState says there's an user-defined key available... how can I define this user-defined key?
The user-defined key is just a miscellaneous key; it's like the shot key or the bomb key, except it doesn't do anything normally. It's just there if a programmer wants to use it. It's set to whatever the player sets it to in their config, I forget what key it is by default. The code for it for GetKeyState is VK_USER.
« Last Edit: July 19, 2009, 05:41:26 PM by Stuffman »

Cabblecorento

  • I'm a cat!
  • MEOW.
Re: Danmakufu Q&A/Problem Thread
« Reply #328 on: July 19, 2009, 05:41:54 PM »
Thanks! With a few other bug fixes it worked.

Also, this isn't a needed question, but I'm not really getting how people do the Particle of Wave and Particle spellcard because of all the crossing back.

Also, what are the dimensions of the visible field?
« Last Edit: July 19, 2009, 05:43:31 PM by Cablecorento »

Nimono

  • wat
Re: Danmakufu Q&A/Problem Thread
« Reply #329 on: July 19, 2009, 06:18:34 PM »
hello, i have a question :/
i want to create a c4 bomb attack for the playable character Rumia so i needed a button to use and GetKeyState says there's an user-defined key available... how can I define this user-defined key?
As Stuffman said, it's in the config, and it's defaulted to the C key, for future reference. (Just be careful when using it, though, as I have a habit of accidentally Bombing when I mean to hit C...)