Author Topic: ※ Danmakufu Q&A/Problem thread 3 ※  (Read 468546 times)

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #480 on: January 26, 2017, 08:37:45 PM »
As my game revolves around some duo patterns (like Kogasa and Nue) or even an object and boss, I've made this sluggish code:

Code: [Select]
// Test damage for dual partners obj = main boss obj2 = partner.
task shareLifeHandler(obj, obj2) {
// get the HP of the main and store it in var
let mainBossHP = ObjEnemy_GetInfo(obj, INFO_LIFE);

// Set the HP for the partner.
ObjEnemy_SetLife(obj2, mainBossHP);

while(!Obj_IsDeleted(obj)) {
// Only update the HP of the boss if it actually gets hit. This is to prevent the HP from snapping to the main value.
if(ObjEnemy_GetInfo(obj2,INFO_SHOT_HIT_COUNT) > 0) {
    ObjEnemy_SetLife(obj, ObjEnemy_GetInfo(obj2, INFO_LIFE));
               }

// update the HP of the partner continously from the main (shared HP)
ObjEnemy_SetLife(obj2, ObjEnemy_GetInfo(obj, INFO_LIFE));
yield;
}
}

You can probably fit in damage rates functions ObjEnemy_SetDamageRate(obj, valueshots, valuespells); and ObjEnemy_GetInfo(obj, INFO_DAMAGE_RATE_SHOT); and ObjEnemy_GetInfo(obj, INFO_DAMAGE_RATE_SPELL); here to achieve desired effect.

The shareLifeHandler(obj,obj2); I call inside the slave/partner/whatever initialization. Make sure the boss is spawned before.

Btw, If you want to create a shield like effect (i.e.: must kill all familiars before you can damage the boss). Why don't you just spawn a counter or array. Loop a listener that sets damage rate to 0,0 as long as the count of familiars is greater than 0 or the familiar objects are inside the array. And if the boss replenishes familiars, you could add them into the array or count up the variable and voila: boss is immune again.

There are dozens of way to approach it, but I think you're all over-thinking it a bit too much. That is mostly because of the extremely specific wishes, is my guess. The above examples are most straight forward.

Edit:
Forgot to mention: if you want to work with flat rates then you'll need to do overly complicated calculations based on damage done to the familiars then calculated towards the boss. The shareLifeHandler can contain the complex logic if you're persistent to make it work. But as Drake said, it is a bit silly design as the goal remains unclear.
« Last Edit: January 26, 2017, 09:10:50 PM by Helepolis »

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #481 on: January 27, 2017, 06:17:04 AM »
Can someone help me here and tell me if I'm screwing up horribly or if this script is busted, cause I can't figure out what's going on here.

So I downloaded this old danmakufu script which is supposed to be a Phantasm Stage of Great Fairy Wars, however I can't seem to get it to run properly.

http://www.mediafire.com/file/rgzb674h8g58agn/%E5%A4%A7%E6%88%A6%E4%BA%89Ph.zip

That is the only version I can find, however it's not quite like the version that was played in the video where I got the download from.

http://www.nicovideo.jp/watch/sm13890048

The game itself skips over the stage portions, the boss fights are notably more difficult, and Cirno's ice mechanics feel much weaker than how the guy's doing it in the video. Can someone who knows danmakufu tell me if I'm doing something wrong when trying to play it or if the script is broken in some way (considering I had to found the download via Internet Archive of the video, the later wouldn't surprise me)

Drake

  • *
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #482 on: January 27, 2017, 11:37:09 AM »
The readme says it's different. The stage portion was removed and it was generally made more difficult. There are also two Cirno players, one of which is slightly more strict, so make sure you play the チルノさん one (although they're both terribly unwieldy to use, as described below).

