Hello les gens, pour mon futur projet secondaire (ouaip spyro est mon projet principal) j'ai du créé un système de téléportation par portail (Comme les éliatrope dans wakfu/dofus), mon moteur de plarformer étant en full event, je ne vous présenterais que la partie qui concerne les portails ^^
un petit aperçus ?
Le code de la page :
Event - Engine_platform (portail mode)
C'est un sacré bordel vue comme ça je sais ^^ mais je vais essayé d'y métre un peu d'ordre, de plus il manque encore quelque condition pour la pose des portails (zone passable ou non, distance, quantité de wakfu, etc....)
précisons qu'a l’exception de la map, tout est géré en image (même le héros)
un petit aperçus ?
Le code de la page :
Event - Engine_platform (portail mode)
| > Commentaire : Coordonée souris |
| > Appeler Script : L[:mx] = mouse_square_x*32 |
| > Appeler Script : L[:my] = mouse_square_y*32 |
| > Commentaire : Placement du nouveau portail |
| > Condition : Script : mouse_press?(:mouse_left) |
| >| > Appeler Script : L[:idp] += 1 |
| >| > Appeler Script : L[:idp] = 8 if L[:idp] >= 10 |
| >| > Appeler Script : picture_show(L[:idp], "#{L[:np]}", L[:mx], L[:my], 1) |
| >| > Condition : Script : L[:idp] != 8 |
| >| >| > Appeler Script : L[:por_x1] = mouse_square_x |
| >| >| > Appeler Script : L[:por_y1] = mouse_square_y |
| >| >| > |
| >| > Sinon |
| >| >| > Appeler Script : L[:por_x2] = mouse_square_x |
| >| >| > Appeler Script : L[:por_y2] = mouse_square_y |
| >| >| > |
| >| > Fin - Condition |
| >| > |
| > Fin - Condition |
| > Commentaire : Téléportation |
| > Appeler Script : L[:rxp] = L[:rmx].to_i |
| > Appeler Script : L[:ryp] = L[:rmy].to_i |
| > Condition : Script : picture_showed?(L[:idp]) && picture_showed?(L[:idp]+1) |
| >| > Condition : Script : L[:rxp] == L[:por_x1] |
| >| >| > Condition : Script : L[:ryp] == L[:por_y1] or L[:ryp]-1 == L[:por_y1] |
| >| >| >| > Appeler Script : L[:sx], L[:sy] = L[:por_x2]*32, (L[:por_y2]*32)-4 |
| >| >| >| > Appeler Script : (L[:idp]..L[:idp]+1).each{|i| picture_erase(i)} |
| >| >| >| > Appeler Script : L[:por_x1], L[:por_y1], L[:por_x2], L[:por_y2] = 0,0,0,0 |
| >| >| >| > |
| >| >| > Fin - Condition |
| >| >| > |
| >| > Fin - Condition |
| >| > Condition : Script : L[:rxp] == L[:por_x2] |
| >| >| > Condition : Script : L[:ryp] == L[:por_y2] or L[:ryp]-1 == L[:por_y2] |
| >| >| >| > Appeler Script : L[:sx], L[:sy] = L[:por_x1]*32, (L[:por_y1]*32)-4 |
| >| >| >| > Appeler Script : (L[:idp]..L[:idp]+1).each{|i| picture_erase(i)} |
| >| >| >| > Appeler Script : L[:por_x1], L[:por_y1], L[:por_x2], L[:por_y2] = 0,0,0,0 |
| >| >| >| > |
| >| >| > Fin - Condition |
| >| >| > |
| >| > Fin - Condition |
| >| > |
| > Fin - Condition |
| > |
précisons qu'a l’exception de la map, tout est géré en image (même le héros)