Author Topic: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry  (Read 243845 times)

Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #330 on: February 04, 2015, 03:14:28 PM »
Thanks Drake and gtbot for the explanations. And ObjCol_GetListOfIntersectedEnemyID() work well  :)

edit:
Another thing.
If I make a non-touhou danmakufu game (with custom and legit ressources), can I share it on steam (or other things like that) for free? Is there some danmakufu use restrictions somewhere?
And can I send non Touhou danmakufu-game? (I don't want but I'm curious about that).


Sorry if there is already an answer somewhere.
« Last Edit: February 04, 2015, 03:32:19 PM by Lefkada »

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #331 on: February 04, 2015, 04:03:31 PM »
Thanks Drake and gtbot for the explanations. And ObjCol_GetListOfIntersectedEnemyID() work well  :)

edit:
Another thing.
If I make a non-touhou danmakufu game (with custom and legit ressources), can I share it on steam (or other things like that) for free? Is there some danmakufu use restrictions somewhere?
And can I send non Touhou danmakufu-game? (I don't want but I'm curious about that).


Sorry if there is already an answer somewhere.
If you make a non-touhou game without danmakufu ph3/0.12m, then you're not bound to ZUN's Touhou derived fanwork guidelines.
See here: https://www.shrinemaiden.org/forum/index.php/topic,17915.0.html


ExPorygon

  • Veteran Danmakufu Scripter
  • Currently working on a full Touhou fangame!
    • Ephemeral Entertainment
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #332 on: February 04, 2015, 04:09:24 PM »
Hold on, where does it say that Danmakufu cant go on steam (assuming non touhou)? You'd have to consult Danmakufus own license to find that out or perhaps mkm himself.

Drake

  • *
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #333 on: February 04, 2015, 06:32:29 PM »
That would be something to take up with mkm. Despite how general it is, the license does state that distribution of works using e.g. the default images and so on require you to note that the work is a derivative work of the Touhou Project. By default then, even if your work does not include Touhou whatsoever, you're still using a Touhou derivative as your base and as such it should also be considered one. There is a very detailed writeup about the use of Touhou game data (music, textures, etc) on the documentation that should probably be translated at some point, since if anything it makes clear why STOP HELEPOLIS was a thing and would be useful for newcomers that aren't aware of these guidelines. There is nothing in the license or documentation about commercialization specifically, likely because it doesn't even cross people's minds to publish a game that uses Danmakufu as a base under the assumption that it's a doujin derivative work -- especially if it weren't free. I find it quite likely that you're limited to the scope of doujin works by using Danmakufu, and unless clearly told otherwise you should not assume anything more than that.
« Last Edit: February 04, 2015, 06:41:53 PM by Drake »

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

ExPorygon

  • Veteran Danmakufu Scripter
  • Currently working on a full Touhou fangame!
    • Ephemeral Entertainment
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #334 on: February 04, 2015, 08:37:37 PM »
Would that then mean that the removal of the default images from the game's distribution and the usage of ONLY the engine and no base assets would allow for the touhou derivative tag to be removed? I agree that its best to ask mkm directly but just throwing that out there.

Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #335 on: February 04, 2015, 09:46:59 PM »
Not a question but more like verification whether I am on the right track. I'm about to implement difficulty scaling in my game but I want to know if I set the core structure correctly.

Basically using CommonData to set the selected difficulty then
Code: [Select]
// Difficulty scaling, 0 = normal, 1 = hard, 2 = lunatic
task fairyShot00(obj) {
if(GetCommonData("gameDifficulty",false) == 0)  {

}
if(GetCommonData("gameDifficulty",false) == 1)  {

}
if(GetCommonData("gameDifficulty",false) == 2)  {

}
}
To check what the fairy has to use depending on difficulty. Is this a safe and proper way or can it cause complications later on?

I'd prefer using a function to return the game difficulty, and branch only for radically different behavior.
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200

Sparen

  • Danmakufu Artist
  • Git ready, git set, PUUSH!
    • AFCDTech
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #336 on: February 04, 2015, 09:59:40 PM »
I'd prefer using a function to return the game difficulty, and branch only for radically different behavior.