After playing it, the stuff shown in the video doesn't even compare. It's very clearly an order of difficulty harder. The creator probably suffers from make-it-harder-itis. The ice mechanics were likely tested mostly on the previous difficulty, as the recharge is not enough at all for the patterns it throws at you. Considering how fast you accumulate charge for shooting versus how much for grazing, you might even get more charge from the easier versions of the patterns precisely because you need it less. And either way the pattern design sucks for making use of the ice mechanic because the bullets are always so fast and far apart, which makes the freezes sparse and grazing for charge impossible. Finally you don't recharge from freezing bullets which eliminates one of the fundamentals of FW ice mechanics, sending you back to 0% regardless of how many bullets you cancel. If you play FW right now you will notice how you will basically never be left stuck at 0% unless you mess up a freeze. In the real game, the cooldown period is mostly the time it takes to hold the button, whereas here it's the time it takes to charge to the 30% minimum and then also holding the button, which leaves you super vulnerable.
« Last Edit: January 27, 2017, 11:39:09 AM by Drake »

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

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #483 on: January 27, 2017, 05:58:03 PM »
Ah, darn. That's what I was afraid of but I figured I'd ask anyways to make sure. It's a damn shame too, the script in the video looked challenging to play, but this script itself just easily crossed over the line into just being unfun.

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #484 on: February 03, 2017, 09:19:40 PM »
I am failing with loops/ascents to perform the following case:
- Assume I have a stage with 5, 13 and 24 spell cards
> For example for the one with 13 cards, I wish to put the first cards 10 into a 2D array
> Then I wish to put the remaining 3 into the same array, but next element position

So the desired result in my mind is this:
Code: [Select]
array = [
    [card1, card2, ..., card10],
    [card11, card12, card13]
];

However, when there are less than 10 cards. I just wish to perform this loop once so the array contains only one element. Also, If there are 24 cards. Then I need to cycle 2x filling up 10 cards but each inner array may only contain 10 cards.

I know how to concatenate into 2D arrays thanks to Drake, though I fail to put it all together into a loop/ascent. I am guessing I need a loop inside a loop.

Finally, the reason for this all is my wish to implement it for my Spell Practice screen. So I can jump a 'pageNumber' to cycle through the elements in the 2D array and using 'cardNumber' I can cycle through the cards in the highlighted element. Basically a revolving/wrapping list of spell cards.

Here is something I tried but got stuck. Note: This code doesn't work.
Code: [Select]
let cardsInPageArray = [];
totalPages = 0;
let index = 1;
let temporaryArray = [];
ascent(i in 0..totalPages) {
    ascent(j in 0..numberOfCards) {
        let setText = "Spell Card " ~ IntToString(index);
        let textObject = writeGraphicalText(160, 100 + (j*22), 255, 17, [255,255,255], [255,255,255], [42,99,122], 512, setText);
        temporaryArray = temporaryArray ~ [textObject];
        index++;
    }
    cardsInPageArray = cardsInPageArray ~ [temporaryArray];
}

writeGraphicalText is a function that spawns a Text Object. Later on using the arrow keys, the highlighted text object will lit up (animation for selecting cards)
« Last Edit: February 03, 2017, 09:24:38 PM by Helepolis »

Drake

  • *
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #485 on: February 04, 2017, 12:03:05 AM »
So if you want the interface like this

Code: [Select]
Stage 1
└ Page 1
  └ Card 1, [...], Card 5
Stage 2
├ Page 1
│ └ Card 1, [...], Card 10
└ Page 2
  └ Card 11, Card 12, Card 13
Stage 3
├ Page 1
│ └ Card 1, [...], Card 10
├ Page 2
│ └ Card 11, [...], Card 20
└ Page 3
  └ Card 21, [...], Card 24

where you're like pressing left/right or something to scroll pages, I think the easiest way to handle it is to not put them into separate subarrays at all but instead to display the cards from cards[page*10 + 0] to cards[page*10 + 9] and then selecting is cards[page*10 + index].

