muh Code: module Genocide_Movement class :Game_Character def passable?(x, y, d, s = EVENT_DISTANCE, n = get_new_coordinates(x, y, d, s)) # Get new coordinates new_x, new_y, dx, dy = *n # If coordinates are outside of map: impassable return false unless $game_map.valid?(new_x, new_y) # If through is ON: passable return true if @through # Get move distance s *= 0.25 # Standfeld berechnen fx, fy = x.to_field, y.to_field # Überprüfen, ob neues Feld betreten wird cx = ((x - fx).abs < s and 0 < dx*(new_x - x)) cy = ((y - fy).abs < s and 0 < dy*(new_y - y)) #if cx and cy # return false unless $game_map.passable?(fx, fy, d) and $game_map.passable?(fx + dx, fy + dy, 10 - d) if cx return false unless $game_map.passable?(fx, fy, 5 + dx) and $game_map.passable?(fx + dx, fy, 5 - dx) # Wenn y-Koordinate *,5 ist, Feld daneben prüfen if y != fy unless $game_map.passable?(fx, fy + (y <=> fy), 5 + dx) and $game_map.passable?(fx + dx, fy + (y <=> fy), 5 - dx) return false end unless $game_map.passable?(fx + dx, fy + (y <=> fy), 8) and $game_map.passable?(fx + dx, fy + (y <=> fy), fy + dy, 2) return false end end end if cy return false unless $game_map.passable?(fx, fy, 5 - 3*dy) and $game_map.passable?(fx, fy + dy, 5 + 3*dy) # Wenn x-Koordinate *,5 ist, Feld daneben prüfen if x != fx unless $game_map.passable?(fx + (x <=> fx), fy, 5 - 3*dy) and $game_map.passable?(fx + (x <=> fx), fy + dy, 5 + 3*dy) return false end unless $game_map.passable?(fx + (x <=> fx), fy + dy, 4) and $game_map.passable?(fx + (x <=> fx), fy + dy, 6) return false end end end # Loop all events for event in $game_map.events.values next if event == self or event.through # If through is OFF and (self is player => partner graphic as character) # and event coordinates are consistent with move destination if #not event.through and event.character_name != "" and (self != $game_player or event.character_name != "") and (event.x - new_x).abs < 1 and (event.y - new_y).abs < 1 # impassable return false end end # If self is not player, player through is OFF coordinates are consistent # with move destination and your own graphic is the character if self != $game_player and not $game_player.through and @character_name != "" and ($game_player.x - new_x).abs < 1 and ($game_player.y - new_y).abs < 1 # impassable return false end # passable return true end end end diese boolsche algebra ist die hölle ._. wie immer ein ostereierscript...viel spaß beim eier bugs finden. habs nicht ausreichend getestet.^^ falls du was finden solltest bescheid geben und mir auf die finger haun.
module Genocide_Movement class :Game_Character def passable?(x, y, d, s = EVENT_DISTANCE, n = get_new_coordinates(x, y, d, s)) # Get new coordinates new_x, new_y, dx, dy = *n # If coordinates are outside of map: impassable return false unless $game_map.valid?(new_x, new_y) # If through is ON: passable return true if @through # Get move distance s *= 0.25 # Standfeld berechnen fx, fy = x.to_field, y.to_field # Überprüfen, ob neues Feld betreten wird cx = ((x - fx).abs < s and 0 < dx*(new_x - x)) cy = ((y - fy).abs < s and 0 < dy*(new_y - y)) #if cx and cy # return false unless $game_map.passable?(fx, fy, d) and $game_map.passable?(fx + dx, fy + dy, 10 - d) if cx return false unless $game_map.passable?(fx, fy, 5 + dx) and $game_map.passable?(fx + dx, fy, 5 - dx) # Wenn y-Koordinate *,5 ist, Feld daneben prüfen if y != fy unless $game_map.passable?(fx, fy + (y <=> fy), 5 + dx) and $game_map.passable?(fx + dx, fy + (y <=> fy), 5 - dx) return false end unless $game_map.passable?(fx + dx, fy + (y <=> fy), 8) and $game_map.passable?(fx + dx, fy + (y <=> fy), fy + dy, 2) return false end end end if cy return false unless $game_map.passable?(fx, fy, 5 - 3*dy) and $game_map.passable?(fx, fy + dy, 5 + 3*dy) # Wenn x-Koordinate *,5 ist, Feld daneben prüfen if x != fx unless $game_map.passable?(fx + (x <=> fx), fy, 5 - 3*dy) and $game_map.passable?(fx + (x <=> fx), fy + dy, 5 + 3*dy) return false end unless $game_map.passable?(fx + (x <=> fx), fy + dy, 4) and $game_map.passable?(fx + (x <=> fx), fy + dy, 6) return false end end end # Loop all events for event in $game_map.events.values next if event == self or event.through # If through is OFF and (self is player => partner graphic as character) # and event coordinates are consistent with move destination if #not event.through and event.character_name != "" and (self != $game_player or event.character_name != "") and (event.x - new_x).abs < 1 and (event.y - new_y).abs < 1 # impassable return false end end # If self is not player, player through is OFF coordinates are consistent # with move destination and your own graphic is the character if self != $game_player and not $game_player.through and @character_name != "" and ($game_player.x - new_x).abs < 1 and ($game_player.y - new_y).abs < 1 # impassable return false end # passable return true end end end
--Es ist ein magisches Liopleurodon =D
Foren-Regeln