[Danmakufu] Le topic d'entraide
+14
Miplouf Saigyouki
Zeykos
Makimoke
Terminadi
UFO_Buddha
Drell
Nasty_bdfp
Aneko Nya~
Ephraim
Kero
FdRstar
Squirel
Purple Magus
Leerius
18 participants
Page 6 sur 6
Page 6 sur 6 • 1, 2, 3, 4, 5, 6
Re: [Danmakufu] Le topic d'entraide
T'as une task. C'est bien. Mais après faut aussi l'appeler dans mainloop.Dans ce cas çi,met
n_round(0,2,1,9,BLUE21,90);
dans mainloop.
n_round(0,2,1,9,BLUE21,90);
dans mainloop.
Purple Magus- Hard
- Messages : 554
Date d'inscription : 10/12/2009
Age : 27
Localisation : Somewhere
Profil Joueur
: Th12.3 : UNL
Niveau: Difficile
Score: (non communiqué)
Re: [Danmakufu] Le topic d'entraide
tu veux dire task n_round(0,2,1,9,BLUE21,90); nan?
Miplouf Saigyouki- CB Terror 「Patate Sparker」
- Messages : 190
Date d'inscription : 21/12/2009
Age : 29
Localisation : A un certain endroit
Re: [Danmakufu] Le topic d'entraide
Non,tu met pas task. Si tu veut vraiment comprendre ce qu'est une task,c'est un second mainloop, c'est pourquoi il faut utiliser yield; . Par contre les tasks sont les outils de création altératifs les plus lourds sur le procésseur, les sub{ } ne faisant que répéter l,action décrite sans changement,ils sont assez léger. Les function(x,y,f.....){} permettent des changements,et les tasks,comme dit plus haut,créent un autre mainloop. Tu peut faire des infinite loops ( appeler la task/function dans elle même) si tu pense mettre un truc pour sortir du infinite loop. J'éspère que ça t'as aidé à comprendre les task/function/sub.
Purple Magus- Hard
- Messages : 554
Date d'inscription : 10/12/2009
Age : 27
Localisation : Somewhere
Profil Joueur
: Th12.3 : UNL
Niveau: Difficile
Score: (non communiqué)
Re: [Danmakufu] Le topic d'entraide
Ok,j'ai mis n_round(blabla);
yield;
Et ca marche pas...
yield;
Et ca marche pas...
Miplouf Saigyouki- CB Terror 「Patate Sparker」
- Messages : 190
Date d'inscription : 21/12/2009
Age : 29
Localisation : A un certain endroit
Re: [Danmakufu] Le topic d'entraide
Va sur Pastbin.com et met le script dessus, puis donne nous le lien.
Purple Magus- Hard
- Messages : 554
Date d'inscription : 10/12/2009
Age : 27
Localisation : Somewhere
Profil Joueur
: Th12.3 : UNL
Niveau: Difficile
Score: (non communiqué)
Re: [Danmakufu] Le topic d'entraide
J'étais en train de faire des modif' sur un scripts de perso, et quand j'ai voulu lancez le scripts test il a planté en me donnant un message comme quoi il y a quelque chose qui plante avec "script_ennemy_main" (alors que je n'y ai pas touché). Donc j'ai viré toute les modif' que j'avais fait sur mon perso et je réessaie, mais ça plante encore. J'ai essayez de regardez d'où venait le bug, mais j'ai pas trouvé. Quelqu'un pourrait m'aider s'il vous plait?
voici les scripts:
test :
voici les scripts:
test :
- Spoiler:
#TouhouDanmakufu
#Title[back test]
#Text[test du background SC]
#Image[.\image.jpg]
#Player[.\hana\hanascript.txt]
#ScriptVersion[2]
#Background[User(\script\Shinjuku\cdbg01a.png, 1, 1)]
script_enemy_main
{
#include_function "lib\ExpandedShotData\shot_replace.dnh"
let ImgEnnemy = "script\img\ExRumia.png";
let imagefile =GetCurrentScriptDirectory ~ "BackSC3.png";
let imagefil =GetCurrentScriptDirectory ~ "BackSC2.png";
let imagefi =GetCurrentScriptDirectory ~ "BackSC1.png";
let draw=0;
@Initialize
{
shotinit;
SetLife(4000);
SetTimer(1145);
SetScore(500000);
SetInvincibility(120);
SetMovePosition02(GetCenterX, GetCenterY, 100);
LoadGraphic(imagefile);
LoadGraphic(imagefil);
LoadGraphic(imagefi);
LoadGraphic(ImgEnnemy);
SetTexture(ImgEnnemy);
SetGraphicRect(0, 0, 64, 64);
}
@MainLoop
{
draw++;
}
@DrawLoop
{
SetColor(255,255,255);
SetRenderState(ALPHA);
SetTexture(ImgEnnemy);
SetGraphicRect(64,1,127,64);
SetGraphicAngle ( 0, 0, 0 );
DrawGraphic(GetX,GetY);
}
@BackGround
{
SetTexture(imagefile);
SetGraphicRect (-416,-464+draw/6 , 416*2, 464*2+draw/6 );
SetGraphicAngle ( sin(draw/12)*30, cos(draw/12)*30, sin(draw/12)*30);
SetColor(255,255,255);
DrawGraphic ( 240 , 248);
SetTexture(imagefil);
SetGraphicRect (-384,-448 , 384*2, 448*2);
SetAlpha ( 175 );
SetGraphicAngle ( 0, 0, -draw/2 );
SetColor(155,155,155);
DrawGraphic ( 224 , 240);
SetTexture(imagefi);
SetGraphicRect (-384,-448, 384*2, 448*2);
SetAlpha ( 175 );
SetGraphicAngle ( 0, 0, draw/2+90 );
SetColor(155,155,155);
DrawGraphic ( 224 , 240);
}
@Finalize
{
DeleteGraphic(ImgEnnemy);
}}
- Spoiler:
- #“Œ•û’e–‹•—[Player]
#ScriptVersion[2]
#Menu[Hana A]
#Text[Hana Hagane - Overhead Guard
Shot : Zamba (concentrate)
Midareba (spread)
Spellcard: Snake Sign "Danse Of The Heigt Valley"]
#Image[.\Hana_select.png]
#ReplayName[HanaA]
script_player_main{
let img_hana = GetCurrentScriptDirectory()~"hana.png";
let img_cutin = GetCurrentScriptDirectory()~"hana_select.png";
let optionxpos=26;
let optionypos=0;
task Option(position){
let objoption=Obj_Create(OBJ_EFFECT);
Obj_SetAlpha(objoption,200);
ObjEffect_SetTexture(objoption,img_hana); //uses star orb from spritesheet
ObjEffect_SetRenderState(objoption,ALPHA);
ObjEffect_SetPrimitiveType(objoption,PRIMITIVE_TRIANGLEFAN);
ObjEffect_CreateVertex(objoption,4); // square object with 4 vertexes
ObjEffect_SetVertexUV(objoption,0,145,1); // four coordinates of orb on spritesheet
ObjEffect_SetVertexUV(objoption,1,159,1); // object is 15x15
ObjEffect_SetVertexUV(objoption,2,159,15);
ObjEffect_SetVertexUV(objoption,3,145,15);
if(position=="LEFT"){
while(!Obj_BeDeleted(objoption)){
ObjEffect_SetVertexXY(objoption,0,GetPlayerX-optionxpos-8,GetPlayerY+optionypos-7);
ObjEffect_SetVertexXY(objoption,1,GetPlayerX-optionxpos+6,GetPlayerY+optionypos-7);
ObjEffect_SetVertexXY(objoption,2,GetPlayerX-optionxpos+6,GetPlayerY+optionypos+7);
ObjEffect_SetVertexXY(objoption,3,GetPlayerX-optionxpos-8,GetPlayerY+optionypos+7);
yield; // note that the left orb is shifted one pixel to the left to make the total width even
}
}else{
while(!Obj_BeDeleted(objoption)){
ObjEffect_SetVertexXY(objoption,0,GetPlayerX+optionxpos-7,GetPlayerY+optionypos-7);
ObjEffect_SetVertexXY(objoption,1,GetPlayerX+optionxpos+7,GetPlayerY+optionypos-7);
ObjEffect_SetVertexXY(objoption,2,GetPlayerX+optionxpos+7,GetPlayerY+optionypos+7);
ObjEffect_SetVertexXY(objoption,3,GetPlayerX+optionxpos-7,GetPlayerY+optionypos+7);
yield;
}
}
}
task Midareba(x,y,graphic){
}
@Initialize{
LoadGraphic(img_hana);
LoadGraphic(img_cutin);
LoadPlayerShotData(GetCurrentScriptDirectory()~"hanashotdata.txt");
SetPlayerLifeImage(img_hana, 218, 59, 250, 91);
SetSpeed(3.5, 2);
Option("LEFT");
Option("RIGHT");
@MainLoop{
yield;
}
@Missed{
}
@SpellCard{
}
@DrawLoop{
SetTexture(img_hana);
if(GetKeyState(VK_LEFT)==KEY_PUSH || GetKeyState(VK_LEFT)==KEY_HOLD){
SetGraphicRect(5, 53, 31, 94); // left movement frame
}else if(GetKeyState(VK_RIGHT)==KEY_PUSH || GetKeyState(VK_RIGHT)==KEY_HOLD){
SetGraphicRect(97, 52, 123, 95); // right movement frame
}else{
SetGraphicRect(5, 4, 30, 46); // neutral frame
}
DrawGraphic(GetPlayerX(), GetPlayerY());
}
@Finalize{
DeleteGraphic(img_hana);
DeleteGraphic(img_cutin);
}
}
script_spell Danse Of The Heigt Valley{
task Spell_snake(x,y,angle,type){
}
@Initialize{
}
@MainLoop{
}
@Finalize{
}
}
Ephraim- créateur d'oc infatigable
- Messages : 635
Date d'inscription : 09/03/2010
Age : 29
Profil Joueur
: TH07 - PCB
Niveau: Difficile
Score: (non communiqué)
Re: [Danmakufu] Le topic d'entraide
Oh ! Un topic d'entraide pour danmakufu ! Youpi ^^ J'vais pouvoir me faire aider :) !
Bon bah voilà, je vous expose mon problème ^^ :
Je n'ai pas compris grand chose au tasks, mais surtout, comment on les fait démarrer, faut mettre un truc dans le MainLoop ? Car j'en ai créer une ... je crois, mais elle ne démarre pas ...
Si vous trouvez une solution à mon problème ... merci infiniment ^^
Bon bah voilà, je vous expose mon problème ^^ :
Je n'ai pas compris grand chose au tasks, mais surtout, comment on les fait démarrer, faut mettre un truc dans le MainLoop ? Car j'en ai créer une ... je crois, mais elle ne démarre pas ...
Si vous trouvez une solution à mon problème ... merci infiniment ^^
NekoHeart- Easy
- Messages : 43
Date d'inscription : 20/03/2011
Localisation : Sur mon petit nuage ^^ Dans mes rêves ^^
Re: [Danmakufu] Le topic d'entraide
Bon une task c'est assez vaque, ça permet de faire des instructions avec des variables parametrable qu'on remplace souvent par des nombres. Par exemples :
task circle(x,y,angle,graphic,delay)
{
loop(n)
{
CreateShot01(x,y,s,angle,graphic,delay);
angle+=360/n;
}
}
Bon alors cette ligne va tout droit script_enemy_main.
Explication:
-on appelle une fonction par son nom (circle en l'occurence)
-loop(n) est le nombre de fois ou l'on répète la boucle (donc ici "n" fois)
-CreateShot01..bon là pas la peine d'expliquer
-angle+=360/n en gros ça équivaut à angle=angle+360/n il me semble en gros tu incrémente ton angle plusieurs fois pour avoir une chose qui ressemble a un cercle de tir, mais pour calculer le nombre éxacte de l'incrémentation on fait ce calcul.
Bon ensuite dans mainloop on va appeler notre cercle de tir, pour celà rien de plus simple!
if (cout==50)
{
circle(x--->GetX,y---GetY,angle--->généralement "GetAngleToPlayer",graphic---> ton graphisme de shot,delay---> eh bah le délai XD);
count=0;
}
(le -----> c'est ce que l'on remplace ;D)
Voilà si tu a des truc que tu capiches toujours pas n'hésite pas a le dire
task circle(x,y,angle,graphic,delay)
{
loop(n)
{
CreateShot01(x,y,s,angle,graphic,delay);
angle+=360/n;
}
}
Bon alors cette ligne va tout droit script_enemy_main.
Explication:
-on appelle une fonction par son nom (circle en l'occurence)
-loop(n) est le nombre de fois ou l'on répète la boucle (donc ici "n" fois)
-CreateShot01..bon là pas la peine d'expliquer
-angle+=360/n en gros ça équivaut à angle=angle+360/n il me semble en gros tu incrémente ton angle plusieurs fois pour avoir une chose qui ressemble a un cercle de tir, mais pour calculer le nombre éxacte de l'incrémentation on fait ce calcul.
Bon ensuite dans mainloop on va appeler notre cercle de tir, pour celà rien de plus simple!
if (cout==50)
{
circle(x--->GetX,y---GetY,angle--->généralement "GetAngleToPlayer",graphic---> ton graphisme de shot,delay---> eh bah le délai XD);
count=0;
}
(le -----> c'est ce que l'on remplace ;D)
Voilà si tu a des truc que tu capiches toujours pas n'hésite pas a le dire
UFO_Buddha- Normal
- Messages : 172
Date d'inscription : 19/05/2010
Age : 27
Localisation : Lost place ~
Profil Joueur
: TH12 - UFO
Niveau: Normal
Score: (non communiqué)
Re: [Danmakufu] Le topic d'entraide
Salut !
Est-ce que vous savez comment définir la hitbox d'un projectile créé par soi-même ? Par exemple pour faire que les projectiles papillon ne touchent que sur leur zone centrale et pas sur les ailes ?
Est-ce que vous savez comment définir la hitbox d'un projectile créé par soi-même ? Par exemple pour faire que les projectiles papillon ne touchent que sur leur zone centrale et pas sur les ailes ?
Ginko- Easy
- Messages : 40
Date d'inscription : 24/04/2011
Age : 33
Re: [Danmakufu] Le topic d'entraide
Je n'en sais rien mais.... :
C'est déjà le cas, seul la partie centrale du papillon touche :sGinko a écrit:
Par exemple pour faire que les projectiles papillon ne touchent que sur leur zone centrale et pas sur les ailes ?
Re: [Danmakufu] Le topic d'entraide
Ben oui, et je veux donc savoir pourquoi/comment !
Ginko- Easy
- Messages : 40
Date d'inscription : 24/04/2011
Age : 33
Re: [Danmakufu] Le topic d'entraide
Ginko a écrit:Est-ce que vous savez comment définir la hitbox d'un projectile créé par soi-même ?
1. Créer ton propre sprite.
Exemple :
blackshot.png
blackshot.txt
- Code:
#UserShotData
ShotImage = ".\blackshot.png"
// Blackshot
ShotData{ id=1 rect=(1,1,200,200) render=ALPHA angular_velocity = 0 delay_color= (255,255,255) }
hitbox test.txt
- Code:
#TouhouDanmakufu
#Title[hitbox test]
#Text[hitbox test]
#Player[FREE]
#ScriptVersion[2]
script_enemy_main{
let count=0;
@Initialize{
...
LoadUserShotData("script\Leerius\Random\\blackshot.txt");
...
}
@MainLoop{
count++;
if(count==10){
CreateShot01(GetCenterX,GetCenterY-20,1,90,1,0);
count=0;}
La hitbox du tir est le cercle verre, seulement si tu prends TOUTE l'image comme sprite du tir c'est-à-dire que dans le blackshot.txt : ShotData : rect=(1,1,200,200) et non pas rect=(42,42 et je sais pas quoi).
J'te laisse enregistrer l'image et prendre les mesures pour l'appliquer à différentes tailles si c'est vraiment ce dont tu as besoin.
Note : la transparence aka noir (0,0,0) n'influe pas du tout la hitbox du tir.
2. Modifier la hitbox de n'importe quel tir.
Par contre ça ne marche qu'avec les Object.
hitbox test 2.txt
- Code:
#TouhouDanmakufu
#Title[hitbox test 2]
#Text[hitbox test 2]
#Player[FREE]
#ScriptVersion[2]
script_enemy_main
{
let count=0;
let shots=[];
count++;
...
}
@MainLoop
{
if(count==10){
let obj=Obj_Create(OBJ_SHOT);
Obj_SetPosition(obj,GetX,GetY);
Obj_SetSpeed(obj,1);
Obj_SetAngle(obj,90);
ObjShot_SetDelay(obj,0);
ObjShot_SetGraphic(obj,RED01);
shots=shots~[obj];
}
let z=0;
while (z<length(shots)){
if(Obj_BeDeleted(shots[z])){
shots=erase(shots,z);
z--;}
else{
let obj=shots[z];
// Gauche : MinX
// Droite : MaxX
// Haut : MinY
// Bas : MaxY
if(
GetPlayerX>Obj_GetX(obj)-100&&
GetPlayerX<Obj_GetX(obj)+100&&
GetPlayerY>Obj_GetY(obj)-100&&
GetPlayerY<Obj_GetY(obj)+100){
ShootDownPlayer;
//Obj_SetCollisionToPlayer(obj,true); ?
}
}
z++;}
Ginko a écrit:Par exemple pour faire que les projectiles papillon ne touchent que sur leur zone centrale et pas sur les ailes ?
Les papillons (par défaut 22) ne touchent déjà qu'avec le centre et pas les ailes.
Leerius- Hard
- Messages : 627
Date d'inscription : 23/04/2010
Age : 32
Localisation : Sevran
Re: [Danmakufu] Le topic d'entraide
Merci, bonne idée, je vais faire des tests !
Oui je le sais; ce que je voulais savoir, c'est si on pouvait effectivement définir des objets avec une hitbox pas mal plus petite que le visuel, comme ça a été fait pour les papillons !
Les papillons (par défaut 22) ne touchent déjà qu'avec le centre et pas les ailes.
Oui je le sais; ce que je voulais savoir, c'est si on pouvait effectivement définir des objets avec une hitbox pas mal plus petite que le visuel, comme ça a été fait pour les papillons !
Ginko- Easy
- Messages : 40
Date d'inscription : 24/04/2011
Age : 33
Re: [Danmakufu] Le topic d'entraide
Euh il me faudrait une bonne explication pour les Obj_Effect, quelqu'un pourrait me venir en aide >< c'est assez urgent en plus
UFO_Buddha- Normal
- Messages : 172
Date d'inscription : 19/05/2010
Age : 27
Localisation : Lost place ~
Profil Joueur
: TH12 - UFO
Niveau: Normal
Score: (non communiqué)
Re: [Danmakufu] Le topic d'entraide
Salut tout le monde, je voudrais savoir si une âme charitable peut m'expliquer comment ajouter de nouveaux projectiles sur danmakufu ^^
Je parle de la version "0.12m"
Je parle de la version "0.12m"
Spiurao- Nouveau à Gensokyo
- Messages : 3
Date d'inscription : 18/01/2012
Re: [Danmakufu] Le topic d'entraide
Heu voilà, je up le topic je sais, mais j' ai un petit problème bien lourd avec Danmakufu.
J' ai téléchargé la version la plus récente de Danmakufu, j' ai commencé un script et je l' ai enregistré.
Ensuite, j' ai ouvert Danmakufu pour essayer mon script. Jusque là tout est normal. Je vais dans Directory, je sélectionne mon script...
Mais ensuite, j' arrive sur l' écran de sélection du joueur, et là il n' y a rien! Même pas le default_player Rumia! J' ai essayé de mettre mes autres scripts de la version précédente, mais toujours rien, je reste bloquée ici... Si j' appuie sur W le programme bug, le seul moyen est de retourner en arrière
Je pensais que c' était un problème dû au manque d' AppLocale, mais avec c' est pire, je n' ai même plu le fond (le yin-yang bleu) au démarrage du logiciel et il ne détecte plus mes scripts.
J' ai essayé de chercher si des gens avaient eu le même problème, mais je n' ai rien trouvé malheureusement ;A;
J' ai téléchargé la version la plus récente de Danmakufu, j' ai commencé un script et je l' ai enregistré.
Ensuite, j' ai ouvert Danmakufu pour essayer mon script. Jusque là tout est normal. Je vais dans Directory, je sélectionne mon script...
Mais ensuite, j' arrive sur l' écran de sélection du joueur, et là il n' y a rien! Même pas le default_player Rumia! J' ai essayé de mettre mes autres scripts de la version précédente, mais toujours rien, je reste bloquée ici... Si j' appuie sur W le programme bug, le seul moyen est de retourner en arrière
Je pensais que c' était un problème dû au manque d' AppLocale, mais avec c' est pire, je n' ai même plu le fond (le yin-yang bleu) au démarrage du logiciel et il ne détecte plus mes scripts.
J' ai essayé de chercher si des gens avaient eu le même problème, mais je n' ai rien trouvé malheureusement ;A;
- Spoiler:
- Joli nécropost que je viens de faire.
HeadShot- Nouveau à Gensokyo
- Messages : 16
Date d'inscription : 03/06/2010
Age : 25
Localisation : Entre une muiltitude de lasers
Profil Joueur
: TH12.3 - Soku
Niveau: Normal
Score: (non communiqué)
Page 6 sur 6 • 1, 2, 3, 4, 5, 6
Sujets similaires
» Différence de version danmakufu pour ceux à qui danmakufu ne marche pas
» [Danmakufu] Tuto :p
» [Danmakufu] Dai-Mokou
» Danmakufu ne se lance pas...
» Mes Projets sur Danmakufu
» [Danmakufu] Tuto :p
» [Danmakufu] Dai-Mokou
» Danmakufu ne se lance pas...
» Mes Projets sur Danmakufu
Page 6 sur 6
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|