I think it's also worth looking into how the newer games' Spell Practice UI works (stage -> cards -> difficulty) rather than IN's (stage -> all cards). Splitting it up even more finely into difficulties rather than listing them all is probably better imo. It does make the menu code have more "levels" but makes each section simpler, I guess? You don't have to deal with the page thing at least.
« Last Edit: February 04, 2017, 12:06:18 AM by Drake »

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

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #486 on: February 04, 2017, 07:40:11 AM »
Yes that is exactly my desire.

And I was already using DDC's Spell Card Practice menu layout. Currently using Stage -> Card -> Difficulty.


Spacechurro

  • FiteMe;
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #487 on: February 06, 2017, 12:13:40 AM »
I'm kinda new to danmakufu, and after finding PH3 currently too complicated, for someone who is new to coding too, decided to use 0.12m instead, which is easier. But in PH3 I could use "#includes", but it doesn't seem to work in 0.12m, but I suspect i'm just using it wrong. This is the code to show whether or not i'm typing it correctly?

Code: [Select]
#include"script/TestNiko/Scripts/Res.txt"
task FiteMe{
    loop{
          let m = atan2(MyFistY-YourFaceY,MyFistX-YourFaceX);
          Punch01(GetMyX,GetMyY,100,m,REDFIST01,0);
          wait(1);  }     }

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #488 on: February 06, 2017, 05:26:55 AM »
0.12m exclusively requires backslashes for pathnames if I am not failing with my memory. (been such a long time)

Drake

  • *
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #489 on: February 06, 2017, 07:08:40 AM »
Besides that, it's #include_function to be used when inside a script_enemy_main (most cases) and #include_script when you're including a script itself.

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

Spacechurro

  • FiteMe;
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #490 on: February 06, 2017, 07:58:46 PM »
Thank you so much! I'm glad I found this thread!
task FiteMe{
    loop{
          let m = atan2(MyFistY-YourFaceY,MyFistX-YourFaceX);
          Punch01(GetMyX,GetMyY,100,m,REDFIST01,0);
          wait(1);  }     }

Spacechurro

  • FiteMe;
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #491 on: February 09, 2017, 03:01:20 AM »
I apologize for asking another question again, but I am trying to see if I can make a function/task/if statement play a sound affect for each second after the timer gets to "10", much like in Touhou.
The SE plays in any other task, but it won't play at the 10 second mark. I even load it in the if, outside the if in the task, and even outside the task itself, but it refuses to play. Is the if I'm using not working? I don't know, but that's the only function that calls the timer's value (from the danmakufu wiki). Plus, this seems like a pretty trivial problem, but I think it would help me with a lot of other things, too, if I knew it.

Here is an example of the task, assume I have given the location a variable (To), is loaded, and the location is correct, as I have checked in other tasks, AND I call it in Initialize.

Code: [Select]
task timer{
if(GetTimer == 10){
PlaySE(To);
wait(60);
}
if(GetTimer == 0){
StopSE(To);
}
}
task FiteMe{
    loop{
          let m = atan2(MyFistY-YourFaceY,MyFistX-YourFaceX);
          Punch01(GetMyX,GetMyY,100,m,REDFIST01,0);
          wait(1);  }     }

Drake

  • *
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #492 on: February 09, 2017, 05:15:28 AM »
Your task structure won't work as intended. It just launches, checks the if statements once, then immediately ends. There's no behaviour to make it keep running and actively check things.

Code: [Select]
task timer(){
loop{
if(GetTimer < 10){
PlaySE(To);
}
wait(60);
}
}

This will wait one second every time it checks, and if it's less than 10 seconds left it'll play the sound (so it will play 10 times). Note the loop there so it doesn't just end.
« Last Edit: February 09, 2017, 05:17:03 AM by Drake »

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

Spacechurro

  • FiteMe;
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #493 on: February 10, 2017, 12:45:11 AM »
Thank you, I would like to know which part of that code keeps it checking? is it the "()" in the name?

