Maire Lv.9
Age : 37 Inscrit le : 04/02/2009 Messages : 326
| Sujet: [VX] Anti-lag_Mhd Lun 26 Oct 2009 - 3:26 | |
| Anti-lag_Mhd -IntroductionCet anti-lag est assez personnel. Il nécéssite le script d'opacité progressive de moi-même, car il répond à un besoin spécifique. Grâce au concours de Septembre, j'ai vu les limites de ce dernier script, d'où cette solution en réponse. -DescriptionCe script anti-lag ne s'occupe que des maps. Il ne se base pas sur la distance avec le player, ni même si l'event est visible sur le screen. Son principe repose sur la fonction de l'event indiqué par commentaire et l'update en fonction de son utilité, limitant les updates inutiles, mais demandant plus d'attention au maker. -Le script - Code:
-
#============================================================================== # # Anti-lag Mhd.v1 # #=============================================================================== # #Vincentmhd #26/10/09 #http://vincentmhdmaker.canalblog.com/ # #v0 -> v1Mise en thread de certaines commandes # #=====================================NOTE====================================== # # #------------------------------------------------------------------------------- # #===============================================================================
=begin
Ce script passerelle permettrerait de mettre toutes les setup d'event de mes script dans une seule boucle, donc de gagner du FPS.
Cet anti-lag est assez different des autres, il n'a pas de rayon d'action. Il se base sur l'utilité de l'event que vous définissez en commentaire. Les updates seront redéfinies en fonction.
Le script reconnait les flags mis en commentaire et agit en fonction.
Flag:: - DECO Présent sur la map seulement pour décorer, pas de mouvements, pas d'animations, pas de commandes, pas de pages multiples. C'est la base. Juste une sprite. - OPACITY Cet event réagira au changement d'opacité. S'il le flag OPACITY CODE ou OPACITY PARAM est déjà présent pas la peine de le ré-écrire. - ANIM Cet event pourra être animé. Son animation dépend du rayon anti-lag. - MOVABLE Cet event pourra être déplacé automatiquement ou manuellement. - PAGE Cet event a plusieurs pages. Mais ne contient pas de commandes d'events. - COMMANDE Cet event a des commandes à réaliser. Les flags sont cumullables et pas de flag fera que votre event fonctionnera normalement.
=end
#==============================================================================# # # #Cet alias me permet de mettre tous les alias de la setup_events dans une seule# #boucle pour gagner en rapidité. # # # #==============================================================================# class Game_Event def movable_update if jumping? # Jumping update_jump elsif moving? # Moving update_move else # Stopped update_stop end if @wait_count > 0 # Waiting @wait_count -= 1 elsif @move_route_forcing # Forced move route move_type_custom elsif not @locked # Not locked update_self_movement end end def anim_update #J'ai du diviser par 2!? je ne comprend pas vraiment pourquoi. if moving? if @walk_anime @anime_count += 0.75 elsif @step_anime @anime_count += 0.5 end else if @step_anime @anime_count += 0.5 elsif @pattern != @original_pattern @anime_count += 0.75 end end update_animation end
def command_update check_event_trigger_auto # Check autorun event if @interpreter != nil # Now parallel processing? unless @interpreter.running? # Not running @interpreter.setup(@list, @event.id) # Set up end @interpreter.update # Update interpreter end end end
class Game_Map ANIM_R = 20
def opacity_update_all for i in 0...$game_map_opacities.size @events[$game_map_opacities[i]].op_update end end def anim_update_all for i in 0...$game_map_animations.size if (((@events[$game_map_animations[i]].x - $game_player.x).abs <= ANIM_R)||((@events[$game_map_animations[i]].y - $game_player.y).abs <= ANIM_R)) @events[$game_map_animations[i]].anim_update end end end def movable_update_all for i in 0...$game_map_movables.size @events[$game_map_movables[i]].movable_update end end def setup_events #script d'opacité progressive $game_opacity.tab = [] # Tableau des opacités #script d'Anti-lag $game_map_events = [] # Tableau des events normaux $game_map_decorations = [] # Tableau des décorations $game_map_opacities = [] # Tableau des opacités variables $game_map_animations = [] # Tableau des events animables $game_map_movables = [] # Tableau des events déplaçables $game_map_multipages = [] # Tableau des events à pls pages $game_map_commandes = [] # Tableau des events à commandes
@events = {} # Map event for i in @map.events.keys @events[i] = Game_Event.new(@map_id, @map.events[i]) if @events[i] != nil type = 0 anti = 0 recurrance = true if @events[i].list != nil for j in 0...@events[i].list.size if @events[i].list[j].code == 108 a = "" a = @events[i].list[j].parameters.to_s #==================================================================# # PASSABILITY # #==================================================================# if a[0,11] == "PASSABILITY" ligne = "" ligne = @events[i].list[j].parameters.to_s for j in 0...4 info = "" info = ligne[(12 + j), 1] if info == "T" @events[i].p[j]=true else @events[i].p[j]=false end end end #==================================================================# # OPACITY # #==================================================================# if a[0,12] == "OPACITY CODE" target = a[13, 3].to_i code = a[17, a.size - 17].to_s end param = [] if a[0,13] == "OPACITY PARAM" n = 14 j = 0 while (a[n]!= nil) param[j] = a[n,2].to_i j+=1 n+=3 end if (code != "") $game_opacity.tab += [[@events[i].id,code,param,nil,target]] end end #==================================================================# # ANTI-LAG # #==================================================================# if a[0,4] == "DECO" type = 1 recurrance = false end if a[0,7] == "OPACITY" type = 2 recurrance = false end if a[0,5] == "ANIM" type = 3 recurrance = false end if a[0,7] == "MOVABLE" type = 4 recurrance = false end if a[0,4] == "PAGE" type = 5 recurrance = false end if a[0,4] == "COMMANDE" type = 6 recurrance = false end if type != anti if recurrance == false case type when 1 $game_map_decorations += [@events[i].id] when 2 $game_map_opacities += [@events[i].id] when 3 $game_map_animations += [@events[i].id] when 4 $game_map_movables += [@events[i].id] when 5 $game_map_multipages += [@events[i].id] when 6 $game_map_commandes += [@events[i].id] end recurrance = true anti = type end end end end end if type==0 $game_map_events += [@events[i].id] end end end @common_events = {} # Common event for i in 1...$data_common_events.size @common_events[i] = Game_CommonEvent.new(i) end $game_opacity.update(true,0) end #------------------------------------------------------------------------------- # * Update Events #------------------------------------------------------------------------------- def update_events for i in 0...$game_map_events.size @events[$game_map_events[i]].update #print(" event n°" + $game_map_events[i].to_s) end $opacity_runner = Thread.new {$game_map.opacity_update_all} $amin_runner = Thread.new {$game_map.anim_update_all} $movable_runner = Thread.new {$game_map.movable_update_all} for i in 0...$game_map_commandes.size @events[$game_map_commandes[i]].command_update end for common_event in @common_events.values common_event.update end end #-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh if @map_id > 0 for i in 0...$game_map_events.size @events[$game_map_events[i]].refresh #print(" event n°" + $game_map_events[i].to_s) end for i in 0...$game_map_multipages.size @events[$game_map_multipages[i]].refresh #print(" event n°" + $game_map_events[i].to_s) end for i in 0...$game_map_commandes.size @events[$game_map_commandes[i]].refresh #print(" event n°" + $game_map_events[i].to_s) end for common_event in @common_events.values common_event.refresh end end @need_refresh = false end
end
-InstallationCe script n'échappe pas à la régle du "copiez en dessous de material". Il nécéssite le script d'opacité progressive en l'état. -UtilisationLe script reconnait les flags suivants mis en commentaire et agit en fonction. Dès que vous mettez un flag dans un event, il ne l'update plus que pour laou les parties indiquées par commentaire. En triant et selectionnant, les events, j'espère gagner du FPS vu que le principal des events encombrants ne servent qu'à la déco. Flag:: - DECO Présent sur la map seulement pour décorer, pas de mouvements, pas d'animations, pas de commandes, pas de pages multiples. C'est la base. Juste une sprite. - OPACITY Cet event réagira au changement d'opacité. S'il le flag OPACITY CODE ou OPACITY PARAM est déjà présent pas la peine de le ré-écrire. - ANIM Cet event pourra être animé. Son animation dépend du rayon anti-lag. - MOVABLE Cet event pourra être déplacé automatiquement ou manuellement. - PAGE Cet event a plusieurs pages. Mais ne contient pas de commandes d'events. - COMMANDE Cet event a des commandes à réaliser. Les flags sont cumullables et l'absence de flag fera que votre event fonctionnera normalement. -DémoA faire... peut-être pour le concours de la toune#2... -Crédit: Vincentmhd
Dernière édition par vincentmhd le Lun 26 Oct 2009 - 12:24, édité 3 fois |
|
Roi des Lapinous
Age : 34 Inscrit le : 11/10/2008 Messages : 2292
| Sujet: Re: [VX] Anti-lag_Mhd Lun 26 Oct 2009 - 6:23 | |
| Salut Vincent,
Désolé de pas avoir réagi avant sur ton script d'opacité, mais merci c'est du beau boulot je vais m'amuser à le tester avec l'anti-lag, je t'en dirais plus. +3 en script +1 aide à la vie du forum. |
|
Maire Lv.9
Age : 37 Inscrit le : 04/02/2009 Messages : 326
| Sujet: Re: [VX] Anti-lag_Mhd Lun 26 Oct 2009 - 11:52 | |
| J'essais d'être cohérent dans le dévellopement de mes scripts.
Il y aura sans doute des modifications de celui-ci, ce n'est qu'un premier jet, un anti-lag performant est long à construire...
D'ailleurs, il n'est pas miraculeux, avec ma map principale du concours "Sortez-moi d'ici", je passe sur mon pc de ~15 FPS sans à ~30 FPS avec pour 211 events sur une map de 56x74.
J'ai déjà des idées d'améliorations...
Edit:: Idées ajoutées... Euh j'abuse peut-être des threads, il peut y avoir des désynchronisations. Enfin n'étant pas expert, s'il y a un problème dites-le. |
|
Mage Lv.11
Age : 27 Inscrit le : 02/03/2009 Messages : 513
| Sujet: Re: [VX] Anti-lag_Mhd Dim 8 Nov 2009 - 9:31 | |
| Euh moi ça bug : Script 'Anti-lag Mhd.V1' line 142: NoMethodError occured undefined method 'tab=' for nil:NilClass voici la ligne 142 : - Code:
-
$game_opacity.tab = [] # Tableau des opacités merci d'avance Ciao Sylfurion PS : c'est surement parce qu'il manque le script d'opacité progressive de toi, je ne sais pas où il est ... EDIT : Ah trouver : https://rpg-maker-vx.bbactif.com/partage-de-scripts-f24/opacite-progressive-et-gestionnaire-t5896.htmje l'insère en dessous de ton anti lag et sa me met : Script 'Fade opacity.v2' line 65: TypeError occurred Opacity is not a module la ligne 65 : - Code:
-
module OPACITY merci d'avance Ciao Sylfurion |
|
Maire Lv.9
Age : 37 Inscrit le : 04/02/2009 Messages : 326
| Sujet: Re: [VX] Anti-lag_Mhd Dim 8 Nov 2009 - 13:22 | |
| Essaye en inserant le script d'opacité avant l'anti-lag, j'ai fait comme cela dans tout mes tests... Cependant cette erreur ne s'est pas produite lorsque j'ai fait l'inversion.
Le texte de l'erreur signifie que OPACITY est utilisée par un autre script, sûrement en tant que variable globale. J'ai modifier le script d'Opacité pour donner un nom moins évident au module.
Tu as d'autres scripts avec ces 2 là? (je croise les doigts que non sinon je ne sais pas d'où vient l'erreur) |
|
Mage Lv.11
Age : 27 Inscrit le : 02/03/2009 Messages : 513
| Sujet: Re: [VX] Anti-lag_Mhd Dim 8 Nov 2009 - 17:44 | |
| Oh oui j'en ai plein de script ^^, mais tu veux surement parler de script qui gère l'opacité ^^, je vais d'abord essayer en changeant l'ordre des deux scripts 2min ... La syntaxe d'erreur qui parlant du script Fade Opacity ne s'affiche plus, mais il met a la place une autre syntaxe d'erreur Script 'Anti-lag Mhd.V1' line 142: NoMethodError occured undefined method 'tab=' for nil:NilClass voici la ligne 142 : - Code:
-
$game_opacity.tab = [] # Tableau des opacités la syntaxe d'erreur du script Fade opacity apparaissait quand je n'avais pas encore mis ton anti-lag, mais maintenant que je l'ai remis, sa rebug, avec le premier message d'erreur ( voir ci dessus ^^ ) voila ciao Sylfurion PS : Et sinon je n'ai aucun script qui ne gère l'opacité a pars Fade Opacity ^^ |
|
Maire Lv.9
Age : 37 Inscrit le : 04/02/2009 Messages : 326
| Sujet: Re: [VX] Anti-lag_Mhd Dim 8 Nov 2009 - 21:46 | |
| Il doit y avoir une interaction avec un autre script quelquepart. Une fonction surchargée commune sans alias. Avec les versions de l'anti-lag et du gestionnaire d'opacité mis en ligne sur le fofo dans un projet vierge je ne rencontre pas le problème, ni même dans mes tests.
L'erreur intervient à la compilation ou à l'usage?
Le plus simple pour résoudre ton souci serait de me filer un lien vers ton projet par MP ou la liste des autres scripts, et je ferai du sur-mesure... |
|
Mage Lv.11
Age : 27 Inscrit le : 02/03/2009 Messages : 513
| Sujet: Re: [VX] Anti-lag_Mhd Mar 10 Nov 2009 - 16:08 | |
| Alors en fait le bug vient juste après l'ecran titre, je fait nouvelle partie et bam sa me fait buger je t'envoie mes scripts par MP ... |
|
Habitant Lv.6
Age : 27 Avertissements : 3 Inscrit le : 10/11/2010 Messages : 112
| Sujet: Re: [VX] Anti-lag_Mhd Mer 20 Avr 2011 - 12:41 | |
| Salut, Je up le sujet, car le script à un blem : - Citation :
- Script 'Anti-Lag' line 141: NoMethoError occured
undefined method `tab='for nil:NilClass ça me dit ça quand je veux démarrer mon jeu Merci. |
|
| Sujet: Re: [VX] Anti-lag_Mhd | |
| |
|