Fluffy. GetCommonData("gameDifficulty",false) is a function that returns the game difficulty. He is branching for different behavior.

Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #337 on: February 04, 2015, 10:10:06 PM »
Fluffy. GetCommonData("gameDifficulty",false) is a function that returns the game difficulty. He is branching for different behavior.

I meant defining a new one named getDifficulty (as I have it), and avoiding branches for similar but different behavior.
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200

Sage Ω (Ultima)

  • CEO at Team Eternal Desire
  • ??? X
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #338 on: February 04, 2015, 10:11:35 PM »
Fluffy. GetCommonData("gameDifficulty",false) is a function that returns the game difficulty. He is branching for different behavior.

He means to do.
Code: [Select]
function GetDifficulty()
{
return GetCommonData("gameDifficulty",0);
}

Which is better than using commondata by itself as the conditional. What if you need to make changes to that commondata name. Have it return an array or something. It would be alot easier to just modify that function name, and then the changes take place everywhere. Or even better, having dedicated names for commondata so that you don't have to type Set/GetCommonData(blahblah).
I find it quite likely that you're limited to the scope of doujin works by using Danmakufu, and unless clearly told otherwise you should not assume anything more than that.

I don't think this is the case, I had asked mkm personally about selling a game made in Danmakufu (I didn't specify if it was Touhou on purpose), he simply replied that he was ok with it. I don't recall the documentation making a note of it either. So I personally will assume that non Touhou works are free of those limitations. I don't think mkm would enforce such things, if he was really serious about it, they would be mentioned (he would've made some extra attempt to mention it in the email as well).

Still, asking never hurt, and we have a better and easier chance at communicating with mkm than say, westerner ---> ZUN.

Not a question but more like verification whether I am on the right track. I'm about to implement difficulty scaling in my game but I want to know if I set the core structure correctly.

Basically using CommonData to set the selected difficulty then
Code: [Select]
// Difficulty scaling, 0 = normal, 1 = hard, 2 = lunatic
task fairyShot00(obj) {
if(GetCommonData("gameDifficulty",false) == 0)  {

}
if(GetCommonData("gameDifficulty",false) == 1)  {

}
if(GetCommonData("gameDifficulty",false) == 2)  {

}
}
To check what the fairy has to use depending on difficulty. Is this a safe and proper way or can it cause complications later on?

I would first put everything into a function. The above code is fine but would cause you to write a bunch of redundant copies of some patterns and enemy behavior. I personally pick pieces of the pattern apart and assign them to variables. like let diffvar_a = [easy value, normal value, hard value, lunatic][GetDifficulty];

The only time I ever rewrite code is if the pattern doesn't work well for all difficulties in it's current state.

Drake

  • *
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #339 on: February 04, 2015, 11:32:23 PM »
Would that then mean that the removal of the default images from the game's distribution and the usage of ONLY the engine and no base assets would allow for the touhou derivative tag to be removed? I agree that its best to ask mkm directly but just throwing that out there.
Perhaps, and I was going to mention this, but if you do so without asking it just makes it seem as though you're trying to loophole.

I don't think this is the case, I had asked mkm personally about selling a game made in Danmakufu (I didn't specify if it was Touhou on purpose), he simply replied that he was ok with it. I don't recall the documentation making a note of it either. So I personally will assume that non Touhou works are free of those limitations. I don't think mkm would enforce such things, if he was really serious about it, they would be mentioned (he would've made some extra attempt to mention it in the email as well).
You can sell doujin games just fine. We're talking about putting it on Steam, specifically, not just selling it. Again, publishing is very likely a topic that doesn't ever show up. Using game data is a much more pertinent topic and probably causes issues even within the Japanese fandom, but commercialization is not. The point is that it's best to err on the side of caution.



Also, the way RSS does difficulty changes is pretty good. There are just several parameters declared at the beginning, and those parameters are changed depending on difficulty. The behaviour itself doesn't branch unless the patterns are different; it's only one block (that you only need to change once) that makes use of the parameters (which are much easier to individually tweak). Even minor additions to the behaviour can be done using flags that are only set on certain difficulties.

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

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #340 on: February 05, 2015, 05:16:00 PM »
I'm not sure what gtbot is talking about but ObjCol_IsIntersected() and ObjCol_GetListOfIntersectedEnemyID() are what you want.
Just want to highlight this doesn't work for sprite Objects. I've been busy with my own Reimu's Musou Tensei spell card where I need to check if her Yin Yang ball is colliding, but it isn't triggering.

Wiki doesn't specify which objects it listens to. I believe it was similar with the Obj_Obj intersected functions. They only listen to Enemy objects and Shot objects.

This is quite troublesome.

Edit:
Even worse,  IsIntersected_Obj_Obj(obj1,obj2) isn't working either. Only for lasers and bullets (that is stated on wiki)

GetObjectDistance(obj1,obj2) worked for my sprite yin yang ball. if(GetObjectDistance(obj1,obj2) < 8) {  // do stuff }   <-  if the distance between 2 objects is smaller than 8 pixels, it will do stuff.

Unless someone has a better and easier solution.
« Last Edit: February 05, 2015, 05:20:14 PM by Helepolis »

ExPorygon

  • Veteran Danmakufu Scripter
  • Currently working on a full Touhou fangame!
    • Ephemeral Entertainment
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #341 on: February 05, 2015, 05:48:02 PM »
One possible solution to your problem Helepolis is to create invisible bullets with no hitboxes and constantly assign their position to the sprite objects in question and use the collision function on them as a proxy.

Or you could continue using the GetObjectDistance method. I think that would be the most efficient way as I don't know how the Obj collision functions even work, like I don't know what collision radius it uses to detect the collision (it can't be just comparing the coordinates cause they'll virtually never be exactly the same). It might use the shot or enemy's hitbox size as set by other functions, I just don't know for sure.

Drake

  • *
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #342 on: February 05, 2015, 10:14:05 PM »
Just want to highlight this doesn't work for sprite Objects. I've been busy with my own Reimu's Musou Tensei spell card where I need to check if her Yin Yang ball is colliding, but it isn't triggering.

Wiki doesn't specify which objects it listens to. I believe it was similar with the Obj_Obj intersected functions. They only listen to Enemy objects and Shot objects.

This is quite troublesome.

Edit:
Even worse,  IsIntersected_Obj_Obj(obj1,obj2) isn't working either. Only for lasers and bullets (that is stated on wiki)

GetObjectDistance(obj1,obj2) worked for my sprite yin yang ball. if(GetObjectDistance(obj1,obj2) < 8 ) {  // do stuff }   <-  if the distance between 2 objects is smaller than 8 pixels, it will do stuff.

Unless someone has a better and easier solution.
Collision objects are really just the objects that you'd think would have collision detection by default. So yeah, enemies, shots and lasers, possibly players and items as well, etc.

So uh... think about Spell objects? They exist too, you know ;)

like I don't know what collision radius it uses to detect the collision (it can't be just comparing the coordinates cause they'll virtually never be exactly the same). It might use the shot or enemy's hitbox size as set by other functions, I just don't know for sure.
That's very likely the case. It would use DNH's internal collision system, and I would expect that only objects with defined collision properties are affected, hence why it's undefined for objects that don't collide. Because of this I would also expect non-registered enemies, bullets, and so on to not be counted, and is why I expect player and item objects to count. However, I'm not sure whether or not "collisions" between certain types are considered valid, like players to player shots, or enemy shots to player shots, or even enemies to enemies.
« Last Edit: February 06, 2015, 12:55:27 AM by Drake »

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

Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #343 on: February 06, 2015, 06:30:19 PM »
Hey everyone , i have some troubles with my script (it's a shot object library i made). All was working good, and today I have this problem:


The library:

Code: [Select]
//////////////////////////////////////////
//Librairie de fonction pour les ennemis//
//////////////////////////////////////////

  task Shot1(enemyid,x,y,angle,g,v)//Tir basique avec effet d'apparition
    {
    let shot_obj = ObjShot_Create(OBJ_SHOT);

let alpha = 0;
let sx = 4;
let sy = 4;
    ObjShot_Regist(shot_obj);
    ObjShot_SetAutoDelete(shot_obj, true);
    ObjMove_SetPosition(shot_obj,x,y);
    ObjMove_SetAngle(shot_obj,angle);
    ObjShot_SetGraphic(shot_obj, g);
    ObjMove_SetSpeed(shot_obj,v);
       ObjRender_SetAlpha(shot_obj,alpha);
       ObjRender_SetScaleX(shot_obj, sx);
       ObjRender_SetScaleY(shot_obj, sy);
if(Obj_IsDeleted(enemyid)==true){Obj_Delete(shot_obj);}
loop(20)
{
ObjRender_SetAlpha(shot_obj,alpha);
ObjRender_SetScaleX(shot_obj, sx);
ObjRender_SetScaleY(shot_obj, sy);
sx -= 0.3135/2;
sy -= 0.3135/2;
alpha +=25.5;
loop(0.3){yield;}
}
}
  task Shot2(enemyid,x,y,angle,g,v)//Tir basique avec effet d'apparition + effet ralentit
    {
    let shot_obj = ObjShot_Create(OBJ_SHOT);
let alpha = 0;
let sx = 4;
let sy = 4;
    ObjShot_Regist(shot_obj);
    ObjShot_SetAutoDelete(shot_obj, true);
    ObjMove_SetPosition(shot_obj,x,y);
    ObjMove_SetAngle(shot_obj,angle);
    ObjShot_SetGraphic(shot_obj, g);
    ObjMove_SetSpeed(shot_obj,v);
       ObjRender_SetAlpha(shot_obj,alpha);
       ObjRender_SetScaleX(shot_obj, sx);
       ObjRender_SetScaleY(shot_obj, sy);
if(Obj_IsDeleted(enemyid)==true){Obj_Delete(shot_obj);}
loop(20)
{
ObjRender_SetAlpha(shot_obj,alpha);
ObjRender_SetScaleX(shot_obj, sx);
ObjRender_SetScaleY(shot_obj, sy);
sx -= 0.3135/2;
sy -= 0.3135/2;
alpha +=25.5;
loop(0.3){yield;}
}
loop(5)
{
ObjMove_SetSpeed(shot_obj,v);
v--;
loop(4){yield;}
}
}

Chronojet ⚙ Dragon

  • The Oddity
  • 今コソ輝ケ、我ガ未来、ソノ可能性!!
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #344 on: February 06, 2015, 06:56:13 PM »
Your text may be encoded in UTF-8 with Byte order mark. I suggest that it be saved without the byte order mark, or ANSI perhaps.

Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #345 on: February 07, 2015, 08:36:44 AM »
I'm sorry but...How can I do that? I'm sorry, encoding stuffs are not easy for me ... I guess I will change that with notepad++?

Drake

  • *
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #346 on: February 07, 2015, 08:43:51 AM »
Yes. If you're using Notepad++ you just go under the Encoding menu, Convert to UTF-8 without BOM and save.

You should also check Settings -> Preferences -> New Document and make sure ANSI or UTF-8 without BOM is set as the default.

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

Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #347 on: February 07, 2015, 08:49:09 AM »
It work, thank you guys !

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #348 on: February 08, 2015, 08:00:02 PM »
Question regarding TextObjects and setting text.

For debugging purposes, I was wondering if it is possible to combine string and integer in one line? For example  ObjText_SetText(obj, "location X:" bossX); So the result on my screen becomes:  "Location X: 24"

Of course the above will toss an error back at you because it needed a special method. I remember something vaguely done in the old engine but tracking down old threads I couldn't find it any more so decided to ask again.


Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #349 on: February 08, 2015, 08:02:28 PM »
Question regarding TextObjects and setting text.

For debugging purposes, I was wondering if it is possible to combine string and integer in one line? For example  ObjText_SetText(obj, "location X:" bossX); So the result on my screen becomes:  "Location X: 24"

Of course the above will toss an error back at you because it needed a special method. I remember something vaguely done in the old engine but tracking down old threads I couldn't find it any more so decided to ask again.

Never heard of it. You need to use IntToString and string concatenation.
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #350 on: February 08, 2015, 08:09:14 PM »
Never heard of it. You need to use IntToString and string concatenation.
How to perform the string concatenation? Can ya show an example with the above?

Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #351 on: February 08, 2015, 08:21:13 PM »
How to perform the string concatenation? Can ya show an example with the above?

Code: [Select]
ObjText_SetText(obj, "location X: " ~ IntToString(bossX));
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200

ExPorygon

  • Veteran Danmakufu Scripter
  • Currently working on a full Touhou fangame!
    • Ephemeral Entertainment
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #352 on: February 08, 2015, 08:36:57 PM »
How to perform the string concatenation? Can ya show an example with the above?
To expand on Fluffy's response, concatenation of strings means that you're joining one string with another. The way that is done is with ~. For example, if I have two strings, "Hi my name is" and "ExPorygon" writing "Hi my name is" ~ "ExPorygon" will result in the combining of the two, end to end:  "Hi my name is ExPorygon"

Fluffy's example takes a string "location X: " and concatenates it with the string that results from the IntToString function which converts an integer (like the one stored in the bossX variable) into a string.

Helepolis

  • Charisma!
  • *
  • O-ojousama!?
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #353 on: February 08, 2015, 08:38:44 PM »
Aaaaah, understood.  Just tested it and works like a charm. Cheers Ozzy & Fluffy.

And for booleans I use ToString() and it works.

Sage Ω (Ultima)

  • CEO at Team Eternal Desire
  • ??? X
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #354 on: February 08, 2015, 09:45:39 PM »
you can also use the actual concatenate(array1,array2) function or the append(array,value) function

Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #355 on: February 08, 2015, 09:48:45 PM »
you can also use the actual concatenate(array1,array2) function or the append(array,value) function

Heh heh heh, functions for operators. Would be useful if Danmakufu had first-class functions.
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200

Sparen

  • Danmakufu Artist
  • Git ready, git set, PUUSH!
    • AFCDTech
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #356 on: February 08, 2015, 10:05:09 PM »
Would be useful if Danmakufu had first-class functions.

Danmakufu supports that. It's all about how you use them.

Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #357 on: February 08, 2015, 10:05:46 PM »
Danmakufu supports that. It's all about how you use them.

Wait, what?
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200

Drake

  • *
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #358 on: February 09, 2015, 12:54:07 AM »
Sparen, DNH does not have first-class functions.
That being said concatenation doesn't make much sense over functions unless you're just talking about composition so I'm not sure how useful it'd be anyways.

Anyway more specifically the concatenate operator is defined on arrays, as in [1,2,3] ~ [4,5,6] = [1,2,3,4,5,6], but strings are simply arrays of characters
i.e. "melon" = ['m','e','l','o','n'] so it of course is valid for string concatenation.

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

Uruwi

  • Nightmare of Torrential Precipitation
  • 478 million goober
Re: ※ Dnh Q&A/Problem thread II ※ for Danmakufu ph3 .1 preX(ry
« Reply #359 on: February 12, 2015, 02:56:36 AM »
but strings are simply arrays of characters
i.e. "melon" = ['m','e','l','o','n'] so it of course is valid for string concatenation.

Shameless self-promotion and exploiting this fact

P. S. this doesn't always work well
« Last Edit: February 12, 2015, 06:00:41 AM by Fluffy8x »
foo = foldl $ flip ($)
Highest difficulty 1CCed for each game, by shot type in the original order. (-: never 1CCed on any difficulty, or never used; E: easy, N: normal, H: hard, L / U: lunatic / unreal.)
EoSD [NNNE] PCB [EE--N-] IN [NEEE + Ex Border] PoFV [Mystia N, Mystia E no charge] MoF [EN--H- + Ex Marisa B] SA [N-----] UFO [----EN] TD [NENE] DDC [EE-EHE + Ex Marisa B & Sakuya A] LoLK [PD --N- Legacy ---N] EE [N- + Ex Yabusame] EMS [N-- + Ex Yabusame] RMI [NHN + Ex YaoSuku]
Avelantis (demo) Easy YuukiB 426,077,200