Also! I really hate to ask so many questions, but my stage script can't seem to interpret my event script. And I basically copied the wiki tutorial for the event "danmakufu intermediate tutorial"
Code: [Select]

task stage{
Wait(120);
CreateEventFromScript(GetCurrentScriptDirectory ~ "Evnt1.txt");
CreateEnemyBossFromFile(GetCurrentScriptDirectory~"Plural.txt", 0, 0, 0, 0, 0);
Wait(60);
Clear;
}

The error says that it's an "unregistered enemy script", I looked at Sparen's error list, but it's pretty vague, and I don't want the script to only switch to the next when the timer runs out, or the enemy is killed by putting it into a "Script_Enemy_Main" script. I'm not sure what else to do about it. I feel like i'm just confused about what the wiki means in the function's parameters by "Path then string" I understand path, but what is the string? I think I might be missing that.

I apologize again for asking so many questions, I'm a baby brain, you see.
« Last Edit: February 10, 2017, 05:35:20 AM by Spacechurro »
task FiteMe{
    loop{
          let m = atan2(MyFistY-YourFaceY,MyFistX-YourFaceX);
          Punch01(GetMyX,GetMyY,100,m,REDFIST01,0);
          wait(1);  }     }

Drake

  • *
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #494 on: February 10, 2017, 09:57:00 AM »
No, it's the loop. The empty parentheses aren't necessary.

Calling a task launches a separate block of execution. It runs through the code in the task as normal, and when the task finishes, the script's execution will resume from where you called the task.
If you put a yield in the task, it will instead run through the code until the yield, pause the task for later, and resume from where you called the task. On the next frame, the task will resume from where it had yielded and keep going until either it finishes or another yield is hit, in which case it again pauses until the next frame.

So, if you put two yields in a task, it will yield on one frame, and then on the next frame it will immediately hit another yield, effectively waiting for two frames. Likewise, if you loop over a yield with loop(n){ yield; }, the task will wait for n frames before continuing. That's what the wait function does.

Without the loop statement in the task I wrote, all the task will do when called is:
ask if the timer if it's less than ten seconds -> wait 60 frames -> end the task

By putting in the loop statement, instead of the task ending after the wait(60), it loops back to the beginning, checks the timer again, and then once again waits for 60 frames.

It's putting the yields in some sort of loop that makes the task run some behaviour over a period of time. This is very fundamental to learn and understand when writing scripts.



As for the event script, you're supposed to call CreateEventFromScript from inside your enemy script, not the stage (well, maybe it'll work from a stage script? Haven't used 0.12m in forever). Meanwhile, you don't pass the file path as the argument, you pass the name. Your enemy script file should look like
Code: [Select]
script_enemy_main{
  // stuff
  CreateEventFromScript("EventName");
  // stuff
}

script_event EventName{
  // event
}
« Last Edit: February 10, 2017, 10:09:56 AM by Drake »

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

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #495 on: February 10, 2017, 05:49:18 PM »
Help!
When I launch a STG threw a PACKAGE script AND when I press PAUSE, it comes to a black screen. However when I launch this STG alone, all is working properly. Which reason is possible for that? (P. S. reason is 100% not in Pause System).
Thanks in advance!!

Sparen

  • Danmakufu Artist
  • Git ready, git set, PUUSH!
    • AFCDTech
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #496 on: February 10, 2017, 06:11:14 PM »
Help!
When I launch a STG threw a PACKAGE script AND when I press PAUSE, it comes to a black screen. However when I launch this STG alone, all is working properly. Which reason is possible for that? (P. S. reason is 100% not in Pause System).
Thanks in advance!!

What is a "STG"? Please state, step by step, how to reproduce your problem, and which scripts are involved. The way you have written your statement, it's not clear as to what is going on. Are you playing a stage script from within a package, and then pausing?

Please clarify so that we can help you.

Also:
Quote
(P. S. reason is 100% not in Pause System).
You can NEVER, EVER be 100% sure of this. As a game dev, you should know better than to assume that 'X is definitely not the problem'. Oftentimes, you overlook the actual problem when you approach it like this.

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #497 on: February 10, 2017, 07:02:28 PM »
Ok. I try one more time.
There are a full stage and a package script (menu). If I open just a stage script, all works properly. BUT if I open this stage script within the package script and try to run PAUSE SCENE during playing stage it comes to black screen.

I tried to insert other PUASE SCENEs. But problem didn't change. So, I thought that the problem is surely not in the PAUSE SCENE itself.

Question: Possible reasons for that?

Sparen

  • Danmakufu Artist
  • Git ready, git set, PUUSH!
    • AFCDTech
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #498 on: February 10, 2017, 07:41:45 PM »
Ok. I try one more time.
There are a full stage and a package script (menu). If I open just a stage script, all works properly. BUT if I open this stage script within the package script and try to run PAUSE SCENE during playing stage it comes to black screen.

I tried to insert other PUASE SCENEs. But problem didn't change. So, I thought that the problem is surely not in the PAUSE SCENE itself.

Question: Possible reasons for that?

Are you running the pause scene script at all? This is an example from my latest project.

Code: [Select]
//in package stage scene main loop
if(GetVirtualKeyState(VK_PAUSE) == KEY_PUSH) {
            let resPause = RunPauseScene();
            alternative(resPause)
            case(RESULT_RETRY) {
                //Checking what to do
                if(!IsReplay()) {
                    //Retry
                    TerminateStageScene();
                    TStageScene("");
                    return;
                } else {
                    TerminateStageScene();
                    TStageScene(pathReplay);
                    return;
                }
            } case(RESULT_END) {
                TerminateStageScene();
            }
        }

...


function RunPauseScene() {
    RenderSceneToTransitionTexture();
    PauseStageScene(true);

    let pathScript = GetCurrentScriptDirectory() ~ "system/Pause.dnh";

    //Starting pause script and stuff
    let idScript = LoadScript(pathScript);
    StartScript(idScript);

    while(!IsCloseScript(idScript)) {
        yield;
    }

    PauseStageScene(false);

    let res = GetScriptResult(idScript);
    return res;
}

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #499 on: February 11, 2017, 08:36:06 PM »
Sorry for long answer. It was night and I fell asleep.

Yes I'm running it. I tried the way you did. But when I insert

Code: [Select]
else{
                    TerminateStageScene();
                    TStageScene(pathReplay);
                    return;
         }

occurs an error.

(P.S. when appears black screen, I see only words that are in PAUSE. The END SCENE works properly though. One thing I see clearly, when I open this SCENEs within the package, all look so BLEND_ARGBish. Originally they are not so. Problem in graphics? )

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #500 on: February 13, 2017, 07:17:44 PM »
Hi, I'm new to the fanmade games and have recently been trying to play those from BulletForge and well, I ran into some Issue I'm not sure where to seek help from.

Ph3 runs fine except it's only playable in 640x480. Any bigger and it just turns to grey. I can still hear it running and myself dying :'). I just can't seem to see anything but grey.
I've tried running it with the given locale link from the FAQ thread.

Some scripts are detected by ph3 and some aren't but well I just want to solve this full screen problem first T.T
The only version that fullscreens for me (kinda funnily) is this: Perfect Chicken Flavour. I've tried putting some scripts in to try run it in full screen that way. That version detects the scripts but refuse to run it. Well, at least I can still play with Ronald Macdonald xD

I'm running on windows 10 by the way. Hopefully someone can enlighten me cause poking around the internet for 2h can't seem to find anything remotely close to an FAQ for pure players (I guess?). Thanks a lot for reading through this. (I'm kinda desperate haha)

Spacechurro

  • FiteMe;
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #501 on: February 18, 2017, 11:04:17 PM »
Some scripts not running may be due to the fact that they're either packages, which don't need your own danmakufu to play, you just have the whole folder, and open the executable in it's own folder, or you could are running 0.12m scripts on ph3. In the description of the download places for the scripts usually tells you whether the scripts are ph3, or 12.m
You can probably fix the aspect ratio by clicking the "config.exe", and changing it to whatever you feel like. You could also change it to fullscreen too. If you've already tried this sorry, that's all I can help with...
task FiteMe{
    loop{
          let m = atan2(MyFistY-YourFaceY,MyFistX-YourFaceX);
          Punch01(GetMyX,GetMyY,100,m,REDFIST01,0);
          wait(1);  }     }

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #502 on: February 19, 2017, 03:04:29 PM »
I don't need help anymore! I solved my problem.  :D

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #503 on: March 03, 2017, 07:21:41 PM »
One more question please!
I use @Event (case(EV_PAUSE_ENTER) and case(EV_PAUSE_LEAVE)) to stop and play stage music by running pause in stage. But the problem is that @Event doesn't do same with BOSS music. Whatever I do, all is the same.

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #504 on: March 03, 2017, 09:58:38 PM »
I need a bit more details on this, I can vaguely remember I had a similar issue with my setup. How exactly are you starting your boss music or your stage music?

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #505 on: March 03, 2017, 10:13:30 PM »
I need a bit more details on this, I can vaguely remember I had a similar issue with my setup. How exactly are you starting your boss music or your stage music?

I start with creating sound objects in the stage and loading it. And then calling functions in @Event system.

Code: [Select]
@Event
...
     case(EV_PAUSE_ENTER){
          ObjSound_SetRestartEnable(music, true);
          ObjSound_Stop(music);
     }
     case(EV_PAUSE_LEAVE){
          ObjSound_Play(music);
          ObjSound_SetRestartEnable(music, false);
     }
...

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #506 on: March 04, 2017, 07:05:37 AM »
That is quite interesting as I am using none of that in my code it seems. I've checked my custom system script and the EV_PAUSE_ENTER and LEAVE is empty.

What I personally do is first put the song that is playing (boss or stage song) into a variable. In this case a AreaCommonData. Then I have put the Start / Stop commands inside the pause script it self. Example, this is from my own menu_pause.txt

Code: [Select]
// When the script is booted
StopMusic(GetAreaCommonData("sound", "song", 0));
PlayMusic(BGM_PAUSE);

And when the pause is canceled (to return back to game play)
Code: [Select]
case(PSE_CANCEL) {
        . . .
PlayMusic(GetAreaCommonData("sound", "song", 0));
        . . .
}

// before closing the script
StopMusic(BGM_PAUSE);

This is how it works in my game. Try it out.
« Last Edit: March 04, 2017, 11:14:34 AM by Helepolis »

Spacechurro

  • FiteMe;
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #507 on: March 07, 2017, 01:50:33 AM »
I have a weird question, I'm back to using PH3 again, and was wondering something, does ph3 have it's own function for conversation between characters? Or do you have to make your own?
task FiteMe{
    loop{
          let m = atan2(MyFistY-YourFaceY,MyFistX-YourFaceX);
          Punch01(GetMyX,GetMyY,100,m,REDFIST01,0);
          wait(1);  }     }

Sparen

  • Danmakufu Artist
  • Git ready, git set, PUUSH!
    • AFCDTech
Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #508 on: March 07, 2017, 02:38:19 AM »
I have a weird question, I'm back to using PH3 again, and was wondering something, does ph3 have it's own function for conversation between characters? Or do you have to make your own?

You must make your own.

Re: ※ Danmakufu Q&A/Problem thread 3 ※
« Reply #509 on: March 13, 2017, 10:43:34 PM »
@Helepolis

I tried to do sound system as u said, but it was way too complicated for me. Could u tell me please how it works more detailed. And how can I put these variables into a AreaCommonData???

Edit: Nevermind, i solved the problem :/
« Last Edit: March 16, 2017, 04:24:29 PM by Zhan_fox »