Blizz-ABS Controller for RMX-OS
Authors: Blizzard
Version: 3.02
Type: RMX-OS Plugin
Key Term: RMX-OS Plugin
IntroductionThis script allows the proper usage of Blizz-ABS in combination with RMX-OS. It will allow the RMX-OS Server to assign a client the role of the processor (Global Master) and allow global processing Blizz-ABS AI behavior.
This script is to be distributed under the same terms and conditions like the scripts it was created for: RMX-OS.
Features
- sets up all save data related to Blizz-ABS
- allows proper display of other players when using Blizz-ABS
- implementation of global master controller for Blizz-ABS processing
- party system with shared EXP / gold
- PvP
ScreenshotsN/A for this sort of script
DemoN/A
ScriptJust make a new script above main and paste this code into it.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Blizz-ABS Controller for RMX-OS by Blizzard
# Version: 3.02
# Type: RMX-OS Add-on
# Date: 15.2.2010
# Date v1.01: 16.2.2010
# Date v1.02: 23.4.2010
# Date v1.1: 5.12.2010
# Date v1.19: 22.1.2011
# Date v1.2: 25.1.2011
# Date v1.3: 3.2.2011
# Date v1.31: 11.2.2011
# Date v1.32: 11.2.2011
# Date v1.33: 4.3.2011
# Date v1.34: 6.3.2011
# Date v1.4: 9.3.2011
# Date v1.5: 22.6.2012
# Date v1.51: 29.3.2013
# Date v1.52: 6.4.2013
# Date v2.0: 12.6.2013
# Date v2.01: 25.8.2013
# Date v2.1: 23.2.2014
# Date v2.2: 24.2.2014
# Date v3.0: 27.2.2014
# Date v3.01: 3.3.2014
# Date v3.02: 22.5.2014
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# This script is to be distributed under the same terms and conditions like
# the scripts it was created for: RMX-OS and Blizz-ABS.
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# - Special Thanks to Ryex for providing the basecode for the fix for the
# controls conflict between Blizz-ABS and RMX-OS.
#
# Information:
#
# This script must be placed below RMX-OS and Blizz-ABS. It requires RMX-OS
# and Blizz-ABS to work properly. This script will allow the RMX-OS Server to
# assign a client the role of the processor (Global Master) and allow global
# processing Blizz-ABS AI behavior.
#
#
# What is different:
#
# - Map actor data will not be stored completely. Special states and effects
# that are related to Blizz-ABS (i.e. the data regarding the charging
# state) are not being saved.
# - RMX-OS was not intended to have Blizz-ABS allies! Players will not see
# other players' allies on the map if you add them and you are risking data
# corruption during saving! The same goes for summons!
# - Alignment groups are available, but dynamic change of alignment groups
# is mostly disabled for convenience.
# - Target selection is disabled. Every skill that has target selection will
# be executed immediately. If a selection skill targets only one target, a
# random target from all available targets will be chosen. Generally you
# should avoid single-target selection skills and items.
# - ABSEAL is disabled.
# - Processing takes place only on the Global Master client that is assigned
# dynamically by the server.
# - Killed enemy events that are set on Death trigger are run only on the
# Global Master client. It is recommended that killed enemies trigger
# global switches that run common events. For that you need a plugin for
# RMX-OS that allows you to have global switches.
# - Item / Gold Drops are disabled. The actor who killed the enemy will get
# the item reward. EXP and gold rewards are shared among party members
# where each party member adds a specific amount to the gained EXP.
# Remember that items can be traded so a shared item reward is unnecessary.
# - Some more extensive eventing features are disabled, might not work right
# or have not been tested. (e.g. check of last attacker, check of last
# action, multi-event-body enemies, various knockback modes, etc.)
#
#
# Notes:
#
# - Keep in mind that adding and/or removing this script will corrupt the
# save data in the RMX-OS SQL database.
# - You shouldn't have any non-map scenes during the battle. This can disrupt
# the normal game flow. You should get a custom menu system on the map for
# the menu system specifically.
# - You should set the PING_TIMEOUT option in RMX-OS to 1.
# - There is a problem in PvP in Blizz-ABS versions lower than 2.86.
# Sometimes online players will attack themselves including other players.
# To fix this problem, get Blizz-ABS v2.86.
#
#
# If you find any bugs, please report them here:
# http://forum.chaos-project.com
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
if !$BlizzABS || BlizzABS::VERSION < 2.87
raise 'ERROR: The "Blizz-ABS Controller" requires Blizz-ABS 2.87 or higher.'
elsif !defined?(RMXOS) || RMXOS::VERSION < 2.04
raise 'ERROR: The "Blizz-ABS Controller" requires RMX-OS 2.04 or higher.'
end
$blizzabs_rmxos = 3.02
#==============================================================================
# module RMXOS
#==============================================================================
module RMXOS
#============================================================================
# module RMXOS::Options
#============================================================================
module Options
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# PvP active or not
PVP = false
# how much percent to the total EXP gain does each party member add
PARTY_EXP_BONUS = 20
# how much percent to the total gold gain does each party member add
PARTY_GOLD_BONUS = 20
# this should be only changed if necessary!
BATTLER_VARIABLES = ['@battler|@hp', '@battler|@sp',
'@battler|@states', '@battler|@states_turn', '@battler|@state_time']
ACTOR_VARIABLES = ['@battler|@actor_id', '@battler|@class_id',
'@battler|@level', '@battler|@maxhp_plus', '@battler|@maxsp_plus',
'@battler|@str_plus', '@battler|@dex_plus', '@battler|@agi_plus',
'@battler|@int_plus', '@battler|@skills', '@battler|@weapon_id',
'@battler|@armor1_id', '@battler|@armor2_id', '@battler|@armor4_id',
'@battler|@armor3_id', '@battler|@character_name',
'@battler|@character_hue']
ENEMY_VARIABLES = ['@battler|@enemy_id', '@battler|@immortal',
'@ai|@altered_alignment', '@ai|@aggressive', '@ai|@view_range',
'@ai|@hearing_range_ratio', '@ai|@positive', '@ai|@negative',
'@ai|@neutral']
DAMAGE_VARIABLES = ['@battler|@damage', '@battler|@hpdamage',
'@battler|@spdamage', '@battler|@critical', '@battler|@states',
'@battler|@states', '@battler|@states_turn', '@animation_id',
'@attacked']
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# because Game_Player was redefined
old_Game_Player = SAVE_DATA.keys.find_all {|key|
key.is_a?(Class) && key.name == 'Game_Player'}[0]
SAVE_DATA[Game_Player] = SAVE_DATA[old_Game_Player]
SAVE_DATA.delete(old_Game_Player)
# other additional save data
SAVE_DATA[Map_Actor] = SAVE_DATA[Game_Player].clone
SAVE_DATA[Game_System].concat(['@hud', '@hotkeys', '@minimap',
'@attack_button', '@defend_button', '@skill_button', '@item_button',
'@select_button', '@hud_button', '@hotkey_button', '@minimap_button',
'@turn_button', '@running_button', '@sneaking_button', '@jumping_button',
'@caterpillar', '@caterpillar_active'])
SAVE_DATA[Game_Actor].concat(['@skill', '@item', '@skill_hotkeys',
'@item_hotkeys', '@old_level', '@offensive', '@aggressive',
'@force_offensive', '@force_aggressive', '@state_time', '@triggers'])
SAVE_DATA[BlizzABS::Trigger] = ['@activator', '@condition', '@comparator',
'@value', '@action_type', '@action_data', '@target']
# new creation data
CREATION_DATA[Map_Actor] = '0'
end
#============================================================================
# module RMXOS::Data
#============================================================================
module Data
PartyAlreadyMember = 'Player is already a member of your party.'
PartyNone = 'You are not in a party.'
PartyNotLeader = 'You are not the leader of the party.'
PartyNotMember = 'Player is not a member of your party.'
PartyInfo = 'Party Leader: LEADER; Members: MEMBERS'
ColorParty = Color.new(0xFF, 0x7F, 0x1F)
end
#============================================================================
# module RMXOS::Documentation
#============================================================================
module Documentation
# Party commands
PARAMETERS['party'] = 'USERNAME'
PARAMETERS['premove'] = 'USERNAME'
PARAMETERS['pleave'] = 'none'
PARAMETERS['pmsg'] = 'MESSAGE'
PARAMETERS['pinfo'] = 'none'
DESCRIPTIONS['party'] = 'Invites a player into your party.'
DESCRIPTIONS['premove'] = 'Removes a player from your party.'
DESCRIPTIONS['pleave'] = 'Leaves the current party. Disbands the party if you are the party leader.'
DESCRIPTIONS['pmsg'] = 'Sends a message to all party members.'
DESCRIPTIONS['pinfo'] = 'Displays information about your party.'
end
def self.change_keys
controls = [Input::LEFT, Input::RIGHT, Input::UP, Input::DOWN, Input::B,
Input::C]
keys = []
replacements = ['Arrow Left', 'Arrow Right', 'Arrow Up', 'Arrow Down',
'Esc', 'Enter']
controls.each_index {|i|
keys[i] = controls[i].clone
controls[i].clear
controls[i].push(Input::Key[replacements[i]])
}
return keys
end
def self.restore_keys(keys)
controls = [Input::LEFT, Input::RIGHT, Input::UP, Input::DOWN, Input::B,
Input::C]
controls.each_index {|i|
controls[i].clear
keys[i].each {|key| controls[i].push(key)}
}
end
end
#==============================================================================
# module BlizzABS
#==============================================================================
module BlizzABS
#============================================================================
# module BlizzABS::Config
#============================================================================
module Config
ABSEAL_FACTOR = 485
GOLD_DROP = ''
ITEM_DROP = false
CORPSES = false
end
#============================================================================
# module BlizzABS::Alignments
#============================================================================
module Alignments
ONLINE_GROUP = 0
GROUPS.push(ONLINE_GROUP)
GROUPS.sort!
class << Alignments
alias enemies_blizzabsrmxos_alias enemies
alias allies_blizzabsrmxos_alias allies
alias neutral_blizzabsrmxos_alias neutral
end
def self.allies(id)
result = allies_blizzabsrmxos_alias(id)
case id
when ONLINE_GROUP
result = allies_blizzabsrmxos_alias(ACTOR_GROUP).clone
result |= [ACTOR_GROUP, ONLINE_GROUP]
when ACTOR_GROUP
result |= [ONLINE_GROUP]
end
return result
end
def self.enemies(id)
result = enemies_blizzabsrmxos_alias(id)
case id
when ONLINE_GROUP
result = enemies_blizzabsrmxos_alias(ACTOR_GROUP).clone
if RMXOS::Options::PVP
result |= [ACTOR_GROUP, ONLINE_GROUP]
end
when ACTOR_GROUP
result |= [ONLINE_GROUP] if RMXOS::Options::PVP
when ENEMY_GROUP
result |= [ONLINE_GROUP]
end
return result
end
def self.neutral(id)
return (neutral_blizzabsrmxos_alias(id) | [ONLINE_GROUP])
end
end
#============================================================================
# BlizzABS::AI::Data_Enemy
#============================================================================
class AI::Data_Enemy
alias lifeless_blizzabsrmxos_alias? lifeless?
def lifeless?
return (!$network.gmaster || lifeless_blizzabsrmxos_alias?)
end
end
#============================================================================
# BlizzABS::Processor
#============================================================================
class Processor
attr_reader :killed
def update_killed
deleted_killed = []
$game_system.killed.each_key {|key|
$game_system.killed[key] -= 1
if key.execute
key.update
elsif $game_system.killed[key] <= 0
if !key.ai.lifeless_blizzabsrmxos_alias? &&
($game_system.respawn_time > 0 || key.respawn_point != nil)
if $network.gmaster && !key.respawning
$network.send_enemy_respawn(key)
key.respawning = true
end
else
deleted_killed.push(key)
end
end}
deleted_killed.each {|key| $game_system.killed.delete(key)}
end
alias exp_result_blizzabsrmxos_alias exp_result
def exp_result(enemy)
if enemy.last_targeter == $network.user_id ||
$network.party.include?(enemy.last_targeter)
return exp_result_blizzabsrmxos_alias(enemy)
end
return 0
end
alias gold_result_blizzabsrmxos_alias gold_result
def gold_result(enemy)
if enemy.last_targeter == $network.user_id ||
$network.party.include?(enemy.last_targeter)
return gold_result_blizzabsrmxos_alias(enemy)
end
return 0
end
alias additional_result_blizzabsrmxos_alias additional_result
def additional_result(enemy)
if enemy.last_targeter == $network.user_id
return additional_result_blizzabsrmxos_alias(enemy)
end
end
alias drop_items_blizzabsrmxos_alias drop_items
def drop_items(enemy)
if enemy.last_targeter == $network.user_id
return drop_items_blizzabsrmxos_alias(enemy)
end
return []
end
alias remove_enemy_blizzabsrmxos_alias remove_enemy
def remove_enemy(enemy)
if $network.gmaster
$network.send_enemy_death(enemy)
if $game_map.events.has_value?(enemy)
$game_map.events.delete(enemy.id)
@killed = {} if @killed == nil
@killed[enemy.id] = enemy
end
end
end
def delete_enemy(enemy)
return if enemy.execute || enemy.erased || enemy.body != nil
enemy.start if enemy.trigger == BlizzABS::CETDeath
$game_map.events.delete(enemy.id) unless enemy.execute
if BlizzABS::Config::CORPSES
if BlizzABS::Config::EMPTY_CORPSES
drop_event([], enemy.real_x, enemy.real_y, enemy)
end
end
self.add_respawn(enemy)
end
def add_respawn(enemy)
tmp = $game_map.respawns.find_all {|event|
!event.erased && event.respawn_ids != nil &&
event.respawn_ids.include?(enemy.battler_id)}
if tmp.size == 0
time = $game_system.respawn_time
else
enemy.respawn_point = tmp[rand(tmp.size)]
time = enemy.respawn_point.respawn_time
end
$game_system.killed[enemy] = time * 40
end
end
#============================================================================
# BlizzABS::Controller
#============================================================================
class Controller
alias update_control_blizzabsrmxos_alias update_control
def update_control
update_control_blizzabsrmxos_alias if !$game_temp.chat_active
end
end
#============================================================================
# BlizzABS::Controls
#============================================================================
class Controls
alias update_blizzabsrmxos_alias update
def update
update_blizzabsrmxos_alias if !$game_temp.chat_active
end
end
#============================================================================
# BlizzABS::Utility
#============================================================================
class Utility
alias request_damage_sprite_blizzabsrmxos_alias request_damage_sprite
def request_damage_sprite(char, damage = nil)
if $network.gmaster
$network.send_damage_variables(char)
end
request_damage_sprite_blizzabsrmxos_alias(char, damage)
end
end
end
$BlizzABS = BlizzABS::Processor.new
#==============================================================================
# RMXOS::Network
#==============================================================================
class RMXOS::Network
attr_reader :gmaster
attr_reader :party
attr_reader :partyleader
alias init_blizzabsrmxos_alias initialize
def initialize
init_blizzabsrmxos_alias
@gmaster = false
self.party_reset
end
alias reset_blizzabsrmxos_alias reset
def reset
self.party_reset
reset_blizzabsrmxos_alias
end
def party_reset
@partyleader = ''
@party = []
end
alias clear_map_players_blizzabsrmxos_alias clear_map_players
def clear_map_players
clear_map_players_blizzabsrmxos_alias
$game_system.killed.clear
end
alias check_game_blizzabsrmxos_alias check_game
def check_game(message)
case message
when /\AABSGMA\Z/ # global master activate
@gmaster = true
return true
when /\AABSGMD\Z/ # global master deactivate
@gmaster = false
return true
when /\AABSMDR\Z/ # map data request
$game_map.battlers.each {|battler| battler.send_exchange_variables}
return true
when /\AABSMEE\t(.+)\t(.+)/ # exchange variables for enemies
id = $1.to_i
variables = eval($2)
if $game_map != nil && $game_map.events != nil &&
$game_map.events.has_key?(id)
$game_map.events[id].evaluate(variables)
end
return true
when /\AABSMED\t(.+)/ # enemy is dead
id = $1.to_i
if $game_map.events.has_key?(id)
enemy = $game_map.events[id]
enemy.last_targeter = nil
$BlizzABS.delete_enemy(enemy)
end
when /\AABSBED\t(.+)\t(.+)/ # broadcast enemy death
id = $1.to_i
targeter_id = $2.to_i
if $BlizzABS.killed != nil && $BlizzABS.killed.has_key?(id)
enemy = $BlizzABS.killed[id]
$BlizzABS.killed.delete(id)
$game_map.events[id] = enemy
end
if $game_map.events.has_key?(id)
enemy = $game_map.events[id]
enemy.last_targeter = (targeter_id != 0 ? targeter_id : nil)
$BlizzABS.remove_enemy_blizzabsrmxos_alias(enemy)
$BlizzABS.add_respawn(enemy)
end
when /\AABSBER\t(.+)/ # broadcast enemy respawn
id = $1.to_i
$game_system.killed.keys.each {|enemy|
if enemy.id == id
$game_map.events[id] = $BlizzABS.respawn_enemy(enemy)
$game_system.killed.delete(enemy)
break
end
}
return true
when /\AABSADM\t(.+)\t(.+)/ # actor damage variables
id = $1.to_i
variables = eval($2)
if @user_id == id
$game_player.evaluate(variables)
$game_player.damage_effect
$game_player.send_exchange_variables
elsif @players.has_key?(id)
@players[id].evaluate(variables)
@players[id].damage_effect
end
return true
when /\AABSEDM\t(.+)\t(.+)/ # enemy damage variables
id = $1.to_i
if $game_map != nil && $game_map.events != nil &&
$game_map.events.has_key?(id)
variables = eval($2)
$game_map.events[id].evaluate(variables)
$game_map.events[id].damage_effect
end
return true
when /\AABSACM/ # attack consume
$game_player.attack_consumption
return true
when /\AABSSCM\t(.+)/ # skill consume
$game_player.skill_consumption($data_skills[$1.to_i])
return true
when /\AABSICM\t(.+)/ # item consume
$game_player.item_consumption($data_items[$1.to_i])
return true
when /\AABSPIN\t(.+)\t(.+)/ # party invite
@partyleader = $1
@party = eval($2).compact.sort
@party.delete(@username)
return true
when /\AABSPRM\t(.+)/ # party remove
@party.delete($1)
return true
when /\AABSPRE\Z/ # party reset
self.party_reset
return true
end
return check_game_blizzabsrmxos_alias(message)
end
alias check_normal_commands_blizzabsrmxos_alias check_normal_commands
def check_normal_commands(message)
case message
when /\A\/party (\S+)\Z/
command_party_invite($1)
return true
when /\A\/premove (\S+)\Z/
command_party_remove($1)
return true
when /\A\/pleave\Z/
command_party_leave
return true
when /\A\/pmsg (\S{1}.*)/
command_party_chat($1)
return true
when /\A\/pinfo\Z/
command_party_info
return true
end
return check_normal_commands_blizzabsrmxos_alias(message)
end
def partyleader?
return (self.in_party? && @partyleader == @username)
end
def in_party?
return (@partyleader != '')
end
def check_partyleader_action
if !self.partyleader?
self.add_error(RMXOS::Data::PartyNotLeader)
return false
end
return true
end
def check_party_action
if !self.in_party?
self.add_error(RMXOS::Data::PartyNone)
return false
end
return true
end
def command_party_invite(username)
if !self.in_party? || self.check_partyleader_action
if @party.include?(username)
self.add_error(RMXOS::Data::PartyAlreadyMember)
else
self.send('ABSPIN', username)
end
end
end
def command_party_remove(username)
if self.check_partyleader_action
if !@party.include?(username)
self.add_error(RMXOS::Data::PartyNotMember)
else
self.send('ABSPRM', username)
end
end
end
def command_party_leave
if self.check_party_action
self.send('ABSPLE')
end
end
def command_party_info
if self.check_party_action
text = RMXOS::Data::PartyInfo.sub('LEADER') {@partyleader}
text = text.sub('MEMBERS') {(@party - [@partyleader]).join(', ')}
self.add_info(text)
end
end
def command_party_chat(message)
if self.check_party_action
send_chat_message(message, RMXOS::Data::ColorParty, 'ABSPME')
end
end
def try_deactivate_gmaster
self.send('ABSGMD')
@gmaster = false
end
def send_enemy_exchange_variables(id, variables)
self.send('ABSMEE', id, variables.inspect)
end
def send_attack(char)
type = nil
if char.is_a?(Map_Actor)
id = (char == $game_player ? @user_id : char.user_id)
type = 'ABSAAT'
elsif char.is_a?(Map_Enemy)
id = char.id
type = 'ABSEAT'
end
$network.send(type, id) if type != nil
end
def send_attack_consume(user_id)
self.send('ABSACM', user_id)
end
def send_skill_consume(user_id, skill_id)
self.send('ABSSCM', user_id, skill_id)
end
def send_item_consume(user_id, item_id)
self.send('ABSICM', user_id, item_id)
end
def send_damage_variables(char)
type = nil
variables = char.get_exchange_variables(RMXOS::Options::DAMAGE_VARIABLES)
if char.is_a?(Map_Actor)
id = (char == $game_player ? @user_id : char.user_id)
type = 'ABSADM'
elsif char.is_a?(Map_Enemy)
id = char.id
type = 'ABSEDM'
end
$network.send(type, id, variables.inspect) if type != nil
end
def send_enemy_death(enemy)
return if enemy.last_targeter == nil
if enemy.last_targeter == $game_player
id = $network.user_id
elsif enemy.last_targeter.is_a?(Map_OnlineBattler)
id = enemy.last_targeter.user_id
end
self.send('ABSBED', enemy.id, id)
end
def send_enemy_respawn(enemy)
self.send('ABSBER', enemy.id)
end
end
#==============================================================================
# Game_Enemy
#==============================================================================
class Game_Enemy
alias exp_blizzabs_rmxos_alias exp
def exp
result = exp_blizzabs_rmxos_alias
bonus = $network.party.size * RMXOS::Options::PARTY_EXP_BONUS
return (result * (100 + bonus) / 100 / ($network.party.size + 1))
end
alias gold_blizzabs_rmxos_alias gold
def gold
result = gold_blizzabs_rmxos_alias
bonus = $network.party.size * RMXOS::Options::PARTY_GOLD_BONUS
return (result * (100 + bonus) / 100 / ($network.party.size + 1))
end
end
#==============================================================================
# Map_Battler
#==============================================================================
class Map_Battler
attr_accessor :last_targeter
alias update_blizzabsrmxos2_alias update
def update
@blinking = 0
update_blizzabsrmxos2_alias
end
def get_exchange_variable_names
return (RMXOS::Options::EXCHANGE_VARIABLES |
RMXOS::Options::BATTLER_VARIABLES)
end
def in_screen?
return true
end
def damage_effect
if self.damage_display?
@battler.hp -= @battler.hpdamage
@battler.sp -= @battler.spdamage
user_damage_display
@battler.hpdamage, @battler.spdamage, @battler.damage = 0, 0, nil
return true
end
return false
end
end
#==============================================================================
# Map_Actor
#==============================================================================
class Map_Actor
alias update_blizzabsrmxos_alias update
def update
@blinking = 0 # disables blinking
update_blizzabsrmxos_alias
end
def get_exchange_variable_names
return (super | RMXOS::Options::ACTOR_VARIABLES)
end
def update_exchange_variables
if self == $game_player
changed = self.get_exchange_variables_changes
if changed.size > 0
self.send_exchange_variables(changed)
self.store_exchange_variables(changed)
end
end
end
def send_exchange_variables(variables = nil)
variables = super(variables)
$network.send_exchange_variables(variables) if self == $game_player
return variables
end
alias attack_effect_blizzabsrmxos_alias attack_effect
def attack_effect(character, _battler)
return false if !$network.gmaster
return attack_effect_blizzabsrmxos_alias(character, _battler)
end
alias skill_effect_blizzabsrmxos_alias skill_effect
def skill_effect(character, _battler, skill)
return false if !$network.gmaster
return skill_effect_blizzabsrmxos_alias(character, _battler, skill)
end
alias item_effect_blizzabsrmxos_alias item_effect
def item_effect(character, _battler, item)
return false if !$network.gmaster
return item_effect_blizzabsrmxos_alias(character, _battler, item)
end
alias use_attack_blizzabsrmxos_alias use_attack
def use_attack
result = use_attack_blizzabsrmxos_alias
if self == $game_player
variables = {}
variables['@ai|@act|@kind'] = BlizzABS::ACTAttack
variables['@ai|@act|@type'] = BlizzABS::ATTACK
self.send_exchange_variables(variables)
end
return result
end
alias use_skill_blizzabsrmxos_alias use_skill
def use_skill(skill, forced = false)
result = use_skill_blizzabsrmxos_alias(skill, forced)
if self == $game_player
variables = {}
variables['@ai|@act|@kind'] = BlizzABS::ACTSkill
variables['@ai|@act|@type'] = BlizzABS::SKILL
variables['@ai|@act|@id'] = skill.id
self.send_exchange_variables(variables)
end
return result
end
alias use_item_blizzabsrmxos_alias use_item
def use_item(item, forced = false)
result = use_item_blizzabsrmxos_alias(item, forced)
if self == $game_player
variables = {}
variables['@ai|@act|@kind'] = BlizzABS::ACTItem
variables['@ai|@act|@type'] = BlizzABS::ITEM
variables['@ai|@act|@id'] = item.id
self.send_exchange_variables(variables)
end
return result
end
end
#==============================================================================
# Map_Enemy
#==============================================================================
class Map_Enemy
attr_accessor :respawning
def get_exchange_variable_names
return (super | RMXOS::Options::ENEMY_VARIABLES)
end
def update_exchange_variables
return if !$network.gmaster
changed = self.get_exchange_variables_changes
if changed.size > 0
self.send_exchange_variables(changed)
self.store_exchange_variables(changed)
end
end
def send_exchange_variables(variables = nil)
variables = super(variables)
$network.send_enemy_exchange_variables(self.id, variables)
return variables
end
alias attack_effect_blizzabsrmxos_alias attack_effect
def attack_effect(character, _battler)
return false if !$network.gmaster
@last_targeter = character
return attack_effect_blizzabsrmxos_alias(character, _battler)
end
alias skill_effect_blizzabsrmxos_alias skill_effect
def skill_effect(character, _battler, skill)
return false if !$network.gmaster
@last_targeter = character
return skill_effect_blizzabsrmxos_alias(character, _battler, skill)
end
alias item_effect_blizzabsrmxos_alias item_effect
def item_effect(character, _battler, item)
return false if !$network.gmaster
@last_targeter = character
return item_effect_blizzabsrmxos_alias(character, _battler, item)
end
alias use_attack_blizzabsrmxos_alias use_attack
def use_attack
result = use_attack_blizzabsrmxos_alias
if result && $network.gmaster
variables = {}
variables['@ai|@act|@kind'] = BlizzABS::ACTAttack
variables['@ai|@act|@type'] = BlizzABS::ATTACK
self.send_exchange_variables(variables)
end
return result
end
alias use_skill_blizzabsrmxos_alias use_skill
def use_skill(skill, forced = false)
result = use_skill_blizzabsrmxos_alias(skill, forced)
if result && $network.gmaster
variables = {}
variables['@ai|@act|@kind'] = BlizzABS::ACTSkill
variables['@ai|@act|@type'] = BlizzABS::SKILL
variables['@ai|@act|@id'] = skill.id
self.send_exchange_variables(variables)
end
return result
end
end
#==============================================================================
# Map_OnlineBattler
#==============================================================================
class Map_OnlineBattler < Map_Actor
attr_reader :user_id
attr_reader :username
attr_reader :usergroup
attr_reader :guildname
attr_accessor :map_id
def initialize
super(0)
@battler = Game_Actor.new(1)
@cindex = nil
@locked = true
@ai.setup_group(BlizzABS::Alignments::ONLINE_GROUP)
@normal_speed = BlizzABS::Config::NORMAL_SPEED
refresh
end
def update
super
self.moving? ? @stop_count = 0 : @stop_count += 1
end
def check_action
return if !self.valid? || !@ai.act.valid?
battlers = ($game_map.battlers + $BlizzABS.battlers).find_all {|b|
b.valid?}
battlers.compact!
allies = []
enemies = []
confused = (self.restriction == 3)
negative, positive = @ai.negative, @ai.positive
negative, positive = positive, negative if confused
unless @ai.act.basic?
allies = battlers.find_all {|b| positive.include?(b.ai.group)}
end
enemies = battlers.find_all {|b| negative.include?(b.ai.group)}
enemies -= [self] if !confused
$BlizzABS.AI.normal_action(self, allies, enemies, @ai.act.basic?,
@ai.act.type, 0xFFFF, 0xFFFF, @ai.act.id, @ai.act.skill?,
confused, true)
@ai.act.delay = 0 if !@ai.act.defend?
self.reset_action
end
def can_act?
return false
end
def process_ai?
return false
end
def set_user_data(user_id, username, usergroup, guildname)
@user_id = user_id
@username = username
@usergroup = usergroup
@guildname = guildname
refresh
end
def evaluate(variables)
super(variables)
refresh
end
def battler(override = false)
return @battler
end
def send_exchange_variables(variables = nil)
end
# needed because of problematic polymorphism in Ruby when alias is involved
def attack_effect(character, _battler)
return super
end
# needed because of problematic polymorphism in Ruby when alias is involved
def use_attack
return super
end
# needed because of problematic polymorphism in Ruby when alias is involved
def skill_effect(character, _battler, skill)
return super
end
# needed because of problematic polymorphism in Ruby when alias is involved
def use_skill(skill, forced = false)
return super
end
# needed because of problematic polymorphism in Ruby when alias is involved
def item_effect(character, _battler, item)
return super
end
# needed because of problematic polymorphism in Ruby when alias is involved
def use_item(item, forced = false)
return super
end
def attack_consumption
$network.send_attack_consume(@user_id)
end
def skill_consumption(skill)
$network.send_skill_consume(@user_id, skill.id)
end
def item_consumption(item)
$network.send_item_consume(@user_id, item.id)
end
def update_ci(ind = nil)
end
def update_buffer(move)
end
def turn_toward(character)
end
def moveto(x, y)
pix = $BlizzABS.pixel
super(x / pix, y / pix)
end
end
Game_OnlineCharacter = Map_OnlineBattler
#==============================================================================
# Game_Map
#==============================================================================
class Game_Map
alias battlers_blizzabsrmxos_alias battlers
def battlers
return (battlers_blizzabsrmxos_alias | $network.map_players.values)
end
end
#==============================================================================
# Frame_Text
#==============================================================================
class Frame_Text
alias update_input_blizzabsrmxos2_alias update_input
def update_input
keys = RMXOS.change_keys
update_input_blizzabsrmxos2_alias
RMXOS.restore_keys(keys)
end
end
#==============================================================================
# Frame_Chat
#==============================================================================
class Frame_Chat
alias update_blizzabsrmxos_alias update
def update
keys = RMXOS.change_keys
update_blizzabsrmxos_alias
RMXOS.restore_keys(keys)
end
end
#==============================================================================
# Frame_ChatInput
#==============================================================================
class Frame_ChatInput
alias update_input_blizzabsrmxos_alias update_input
def update_input
keys = RMXOS.change_keys
update_input_blizzabsrmxos_alias
RMXOS.restore_keys(keys)
end
end
#==============================================================================
# Scene_Login
#==============================================================================
class Scene_Login
alias update_blizzabsrmxos_alias update
def update
keys = RMXOS.change_keys
update_blizzabsrmxos_alias
RMXOS.restore_keys(keys)
end
end
#==============================================================================
# Scene_Register
#==============================================================================
class Scene_Register
alias update_blizzabsrmxos_alias update
def update
keys = RMXOS.change_keys
update_blizzabsrmxos_alias
RMXOS.restore_keys(keys)
end
end
#==============================================================================
# Scene_Map
#==============================================================================
class Scene_Map
alias main_blizzabsrmxos_alias main
def main
main_blizzabsrmxos_alias
$network.try_deactivate_gmaster
end
alias transfer_player_blizzabsrmxos_alias transfer_player
def transfer_player
if $game_temp.player_new_map_id != $game_map.map_id
$network.try_deactivate_gmaster
end
transfer_player_blizzabsrmxos_alias
end
def initialize_selection
end
def process_selection
object, r, type, sprites = $game_temp.select_data
if $tons_version != nil && object.is_a?(RPG::Skill) &&
($tons_version >= 6.02 && $game_system.TARGET_EM_ALL &&
FULL_TARGET_IDS.include?(object.id))
targets = []
sprites.each {|sprite| targets.push(sprite.character)}
else
targets = [sprites[rand(sprites.size)].character]
end
return targets
end
def execute_selection(targets)
if targets.size > 0
$game_player.ai.target = targets[0]
case $game_temp.select_data[0]
when RPG::Skill then $game_player.use_skill($game_temp.select_data[0])
when RPG::Item then $game_player.use_item($game_temp.select_data[0])
end
end
$game_temp.select_data = nil
end
alias call_menu_blizzardrmxos_alias call_menu
def call_menu
if $game_temp.chat_active
$game_temp.menu_calling = false
$game_temp.menu_beep = false
return
end
call_menu_blizzardrmxos_alias
end
alias check_huds_blizzardrmxos_alias check_huds
def check_huds
minimap_button = $game_system.minimap_button
hotkey_button = $game_system.hotkey_button
hud_button = $game_system.hud_button
if $game_temp.chat_active
$game_system.minimap_button = false
$game_system.hotkey_button = false
$game_system.hud_button = false
end
check_huds_blizzardrmxos_alias
$game_system.minimap_button = minimap_button
$game_system.hotkey_button = hotkey_button
$game_system.hud_button = hud_button
end
alias update_hotkeys_blizzardrmxos_alias update_hotkeys
def update_hotkeys
update_hotkeys_blizzardrmxos_alias if !$game_temp.chat_active
end
end
Make a new file with an
.rb extension in the
Extensions folder of RMX-OS and copy-paste this script into it.
module RMXOS
def self.load_current_extension
return BlizzABS
end
module Data
GlobalMasterActivate_CLIENT_MAPID = 'Client \'CLIENT\' activate G-Master for map \'MAPID\'.'
GlobalMasterDeactivate_CLIENT_MAPID = 'Client \'CLIENT\' deactivate G-Master for map \'MAPID\'.'
GlobalMasterRelease_MAPID = 'Map \'MAPID\' has been released.'
PartyDisbanded = 'The party has been disbanded.'
PartyInvitation_PLAYER = '\'PLAYER\' has invited you to join a party.'
PartyInvited_PLAYER = 'You have invited \'PLAYER\' to join your party.'
PartyJoin_PLAYER = 'You have joined the party of \'PLAYER\'.'
PartyJoined_PLAYER = '\'PLAYER\' has joined the party.'
PartyNoJoin = 'You have not joined the party.'
PartyNoJoinPlayer_PLAYER = '\'PLAYER\' has not accepted the party invitation.'
PartyRemoved = 'You have left the party.'
PartyRemoved_PLAYER = '\'PLAYER\' has left the party.'
end
module Error
PartyFull = 'Your party is already full.'
PartyAlready_PLAYER = '\'PLAYER\' is already in a party.'
end
end
#==========================================================================
# module BlizzABS
#==========================================================================
module BlizzABS
VERSION = 3.02
RMXOS_VERSION = 2.04
SERVER_THREAD = true
IDENTIFIER = 'Blizz-ABS'
# START Configuration
MAX_ONLINE_PARTY = 4
GMASTER_TIMEOUT = 5 # after how much time an inactive time global master client should be released (you should set the PING_TIMEOUT value in RMX-OS to 1!)
SERVER_DISPLAY = false # show log in command prompt screen
LOG_FILENAME = 'logs/blizzabs.log' # leave empty if no log file should be created
DELETE_LOG_ON_START = true
# END Configuration
def self.initialize
@mutex = Mutex.new
@client_times = {}
@gmasters = {}
@capable_clients = {}
@battlers = {}
@dead = {}
if LOG_FILENAME != ''
File.delete(LOG_FILENAME) if DELETE_LOG_ON_START && FileTest.exist?(LOG_FILENAME)
RMXOS::Logs[IDENTIFIER] = LOG_FILENAME
end
end
def self.mutex
return @mutex
end
def self.main
while RMXOS.server.running
@mutex.synchronize {
self.server_update
}
sleep(0.01)
end
end
def self.server_update
time = Time.now
logged_in_clients = RMXOS.clients.get
old_clients = @client_times.keys - logged_in_clients
old_clients.each {|client|
@client_times.delete(client)
@capable_clients.delete(@capable_clients.key(client))
self.try_deactivate_gmaster(client)
if client.player.partyleader != ''
client.action.execute_party_remove(client.player.username, client.player.partyleader)
end
}
new_clients = logged_in_clients - @client_times.keys
new_clients.each {|client| @client_times[client] = time}
@capable_clients.keys.each {|key|
if time - @client_times[@capable_clients[key]] > GMASTER_TIMEOUT
client = @capable_clients[key]
@capable_clients.delete(key)
self.try_deactivate_gmaster(client)
end
}
(@capable_clients.values - logged_in_clients).each {|client| @capable_clients.delete(@capable_clients.key(client))}
map_ids = []
logged_in_clients.each {|client| map_ids.push(client.player.map_id)}
map_ids |= map_ids # removes duplicates
(@battlers.keys - map_ids).each {|map_id| @battlers.delete(map_id)}
(@dead.keys - map_ids).each {|map_id| @dead.delete(map_id)}
(@gmasters.keys - map_ids).each {|map_id| self.release_map(map_id)}
(map_ids - @gmasters.keys).each {|map_id| self.try_activate_gmaster(map_id)}
end
def self.client_update(client)
case client.message
when /\AABSGMD\Z/ # deactivate capable global master client
@capable_clients.delete(client.player.user_id) if @capable_clients.has_key?(client.player.user_id)
self.try_deactivate_gmaster(client, client.player.map_id) if client == @gmasters[client.player.map_id]
return true
when /\APNG\Z/ # client ping
if client.player.user_id != 0
@client_times[client] = Time.now
@capable_clients[client.player.user_id] = client
end
return false
when /\AMEN\t(.+)/ # enter map
map_id = $1.to_i
if @battlers.has_key?(map_id)
@battlers[map_id].each_key {|id|
client.send('ABSMEE', id, @battlers[map_id][id].get_exchange_variables)
}
end
if @dead.has_key?(map_id)
@dead[map_id].each {|id| client.send('ABSMED', id)}
end
return false
when /\AABSMEE\t(.+)\t(.+)/ # exchange variables for enemies
if @gmasters[client.player.map_id] == client
id = $1.to_i
variables = eval($2)
@battlers[client.player.map_id] = {} if !@battlers.has_key?(client.player.map_id)
@battlers[client.player.map_id][id] = Player.new(nil) if !@battlers[client.player.map_id].has_key?(id)
@battlers[client.player.map_id][id].evaluate(variables)
client.sender.send_to_map(client.message)
end
return true
when /\AABSBED\t(.+)\t(.+)/ # broadcast enemy death
if @gmasters[client.player.map_id] == client
id = $1.to_i
client.sender.send_to_map(client.message, true)
@dead[client.player.map_id] = [] if !@dead.has_key?(client.player.map_id)
@dead[client.player.map_id].push(id) if !@dead[client.player.map_id].include?(id)
end
return true
when /\AABSBER\t(.+)/ # broadcast enemy respawn
if @gmasters[client.player.map_id] == client
id = $1.to_i
client.sender.send_to_map(client.message, true)
@dead[client.player.map_id] = [] if !@dead.has_key?(client.player.map_id)
@dead[client.player.map_id].delete(id) if @dead[client.player.map_id].include?(id)
end
return true
when /\AABSADM\t(.+)\t(.+)/ # actor damage variables
if @gmasters[client.player.map_id] == client
client.sender.send_to_map(client.message)
end
return true
when /\AABSEDM\t(.+)\t(.+)/ # enemy damage variables
if @gmasters[client.player.map_id] == client
client.sender.send_to_map(client.message)
end
return true
when /\AABSACM\t(.+)/ # attack consume
if @gmasters[client.player.map_id] == client
user_id = $1.to_i
client.sender.send_to_id(user_id, 'ABSACM')
end
return true
when /\AABSSCM\t(.+)\t(.+)/ # skill consume
if @gmasters[client.player.map_id] == client
user_id = $1.to_i
skill_id = $2.to_i
client.sender.send_to_id(user_id, RMXOS.make_message('ABSSCM', skill_id))
end
return true
when /\AABSICM\t(.+)\t(.+)/ # item consume
if @gmasters[client.player.map_id] == client
user_id = $1.to_i
item_id = $2.to_i
client.sender.send_to_id(user_id, RMXOS.make_message('ABSICM', item_id))
end
return true
when /\AABSPIN\t(.+)/ # party invitation
username = $1
client._process_result(client.action.prepare_party_invite(username))
return true
when /\AABSPLE\Z/ # party leave
client.action.execute_party_leave
return true
when /\AABSPRM\t(.+)/ # party remove
username = $1
client.action.execute_party_remove(username)
return true
when /\AABSPME\t(.+)/ # party message
client.sender.send_to_party(RMXOS.make_message('CHT', $1), true)
return true
end
return false
end
def self.try_activate_gmaster(map_id)
return if @gmasters.has_key?(map_id)
clients = @capable_clients.values.find_all {|client| client.player.map_id == map_id}
return if clients.size == 0
client = clients[0]
client.send('ABSGMA')
@gmasters[map_id] = client
@dead[map_id] = [] if !@dead.has_key?(map_id)
if !@battlers.has_key?(map_id)
@battlers[map_id] = {}
client.send('ABSMDR')
end
message = RMXOS::Data.args(RMXOS::Data::GlobalMasterActivate_CLIENT_MAPID, {'CLIENT' => client.player.username, 'MAPID' => map_id.to_s})
self.log(message)
end
def self.try_deactivate_gmaster(client, map_id = nil)
if map_id == nil
@gmasters.each_key {|key|
if client == @gmasters[key]
map_id = key
break
end
}
end
return if map_id == nil
@gmasters.delete(map_id)
client.send('ABSGMD')
message = RMXOS::Data.args(RMXOS::Data::GlobalMasterDeactivate_CLIENT_MAPID, {'CLIENT' => client.player.username, 'MAPID' => map_id.to_s})
self.log(message)
self.try_activate_gmaster(map_id)
self.release_map(map_id) if !@gmasters.has_key?(map_id)
end
def self.release_map(map_id)
@gmasters.delete(map_id) if @gmasters.has_key?(map_id)
message = RMXOS::Data.args(RMXOS::Data::GlobalMasterRelease_MAPID, {'MAPID' => map_id.to_s})
self.log(message)
end
def self.log(message)
puts message if SERVER_DISPLAY
RMXOS.log('Log', IDENTIFIER, message)
end
end
#==========================================================================
# Player
#==========================================================================
class Player
IGNORE_VARIABLES.push('@battler|@damage')
IGNORE_VARIABLES.push('@battler|@hpdamage')
IGNORE_VARIABLES.push('@battler|@spdamage')
IGNORE_VARIABLES.push('@ai|@act|@kind')
IGNORE_VARIABLES.push('@ai|@act|@id')
attr_accessor :party
attr_accessor :partyleader
alias initialize_blizzabsrmxos_later initialize
def initialize(client)
initialize_blizzabsrmxos_later(client)
self.reset_party
end
def reset_party
@partyleader = ''
@party = []
end
end
#==========================================================================
# Action
#==========================================================================
class Action
TYPE_ABS_PARTY_JOIN = 1001
end
#==========================================================================
# Result
#==========================================================================
module RMXOS
class Result
ABS_PARTY_FULL = 1001
ABS_PLAYER_ALREADY_IN_PARTY = 1002
class << self
alias error_blizzabsrmxos_later error
end
def self.error(code, message)
result = Result.new(RMXOS::Data::ColorError)
case code
when RMXOS::Result::ABS_PARTY_FULL then result.message = RMXOS::Error::PartyFull
when RMXOS::Result::ABS_PLAYER_ALREADY_IN_PARTY then result.message = RMXOS::Error::PartyAlready_PLAYER
else
return error_blizzabsrmxos_later(code, message)
end
return result
end
end
end
#==========================================================================
# ActionHandler
#==========================================================================
class ActionHandler
def prepare_party_invite(username)
@args = {'PLAYER' => username}
return RMXOS::Result::ABS_PARTY_FULL if @client.player.party.size >= BlizzABS::MAX_ONLINE_PARTY - 1
check = RMXOS.server.sql.query("SELECT COUNT(*) AS count FROM users WHERE username = '#{RMXOS.sql_string(username)}'")
hash = check.fetch_hash
return RMXOS::Result::PLAYER_NOT_EXIST if hash['count'].to_i == 0
client = RMXOS.clients.get_by_name(username)
return RMXOS::Result::PLAYER_NOT_ONLINE if client == nil
return RMXOS::Result::PLAYER_NOT_ON_MAP if client.player.map_id != @client.player.map_id
return RMXOS::Result::ABS_PLAYER_ALREADY_IN_PARTY if client.player.party.size > 0
# prepare invitation
sender_messages = Action::MessagePack.new(RMXOS::Data::PartyInvited_PLAYER,
'', RMXOS::Data::GuildNoJoin_PLAYER, @args)
receiver_messages = Action::MessagePack.new(self.make_accept_message(RMXOS::Data::PartyInvitation_PLAYER),
RMXOS::Data::PartyJoined_PLAYER, RMXOS::Data::PartyNoJoin, {'PLAYER' => @client.player.username})
self.create_interaction(Action::TYPE_ABS_PARTY_JOIN, sender_messages, [client], @client.player.user_id, receiver_messages)
return RMXOS::Result::SUCCESS
end
def execute_party_join(action)
user_id = action.data
leader = RMXOS.clients.get_by_id(user_id)
return RMXOS::Result::NO_ACTION if leader == nil
leader.player.party |= [@client.player.username]
@client.player.party = leader.player.party.clone
@client.player.partyleader = leader.player.partyleader = leader.player.username
@client.send('ABSPIN', leader.player.username, leader.player.party.inspect)
message = RMXOS::Data.args(RMXOS::Data::PartyJoined_PLAYER, {'PLAYER' => @client.player.username})
joinMessage = RMXOS.make_message('ABSPIN', leader.player.username, leader.player.party.inspect)
message = RMXOS.make_message('CHT', RMXOS::Data::ColorOk, 0, message)
RMXOS.clients.get_in_party(@client).each {|client|
client.send(joinMessage)
client.send(message)
client.player.party = leader.player.party.clone
}
return RMXOS::Result::SUCCESS
end
def execute_party_leave
if @client.player.partyleader == @client.player.username # leader left, disband party
clients = RMXOS.clients.get_in_party(@client, true)
clients.each {|client|
client.send('ABSPRE')
client.send_chat(RMXOS::Data::ColorInfo, RMXOS::Data::PartyDisbanded)
client.player.reset_party
}
return
end
clients = RMXOS.clients.get_in_party(@client)
@client.send('ABSPRE')
@client.send_chat(RMXOS::Data::ColorInfo, RMXOS::Data::PartyRemoved)
@client.player.reset_party
leaveMessage = RMXOS.make_message('ABSPRM', @client.player.username)
message = RMXOS::Data.args(RMXOS::Data::PartyRemoved_PLAYER, {'PLAYER' => @client.player.username})
message = RMXOS.make_message('CHT', RMXOS::Data::ColorOk, 0, message)
clients.each {|client|
client.send(leaveMessage)
client.send(message)
client.player.party -= [@client]
}
end
def execute_party_remove(username)
client = RMXOS.clients.get_by_name(username)
client.action.execute_party_leave if client != nil
end
alias execute_custom_yes_blizzabsrmxos_later execute_custom_yes
def execute_custom_yes(action)
return case action.type
when Action::TYPE_ABS_PARTY_JOIN then self.execute_party_join(action)
else
execute_custom_yes_blizzabsrmxos_later(action)
end
end
alias execute_custom_no_blizzabsrmxos_later execute_custom_no
def execute_custom_no(action)
return case action.type
when Action::TYPE_ABS_PARTY_JOIN then RMXOS::Result::SUCCESS
else
execute_custom_no_blizzabsrmxos_later(action)
end
end
end
#==========================================================================
# ClientHandler
#==========================================================================
class ClientHandler
def get_in_party(current, including = false)
clients = RMXOS.clients.get.find_all {|client| client.player.partyleader == current.player.partyleader}
clients.delete(current) if !including
return clients
end
end
#==========================================================================
# Sender
#==========================================================================
class Sender
def send_to_party(message, including = false)
self.send_to_clients(RMXOS.clients.get_in_party(@client, including), message)
end
end
InstructionsIn the script in the first comment.
CompatibilityRequires Blizz-ABS to work.
Requires RMX-OS to work.
Credits and Thanks
- Boris "Blizzard" Mikić
- Special Thanks to Ryex for providing the basecode for the fix for the controls conflict between Blizz-ABS and RMX-OS
Author's NotesRemember to activate the server extension by adding the server extension filename to the list in the configuration.
If you find any bugs, please report them here:
http://forum.chaos-project.com
That's it! N-Joy! =D
yay blizz finally made it!
You work fast o.o
GO GO GO :D
Quote from: Blizzard on January 17, 2010, 05:02:36 pm
This script allows the proper usage of Blizz-ABS in combination with RMX-OS.
The current version of the script is not fully functional. Enemies on the map are not controlled globally and it's not possible to see other players attacking enemies. This version also does not require the server extension.
And here i was getting all excited! :P
Quote from: Ryexander on January 17, 2010, 07:25:39 pm
Quote from: Blizzard on January 17, 2010, 05:02:36 pm
This script allows the proper usage of Blizz-ABS in combination with RMX-OS.
The current version of the script is not fully functional. Enemies on the map are not controlled globally and it's not possible to see other players attacking enemies. This version also does not require the server extension.
And here i was getting all excited! :P
At least people will shutup about it now.
@fugibo: why did u change ur name?
@Ryex: its because its only version 0.8
Numbers have nothing to do with anything...
GG's Modded Menu .98 game_guy
Advanced Time and Environment System (ATES) 0.4 Blizzard
Key Simulator 0.1 Fantasist
Animated BlizzABS HUD (MOG) 0.9 Moghunter, Subsonic Noise, Blizzard
Those are all under 1.0 and work well XD
Besides... it's 0.7
Pretty much what the version 0.x is that all planned features are not yet implemented.
G_G's got it right.
Yeah i hadnt been on recently but i was goin to say the exact thing
good work blizzard it is a awesome peace of work
this working in conjuntion with the globel switches
is a must tho you will need 1 swich per monster for the enter game
XD i got alot of work aheah of me
how do i setup with extension in the config file, i added the .rb files with script in just when i enter extenstion server wont stay open EXTENSIONS = [enter here?]
i.e.
filename:
config:
EXTENSIONS = ['Blizz-ABS']
or:
EXTENSIONS = ["Blizz-ABS"]
I put the second in the second row so you can edit it easier like this:
EXTENSIONS = [
'Blizz-ABS', 'blabla', 'some other extension'
]
At least that's how I prefer it. Even if you accidentally add a comma after the last extension, RMX-OS actually ignores the non-existing entries.
Not sure if it has something to do with The addon or not but its this script :'(
This happens when i move the character.
QuoteScript 'Blizz-ABS RMX-OS' line 161: NoMethodError occurred.
undefinedmethod 'creat_character_data' for
#<RMXOS::Network:0x81bf668
Any ideas?
Line 161 is
data = create_character_data(actor)
http://forum.chaos-project.com/index.php/topic,23.0.html
Right order?
Newest versions of Blizz-ABS, RMXOS, and this script?
Yes i have RMX-OS then the ABS 1,2,3 then ABS RMX-OS script. I got fed up. I took it off. I have to sit down when i have time and dedicate a few hours to actually customizing the script so it wont interfere with typing in the chat window. decided to just get small things working like a new menu and things like that.
That happens because you didnt add the extension. Place the extension script in a file called abs.rb.
Go into the config for rmx-os and in the extensions option add 'abs' with quotes
i have the extension. its called Blitz-ABS. maybe i didn't copy off it though. Ill have to double check that now. When i get home see if my mysql fixes an issues ill move back to the abs.
Ive added all scripts for abs i can get ingame i walk a little and get an error in controller script on this line
def send_actor_data(actor)
data = create_character_data(actor)
#self.send("MAA#{data}")
end
end
when I log in I end up in the top left corner of the map and thats not where I was when I entered that map D:
Quote from: game_guy on February 06, 2010, 09:20:29 am
when I log in I end up in the top left corner of the map and thats not where I was when I entered that map D:
Re create your game save table. Adding this jacks up your save state. Should be fixed after you delete it.
Quote from: whitespirits on February 06, 2010, 09:19:44 am
Ive added all scripts for abs i can get ingame i walk a little and get an error in controller script on this line
def send_actor_data(actor)
data = create_character_data(actor)
#self.send("MAA#{data}")
end
end
*points to the note that says that allies are not supported*
So same error different numbers this time
Orginal error
QuoteScript 'Blizz-ABS RMX-OS' line 161: NoMethodError occurred.
undefinedmethod 'creat_character_data' for
#<RMXOS::Network:0x81bf668
new error
QuoteScript 'Blizz-ABS RMX-OS' line 161: NoMethodError occurred.
undefinedmethod 'creat_character_data' for
#<RMXOS::Network:0x79a9b30
Yes scripts are right order, yes I have the extension loaded. This error happens when i walk.
I get the same error, RMX-OS just loves me ;D, I've only got one person in my party, caterpillar is turned off, the moment I move, I get the line 161 error.
I wonder if its because of the 8 direction movement? Ill have to see.
Nope not because of 8 directions. Has to do with something. :'(
Did you reset the SQL data?
Multiple times. or do i need to delete the entire database. I've just been resetting save data.
I recreated the entire database. Still get the same error after i move my character.
(sry guys who had a account on my dev server but like it said database would be re constructed now and then.)
Why do you people don't realize that it's a typo and that you should just change it to CREATE instead of CREAT?! -_-
BTW, it's create_actor_data in the script. I don't know how you managed to break it, but you did break it.
Also, I have said at least 50 times by now that this happens ONLY WHEN YOU HAVE MORE THAN ONE PERSON IN THE CATERPILLAR. And there is more than one person in the caterpillar (due to placeholder actors) if you didn't set PARTY_SIZE to 1.
-________-
Quote from: Blizzard on February 11, 2010, 02:19:22 am
Why do you people don't realize that it's a typo and that you should just change it to CREATE instead of CREAT?! -_-
I feel stupid for not realizing the spelling mistake. Maybe I should stop trying to work with huge scripts at like 5 am.
Also With the caterpiller, i have it unchecked in the config program should i check it and set it to 1?
Either the spelling mistake or uncheck the caterpillar option and set the party size to 1. I recommend the latter. The next version of the plugin won't have this problem at all.
And yeah, scripts at 5 AM... >.< That's a thing I have stopped doing. For over a year now I usually try to get a normal amount of sleep. xD It can make a huge difference.
How can we expect you to make a typo, you're the greatest scripter of all time, you're not allowed to make typos.
The typo isn't in the script. :P IDK how it came to be, but maybe somebody accidentally deleted a character. O_o I didn't edit this script since I released it (except for the first two crashes reported).
But I'm just human anyway. :P
Well it would seem turning on Caterpillar, reducing the maximum party to 1, and then turning caterpillar back off in the config application fixes the error. Not sure if this is related, but I tried adding the Global Switches and Variables script as well which resulted in my game not going anywhere after I clicked login.
Course, things between RMX-OS and me have been going oh so smoothly ever since I tried using it... /sarcasm
I'm not sure. The most recent versions of all scripts should work together. Have you tried deleting and creating the database?
I'll try that when I get back to working on it. Also, anyway to disable the custom controls of Blizz-ABS while you're on the login page? I've come to realize I can't use the letters wasd or press backspace...
You'll have to use arrow buttons. I have encountered the same problem. I might see what if I can do something through the plugin itself.
Quote from: crzyone9584 on February 06, 2010, 12:38:30 pm
Quote from: game_guy on February 06, 2010, 09:20:29 am
when I log in I end up in the top left corner of the map and thats not where I was when I entered that map D:
Re create your game save table. Adding this jacks up your save state. Should be fixed after you delete it.
Doesnt work...
EDIT: Another bug..well two
Well me and a friend were testing it out, both had the same exact client with only one map. We were both connected but didn't see each other.
Other bug when I died I got a gameover. Re-logged in and it automatically went to game over again. D: I know I just have to mess with the coding a bit to fix it but just thought I'd point it out.
You should turn off auto-game over then. :P
If you didn't see each other, then something could be wrong with RMX-OS. I definitely had some weird behavior myself. It will probably all be fixed in the final version.
So with the final version Blizz what may we expect. I know you said PVP would be implemented. And I do believe somewhere I read that right now you can't see others attack the monsters. Are there going to be support for teams and the catepiller script?
Online party yes, caterpillar most probably no. At least not in version 1.0 which should be up during the day or tomorrow.
Quote from: Blizzard on February 15, 2010, 05:04:34 am
Online party yes, caterpillar most probably no. At least not in version 1.0 which should be up during the day or tomorrow.
How will the party system work? Will the leader be the one controlling what map people are on? Or will it be if one member goes to one map then all members go to that map?
Also the only reason I was wondering about the caterpillar is because I was hoping to put in a system like Guild Wars. Where you could have like 3-4 npc characters join you on a quest/run/battle. But that would require the caterpillar script to work so that they would follow you.
But that is awesome progress your making blizzard. Keep up the great work.
Map control is separate. One player is assigned as "GMaster" who then takes over all the Blizz-ABS processing. That way you don't need to have the server run a customized copy of RMXP to be able to process stuff.
The party system is simple.
1. When you are not in a party or the party leader of an already existing party, you can request somebody to join your party. If you are not in a party yet, that will make you the party leader.
2. You can leave a party anytime.
3. As party leader you can kick party members.
4. As party leader you can disband the entire party. In that case the remaining party members can form a new party among themselves.
5. Party members that are on the same map (and also within a certain distance) will get EXP from monsters killed by other party members.
I might add later something like "follow party leader" so people don't have to walk by themselves all the time. It's a bit more complicated to add that and I need to finish the plugin today so I'm leaving that out for now.
Quote from: Blizzard on February 15, 2010, 05:32:33 am
5. Party members that are on the same map (and also within a certain distance) will get EXP from monsters killed by other party members.
Thats good to know. I was actually about to edit my other post and ask about how the EXP be separated.
For the Experience will there be a way to limit how much each character gets. Like to help prevent power-leveling. So that a level 1 gets in a party with people who are level like 10 and then they protect that level one to level them faster by going to a map that has a higher level monster. So in theory would it be possible to limit the exp. so that if a member is x levels lower then the leader then they get like x amount of experience so that there is no power-leveling.
(sry if thats hard to understand)
I know what you mean, but I'm leaving that up to the game developer. You can always limit map entrance depending on levels so weak players can't enter maps with strong monsters.
Quote from: Blizzard on February 15, 2010, 02:59:22 pm
I know what you mean, but I'm leaving that up to the game developer. You can always limit map entrance depending on levels so weak players can't enter maps with strong monsters.
Never thought about making it so that lower levels couldn't go to a map. Thanks for the idea.
Version 1.0 is out. :3
Can't wait to try this out tomorrow afternoon when i get home from my morning classes. Just need to find someone to come play with me so i can kill them tomorrow ^_^
I expect that you will quickly encounter bugs and problems. :/ I was having odd problems myself that simply vanished at some point. I don't think they vanished because they were fixed. :/
Quote from: Blizzard on February 16, 2010, 02:47:44 am
I expect that you will quickly encounter bugs and problems. :/ I was having odd problems myself that simply vanished at some point. I don't think they vanished because they were fixed. :/
Well I'll be sure to report any problems here. But I'm working on the weapons and items database right now so i can finally get some content going.
BTW, I tested this with Blizz-ABS's Visual Equipment and it's working. :3
As soon as I registered this popped up.
(http://i678.photobucket.com/albums/vv143/GameGuysProjects/erno.png)
I have Caterpillar false, and set MAX_PARTY to 1
What am I doing wrong?
EDIT: It seemed to only pop up once or twice, but the times it didn't the enemies didn't do anything. They just stand there.
Ok, are you people even using RMX-OS 1.08? It's clearly there.
*double posts*
Ok, the full version is up. It's 1.01 because I forgot to post the server extension of 1.0. G_G couldn't get it running and I thought the extension was messed up so I refined the coding a bit. Then I realized that I didn't post the extension. And finally somebody else has the real version 1.0 already so this can't be version 1.0 as well. So it's 1.01. *makes no sense* :V:
So i noticed my position on the map is saved but my level ain't. Am i missing something or is it a bug?
Also having the same problem G_G is having but mines a different line and different error code. When it shows game crashes and when it doesn't the abs wont work. :'( sad sad day.
QuoteScript 'Blizz ABS RMX-OS Addon' line 542: NomethodError occurred.
undefined method 'create_character_data' for
#<RMXOS::Network:0x78ca230
And yes i looked create is spelled right in this error unlike the last error i had lol.
Quote from: game_guy on February 16, 2010, 08:48:57 am
As soon as I registered this popped up.
(http://i678.photobucket.com/albums/vv143/GameGuysProjects/erno.png)
I have Caterpillar false, and set MAX_PARTY to 1
What am I doing wrong?
EDIT: It seemed to only pop up once or twice, but the times it didn't the enemies didn't do anything. They just stand there.
Its still only doing it once or twice. And when it doesn't do it, enemies still aren't doing anything.
I included the extension as well. But still nothing.
Blizzard can you please upload a demo with this plugin, i have added an some times pvp works sometimes it dosent and monsters arnt global :(
Keep in mind that there is lag between clients. You can't get results immediately and it's possible that a monster has moved until your attack data actually got to the client that processes everything.
@G_G & crzy: Look, guys, I don't know why, but the method is defined in my scripts and it's not in yours. I'll put up 1.09 somewhere today or tomorrow.
Quote from: Blizzard on February 17, 2010, 02:24:40 am
Keep in mind that there is lag between clients. You can't get results immediately and it's possible that a monster has moved until your attack data actually got to the client that processes everything.
@G_G & crzy: Look, guys, I don't know why, but the method is defined in my scripts and it's not in yours. I'll put up 1.09 somewhere today or tomorrow.
Me either. To be honest I don't know RGSS. Hince my problem with me trying to save things that won't save.
Save data doesn't differ much from the default RMX-OS. You should check if the game saves normally with just RMX-OS.
thanks blizzard im really looking forward to 1.09
Blizz, I tried searching for the method, using CTRL + SHIFT + F. The only line I found it was in the plugin.
As I said, it seems that the method is missing in 1.08. All versions of 1.08 that I have don't have it defined. It must've been a mod that I did for 1.09 so I'll release it later today.
ver 1 08 is causing a problems with the server client logging users out wen they dissconect
I updated the script, version stays the same. It's supposed to work with RMX-OS 1.09, not 1.08 so the version requirement is pretty much the only thing that was changed.
it seems to be working pretty well. Few minor bugs. ANy other player on the map lags around when moving. No actual lag in the game.
When you kill an enemy or two and open the menu once, go back, and open the menu again you'll see the enemies sprites partially faded away and when you leave the menu they'll dissappear as if they were just destroyed
Also I killed all enemies in one map, made sure respawning was off, yet I was getting hit with some unknown force.
ok some of my enimys arnt working properly with this ver
It was a miracle they were working with an older version at all.
its really good! abs in and workin, is it possible to heal other players?
Quote from: whitespirits on February 17, 2010, 08:31:27 pm
its really good! abs in and workin, is it possible to heal other players?
The only way I would think so (and not even 100% sure it'd work) is if you had PvP on and had a spell with a negative power that scopes one enemy.
Oh shit! I just remembered that I forgot to properly implement that you can heal party members! xD
sometimes enemys dont move and i reset server an they work again, also i dont have hp bars for enemys
Quote from: whitespirits on February 18, 2010, 09:18:04 am
sometimes enemys dont move and i reset server an they work again, also i dont have hp bars for enemys
For hp bars are is it enabled through the abs config?
thanks cry
Quote from: whitespirits on February 18, 2010, 10:33:10 am
thanks cry
Just a side note whitespirits all visual and animated and anything to due with the abs can most likely be found in the abs documentation. Check it out.
@blizzard script is working great. just need to test out pvp and see how that works with the server ^_^
about 31 houers and 42 minuts my blizz abs enimys quit moving and working corectly
i am using the newest ver of rmx-os and blizzabs controler
have you checked the server box to be sure there are not any errors?
It's probable that the G-Master on the map wasn't assigned at one moment. For now you can fix that by making everybody leave and re-enter the map.
Hey when is healing being added to this and also are global item drops working? so that all players can see loot on floor
Quote from: Champion Blizzard on January 17, 2010, 05:02:36 pm
Quote# What is different:
...
# - Item / Gold Drops are disabled. The actor who killed the enemy will get
# the item reward. EXP and gold rewards are shared among party members
# where each party member adds a specific amount to the gained EXP.
# Remember that items can be traded so a shared item reward is unnecessary.
thanks for reminder :)
i have a sugestion for this wat if you could limit pvp to certen maps like
Ew...
Last hit item rewards are AWFUL
There'd be soooo many kill stealers .______.
I like the item going to the actor who does the most dmg to a monster...
Just my thoughts though
That's complicated to program because I've had to keep track of the damage each character does. It's way too custom to be part of a generic system.
just an idea but can't you not do it that the item go's to the one thats hits first and not last?
Same thing. You need to remember who did the first strike. And if the player has left the map, the game will crash because in the new map that enemy doesn't exist.
good point.. did not think that far ahead :S
Experience does that to you. xD
me an my friend are playing online on my server and a couple of issues, some times on a map we will kill a mob stand on the map an the monster will respawn invis an attack us we have to reneter map to see, also we cant see animations, like swords etc, and sometimes we cant both attack
any ideas guys|?
on respawn monsters are invisible :( whats causing this?
BUMP
You don't bother reading the topic, I don't bother giving you an answer.
um... Blizz? I looked through the entire topic and I saw at least one report of this bug by G_G but no answers from you...
i have checked it alot and cant see anything related?
Quote from: Professor Ryexander Elm on March 25, 2010, 12:12:58 pm
um... Blizz? I looked through the entire topic and I saw at least one report of this bug by G_G but no answers from you...
I said that I am aware of this bug and that I will fix it.
I've seen whitespirits ask questions that were answered on the same page already.
thanks blizzard sorry for misunderstanding
my blizz abs enimys quit moving and working corectly
i am using the newest ver of rmx-os and blizzabs controler
Quote from: Champion Blizzard on February 19, 2010, 02:38:28 am
It's probable that the G-Master on the map wasn't assigned at one moment. For now you can fix that by making everybody leave and re-enter the map.
i did that and they are still not moving also it dose this wen thare is only 1 user connected thay quit moving it seems that it stops logging the users out
so you are unable to log back in
Somebody was supposed to help me test that stuff the other day, but didn't respond up on MSN. Sorry, I can't do much for now since I can't test it alone with one PC.
test it on my server if u can
Quote from: Champion Blizzard on March 31, 2010, 02:42:21 am
I can't test it alone with one PC
I have a server myself, obviously.
well if you need a second place to test why dont you join shellium.org communality mmorpg project
ill let you have acess to our test server it will only hold 1 or 2 pepol tho you will need to get a shellium shell so the devs can identify who has access to what XD
if you need me i can test
noticed somethin today i left game open few days and after a while the abs controlled npcs stop moving, attacking, and are unattackable, all that is there from abs is health, is this a noted bug?
yes it is a bug XDglad to see some 1 else finly noticed it XD
blizzard can you post a copy of the older ver so wen bugs like theas occur we can revert a version
un till a fix can be maid please
I don't have the old version anymore.
darnet o well i geuss i should kick my self in the ass for not saving a back up copy :^_^':
wait, how exactly do you reset the mysql database? Do you have to redownload it?
Quote from: Wizered67 on April 07, 2010, 04:30:08 pm
wait, how exactly do you reset the mysql database? Do you have to redownload it?
Go to your save data table and empty it.
Quote from: crzyone9584 on April 07, 2010, 06:33:17 pm
Quote from: Wizered67 on April 07, 2010, 04:30:08 pm
wait, how exactly do you reset the mysql database? Do you have to redownload it?
Go to your save data table and empty it.
and how exactly do you get to this table to empty it?
Quote from: Wizered67 on April 07, 2010, 07:46:05 pm
Quote from: crzyone9584 on April 07, 2010, 06:33:17 pm
Quote from: Wizered67 on April 07, 2010, 04:30:08 pm
wait, how exactly do you reset the mysql database? Do you have to redownload it?
Go to your save data table and empty it.
and how exactly do you get to this table to empty it?
Is the mysql datatable on your own computer or is it hosted somewhere? Also what type of program are you using to manage it? phpmyadmin or something else?
its hosted on my computer. and when you ask what i manage it with, do you mean what I downloaded for the mysql database management part?
yes
ok, I figured out what you meant. So do I flush the table?
Quote from: Wizered67 on April 08, 2010, 06:54:59 pm
ok, I figured out what you meant. So do I flush the table?
Yes flush your save table.
is thare a eta on how long it is going to take for the next fix to be maid
so i can give my users a idea on how long thay are going to have to whate un till thay can play the game agane
---------------------------
Eris online
---------------------------
Script 'Blizz-ABS Controller for RMX-OS' line 765: NoMethodError occurred.
undefined method `damage' for nil:NilClass
---------------------------
OK
---------------------------
with the newest ver of rmx os
did you get the new version of the blizz abs controller?
i keep getting an undefined RMXOS::Options::ALLOW_POSITION_INCONSISTENCY error the server is also crashing when i join a party log file says
2010-05-19 15:56:34 UTC; 2 (nathan) - Error:
undefined method `values' for #<Array:0x1290d60>
./Extensions/Blizz-ABS.rb:381:in `get_party_clients'
./Extensions/Blizz-ABS.rb:314:in `execute_party_join'
./Extensions/Blizz-ABS.rb:350:in `execute_yes'
./Data/Client.rb:477:in `check_normal_commands'
./Data/Client.rb:50:in `handle'
./Data/Server.rb:253:in `block in run'
IDK why, but the first post didn't have the actual latest version. I fixed it. Get the plugin and extension script from the first posts again and it should work fine.
Is there any particular reason this script would drop an undefined nil class error in regards to ".has_key?"
Randomly when dawdling with the client side of the rmx-os, I will get that error. I suspect its because I add more to the game, but I'm not even sure what it means.
So I'm doing the testing of this on two machines, right? Well...
If I drag a player onto a map with enemies, it functions fine.
When a second player enters the map, the second player can't seem to do anything.
They can move, and hit the attack button, and the enemies move, but the attacking just doesn't werk.
Whats more, is that when the player that originally entered the map and was able to attack, etc, when he LEAVES the map, all enemies become inanimate.
I thought this might be related to the prior listed bug of enemies stopping responding after long periods of time, but this instance can be recreated in like, 15 seconds after making an account.
X_X Am I the only one having this issue?
--J
Best you update all your scripts first. I did a few changes lately after all.
Even after upgrading both RMX-OS and the Blizzcontroller and the Blizz-ABS to the MAX, its still there.
One player enters, and the enemies are active, a second player enters and it looks like the enemies are updating one way on the first player's screen, and another way on the second player's screen, however server only responds to enemeis being hit on the player 1's screen... (ie: if player2 walks up to an enemy that is in the upper right corner of the map on player1's screen, but isn't on player2's screen, player2 can still hit said "invisible" ghosty, and be hit back) if player1 at any point decides to leave the map, all enemies lose activity and just sit there. If player1 comes back, enemies are still dead rocks sitting on the field. All players seem to need to leave the field and come back in order for it to be 'correct'.
current versions (up-to-date, right?)
rmxos=1.13
blizzabs=2.79
blizzcon=1.02
And after a bit of tinkering with the idea of killing enemies on one screen with the other player instead, I gave up and decided to leave the map and it popped an error, something about undefined methods for 'x' in the Game_Event script. Hmm.
(http://i47.tinypic.com/28bb9zo.png)
Also, I discovered that the err, Exp_Factor script, using enemy exp to indicate levels and making all EXP fixed EXP when gained, well, I noticed while I was killing monsters like stated above, that both players on the map were gaining EXP from this, even though they weren't in a party.
Sticking between ABS and ABS-Controller resolved this issue. derr >.<
And as stated in prior posting, the exact error in regard to the has_key? thing:
_________________________________________________
Client 2 (0002) at TIME UTC has caused an error:
undefined method `has_key?' for nil:NilClass
./Extensions/BlizzABS-Controller.rb:136:in `client_update'
./Data/Client.rb:43:in `block in handle'
./Data/Client.rb:43:in `each_value'
./Data/Client.rb:43:in `handle'
./Data/Server.rb:258:in `block in run'
_________________________________________________
Yep. Sorry to complain a whole lot. I just want it to work, and even though it seems to work for everyone else, these issues came up when rmxos was like only 1.02 version or whatever, and its still coming up. Perhaps it means >I'M< doing something wrong?
--J
Mabye database corruption. Try wiping your database.
Or simply register 2 new accounts if the problem persists with the new accounts (and ONLY the new accounts), it's not a database problem.
Its happened to me a couple of times. I just reset everything, set everything back up and did it, and it'll still persist.
I'll take a look at it then.
jragyn00 you hit the money. I forgot to mention this error, if I didn't already.
This happens to me ALL the time. (to my brother and I)
But its good that that error is being examined.
When I figure out a way to make RMX-OS more stable, then I can figure out a way to stop this from happening.
I'm just glad there is an active developer working on this ^^
I love the idea of being able to take this online and multiplayer, and when its functional enough to werk with blizzABS, It'll be time for me to shine :D
Hey Blizz, thanks for looking into it.
I'd help if I could, but all I can offer is running a client if that helps, I can't host a server at the moment that will allow for people outside my LAN to play :( My router is busted-ish.
--J
When I use your visual equipment script with this and I open multiple accounts at the same time, it usually only shows the equipment on everyone on one of the accounts AT FIRST and then eventually on all of them......
I'm not sure I understood what you said. You're saying that it shows the equipment on everyone and "then eventually on all of them". What?
I'm sorry about being unclear. I'll get back to you on it once I do a little more testing.
Also, is there anyway to avoid the whole problem where people can PvP you while you're in the menu?
You should get an on-map menu. Action MMOs are not intended to have menus that freeze the game.
How would I do this? Also, I thought of an alternet way of automatically having the player defend when they go to the menu. How would I do this though
ok then. Do you know if any exist?
I've seen a few, just google.
what should I search for?
EDIT:
Ok, well, I did some testing today and I have the results:
- Sometimes the players name will appear in the middle of them instead of above
- Sometimes visual equipment will stop working temporarily
- Sometimes the damage doesn't show up and the other player doesn't take damage when I hit them with shuriekn in pvp
- I'm not sure if this is a glitch, but it seems like I'm getting all of the errors of files missing isntead of the client....
by Blizz: Don't double post, use the EDIT/MODIFY button.edit: Sorry about double posting. Also, when I said that I was getting file missing errors, I know what it means, but I got them all INSTEAD of the client. For example, if the other person playing attacked and there was no file for it, I got it instead of them.
edit: found one more thing. Sometimes another players sprite isn't removed until you go to the menu....
Don't double post, use the EDIT/MODIFY button.
I am aware of the bugs.
If you get file-missing errors, you have some files missing obviously.
hi, sorry to be annoying, but is there anywa to turn off pvp on specific maps?
Turn off Blizz-ABS.
Is it possible (probably not) to make certain monsters not processed globaly (for example, i don't want players teaming up on the final boss)
You need so-called instance dungeons which currently isn't supported.
Do you plan on supporting them ever?
I could ask you the same question. Why don't you just make a server extension?
wouldn't you pretty much have to turn the maps into array of the same map so there would be more than 1 then have it check each map in the array for 1 without the max amount of players in it.
It's not that simple. The server needs to know on which map each player is located.
i wasnt actually saying it was simple but i was just asking so the server would have to go through each maps array and update which would probably make the server lag more
virtual maps.
ie have the player transfer to a map ID that doesn't exist ie. map 100000 but have the client interpret map ids over a set value as existing maps
ie the client is tole map id 100000 but when it goes to pull data to display the map it uses map data for map id 1. the client tells the server it is on map 100000 and the server tells other players that the client is on map 100000 but the client is using data for map 1.
I've been thinking about the idea for a while now. the server would need and extension that kept track of virtual maps. the way it could work is if the client knew that a map id over a set value was supposed to be virtual so it queries the server for which id it should use to pull map data. the extension keeping track of virtual maps uses the virtual map the client sends and sends back the id of the appropriate map data.
Yes, I was thinking of something similar. The client doesn't even have to know that he's in a virtual/private/instance map.
Party members (when using Blizz-ABS) should be able to enter a map together without all other players.
i have a system that is working right now without an extension i just need to come up with a method for the party right not it checks 1000 maps to see if any 1 is in that map if they are it checks the next 1 but right now the map can only hold 1 person before it sends the next player to the next map i can make it hold more easily but im not sure the best method to have all the party members go to the same map that might need an extension
You can't make it work without an extension. The server synchronizes players and needs to know where they are. I'm not saying it's impossible to make it work without an extension, but it's not practical to make it work without an extension.
When you have only one player per map, you don't even need a server. That defeats the whole purpose of an online server.
the way i made it i can limit the amount of players it doesn't necessarily have to be 1 i messed with the map setup so that even tho your map id is between 1000-1999 it still loads data from 1
edit also you can setup certain maps to be created normally
But then you can only have 2 instance maps at the same time. i.e. 45 and 1045.
I use return ((Id * 1000)...(id * 1000) + 999) that's the range I divide it by 1000 to get the original I'd back
What if somebody uses a script to have more than 1000 maps? -_-
well i could just add another 0 and make it *10000 here is the script i have made so far
module Virtual_Maps_Config
def self.regular_maps
return []
end
def self.max_players
return 100
end
def self.map(id)
id /= 1000 if id > 999
return id if self.regular_maps.include?(id)
return (id * 1000)...((id * 1000)+ 999)
end
def self.map_ids(id)
return id / 1000
end
def self.check_ids(id)
@map = self.map(id)
@map.each{|m|
pl = self.players(m)
if pl.size <= self.max_players
return m
end}
end
def self.players(map_id)
pl = []
$network.players.any?{|key, value|
pl.push(key) if value.map_id == map_id}
return pl
end
end
class Game_Map
#--------------------------------------------------------------------------
# * Setup
# map_id : map ID
#--------------------------------------------------------------------------
def setup(map_id)
# Put map ID in @map_id memory
@map_id = Virtual_Maps_Config.check_ids(map_id)
# Load map from file and set @map
@map = load_data(sprintf("Data/Map%03d.rxdata",
Virtual_Maps_Config.map_ids(@map_id)))
# set tile set information in opening instance variables
tileset = $data_tilesets[@map.tileset_id]
@tileset_name = tileset.tileset_name
@autotile_names = tileset.autotile_names
@panorama_name = tileset.panorama_name
@panorama_hue = tileset.panorama_hue
@fog_name = tileset.fog_name
@fog_hue = tileset.fog_hue
@fog_opacity = tileset.fog_opacity
@fog_blend_type = tileset.fog_blend_type
@fog_zoom = tileset.fog_zoom
@fog_sx = tileset.fog_sx
@fog_sy = tileset.fog_sy
@battleback_name = tileset.battleback_name
@passages = tileset.passages
@priorities = tileset.priorities
@terrain_tags = tileset.terrain_tags
# Initialize displayed coordinates
@display_x = 0
@display_y = 0
# Clear refresh request flag
@need_refresh = false
# Set map event data
@events = {}
for i in @map.events.keys
@events[i] = Game_Event.new(@map_id, @map.events[i])
end
# Set common event data
@common_events = {}
for i in 1...$data_common_events.size
@common_events[i] = Game_CommonEvent.new(i)
end
# Initialize all fog information
@fog_ox = 0
@fog_oy = 0
@fog_tone = Tone.new(0, 0, 0, 0)
@fog_tone_target = Tone.new(0, 0, 0, 0)
@fog_tone_duration = 0
@fog_opacity_duration = 0
@fog_opacity_target = 0
# Initialize scroll information
@scroll_direction = 2
@scroll_rest = 0
@scroll_speed = 4
end
end
Never mind
heeya!
i have installed a server and a client. version of RMX-OS is 1.14
everything works ... but when i go with the character to an other map then i get an error
here is the output of the server:
RMX-OS Server has started successfully at Sat Jun 19 16:34:37 UTC 2010.
Host: 178.63.176.133:54269
Press CTRL+C to shut down RMX-OS.
Client 1 (luchs) at Sat Jun 19 16:35:42 UTC 2010 has caused an error:
undefined method `exclusive' for Thread:Class
./Extensions/Blizz-ABS.rb:99:in `client_update'
./Data/Client.rb:43:in `handle'
./Data/Client.rb:43:in `each_value'
./Data/Client.rb:43:in `handle'
./Data/Server.rb:275:in `run'
./Data/Server.rb:255:in `start'
./Data/Server.rb:255:in `run'
RMX-OS.rb:57:in `main'
RMX-OS.rb:170
sorry for my bad english... me from switzerland
can anyone help me?
I'm sorry, but I can't fix the problem right now, my laptop broke down.
The only thnig that comes to my mind would be that you are running a wrong version of Ruby. You should make sure it's 1.9.1. I think that exclusive was undefined only in older versions.
sorry! i have used 1.8 :(
with 1.9.1 it works!
thanks for support <3
Okay, almost all the problems were the fault of my stupidity.
I wish you luck in preparing next version.
whenever mi and my buddy tried to use our potion item in the same map we keep getting this error.
not too sure whats the cause :shy:
anyone encounter the same thing?
(http://i19.photobucket.com/albums/b180/HeroX109/Agument422-1.png)
Make sure your scripts are in the right order, make sure your scripts are all up to date and make sure you are not using old save data.
First, hi and congratulations on everything!. I'm your fan.
But let's get down to problems ... I installed the latest versions of RMX OS and Blizz-ABS, and Blizz-ABS RMX OS Controller.
I found the following bugs when I logged in with two characters ...
First, the online system stopped working properly, you could not see exactly the positions of the characters.
Second, only sometimes I could make an attack with monsters or pvp.
Third, the monsters respawn does not work.
Now what I want to know is if this is normal and you want to fix, or am I doing something wrong?..
Sorry for bad English, I am Brazilian and I'm using Google translator, so it can respond more clearly as possible. Thank you Master!
Unfortunately, the controller is still a little glitchy. We will both have to wait until Blizzard sorts these things out.....
Blizzard...
Update this please *-*
(yn)...
Somebody's going to help me fix this today.
Really?! I'm waiting anxiously for this!
=DD
Blizzard you 4got to make it where the hotkeys will not set when the chat window is active to save you time here
class Scene_Map
def update_hotkeys
# update hotkey assignment display if existing
@hotkeys.update if @hotkeys != nil
# no hotkey linking if direct keys are being used
return if BlizzABS::Config::DIRECT_HOTKEYS || $game_temp.chat_active
# iterate through all number keys
BlizzABS::Cache::Keys.each {|i|
# if number key i was triggered
if Input.trigger?(Input::Key[i.to_s])
# if hotkey is valid for this skill
if $game_player.skill_hotkeys[i] != 0
# set this skill as the hot skill
$game_player.battler.skill = $game_player.skill_hotkeys[i]
# if hotkey is valid for this item
elsif $game_player.item_hotkeys[i] != 0
# set this item as hot item
$game_player.battler.item = $game_player.item_hotkeys[i]
else
# reset hot skill and hot item
$game_player.battler.skill = $game_player.battler.item = 0
end
end}
end
end
I know.
I keep getting this error "Bizz-abs controller line 119 ,type error occured: Can't clone Nilclass"
Can anyone tell me how to fix this? (what went wrong D:)
When you add Blizz-ABS or the controller to your game, the save data doesn't work anymore and you have to delete it (in RMX-OS's case that means wiping the database).
Urgh, it's been a while since I used this. "Saved Data. Wiping the database." Could anyone tell me which folder this data is located in, (in the case of manually deleting the saved data) I have to be clear on "What exactly is this saved data; that way, next time, I wouldn't have to bother you guys for help :<"
You need to run a query on the database for that. :P
Thanks
Quote from: Blizzard on October 02, 2010, 02:53:22 pm
You need to run a query on the database for that. :P
Okay, thanks so much for the help. :o
(Most guys would have given me the middle finger by now and told me to eff off)
I do have another error unfortunately D: This isn't anyone's fault. I know I'm bugging you guys half to death. D: But, whenever I start my game, I get this error:
(http://i55.tinypic.com/4toqdk.png)
I'm still investigating this error as of now though.
You are using a script that is not compatible with Blizz-ABS or you didn't put your scripts in a proper order (you put something below Blizz-ABS that shouldn't be below Blizz-ABS).
Nevermind. I copy and pasted my old one (which works) made the necessary changes and now I'm like all set here.
abandoned...
=/
The script has been updated. The new version fixes the controls conflict between Blizz-ABS and RMX-OS. Special Thanks to Ryex for that.
Phffffffft you just had to rewrite my methods in a mroe sophisocated manner didn't you. :V:
The voices in my head told me to. :V:
No more extension on the server? I looked at the first post and I have not found
Whoops. ::D
Fixed.
Was anything else fixed?
I was very happy and excited with this update, more errors and bugs that I reported still ... = (
I found the following bugs when I logged in with two characters ...
First, the online system stopped working properly, you could not see exactly the positions of the characters.
Second, only sometimes I could make an attack with monsters or pvp.
Third, the monsters respawn does not work.
Thanks anyway ...
And I wait one more update!
=D
I'm pretty sure that most of those problems already existed (besides maybe respawns). That was why I asked if anything else was fixed.
No, nothing else was fixed.
Blizzard, please, you must predict when you will fix these bugs?
Thanks.
I have no idea. It's not as easy as it sounds. :/
Is there a way to have some maps where you drop all items/gold on death and others where it's all safe? Also can you have a single game where there are some Blizz-ABS battles (PvP) and some default RMXP battles (PvM)?
possible? yes, implemented? no.
Is there something else to add? A third thing, like it says in the RMX-OS manual under FAQs about an ABS? I have the script and the extension, but I get this undefined method error thing when I try activating Blizz-ABS. What is wrong!?!?!?
Probably your script order. Check the order in the script database. Otherwise you may have configured something wrong.
it seems like everything is right. I followed all the instructions...and still I get this error!!! I posted more on it in RMX-OS, including a description of the error message.
And I posted your answer. lol. How do you make that mistake.
Thanks so much. I guess I was so excited about almost having RMX-OS up and running that I forgot to move main to the bottom. But now I've got another error. I posted about it in RMX-OS. Plz help.
Hey...got another problem. I finally got RMX-OS running with Blizz-ABS. So I went in PvP with another person and killed them. But then when they tried logging back in all it showed was Game Over. It never went away. So when someone dies there account is basically deleted because if they log back in they cant play or do anything.
*points to Blizz-ABS configuration*
Thanks blizz. Another problem: Sometimes it's possible to fight other player with RMX-OS, other times it's not (both times I was standing next to them, in the move's range, etc.) . Did I forget to configure ANTOHER thing? Or is this something else...
The battles are carried out as normal, but there are problems in proper detection and display of players that I never got to fix. In other words, what you are attacking sometimes isn't a real player, but a fake display, a glitch.
Ok, that clears things up. I'll just tell my game users that they sometimes might have to attack a player several times for it to register. Is that right?
Not really. Sometimes a player leaves the map and his image stays visible on the other player's screen. Though, I noticed that usually when you enter and exit the menu, the glitches disappear. So if an attack isn't registering, ask them to open and close the menu. It might work.
Is there a way for lifebars above player's heads? I can get the lifebars above NPC's heads, but I'd like them on players as well... :uhm:
Blizzard...
I wanted to use the BlizABS with RMX-OS without any bugs, even if it works OFFLINE. (Yes, just believe)
Cause I can not use the RMX-OS if my game has no ABS, and others are incompatible.
I really wanted this, because this system without bugs never has updated. D:
If you could help me with this I would be very grateful. (:
It really depends. I'm busy with many other things in my life now and, honestly, I'm never really in the mood to work on it.
I'm getting an error which reffers to:
SAVE_DATA[Map_Actor] = SAVE_DATA[Game_Player].clone
line 125
Quote from: Blizzard on January 10, 2011, 02:40:31 am
It really depends. I'm busy with many other things in my life now and, honestly, I'm never really in the mood to work on it.
Hum...ok
Unfortunately I'll have to go back to work with Netplay old and trying to do something.
Thanks
Hey, I've found that it's very rare for multiple people to be able to fight a NPC enemy at once. It happens for me occasioanally, I think by luck. Is there a way to make multi-combat happen all the time? Did I forget to configure something...?
Quote from: Noob on January 17, 2011, 03:42:32 pm
Hey, I've found that it's very rare for multiple people to be able to fight a NPC enemy at once. It happens for me occasioanally, I think by luck. Is there a way to make multi-combat happen all the time? Did I forget to configure something...?
as far as I know every player 'has its own enemies' which means the movement, behaviour, reactions and samage can't be general. Of course maybe with much editting or a diff script, or as said maybe configuring.
Quote from: Futendra on January 17, 2011, 04:19:33 pm
Quote from: Noob on January 17, 2011, 03:42:32 pm
Hey, I've found that it's very rare for multiple people to be able to fight a NPC enemy at once. It happens for me occasioanally, I think by luck. Is there a way to make multi-combat happen all the time? Did I forget to configure something...?
as far as I know every player 'has its own enemies' which means the movement, behaviour, reactions and samage can't be general. Of course maybe with much editting or a diff script, or as said maybe configuring.
thats garbage, the babs controller makes all enemies global. more than one person CAN fight with the same monster at the same time.
Quote from: Ryex on January 17, 2011, 10:23:25 pm
Quote from: Futendra on January 17, 2011, 04:19:33 pm
Quote from: Noob on January 17, 2011, 03:42:32 pm
Hey, I've found that it's very rare for multiple people to be able to fight a NPC enemy at once. It happens for me occasioanally, I think by luck. Is there a way to make multi-combat happen all the time? Did I forget to configure something...?
as far as I know every player 'has its own enemies' which means the movement, behaviour, reactions and samage can't be general. Of course maybe with much editting or a diff script, or as said maybe configuring.
thats garbage, the babs controller makes all enemies global. more than one person CAN fight with the same monster at the same time.
This is the theory ... because in practice it does not work for now
Quote from: Ryex on January 17, 2011, 10:23:25 pm
Quote from: Futendra on January 17, 2011, 04:19:33 pm
Quote from: Noob on January 17, 2011, 03:42:32 pm
Hey, I've found that it's very rare for multiple people to be able to fight a NPC enemy at once. It happens for me occasioanally, I think by luck. Is there a way to make multi-combat happen all the time? Did I forget to configure something...?
as far as I know every player 'has its own enemies' which means the movement, behaviour, reactions and samage can't be general. Of course maybe with much editting or a diff script, or as said maybe configuring.
thats garbage, the babs controller makes all enemies global. more than one person CAN fight with the same monster at the same time.
As far as I tested it, looked it up and tried to make it that way, no, and I tested it alot!
Quote from: Blizzard on January 10, 2011, 02:40:31 am
It really depends. I'm busy with many other things in my life now and, honestly, I'm never really in the mood to work on it.
If you want me to try looking into it, just let me know what needs to be done.
Quote from: winkio on January 18, 2011, 11:44:23 am
Quote from: Blizzard on January 10, 2011, 02:40:31 am
It really depends. I'm busy with many other things in my life now and, honestly, I'm never really in the mood to work on it.
If you want me to try looking into it, just let me know what needs to be done.
That would be awesome winkio, If you can get that fixed :D
Quote from: winkio on January 18, 2011, 11:44:23 am
Quote from: Blizzard on January 10, 2011, 02:40:31 am
It really depends. I'm busy with many other things in my life now and, honestly, I'm never really in the mood to work on it.
If you want me to try looking into it, just let me know what needs to be done.
the real problem is that in order to figure out the problem you need to set up a testing server that will recored a bunch of data to logs or other wise and then get a few people on a server and try to recreate the bugs
then you'll have to spend a lot of time looking through those logs to figure out what is wrong. you might have to do that several times too.
but hey get it ready and contact us and I'm sure we could organize a few people to get on and help you test it.
I'm happy just to know it has a chance this can be fixed!!
Recalling the bugs xD:
I found the following bugs when I logged in with two characters ...
First, the online system stopped working properly, you could not see exactly the positions of the characters.
Second, only sometimes I could make an attack with monsters or pvp.
Third, the monsters respawn does not work.
:ninja:
It seems to be easier if the two people are in the same party. When I tried fighting enemies together in the same party, I was able to succeed in it way more than when we were both in no party.
I have updated the controller to v1.19. The main reason for the update is because the data exchange subsystem in RMX-OS has been changed and improved. The controller now uses that subsystem to transmit data to all clients. Sadly, the controller is not fully functional yet and a few functionality problems still remain. I will see if I can find some time in the next few days to test and fix those remaining problems.
This update might or might not fix the problems that you had before. I'm not sure what used to cause the problems earlier, but if the controller's data exchange subsystem was the problem, then this update should fix it (except for the still existing problems which shouldn't be difficult to solve).
Good job Blizz. I haven't tested it yet, but I'm sure you did a great job with the update.
Oh, I forgot to tell... It requires Blizz-ABS 2.84 which isn't out yet. :=
When will it be out......
within 24 hours.
Yay! :clap: All of my favorite scripts are being updated!
edit: Okay, I have all of the new versions and have flushed my save data, but I keep getting this error on line 663:
undefined method `damage' for nil:NilClass
The line is:
setup_damage_display if !$network.gmaster && @battler.damage != nil
I'd appreciate some help. Thanks.
Quote from: Blizzard on January 22, 2011, 04:41:34 pm
the controller is not fully functional yet and a few functionality problems still remain. I will see if I can find some time in the next few days to test and fix those remaining problems.
Yeeeeee
My favorite script has been updated. :haha:
Like you said, I tested the new version and yet still some bugs.
I'm anxious for new updates on this!!!!
Thanks Blizzard!
Blizzard, about my other problems, I believe this may have fixed them, because when I tested it locally things went fine. However when I tested it globally on vlexofree.com, I got the same error wizered described, the undefined method 'damage' for nil:nilClass. I gave a bigger description in RMX-OS thread because I also got some wierd non-BlizzABS errors that I believe may have been related to it. Anyway, nice job with the updates, I'm looking forward to seeing the fully functional version :)
I updated the script. I will update RMX-OS to v1.17 within the hour so you can use those two together again.
Thanks I'll test it out.
EDIT: found one problem. I described it in the RMX-OS thread.
Almost working perfectly!!!! A problem I found is that it seems like only the global master can battle enemies. Of course, this is testing with 2 clients open on my computer so it could be because of that. I'd appreciate some help.
Whoa! That explains my problem also! I knew that it only worked once, but it hadn't occured to me that I was playing as the GMaster when that happened, and not as the GMaster all the other times, when it failed. I think this may be my same problem. Please make it possible for other players to also battle the enemies, and for pvp to work. Thanks! :)
One more thing. When I leave and return to a map that had another player on it I get a:
undefined method 'pages' for nil:NilClass
on this line:
for page in @event.pages.reverse
For me it's line 82 in Game_Event.
I'm not sure, but I think it's happening because characters aren't being disposed.
Never mind what I said earlier. I think that's how it used to be for me. It used to be that only the GMaster could fight enemies. Now I have it so that no one can fight enemies, not even the GMaster. Please fix this error, and good luck.
It seems that this is so close, yet so far from being perfect. Best of luck fixing all of the errors Blizzard. I appreciate you trying to finish this even though you retired.
Yea, thanks very much. I would be satisfied if you could just make it possible to fight the enemies and other players, which is the entire purpose of the controller. In my opinoin the other bugs that I've experienced with the controller are a second priority compared to that. Good luck!
I have no problems fighting enemies as GMaster or non-GMaster. :/
Clear out your log files completely. Then run RMX-OS and simulate the problem once. After that shut everything down and upload the log files somewhere so I can take a look at them.
ok i will turn on message logging and wipe the database and try again. i'll probably post the log file withtin a couple hours.
Where are the log files?? I can't find them. I turned on log messages.....they're nowhere to be found in my client folder :(
EDIT: Sorry for the double post. And I found the log files. But they are not updating. They don't log anything new. It appears they've logged nothing.....only the client log file, the error log, seems to log anything.....
Another EDIT: Earlier I said the log files weren't working. I just remembered that I forgot to update the blizz-abs script for linux. I have to change a couple things when running it on a linux, like filepaths and stuff. So once I change the logging filepaths it should work, so sometime tomorrow morningish I'll post the log files. In the meantime, do you have any other suggestions that I could try for getting blizz-abs to work with rmx-os? it's the very last thing my game needs.....
And one last thing, how exactly does blizz-abs work with rmx-os. Does the GMaster need to "activate" each map the first time they login? Because the first time i login, I always get a wierd thing where the server aborts my connection, so I just try again and it's gone.
Thanks very much for all the help you've given me. I never could have come nearly this far without it.
The server extension of Blizz-ABS does two things. One is that it processes and forwards specific messages between clients that are used in Blizz-ABS (such as enemy data, etc.). The second thing is that it keeps track of the maps where players are playing. If a map is entered where there is no player yet, that player is automatically assigned as GMaster. If there is more than one player on a map and if the current GMaster is not able to respond quickly enough (time is 5 seconds by default, can be changed in the config of the extension), then a new GMaster is assigned. The GMaster takes care of processing Blizz-ABS related data. If somebody who is not a GMaster tries to attack an enemy, the actual data setup that causes an attack is sent to all clients. The GMaster receives that data as well and actually executes the attack. Then the changed enemy data along with the damage data is sent from the GMaster to all clients.
If your enemies stop reacting, that can be only out of two reasons. One is that there is GMaster assigned for the map which is impossible. There is a piece of code that makes sure there is always a GMaster. The other problem could be that the extension crashed. The extension can crash if the Blizz-ABS log file could not be written, keep that in mind. Blizz-ABS actually only logs assigments of GMasters. Basically, if you turned of all logging in all scripts (or change them to absolute paths like the last time), the server might work.
EDIT: Blizzard, I got it to work consistently, but with a rather large problem. The first person to log in after starting the server can successfully battle enemies. But if they access the menu, they get this error:
Sat Feb 05 13:58:51 Central Standard Time 2011:
An established connection was aborted by the software in your host machine.
RMX-OS Script:2267:in `check'
RMX-OS Script:2222:in `recv'
RMX-OS Script:827:in `listen'
RMX-OS Script:3618:in `upd_blizzabs_later'
Blizz-ABS Part 3:6805:in `update'
Scene_Map:25:in `main_rmxos_later'
Scene_Map:19:in `loop'
Scene_Map:30:in `main_rmxos_later'
RMX-OS Script:3606:in `main_blizzabs_later'
Blizz-ABS Part 3:6713:in `main_blizzabsrmxos_later'
blizzabsrmxos:933:in `main'
RMX-OS Main:46
When they, or anyone else logs back in, enemies are unfightbale but remain in the position/HP amount they had when the first person to log in was fighting them. to see if I could get around this, I tried getting two people to log in quickly before the first person got that error. The second person got this error:
Sat Feb 05 13:58:41 Central Standard Time 2011:
undefined method `has_key?' for nil:NilClass
blizzabsrmxos:511:in `update_online_enemy'
blizzabsrmxos:393:in `check_game'
RMX-OS Script:845:in `listen'
RMX-OS Script:844:in `each'
RMX-OS Script:844:in `listen'
RMX-OS Script:5623:in `update'
RMX-OS Script:5255:in `main'
RMX-OS Script:5252:in `loop'
RMX-OS Script:5257:in `main'
RMX-OS Main:46
After that, no one experieced any errors, but the enemies were unfightable to everyone. However, they were in different positions and you could see on their lifebar the damage that the first person to log in had done in the brief time beore getting the error. I believe if you can fix these two errors, you'll have it running perfectly.
Note: For me, the first person to lo in after starting the server always gets that top error.
EDIT: I've found that the erorr I talked about above (the first one) only comes up some of the time. The rest of the time, everything works fine for the GMaster until I use a skill on an enemies (Skills work on players, you see damage, but they don't reduce their HP or affect them). If yo use a skill on an enemy, the script "hangs." I've confirmed Wizered's report that only the GMaster can fight enemies. I went on from two different PCs and only the GMaster was able to fight the enemies. Please fix these problems. In a moment I'll post the error I got when the GMaster used a skill. Also, it's still not writing any logs. And everything works fine when I test it with the server running on my PC.
Agian, another EDIT: Here is the error I get when the GMaster tries using a skill on a blizz-abs enemy (skills seem to work on players but don't actually do anything to them because as I said, only the GMaster can participate in blizzabs battles.)
The error is:
Sat Feb 05 15:51:07 Central Standard Time 2011:
(eval):1:in `check_game'compile error
(eval):1: unterminated string meets end of file
(eval):1: syntax error
{"@direction"=>2, "@real_x"=>9728, "@real_y"=>5760, "@x"=>76, "@battler|@states"=>[], "@ai|@negative"=>[1, 3, 5, 6], "@y"=>45, "@character_name"=>"BlackCat", "@ai|@view_range"=>5, "@ai|@altered_alignment"=>false, "@battler|@enemy_id"=>7, "@ai|@neutral"=>
- , "@ai|@positive"=>[2], "@move_speed"=>3, "@battler|@sp"=>9999, "@ai|@hearing_range_ratio"=>40, "@battler|@state_time"=>{}, "@battler|@hpPNG
^
blizzabsrmxos:392:in `check_game'
RMX-OS Script:845:in `eval'
blizzabsrmxos:392:in `check_game'
RMX-OS Script:845:in `listen'
RMX-OS Script:844:in `each'
RMX-OS Script:844:in `listen'
RMX-OS Script:3618:in `upd_blizzabs_later'
Blizz-ABS Part 3:6805:in `update'
Scene_Map:25:in `main_rmxos_later'
Scene_Map:19:in `loop'
Scene_Map:30:in `main_rmxos_later'
RMX-OS Script:3606:in `main_blizzabs_later'
Blizz-ABS Part 3:6713:in `main_blizzabsrmxos_later'
blizzabsrmxos:933:in `main'
RMX-OS Main:46
If this has something to do with that anime count thing or whatever that you told me I could delete, just tell me because I haven't deleted it yet. Thanks very much in advance for anything you do to fix this. :) Good luck.
I have yet to test on more than one computer, but I believe that doing do may fix the gmaster only attacking bug. Before, I had been testing it with 2 clients on my computer. Since I couldn't have both open at the same time(one had to be minimized) it explains that the other one that wasn't the gmaster couldn't properly get the data from the gmaster. I am wating for my friend so that /i can confirm this.
OKay....well I was trying from two PCs that are in my house connected on the same IP Address so idk if that had anything to do with it. All the rest of the time I've just been working with two clients open @ once, like you. Just to make it more convenient for anyone who would like to attempt to debug my problem, here's my post about it from the last page:
Quote from: Noob on February 05, 2011, 12:43:05 pm
EDIT: Blizzard, I got it to work consistently, but with a rather large problem. The first person to log in after starting the server can successfully battle enemies. But if they access the menu, they get this error:
Sat Feb 05 13:58:51 Central Standard Time 2011:
An established connection was aborted by the software in your host machine.
RMX-OS Script:2267:in `check'
RMX-OS Script:2222:in `recv'
RMX-OS Script:827:in `listen'
RMX-OS Script:3618:in `upd_blizzabs_later'
Blizz-ABS Part 3:6805:in `update'
Scene_Map:25:in `main_rmxos_later'
Scene_Map:19:in `loop'
Scene_Map:30:in `main_rmxos_later'
RMX-OS Script:3606:in `main_blizzabs_later'
Blizz-ABS Part 3:6713:in `main_blizzabsrmxos_later'
blizzabsrmxos:933:in `main'
RMX-OS Main:46
When they, or anyone else logs back in, enemies are unfightbale but remain in the position/HP amount they had when the first person to log in was fighting them. to see if I could get around this, I tried getting two people to log in quickly before the first person got that error. The second person got this error:
Sat Feb 05 13:58:41 Central Standard Time 2011:
undefined method `has_key?' for nil:NilClass
blizzabsrmxos:511:in `update_online_enemy'
blizzabsrmxos:393:in `check_game'
RMX-OS Script:845:in `listen'
RMX-OS Script:844:in `each'
RMX-OS Script:844:in `listen'
RMX-OS Script:5623:in `update'
RMX-OS Script:5255:in `main'
RMX-OS Script:5252:in `loop'
RMX-OS Script:5257:in `main'
RMX-OS Main:46
After that, no one experieced any errors, but the enemies were unfightable to everyone. However, they were in different positions and you could see on their lifebar the damage that the first person to log in had done in the brief time beore getting the error. I believe if you can fix these two errors, you'll have it running perfectly.
Note: For me, the first person to lo in after starting the server always gets that top error.
EDIT: I've found that the erorr I talked about above (the first one) only comes up some of the time. The rest of the time, everything works fine for the GMaster until I use a skill on an enemies (Skills work on players, you see damage, but they don't reduce their HP or affect them). If yo use a skill on an enemy, the script "hangs." I've confirmed Wizered's report that only the GMaster can fight enemies. I went on from two different PCs and only the GMaster was able to fight the enemies. Please fix these problems. In a moment I'll post the error I got when the GMaster used a skill. Also, it's still not writing any logs. And everything works fine when I test it with the server running on my PC.
Agian, another EDIT: Here is the error I get when the GMaster tries using a skill on a blizz-abs enemy (skills seem to work on players but don't actually do anything to them because as I said, only the GMaster can participate in blizzabs battles.)
The error is:
Sat Feb 05 15:51:07 Central Standard Time 2011:
(eval):1:in `check_game'compile error
(eval):1: unterminated string meets end of file
(eval):1: syntax error
{"@direction"=>2, "@real_x"=>9728, "@real_y"=>5760, "@x"=>76, "@battler|@states"=>[], "@ai|@negative"=>[1, 3, 5, 6], "@y"=>45, "@character_name"=>"BlackCat", "@ai|@view_range"=>5, "@ai|@altered_alignment"=>false, "@battler|@enemy_id"=>7, "@ai|@neutral"=>- , "@ai|@positive"=>[2], "@move_speed"=>3, "@battler|@sp"=>9999, "@ai|@hearing_range_ratio"=>40, "@battler|@state_time"=>{}, "@battler|@hpPNG
^
blizzabsrmxos:392:in `check_game'
RMX-OS Script:845:in `eval'
blizzabsrmxos:392:in `check_game'
RMX-OS Script:845:in `listen'
RMX-OS Script:844:in `each'
RMX-OS Script:844:in `listen'
RMX-OS Script:3618:in `upd_blizzabs_later'
Blizz-ABS Part 3:6805:in `update'
Scene_Map:25:in `main_rmxos_later'
Scene_Map:19:in `loop'
Scene_Map:30:in `main_rmxos_later'
RMX-OS Script:3606:in `main_blizzabs_later'
Blizz-ABS Part 3:6713:in `main_blizzabsrmxos_later'
blizzabsrmxos:933:in `main'
RMX-OS Main:46
If this has something to do with that anime count thing or whatever that you told me I could delete, just tell me because I haven't deleted it yet. Thanks very much in advance for anything you do to fix this. :) Good luck.
You did try from 2 computers? That pretty much disproves my theory. Were you hosting the server on that website you keep mentioning when you did the testing? Considering all of the problems you've had since you starting using it, you should try hosting the server on one of the two computers to do the testing. Just my opinion though.
When I host it on my computer, everything works fine. Yea, I get the occasional crash or stack overflow, but for the most part, everything (And I do mean everything, pvp, team pvm, chat, trading, etc.) works fine. It's when I test it running the server from vlexofree.com that it fails. I'd run the server from my comp. permanently, but hundreds of people are going to be playing this, and that would just laggggggg the heck out of my computer, and also be un-secure.
Wow, you have high hopes for your game. Not that thats a bad thing. Anyway, it seems to me that because your hosting it on that website, the server isn't doing something that its supposed to be. Are the extensions crashing or something?
No idea. It doesn't even write the extensions. Thats one of the wierd things about vlexofree. And about my high hopes, you see, I already have a single player version that hundreds of people play. I'll give them all the opportunity to convert to multiplayer.
What's your game? I want to try it. :)
By the way, have you gotten the error I posted last page before about undefined method pages?
EDIT: IT WORKS!!!!! I did the fix that I said below, that blizzard suggested, and it WORKED! Wizered try it. Go to the extension file and type CTRL + F (search) and type in ./ and it should bring you to the place in the file where you put in the log path. Just delete that entire thing so it's just '' with nothing inside. Then try running the game. I got it to work with two clients open on the same comp. Thank you so much blizzard. I believe that's the last glitch that needed fixing. I'll tell you if I come accross others.
EDIT: Maybe not completely. I left the game with both accounts. Came back a few minutes later. Got the same problem as earlier.
EDIT again: Ok.....actually it may work after all. What seems to have caused my momentary horror about it not working is that for some reason it didn't log out the GMaster. So the GMaster was "logged in" but actually logged out. So what it thought it was the GMaster was not, so nothing worked. And I have the zombie client thing set to true, but it says that the account that was the GMaster was "already logged in." Hmmm........
I have never gotten the pages error wizered, sorry. Blizzard, I forgot to try your suggested fix about completely turning off the blizzabs logging. (EDIT >>>>) I tried, it, and...it worked, as you can see above.
you do know that unless you have an on-map menu system that your going to have errors when ever you access the menu right? make sure your useing a RMX-OS compatible menu system.
Okay...I have one other problem. A huge problem. the GMaster, as blizzard said, is the first person to enter the map. While they are on the map, everything works, if they exit the game, or leave the map, a new GMaster is NOT assigned. When they come back, they don't resume their role as GMaster. After they leave, that map cannot get a GMaster until the server is restarted. Something is causing it to not assign a new GMaster. I'm not sure what's happening with it, but something is definitely wrong. ryex, this happens even when I don't touch the menu.
ah ok, just making sure.
EDIT: Okay. It seems to me I've come down to two choices. I have a solution that would fix this, but it's kind of rudimentary and I'd prefer to use a cleaner fix. My fix is:
I copy the map 20 or so times. Then at the portal where people enter the PvP/blizz-abs battles map, they have a choice of 20 different "worlds." After someone uses each one, the glitch kicks in and obviously nobody can use it again until a server restart. If I find that 20 is too much, I'll lessen it. Too little, I'll increase it. I'll have to make copies of all my major blizz-abs maps, which could nearly double my total map count, which I'd really prefer not to do.
Instead, I'd like to pursue a clean fix. I now think my problem comes from the extension not properly reading/writing. It sets a GMaster, but never deactivates the GMaster, even if they leave. I need to know the following:
-Where does it keep track of the variable that controls whether a GMaster is set? (Server, GMaster's client, log file, etc.)
-Which file does the writing of the GMaster data?
-Which file does the reading of the GMaster data?
-Is the blizz-abs log crucial to keeping track of the GMaster?
thanks in advance for any and all help that anyone gives :)
Alright...
There is no explicit GMaster variable. On the client side there is a variable in network called @gmaster and it's set properly by the server. The server extension has a hash called @gmasters where it keeps track of all GMasters assigned for every map and a hash called @capable_clients where it keeps track of clients that can potentially be GMasters in case the current one gets disconnected.
When somebody connects, the message code MEN is sent (read the documentation for more information) and if there is no GMaster in the new map yet, the current one will be assigned.
The log is exactly what it says, it's just a log. If you turn it off, it won't write to a file what is going on makes it almost impossible to track errors and fix errors, but the server runs fine without logs.
Now, as for all your problems. If some unexpected error happens, the extension will crash. The thing is that it won't just crash, it will also shut down the server. That isn't happening with you which means that your host machine is somehow messed up badly. That's why enemies suddenly stop working.
The RMX-OS scripts work fine. You've said yourself that it works completely fine on your local machine. Only when you put it up on vlexo, you start getting problems. The problem is obvious, vlexo is causing you trouble. As far as I can see (from the 2-3 error messages you gave me), vlexo cuts off traffic as soon as the data string is a bit longer (which is ridiculous considering that the data strings are no more than a couple of hundreds of bytes) and refuses to write logs files (possibly because of file permissions) which you fixed by removing logging completely. It simply cuts off the message. RMX-OS cannot function if messages get cut off like that. RMX-OS is using a TCP connection which means either the message arrives as a whole or not at all. vlexo does not act as it is supposed to, it does not do it properly.
I think that the server extension crashes silently out of the exact same reason. The GMaster tries to send data about enemies to the other clients and because the string is too long, the server crashes in the extension code without properly shutting down the server.
I don't think I can do any more for you. vlexo is your problem, not RMX-OS. You should try to find another server to see how it behaves, possibly a Windows machine. You can even try to run it temporarily on your machine and ask a friend to connect remotely to your PC. This will show you that RMX-OS works fine for the intended environment which is a properly set up server on a Windows machine.
so you know, if your getting a host shared hosting just isn't going to cut it. the host will disable or limit things that a game server can;t function with disabled or limited. at the very least you need a vps server which is going to cost you at least $15 a mounth. and If I were you I would look very sceptically at that $15 host and go for one that is charging $25-$25. otherwise your just not going to be able to run the server properly.
It's that cheap? I don't think I've seen a good VPS for less than $100 per month.
well it's not like your getting great bandwidth or anything like that, http://www.hostv.com/vps-server.shtml#a_aid=xxxprvps&a_bid=de3a6091&chan=PRvps thats about as good as you can get for the 25-35 range without danger of being scammed. it will work for a small server like 50 players. of course windows servers are about double that or more.
okay. i will try finding a new host. i'll also look into changing the vlexo file permissions to possibly get the logs written. i dont think i'd be able to do a paid server, because my game is going to be free, and i dont want to be paying that price with no benefit :/ but thank you both very much anyway. :)
If you can upload the RMX-OS files onto the server machine via FTP, then you should be able to change the permissions as well. O_o
EDIT: Now it's creating the blizz-abs log and it STILL doesn't work. I logged into the map with enemies as an account called Admin. Then I exited the game and went to a different map with enemies with an account called beta. The enemies were unresponsive. Here's what was in the blizz-abs log:
Client 'Admin' activate G-Master for map '113'.
Map '113' has been released.
Client 'Admin' activate G-Master for map '0'.
Map '0' has been released.
Client 'Admin' activate G-Master for map '19'.
Map '19' has been released.
Client 'Admin' activate G-Master for map '113'.
Map '113' has been released.
Client 'Admin' activate G-Master for map '19'.
Client 'Admin' deactivate G-Master for map '19'.
Map '19' has been released.
Not a single word about beta......I only gave the permission to a few files. I think now I'll give permissions to all of them and try again.
Client 'Admin' activate G-Master for map '19'.
If you chmod the logs folder to 777, everything should actually work fine.
The log is screwed up. For one, map 0 doesn't exist. Also, it assigns the Admin account as GMaster and right after it releases the map? Something isn't right.
I gave the logs folder 777, and it failed but when i gave the babs extension 77 the logging worked. But I still get this problem, and even as an inexperienced noob I agree with you, something is definitely not right with the log. Would truncating the database help? Any other suggestions?
I'm not sure. Can you run the server locally on your PC and see if the same thing happens? I never had problems with the GMaster subsystem like this.
Ok blizzard. I ran it locally and did pretty much the same thing. I logged in on one map with enemeis as beta, then left that map, then returned to that map. Then I exited the game. then I made a new account called beta1 and went to a different map with enemies. It all worked fine. But I got a very different looking babs log (remember, beta in my local test is Admin in global, and beta1 in local is beta in global).
Edit: Log:
Client 'beta' activate G-Master for map '113'.
Map '113' has been released.
Client 'beta' activate G-Master for map '19'.
Map '19' has been released.
Client 'beta' activate G-Master for map '113'.
Client 'beta' deactivate G-Master for map '113'.
Map '113' has been released.
Client 'beta' activate G-Master for map '113'.
Client 'beta' deactivate G-Master for map '113'.
Map '113' has been released.
Client 'beta1' activate G-Master for map '2'.
Client 'beta1' deactivate G-Master for map '2'.
Map '2' has been released.
Client 'beta1' activate G-Master for map '2'.
Client 'beta1' deactivate G-Master for map '2'.
Map '2' has been released.
Client 'beta1' activate G-Master for map '2'.
Map '2' has been released.
Client 'beta1' activate G-Master for map '4'.
Map '4' has been released.
Client 'beta1' activate G-Master for map '1'.
Map '1' has been released.
Client 'beta1' activate G-Master for map '117'.
Client 'beta1' deactivate G-Master for map '117'.
Map '117' has been released.
Client 'beta1' activate G-Master for map '117'.
Client 'beta1' deactivate G-Master for map '117'.
Map '117' has been released.
Show me the log.
I did. I edited my earlier post sorry. Forgot the first time :P
Hm... Interesting...
Tell me what you did to get this log? You obviously had to switch RMXP windows at one point to log in with the other account. Or did you simply log out?
I logged out. After duplicating my global actions with Admin locally with beta, I exited the game window with beta, started a new one, and made beta1 to duplicate what I'd done globally with beta.
Very sorry for the double post (needed to refresh topic up higher). Level me down or whatever if you wish. Blizzard, I think that it's just failing to realize the fact that the GMaster has logged out. Everything is fine as long as the GMaster is SOMEWHERE in the game. Once the GMaster leaves, nothing works. so it's just failing to deactivate the GMaster somehow, idk....I gave you the logs and description. If you can't fix it, I've devised a way for a substitue fix, having the server restart every hour, and advising people to be prepared for this. But it's rudimentary and not the best fix, so yea. Anythign better would be greatly appreciated, but if you can't fix it that's fine as well. thanks :)
this is starting to sound like it is rooted in the same problems as before. where the server thread or one of the threads for the extensions or clients just freezes for whatever reason.
so far every extension that has it's own thread has had problems. the global time script will randomly stop processing. clients will stay logged in even with zombie client preventions because the zombie prevention thread stops processing. back when I was working with JC on PNO I did some log testing and when people started to stay logged in that is exactly what was happening.
we really need some one to have a server with extensive logging of all the treads and run it for and extended period of time until they start having problems.
I will implement a debugging mode properly in the next version so when you have it running, it should display some additional debug information. We might be able to figure out why it freezes.
@Noob: When you edit your post and it's the last post in the topic, the topic will be bumped and marked as unread. That way you don't ever need to double post. :)
sorry, on most forums ive been on an edit doesnt count as a bump. i think i'll work around this by having hourly restarts, that is, if we cant fix it. & do you know where i could find an rxmos compatible menu? & i actually tested the game with some1 from a completely different global location & it seemed to work, but then the enemy bcame unresponsive even when the gmaster didnt leave. i think it had something 2 do with the menu....
If you need an on-map menu, you should try creating your own with Ryex's Mouse Window API. Its similar to making a regular window, but it has extra features that make it great for on-map menus. If you want some examples of it in action, you should download the demo or see the ones I made in the screenshot thread.
Either that or just look around other forums. There may be only a few, but I think that there should be an on-map menu somewhere.
hi there, ive the bug that when i start two clients on my pc and then move ingame both clients crash...
i dont use pvp, so idk if it is the same bug as the sites before (i just overfly them)
my error http://img842.imageshack.us/i/abscontrollererror.png/ (http://img842.imageshack.us/i/abscontrollererror.png/)
so idk with 1.15 and the old controller i think it was 1.19 all works fine :wacko:
i had some errors with other rmx-os scripts as well with 1.17 but the controller 1.30 is for the new abs 2.84 and rmx-os 1.17 or not ?!
pls help me :^_^':
edit: forgot to say is it maybe because i use caterpillar ? i dont use it now but in the script its turned on is it maybe thats my ??
You should turn the caterpillar off. RMX-OS was designed for one player party only.
k ill check this big thx :^_^':
I have updated this to v1.31, but while checking through the code I noticed something that could potentially cause problems so I have updated the script to v1.32 again.
lol , but great :D
i test it this night ^^
whats the changes in 1.31 and 1.32 or are they just small bugs ??
v1.31 is basically an update so it uses the logging functionality already provided by RMX-OS.
v1.32 should have the crash "damage not defined for nil class" fixed. I'm not sure if I can call it a full fix, because it may be that the problem is somewhere else and not where I "fixed" the bug.
ok the controller doesnt work with 1.18 (i postet the error) but it works with 1.17 :o
i editet the needed version to 1.17 and it works, not dameage class nil error !!!
but there is still the bug that i cant attack when im not global master...
i tested it with one pc and 2 clients so idk if it is the script or just because im the global master...
the error from the earlyer version of the controller, damage class nil is there too when im deactivate caterpillar so its not my fault and its really a bug :huh:
I briefly tested the new version and I have some problems. At one point none of my players were becoming gmasters so it seems that it crashed. It was at this same time that I started getting the error I was getting before (undefined method pages, I think it was). I can tell that this is getting close to perfect. Keep up the good work.
wizered figured out a fix for the damage nil error a while back. but i still have my old problem. but i believe that if somebody could give me any of the following scripts it could fix it:
1. ingame call script that restarts the babs extension.
2. a modified version of this scripts server extension so that rather than crashing w/ no gmaster, it restarts the extension. thanks
:)
I don't remember where, but I believe I remember Noob mentioning before that when you leave a map and go to a new one, sometimes events from the old one would carry over. Well, with the newest version I also have started getting that problem. Basically, randomly the event graphic from the old map will be used and its position, but not its code. For example, if event 1 on map 1 was a person that said "hi, how are you?" and event 1 on map 2 was a monster that said "I will kill you!" sometimes on map 2, there would be a person in the same position as event one on map 1 that said "I will kill you!". I believe thsi may be linked to a problem I was having where players still appeared next to you even when you changed maps. I don't really know what I'm talking about, but I believe that for some reason the event data isn't being cleared on map change.
Edit: Just tested with my friend. Save data must have gotten corrupted somehow because he also had my armour and weapons. Also, it kept crashing with the error I posted befor in Game_Event.
Edit 2: Okay, I tried to figure out why it was giving the error in game event. To do that, I added this line in game event before line 82:
print self.inspect if @event == nil or @event.pages == nil
What it eventually printed was:
(http://i56.tinypic.com/r7rwx3.jpg)
In the screenshot, I noticed that it mentioned id was 4. To try to figure this out, I checked what event 4 on that map was. It turned out that it was an enemy respawn point. Now I think that the error might have something to do with respawn points. This could explain why noob might not be getting it, because he may not have respawn points. I am not sure if this is right, so correct me if I am wrong.
Also, here is the full error I've been mentioning:
(http://i52.tinypic.com/2mo1j7r.jpg)
The line it is on is:
for page in @event.pages.reverse
One more thing I've noticed, although very minor, is that other players chat bubbles never dissapear.
I'll take a look at those problems when I can.
thx blizz for still supporting rmx-os ^^
ill wait for a new version and untill i make more maps :naughty:
Before when someone else was playing with me magically got my same equipment, I though it was data corruption. Now I realize its something worse. For some reason, when 2 accounts are on the same map, they are linked. For example, account one equips weapon, account 2 does too. Account 2 dies, account 1 does too. I'm not sure if this is a complicated problem or a simple fix, but it is probably one of the biggest problems so far. Hopefully you can fix it.
Your server isn't working right. It doesn't differ between client connections. There's nothing I can do.
What could be wrong with the server that would cause this?
I don't know. As I said, it's as if the server doesn't differ properly between client connections.
Would re-downloading the server fix the problem?
The problem is not with RMX-OS, the problem is with the computer running RMX-OS.
Hmmmm..... That's weird. I had no problems runing it on my computer before.
Then I don't know what you did to cause that problem.
Blizzard, not to question you since your the genius behind this script in the first place, but are you sure that the problem doesn't lie in this script? I only say this because when I start a new project with just RMX-OS and I equip armour, I have no problems with other players getting it too. Therefore, it seems to me that it could be this script. If my reasoning is flawed, please tell me.
There is a possibility that it's RMX-OS's fault, but that bug would cause that ALL data is copied onto another player, including graphic, level, EXP, HP, SP, simply everything. If only parts of the data are copied, then it's can't be RMX-OS.
You guys repeatedly have the problem that the server cuts off traffic and that the thread handling the extension dies because of that and does NOT crash the whole server as it's supposed to. I mean, I explicitly tell Ruby that it should abort the whole application if a thread dies, but it doesn't do it. Traffic should be transmitted either as a whole or not at all, that's how TCP works, yet your computers have not implemented the TCP standard properly and receive parts of messages! Those are two critical things that cause problems, two completely illogical behaviors. It wouldn't surprise me that your computers can't even properly differ between connections or mix them up.
Actualy, all data may be copied for me. I know for a fact that weapons and hp are being copied and probably sp too. As for exp, I haven't tried it yet and graphic I can't test since all of my characters have the same graphic.
I will take a look at it either way, but I'm probably not going to find anything.
think I may have found the problem. I can't be 100% sure on this though. It seems like in Map_OnlineBattler, the @battler variable is set to the own players data instead of the other player's. I also noticed that level, hp, sp, etc. are all linked besides exp. This may be because it is not one of the exchange variables. I would appreciate if you can either confirm or deny this.
Thanks,
Wizered67
edit: I can confirm it has something to do witht he exchange variables. I tried adding EXP to the exchange variable list for the battler and it was then linked like everything else.
Eh, now I know what could be causing it. Yeah, I was suspecting the exchange variables to be causing the problem, but I wanted to confirm first that it's not anything else.
EDIT: I have updated script to v1.33. I had forgotten to include the override keys for CANCEL and CONFIRM in the login screen.
I keep getting this error message:
Quoteundefined method `>' for nil:NilClass
Bliz Abs Part 3:6706:in `main_blizzabsrmxos_later'
(RMX-OS) Blizz Controller:944:in `main'
-<:::RMX-OS Main:::>-:46
Adding/Removing Blizz-ABS corrupts your old save data. Wipe your database clean.
Anyone else have an issue with monsters glitching/freezing once you leave the map?
OMG, can you guys check this please? Line 209 should be "RMXOS.logs(IDENTIFIER, 'Log', message)" in your scripts. Change "logs" to "log". What a stupid typo by me. ._. Check if everything works now.
Actually, I had gotten an error on that line before so I just commented it out. Although that may be why I'm not getting any of the problems RoseSkye is.
Alright, If fixed that typo and I fixed the bug where data would be transferred to other players. I accidentally swapped two lines and that cause variables to be transferred from one battler to another. So v1.4 has the bugs fixed.
I cant even find 'RMXOS.logs' in my script database.
Edit: Aww, that fixed it. I wanted to make a picture menu. :/ I guess this works too though.
Edit 2: Still can't submit text in the client with the BABS controller present.
My bad, I forgot to look into that one. I fixed the chat thing, version stays 1.4. The "RMXOS.logs" was in the server extension.
Also, you can still make your picture menu. :P
Thanks Blizzard, you're the best. I'll test it later today.
As cocky as I am... I wish I was as awesome as Blizz when it comes to this stuff.
Thanks, guys, I appreciate your appreciation. xD
Well, I finally tested it. Its working great so far!! I kept trying to find major problems with it, but couldn't find any. The only problems I have are:
- I'm still getting an occasional error when switching maps in Game_Event. I guess I'll have to wait and see if Roseskye has any issues with that.
- Even with PvP off, you can still hit other players, but they do not seem to be taking damage.
- Other players are not dissapearing upon map switch.
All in all, good job and I look forward to these final problems being resolved.
I found an error. Global Switches causes a client crash (not a server one).
2011-03-10 00:49:26 UTC; 14 (Test) - Error:
undefined method `logs' for RMXOS:Module
./Extensions/GSaV.rb:117:in `log'
C:/Users/Celeste/Desktop/RMX-OS 1.18/RMX-OS Server/Extensions/GSaV.rb:83:in `client_update'
C:/Users/Celeste/Desktop/RMX-OS 1.18/RMX-OS Server/Data/Client.rb:43:in `block in handle'
C:/Users/Celeste/Desktop/RMX-OS 1.18/RMX-OS Server/Data/Client.rb:43:in `each_value'
C:/Users/Celeste/Desktop/RMX-OS 1.18/RMX-OS Server/Data/Client.rb:43:in `handle'
C:/Users/Celeste/Desktop/RMX-OS 1.18/RMX-OS Server/Data/Server.rb:272:in `block in run'
... I assume it's the same as the BABS one
'RMXOS.logs(IDENTIFIER, 'Log', message)'
Yes, it's the same problem. ._. I'll check and update my scripts later today.
Hey, Blizzard, did you ever add that you can heal party members. If you didn't, I'll probably take a look at it myself tomorrow and see what I can do.
Well, now all the enemies are stationary.
They never move, nor attack.
I have a problem...
Sun Mar 20 21:23:16 West-Europa (standaardtijd) 2011:
undefined method `>' for nil:NilClass
ABS BLIZZ 3:6706:in `main_blizzabsrmxos_later'
ABS BLIZZ ONLINE:938:in `main'
Main:46
Pleas help me!!! :???: :???: :???:
Wipe your database, it does not contain the data from Blizz-ABS. Also, make sure that your script order is right.
So more bugs:
I'm still getting the "undefined method `x' for nil:NilClass" error. I'm not sure if you can do anything about it though as I read earlier.
Also, I'm still having issues with events on the last map being carried over. I'm wondering if maybe the event data is not being cleared on map switch. It may also be linked to a few other weird problems I've been having.
I told you already that your server is cutting off data. You saw that from the log. There's nothing I can do to fix that. Something's wrong with your server.
Actually, I never posted a log that I remember. You may be right, but I think you are confusing me with Noob.
edit: I may have an idea why events from new maps are carried over when more than one player was on one map. I think that the players data from the new map (Events, monsters, etc) is given to the other player before the map change actually occurs.
Here's a video of the bug. http://www.youtube.com/watch?v=MlefxzMyCoc (http://www.youtube.com/watch?v=MlefxzMyCoc)
I know what's happening, but I simply have no means to reproduce it and fix it on one PC. :/
I could try to go on with you, but I'm in a different time zone so that probably wouldn't work. Good luck getting it fixed though.
In a future version could you possibly make it so that the item appears on the ground for whoever got the kill instead of going directly to their inventory? Sorta like in single player BABS?
No. I already explained why. If somebody wants to bother with that, fine, I don't mind. But I am not going to implement that myself.
*cough* you can do it with switches *cough*
Not really. Items are dynamically created events, you can't really do it with switches.
hi there, its been a while since my last visit here :roll:
im now working and dont have much time in rpg maker developement left the last time :(
so what are the new fixes since 1.31 ?!
thx in advance :^_^':
hey i was wondering if anyone sorted switching pvp on and of for differnt maps, as i want towns to act as safe zones or players
I know you said you couldn't fix the problems with just one pc, but do you think you will ever be able to fix these problems or will RMX-OS never be able to work with Blizz-ABS without errors? I don't mean to say this in a bad way, but I noticed there has been no updates or anything to this. Basically, should I expect any updates for this in the future, or stop waiting for one?
You should probably stop waiting. I simply don't have time to find the problem and fix it. I've tried several times and I wasn't able to do it so far.
so dose Blizz Abs works for rmx-os or not? if it do what kind of errors do it get?
Yes it works, but there are some problems. First of all, I always had problems with PvP. Then there's the error shown in this video: http://www.youtube.com/watch?v=MlefxzMyCoc. I also kept getting an undefined method error at random times. I think there may be some more, but I can't remember them off the top of my head.
dose it pop up with a error box on the screen?
I dont know why, but when i put the extension in the config script:
EXTENSIONS = ['Blizz-Abs']
The server doesn't run!
And if i don't put the extension, the server run and when i run the game there is a bug... Anybody can helps me??
The Pet System, Pixel Movment, Summon, CharAnimated and Hit. Is global?
Pets and summons are disabled.
and how can I Enable this?
What I have to change?
Quote from: literally in the instructions of the script# - RMX-OS was not intended to have Blizz-ABS allies! Players will not see
# other players' allies on the map if you add them and you are risking data
# corruption during saving! The same goes for summons!
Although once I get around to updating Blizz-ABS and this controller is rewritten, it will be able to support allies due to how the new Blizz-ABS is structured.
Any ideas when that might be coming? :naughty:
The PvP system's a little weird.
It'll display the amount of damage I or another player did, but nobody actually takes any damage.
Alright, I sat down today and I fixed the problem with respawning enemies. I also did a few additional minor things and fixes that I came across.
This version requires Blizz-ABS 2.85. But Blizz-ABS 2.85 is not out yet. There is a bug in Blizz-ABS that causes this script not to work properly. Basically, you can edit Blizz-ABS code yourselves until winkio puts up the real thing.
Find this line:
elsif character.is_a?(Map_Enemy) && !character.ai.lifeless?
and change it to this:
elsif character.is_a?(Map_Enemy)
This fixes a problem that when an enemy is killed and the G-Master processor changes, the enemy won't respawn until it is switched back to the player who killed the enemy.
Anyone know if there's a way to bypass the needing 2.85 version of BABS for now?
Edit: Saw this thread http://forum.chaos-project.com/index.php/topic,12815.0.html but it didn't really help, sadly.
That's because winkio still hasn't released 2.85. >_>
That line where it crashes, just above it should this line:
if !$BlizzABS || BlizzABS::VERSION < 2.85
Change it to:
if !$BlizzABS || BlizzABS::VERSION < 2.84
Or just replace it with the updated version that I just updated.
Whoops, tried that for myself at first but it didn't work. It works now. But there are several problems going on now:
(http://i50.tinypic.com/2agupvr.png)
if you don't mind taking a look, I don't want to annoy anyone.
Make sure that you clean out the database after you have add/removed Blizz-ABS. The database is technically the save data and Blizz-ABS adds additional save data so you can't use the same saves after adding and removing Blizz-ABS.
Oops, I completely forgot to do that. Ha :) Thanks Blizz, it works now.
There seemed to be a crash when you turned down a party request that nobody noticed before. I updated the script.
Updated for RMX-OS 2.0.
I have a problem:
When start the server:
(http://pics.tinypic.pl/i/00401/kl33k1unqxm8.png)
Next
(http://pics.tinypic.pl/i/00401/c2uv0k5dwy5f.png)
Next
(http://pics.tinypic.pl/i/00401/k1hv5s468pty.png)
When start the game:
(http://images.tinypic.pl/i/00401/4fbw1a304dsx.png)
Are you sure that you copied the scripts properly?
hehe thanks :haha: really wrong copied :facepalm: , but now I have this error:
when start the game and conntect to the server: (I tried to connect three times)
(http://images.tinypic.pl/i/00402/9d3g3b0wfhbs.png)
And error in the game:
(http://pics.tinypic.pl/i/00402/i9yvgfd8cspd.png)
Use the new cfg.ini. Some settings were added that are required for the server to run.
new cfg.ini i.e.?
I have
NAME = 'localhost'
HOST = '10.2.6.117'
PORT = 54269
GAME_VERSION = 1.0
LOG_MESSAGES = true
LOG_ERRORS = true
LOG_ACTIONS = true
DEBUG_MODE = false
MAXIMUM_CONNECTIONS = 50
LOGIN_TIMEOUT = 120
AUTO_RESTART = true
RESTART_TIME = 5
USE_IP_BANNING = true
PREVENT_ZOMBIE_CLIENTS =
RUBY_PROMPT = false
OPTIMIZE_DATABASE_ON_STARTUP = false
DATABASE_CONNECTION_TIMEOUT =
SQL_HOSTNAME = '127.0.0.1'
SQL_USERNAME = 'joomla'
SQL_PASSWORD = 'joomla'
SQL_DATABASE = 'rmxosdb'
INBOX_SIZE = 20
EXTENSIONS = [
'controller.rb',
]
Can anyone give me new code cfg.ini?
It's in RMX-OS.
Where? I have :
NAME = 'localhost'
HOST = '10.2.6.117'
PORT = 54269
GAME_VERSION = 1.0
LOG_MESSAGES = true
LOG_ERRORS = true
LOG_ACTIONS = true
DEBUG_MODE = false
MAXIMUM_CONNECTIONS = 50
LOGIN_TIMEOUT = 120
AUTO_RESTART = true
RESTART_TIME = 5
USE_IP_BANNING = true
PREVENT_ZOMBIE_CLIENTS =
RUBY_PROMPT = false
OPTIMIZE_DATABASE_ON_STARTUP = false
DATABASE_CONNECTION_TIMEOUT =
SQL_HOSTNAME = '127.0.0.1'
SQL_USERNAME = 'joomla'
SQL_PASSWORD = 'joomla'
SQL_DATABASE = 'rmxosdb'
INBOX_SIZE = 20
EXTENSIONS = [
'controller.rb',
]
And this cfg.ini not working. I do not see any other cfg.ini or configuration server.
It's in the same folder as RMX-OS.rb when you download RMX-OS.
In this folder i have:
[folder] bin
[folder] Database
[folder] Extensions
[folder] logs
[folder] src
[folder] Utility
[file] cfg.ini (this cfg not working)
[file] gui_cfg.ini (cfg rmx-os gui)
[file] libmysql.dll
[file] libmysql.so
[file] MySql.Data.dll
[file] RMX-OS GUI.exe
[file] RMX-OS Manual.chm
[file] RMX-OS.rb
there is no other cfg.ini.
Then download a newer version of RMX-OS
I downloaded from here today: http://forum.chaos-project.com/index.php?topic=3869.0 (http://forum.chaos-project.com/index.php?topic=3869.0)
I downloaded demo and are the same files.
The new CFG does not have the value "DATABASE_CONNECTION_TIMEOUT", that's how I know that you are using a modified CFG file. Please check that again.
Ach RMX-OS GUI have a bug. When I type an extension or something else in this tab, cfg.ini is changed
Before
NAME = ''
HOST = '127.0.0.1'
PORT = 54269
GAME_VERSION = 1.0
DEBUG_MODE = false
LOG_MESSAGES = false
LOG_ERRORS = true
LOG_ACTIONS = true
MAXIMUM_CONNECTIONS = 50
LOGIN_TIMEOUT = 120
AUTO_RESTART = true
RESTART_TIME = 5
USE_IP_BANNING = true
RUBY_PROMPT = false
EXTENDED_THREADING = true
OPTIMIZE_DATABASE_ON_STARTUP = false
SQL_HOSTNAME = '127.0.0.1'
SQL_USERNAME = 'root'
SQL_PASSWORD = 'root'
SQL_DATABASE = 'rmxosdb'
INBOX_SIZE = 20
EXTENSIONS = [
]
after
NAME = 'localhost'
HOST = '127.0.0.1'
PORT = 54269
RMXOS_VERSION = (here I changed RMXOS_VERSION to GAME_VERSION = 1.0, because this cfg normal not working)
LOG_MESSAGES = false
LOG_ERRORS = true
LOG_ACTIONS = true
DEBUG_MODE = false
MAXIMUM_CONNECTIONS = 50
LOGIN_TIMEOUT = 120
AUTO_RESTART = true
RESTART_TIME = 5
USE_IP_BANNING = true
PREVENT_ZOMBIE_CLIENTS =
RUBY_PROMPT = false
OPTIMIZE_DATABASE_ON_STARTUP = false
DATABASE_CONNECTION_TIMEOUT =
SQL_HOSTNAME = '127.0.0.1'
SQL_USERNAME = 'joomla'
SQL_PASSWORD = 'joomla'
SQL_DATABASE = 'rmxosdb'
INBOX_SIZE = 20
EXTENSIONS = [
'controller.rb'
]
Can you correct bug? :)
EDIT: I fixed cfg.ini and game working
That's because the gui is not for the new rmxos 2.0 it was for the old versions
the gui was designed with older versions of RMX-OS and I have not had a chance to update it close to 3 years. do not use it.
I have a problem, a error logs is generated with this:
2013-08-10 00:12:20 UTC; #<Client:0xc64350> - Error:
Warning: Incoming message not handled: ABSMEE 1 {"@real_x"=>3712, "@ai|@negative"=>[1, 3, 5, 6], "@x"=>29, "@real_y"=>3456, "@y"=>27, "@battler|@states"=>[], "@ai|@view_range"=>5, "@character_name"=>"087-Monster01", "@battler|@sp"=>419, "@ai|@positive"=>[2], "@ai|@neutral"=>[0], "@battler|@enemy_id"=>1, "@battler|@hp"=>540, "@ai|@altered_alignment"=>false, "@move_speed"=>3, "@battler|@state_time"=>{}, "@ai|@hearing_range_ratio"=>40, "@direction"=>2, "@pattern"=>0, "@ai|@aggressive"=>true, "@battler|@states_turn"=>{}, "@battler|@immortal"=>false}
2013-08-10 00:12:21 UTC; #<Client:0xc64350> - Error:
Warning: Incoming message not handled: ABSMEE 1 {"@ai|@negative"=>[1, 3, 5, 6], "@real_x"=>3712, "@real_y"=>3456, "@x"=>29, "@y"=>27, "@ai|@view_range"=>5, "@battler|@states"=>[], "@battler|@enemy_id"=>1, "@ai|@neutral"=>[0], "@ai|@positive"=>[2], "@battler|@sp"=>419, "@character_name"=>"087-Monster01", "@ai|@altered_alignment"=>false, "@battler|@hp"=>540, "@ai|@hearing_range_ratio"=>40, "@battler|@state_time"=>{}, "@move_speed"=>3, "@ai|@aggressive"=>true, "@pattern"=>0, "@direction"=>2, "@battler|@immortal"=>false, "@battler|@states_turn"=>{}}
2013-08-10 00:12:21 UTC; #<Client:0xc64350> - Error:
Warning: Incoming message not handled: ABSMEE 1 {"@direction"=>4}
2013-08-10 00:12:21 UTC; #<Client:0xc64350> - Error:
Warning: Incoming message not handled: ABSMEE 1 {"@real_x"=>3720, "@x"=>30}
.......
Why?, How i can fix this?
Other error, sorry by the double post. I'm fighting with various enemys, and:
Client 14 (Pepino) at 2013-08-10 03:36:59 UTC has caused an error:
undefined method `get_exchange_variables´ for nil:NilClass
./Extensions/BlitzABS.rb:136:in `client_update´
src/Client1.rb:235:in `block <2 levels> in handle´
src/Client1.rb:234:in `synchronize´
src/Client1.rb:234:in `block in handle´
src/Client1.rb:233:in `each_value´
src/Client1.rb:233:in `handle´
src/Server.rb:248:in `block <2 levels> in run´
src/Server.rb:241:in `each´
src/Server.rb:241:in `block in run´
2013-08-10 03:36:59 UTC: Client 'Pepino' has disconnected.
I have RMX-OS version 2.0 and Blizz Controller 2.0.
I'll take a look at it.
Quote from: Blizzard on August 13, 2013, 09:26:51 am
I'll take a look at it.
Any progress of why these errors occur?
I don't really understand why nobody else reported the errors so far. They should be fixed v2.01.
the problem was solved, thanks. But the artificial intelligence of the enemies now lags behind, as if the character's coordinates were delayed ... :S
Because the game logic isn't server centered, but processed by a globally assigned client, this is unfortunately the only way. It's a design choice that makes RMX-OS much easier to use.
Fast connections with a low ping should be able to reduce that to just a few frames, though, and then it should be barely noticeable.
I understand, I read the manual, but says that connections are assigned randomly. Because randomly assigning processing?, It would be better to assign processing depending on the connection that has the customer?. Thanks for the help
It is assigned randomly, that is true, but it does reassign another client if their connection is bad. In fact, it reassigns another client if the current client didn't respond in a certain amount of seconds. The amount is defined in the server extension as GMASTER_TIMEOUT and is 5 seconds by default. Feel free to change it and see how it affects your game.
Thanks for the help. Imagine that I'm against a strong monster, and at that time the current client processes the battle does not respond for 3 seconds. In those three seconds, what would happen?, Could even die if I do not respond in time, or as is the processing can attack and not receive information from my move and kill ... you understand me?
Hahaha, I know, I know. But fact is lag happens even in WoW which has millions of players and maybe even a few thousand at a time on a single server (I'm pulling this information out of my ass, I don't know how many players play on one server). Point is that network lag cannot be avoided.
So that's it, thanks for the help;)
You could fix it by making battles server sided like runescape. When you lag on runescape the battle continues, your ownly disadvantage is that you can't move :P
It would be an improvement, but not a fix. But that improvement would required that the entire game logic and AI is moved to the server.
I've been testing the system on the Internet with some friends and when there is only one connected goes well, as there is more than one client connected to the time the game is slow, the enemies are slow, not updated while the movement, does strange things ... My connection was 10Mbps upstream, and downstream of them is optical fiber, so I doubt it's for our internet. This should be addressed in some way, is unplayable.
Characteristic of the PC-Server:
Intel i7 - 8GB RAM - Ethernet of 1GB of band
If your connection is broadband, but the connection of the players isn't, it's not gonna help.
I guess RMXP really isn't suited for online games.
Maybe do a tracert (http://www.mediacollege.com/internet/troubleshooter/traceroute.html) to your friends' IPs and post anonymized results here. This could help narrow down the cause a bit more.
Must be a problem in the script or its optimization, because in other online systems that use a RMXP battle system and everything works the same regardless of the use of the players. Maybe you should make the script (or at least a version of this) that the battles are processed by the server, rather than a random customer.
Technically using a client to process data decreases speed only two times. If you are experiencing lag of e.g. 4 seconds, then server side processing would still cause lag of 2 seconds. If you are having such severe slow downs, it's not the script.
Changing how things are processed would require the entire server to be restructured and rewritten and I have retired from RMXP over 3 years ago.
The lag is not a lag delay, enemies are slowed by all connected clients, are behind the moves. When there is only one client connected and not local goes well. if there are more no
Hello, very good. I was unable to determine the exact error, but to connect 2 people (even locally), the server will lagueado ... (only enemies). I use the same ABS and updated scripts. Test old versions and this does not happen, so I guess the problem is in a change wrong. I would like to review the script and draw a new version solving the above problem and other errors:
· At death, the body disappears (in fact, appears in the same coordinates for all maps Oo) until it returns to the game (gameover offscreen).
· The windows system ABS (ai ..) show the name of the users (this may be because the screen is not refreshed [is drawn above?])
· The problem discussed in previous post about chat and NO disappearance of messages written by others.
Thanks, good luck!
The PVP dosent seem to work at very well? it shows the occasional attack and no dmg is delt? i changed the pvp from false to true and that is the result? any ideas how to make it work properly?
Alright, gameus and me hammered out a few display problems so far. I don't think that battle or PvP works properly already, but at least there should be no more ghost sprites from other players and the chat messages should disappear. We will probably sit down tomorrow for some more testing and fixing.
What the problem was with that? Ruby has a problem when you alias a method in a superclass after the derived class already overloaded that implementation and called "super". The "super" call still calls the original superclass method, not the aliased one.
Thanks for the update Blizzard once the abs is in top shape it will be the netplay destroyer ;) keep up the good work!
Alright, v2.2 is up. A few edits made this more stable, but it still flawed. Fixing all the problems would require rewriting some major parts of the code, because the syncing is problematic this way.
EDIT: Actually I think I'm wrong. I'll try a few more things with gameus.
EDIT: No, I designed it properly after all. It's just buggy. Anyway, I got some things working a bit better with gameus and updated the already present v2.2. It seems that enemy deaths/respawns are still somewhat glitchy. I will see to fix these last problems in the following days with gameus' help.
Amazing! thanks Blizzard!
Im home tonight, i will do some LAN testing and post results
whitespirits helped me test today and we got some good progress done. Now I know exactly how I have to restructure stuff to properly process damage displays and fix everything. That is, I actually have 2 possibilities on how to make this work. So I have first evaluate the pros and cons of each method and then implement the one I picked.
Alright, I have finished v3.0. In the end it didn't require much restructuring after all, only adding some additional stuff. I had designed it well initially. xD
I have only tested attacking in PvP mode recently, but generally everything else should continue to work properly. That means that I have no tested skills and items in PvP mode and I have not tested enemy behavior without and with other players on the map in this most recent version. We did test it previously and it seemed fine and the new code isn't much different.
Also, there is a problem in PvP in Blizz-ABS. I asked winkio to take a look at it and hopefully he will have it fixed in v2.86. (Sometimes online players will attack themselves including other players.)
im still having bugs with either abs or controller? any update guys?
I found the bug that is causing errors with alignments. In the Alignments module, under def self.allies(id), you need to add "return result" between lines 273 and 274 like this:
def self.allies(id)
result = allies_blizzabsrmxos_alias(id)
case id
when ONLINE_GROUP
result = allies_blizzabsrmxos_alias(ACTOR_GROUP).clone
result |= [ACTOR_GROUP, ONLINE_GROUP]
when ACTOR_GROUP
result |= [ONLINE_GROUP]
end
return result # <-- This needs to be inserted here
end
*facepalm* Thanks, winkio!
EDIT: Updated to v3.01.
Brilliant! now i can fight again ;) Im having another error now when using spells that have comment events attached
http://s804.photobucket.com/user/richadam111/media/newerror_zps07794698.png.html
I saw in the Blizz-ABS topic that you already fixed it. :)
Awesome, glad things got fixed for the most part. Also, sorry about not being able to test with you again Blizz. Was dealing with those family issues, but all is good again. But it was fun testing with you nonetheless. :3
No biggy. whitespirits helped with the testing.
Hey i'm with a problem in running of the server with the extension.
The image below shows when i run the server with Blizz-ABS controller.
Can anyone Help Me?
(http://s28.postimg.org/psg29uhxp/image.png)
Thanks,
Jamal XVI
Make sure that you install Ruby 2.0 x86, not x64.
I reinstalled the ruby, and did the same problem :(
Look at the image below, i download the version Ruby 2.0.0-p451 and did the same problem.
Anything that i did wrong in server?
(http://s21.postimg.org/f2u2bheiv/image.png)
Thanks for help at all,
Jamal XVI
Did you put the file PlayerOnline.rb in the Extensions folder?
yes, but even the "PlayerOnline.rb" as "Blizz.rb" (the second one its your script) both get the same problem in server.
The windows version is server 2008 (server dedicate for the game :P)
(http://s9.postimg.org/ksfrusmvj/image.png)
(http://s27.postimg.org/6mu28us2r/image.png)
Thanks for listening,
Jamal XVI
Your file is called PlayerOnline.rb.txt, not PlayerOnline.rb.
Quote from: Blizzard on March 19, 2014, 09:11:32 am
Your file is called PlayerOnline.rb.txt, not PlayerOnline.rb.
Whata Shame :facepalm:
Sorry about that,
i'm kind of very distracted.
BTW,
Thanks at all,
Jamal XVI
Hey there, how its going?
So i got an other error, this time with Blizz ABS cliente.
I'm with Blizz ABS controller, Blizz ABS, Mouse Controller, blizz mouse and RMX-OS scripts.
When i start the game, all goes fine, but when i log in server shows the following error:
[img]http://s30.postimg.org/i8ygo2vmp/image.png[/img
Can you help me?
Thanks,
Jamal XVI
Remember that adding or removing one of the scripts, changes which save data is saved. So old accounts will become corrupted and you should start a new game.
Im still looking for a fix for removing @real movement when adding blizz abs with rmx-os this controller or the blizz abs script is causing it not to work
So Blizz, i'm still confused as to why your using a self compiled mysql extension when you could use the mysql or mysql2 gem and never have to worry about ruby version again...
They didn't work for me previously so I had to compile my own. I never checked later again.
Just wanted to post a reminder to see if anyone has any time to looking into my @real X and Y problem?
There, I fixed the movement thing. Keep in mind that lagging players will not face in the proper direction and they might phase through terrain. This cannot be fixed unless some complicated synchronization algorithms are implemented.
Thank you so much! star!
Found error happens randomly
(http://i804.photobucket.com/albums/yy324/richadam111/errornew_zpseb70d600.png) (http://s804.photobucket.com/user/richadam111/media/errornew_zpseb70d600.png.html)
OK error seems to be when entering map with other player?
Hm, I was afraid something like this could happen. I'll have to coordinate this fix with winkio. He needs to a piece of code so this can work. I'll quickly update this script as well.
EDIT: Done. I also made it that the script requires Blizz-ABS 2.87. Now I hope that winkio can quickly update it.
Or you can quickly apply the fix yourself.
Find this part of code (Blizz-ABS Part 3, line 2175):
# if battler is not valid or dead or ABS disabled
if !valid? || battler.dead? || !$game_temp.in_battle
# if not in caterpillar
if @cindex == nil
# set to return state
@ai.state = BlizzABS::AI::Return
else
# set to idle state
@ai.state = BlizzABS::AI::Idle
end
# check state and decide further processing
case @ai.state
when BlizzABS::AI::Idle then update_in_caterpillar
when BlizzABS::AI::Return then update_out_caterpillar
end
# call superclass method
super
# update stop animation display
update_step_anime
# exit method
return
end
# if event is being executed
if $game_system.map_interpreter.running?
# check state and decide further processing
case @ai.state
when BlizzABS::AI::Idle then update_in_caterpillar
when BlizzABS::AI::Return then update_out_caterpillar
else
# move normally if not already moving
update_forcemove if !moving?
end
# update the event with the superclass method
super
# update stop animation display
update_step_anime
# exit method
return
end
Replace it with this:
# if basic AI should be processed
if self.process_ai?
# if battler is not valid or dead or ABS disabled
if !valid? || battler.dead? || !$game_temp.in_battle
# if not in caterpillar
if @cindex == nil
# set to return state
@ai.state = BlizzABS::AI::Return
else
# set to idle state
@ai.state = BlizzABS::AI::Idle
end
# check state and decide further processing
case @ai.state
when BlizzABS::AI::Idle then update_in_caterpillar
when BlizzABS::AI::Return then update_out_caterpillar
end
# call superclass method
super
# update stop animation display
update_step_anime
# exit method
return
end
# if event is being executed
if $game_system.map_interpreter.running?
# check state and decide further processing
case @ai.state
when BlizzABS::AI::Idle then update_in_caterpillar
when BlizzABS::AI::Return then update_out_caterpillar
else
# move normally if not already moving
update_forcemove if !moving?
end
# update the event with the superclass method
super
# update stop animation display
update_step_anime
# exit method
return
end
end
And add this somewhere in Map_Battler:
def process_ai?
return true
end
And remember to change the Blizz-ABS version in the script to 2.87.
I cant seem to find Map_Battler:?
CTRL + F for
class Map_Battler in part 3 and paste that method anywhere inside of it.
You can post it here...
attr_reader :precondition
def process_ai?
return true
end
#----------------------------------------------------------------------------
# Initialization
#----------------------------------------------------------------------------
def initialize
at the end of it...
#----------------------------------------------------------------------------
# idle?
# Checks whether the character is idle on the map.
#----------------------------------------------------------------------------
def idle?
return (@current_sprite == '' && !moving? && !jumping? && self.valid? &&
self.in_action == 0 && self.restriction < 3 && !charging? &&
!freeze_action && (@step_anime || self.pattern == @original_pattern))
end
def process_ai?
return true
end
end
basically anywhere, so long as it is not inside of another method.
def initialize
def process_ai? #<===== No, why would you even do this? D:
return true
end
Ok so since all the updates im running into a few bugs again :(
first i got this error at random
(http://i804.photobucket.com/albums/yy324/richadam111/errors_zpscf14249f.png) (http://s804.photobucket.com/user/richadam111/media/errors_zpscf14249f.png.html)
Now i removed real x and y and the movement is perfect :)
only problem is is that neither player can see projectiles or sprites that show attack or spells like player1_atk it dosent show for players. Another problem is only 1 player seems to be able to pvp not both?
OK so after some further testing this is what i found, if 1 player enters a map they can attacks and cause dmg, if both players enter a map only 1 player can do dmg that's for pvp or against enemies, i think its which ever hits first gets the priority to dmg while the other cant unless on a map alone with enemies, also animations work but projectiles and attack sprites dont.
Sorry for double post but is there anyone who has time to fix the last remaining combat bugs? I can test anytime tomorrow
Nope.
Hi guys, so I am looking for some help with something. So i added some spells that track that heal instead of damage. Now i want it to heal players when PVP is off not on. also how do i stop it healing enemies as well? i heal players and enemies which wont work at all lol.
Hello! All! and hi! Blizz!
(I dont have a good english)
I have a problem with the backup!
-> I shop I move around and when I load the part it is as if I create an account ... :/
-> When an NPC speaks, i have :
(http://gohproject.free.fr/error.png)
-> On, the switch is activated when a others are not ..
-> I would also like to know if it is possible to disable the PVP fashion!
-> Can we avoid the login menu? Because I create a launcher for this log, and i'd like to know if it can receive information (Login and server)
My programm use langage is .vb
Thanks! And i going to go the presentation of you community!
I solved this problem a few weeks ago.
Quote from: Blizzard on May 22, 2014, 12:55:13 pm
Hm, I was afraid something like this could happen. I'll have to coordinate this fix with winkio. He needs to a piece of code so this can work. I'll quickly update this script as well.
EDIT: Done. I also made it that the script requires Blizz-ABS 2.87. Now I hope that winkio can quickly update it.
Or you can quickly apply the fix yourself.
Find this part of code (Blizz-ABS Part 3, line 2175):
# if battler is not valid or dead or ABS disabled
if !valid? || battler.dead? || !$game_temp.in_battle
# if not in caterpillar
if @cindex == nil
# set to return state
@ai.state = BlizzABS::AI::Return
else
# set to idle state
@ai.state = BlizzABS::AI::Idle
end
# check state and decide further processing
case @ai.state
when BlizzABS::AI::Idle then update_in_caterpillar
when BlizzABS::AI::Return then update_out_caterpillar
end
# call superclass method
super
# update stop animation display
update_step_anime
# exit method
return
end
# if event is being executed
if $game_system.map_interpreter.running?
# check state and decide further processing
case @ai.state
when BlizzABS::AI::Idle then update_in_caterpillar
when BlizzABS::AI::Return then update_out_caterpillar
else
# move normally if not already moving
update_forcemove if !moving?
end
# update the event with the superclass method
super
# update stop animation display
update_step_anime
# exit method
return
end
Replace it with this:
# if basic AI should be processed
if self.process_ai?
# if battler is not valid or dead or ABS disabled
if !valid? || battler.dead? || !$game_temp.in_battle
# if not in caterpillar
if @cindex == nil
# set to return state
@ai.state = BlizzABS::AI::Return
else
# set to idle state
@ai.state = BlizzABS::AI::Idle
end
# check state and decide further processing
case @ai.state
when BlizzABS::AI::Idle then update_in_caterpillar
when BlizzABS::AI::Return then update_out_caterpillar
end
# call superclass method
super
# update stop animation display
update_step_anime
# exit method
return
end
# if event is being executed
if $game_system.map_interpreter.running?
# check state and decide further processing
case @ai.state
when BlizzABS::AI::Idle then update_in_caterpillar
when BlizzABS::AI::Return then update_out_caterpillar
else
# move normally if not already moving
update_forcemove if !moving?
end
# update the event with the superclass method
super
# update stop animation display
update_step_anime
# exit method
return
end
end
And add this somewhere in Map_Battler:
def process_ai?
return true
end
And remember to change the Blizz-ABS version in the script to 2.87.
-> I have a problem with the backup! I shop I move around and when I load the part it is as if I create an account ... :/
(It's interesting the way or if the player leaves the game in the quest is backup of city.)
-> I would also like to know if it is possible to disable the PVP fashion!
-> Can we avoid the login menu? Because I create a launcher for this log, and i'd like to know if it can receive information (Login and server)
(My programm use langage is .vb)
-> (Add) Is it possible to connect to a database to create a table and see if a table exists or not, and if this is the case a pop is displayed indicating that there is no quest or yes?
-> It is possible that chat pop when someone write and that after a 50sec time it disappears?
Thanks! :D
Ok guys, So Chaucer has been amazing In Sorting out bugs with RMX and blizz abs, and on the final hurdle are stuck and need some pro help! We can't disable pvp, this means when fighting enemies together we end up hitting or killing each other due to the amount of movement when fighting in blizz abs, we tried using the obvious disable with no aval and using # on every pvp line under alignments with pvp still being active! If some 1 could spare any time to correct this last annoying bug I would be most greatful!
When I open the menu for change AI Triggers, the name of the char continue showing in screen; Also happend in others windows.
i see the party commands in the script but when i /help party it doesnt exist and doesnt work? any idea.
There an error when a Player attack and die, others connected players crash game with this error:
bad value for range
(BATTLE) BlizzABS - Part 2:2442:in `update_out_caterpillar'
(BATTLE) BlizzABS - Part 2:2188:in `update_blizzabsrmxos_alias'
(RMX-OS) BlizzABS - Controller:802:in `update'
(RMX-OS) BlizzABS - Controller:981:in `update'
(RMX-OS) Script:884:in `update_map_players'
(RMX-OS) Script:884:in `each_value'
(RMX-OS) Script:884:in `update_map_players'
(RMX-OS) Script:3788:in `upd_blizzabs_later'
(BATTLE) BlizzABS - Part 2:6849:in `update'
Scene_Map:25:in `main_rmxos_later'
Scene_Map:19:in `loop'
Scene_Map:30:in `main_rmxos_later'
(RMX-OS) Script:3775:in `main_blizzabs_later'
(BATTLE) BlizzABS - Part 2:6757:in `main_blizzabsrmxos_alias'
(RMX-OS) BlizzABS - Controller:1191:in `main'
-<:::RMX-OS Main:::>-:48
Isn't this something related to not having a party of just one character per player?
I thought that too, but: Having caterpillar activated or deactivated this not work. I only have 1 char in the group, with no party. When I connect to game with other char, this error happend when one char die; the error is produced in the char that not die.
Check that your scripts are in the right order.
My scripts are in the right order: 1. RMX-OS 2. Blizz-ABS 3. Blizz-ABS controller.
I thought in put this like: 1. Blizz-ABS 2. RMX-OS 3. Blizz-ABS controller, but i get an error line 151: can't clone nil...
I has localized the bug. It jump to error when somebody die in the map, then the other clients try refresh map: `update_map_players' and some happend that need be fixed. It also happend when char is in Gameover menu.
Aha, I see. I'm a bit busy these days, but I'll try to remember to take a look at it.
Ok, We are very grateful to your job. Greetings.
Can someone help me with that? I have no idea what's wrong.
(http://i.imgur.com/zXUTpks.png)
Are you using RMX-OS GUI? If yes, don't use it, it's outdated and will generate you an outdated configuration.
No, I don't. Just figured out how to fix this error, but now I have an error with caterpillar: when any player die, all of other players are kicked off with error like this:
(http://i.imgur.com/plBQaSH.png)
Funny, it's a line:
Quote(1...ind).each {|i| ind -= 1 if battlers.cindex == nil}
but I have caterpillar turned off, and player have only one-person team in game.
That is the error that I has posted days ago:
Quote from: MikyGonzalez on December 14, 2014, 07:12:53 am
There an error when a Player attack and die, others connected players crash game with this error:
bad value for range
(BATTLE) BlizzABS - Part 2:2442:in `update_out_caterpillar'
(BATTLE) BlizzABS - Part 2:2188:in `update_blizzabsrmxos_alias'
(RMX-OS) BlizzABS - Controller:802:in `update'
(RMX-OS) BlizzABS - Controller:981:in `update'
(RMX-OS) Script:884:in `update_map_players'
(RMX-OS) Script:884:in `each_value'
(RMX-OS) Script:884:in `update_map_players'
(RMX-OS) Script:3788:in `upd_blizzabs_later'
(BATTLE) BlizzABS - Part 2:6849:in `update'
Scene_Map:25:in `main_rmxos_later'
Scene_Map:19:in `loop'
Scene_Map:30:in `main_rmxos_later'
(RMX-OS) Script:3775:in `main_blizzabs_later'
(BATTLE) BlizzABS - Part 2:6757:in `main_blizzabsrmxos_alias'
(RMX-OS) BlizzABS - Controller:1191:in `main'
-<:::RMX-OS Main:::>-:48
Alright, try this.
First check if you the newest Blizz-ABS version. I remember that this problem used to happen in older versions.
Next, make sure that you have only ONE party member in the party. When using Blizz-ABS with RMX-OS, AI-controlled party members are not supported. Don't just turn off the caterpillar. There has to be only one party member.
And finally, if you upgrade Blizz-ABS from an older version, make sure to regenerate the configuration with the config app. If new settongs have been added, the old config script will not work.
I have the latest (2.87) version of BABS, configuration is original from 2.87, I have only one hero in team, I have only one hero in database, I have caterpillar turned off.
And, at least, I solved this error in very strange way:
there is a line 2188:
Quotewhen BlizzABS::AI::Return then update_out_caterpillar
I just wrote "#" before this line.. and it's working. Don't ask me why.
Anyway, thanks for reply, Blizzard :)
Hm, that's actually not a proper fix and it could mess up something else in your game. :/
I have no idea what else I can do :/ at the moment everything is working fine.
Thats not is the right bugfix, I have exactly this:
QuoteFirst check if you the newest Blizz-ABS version. I remember that this problem used to happen in older versions.
Next, make sure that you have only ONE party member in the party. When using Blizz-ABS with RMX-OS, AI-controlled party members are not supported. Don't just turn off the caterpillar. There has to be only one party member.
The error continue, with the quick fix of
Venesard this may work, but not error solved. If Blizzard can check it for a right fix.
I use LAN connection (with 3 PCs) and sometimes 1 PC with virtual machines, server run in Windows and Linux, server database always MySQL.
I have strange trouble, when someone try to fight with enemy on map (Blizz ABS), only one player can hit. When other players try, they can't deal any damage. When trying PvP, it's bugging the same way, only one player can fight, second one can just stay or run. Any ideas how to repair it? I can send my project here if it will help.
IMPORTANT EDIT:
With caterpillar error, you don't need to write "#" before "when BlizzABS::AI::Return then update_out_caterpillar" in line 2188.
You just need to simply edit line 2442: "(1...ind).each {|i| ind -= 1 if battlers.cindex == nil}"
You have "ind -= 1", just change it to "ind ==1".
:)
@Venesard:
This fix work for now, I don't know if this should the correct fix, but for now is right.
You don't need upload your project because I get the same error: When someone try to fight with enemy on map (Blizz ABS), only one player can hit. When other players try, they can't deal any damage. When trying PvP, it's bugging the same way, only one player can fight, second one can just stay or run.
All scripts (Blizz ABS and RMX-OS with BlizzABS-Controller are the last version, not modified scripts).
@MikyGonzalez
You should change the fix to latest one, 'cos the first one can cause errors when you will have a party of 2 or more players :)
I will try to do something with this one-man-fight-bug, but every help is welcome.
Quote from: Venesard on January 05, 2015, 07:21:37 pm
@MikyGonzalez
You should change the fix to latest one, 'cos the first one can cause errors when you will have a party of 2 or more players :)
I will try to do something with this one-man-fight-bug, but every help is welcome.
I'm doing this with original script (without fix) and the error is there. With your last fix (change -= to ==) also is the error. My party have 1 member, caterpillar deactivated (default options). Connection in LAN and for internet (yes, now i'm testing it out of my network).
Bump. Do you find a fix to error with fighting?
Nope. I'm on vacation in the US right now and I didn't take my laptop with me.
Blizz, I understand :) but maybe someone else find something. By the way, wish you great vacation :)
Thanks. :) It's been fantastic so far.
Another desperate BUMP. I've tried to fix this trouble in many ways, but it's not working anyway. Any ideas?
I can't solver it for myself, I think the problem could be in Server Part... Just I'll check again for BlizzABS Plugin - Server part.
Going to try it too.
In Blizz abs Controller for rmx-os under
class Map_OnlineBattler < Map_Actor
replace your def update with this one. this will fix the issue your having, but it will also bring up it's own issues as well.
def update
super
self.moving? ? @stop_count = 0 : @stop_count += 1
@character_name = @character_name_org
sprite_animation_setup
check_action
end
@chaucer, it's working, thanks :D
Now I've found a trouble with database I think O.o when I exit the game with Alt+F4 everything is allright, but when I exit the game with "Exit" button, next time when I try to log in it's starting new game, it looks like the account has been never created before. I've checked the database, account is created but game can't see it.
don't know what error you're getting your post was a bit unclear, anyway this won't give any database issues.
Sorry, my english isn't very good.
Bug looks like:
If I exit the game using Alt+F4, everything is all right.
If I exit the game using in-game "Log out" button, the game shows me:
(http://i.imgur.com/nx1kYfJ.jpg)
And the account I was logging in was deleted.
sorry I can't replicate this problem, it's not an issue with the code i gave you I'm fairly certain(could be wrong), but more than likely it could be an edit you made to blizz abs. try making a blank project with an unedited version of rmx-os, blizz abs, and blizz abs controller only, then add the code i gave to you. if the problem happens again PM me a demo and I'll get back to you when i have the time to check it out.
Allright, thanks for reply, if I can't figure out how to fix it myself, I'll send you a pm.
BUMP. Is there any way to hide chat and player's nickname on the map by script call? I can't figure it out, but i need it for cutscenes.
Refer section 3.5 in the RMX-OS manual.
Note that this applies to RMX-OS in general, not just the Blizz-ABS Controller.
I've figured it out, thanks a lot :)
I have another question. How can I make weapons and armors tradeable behind players? Player1 & Player2 trade contains only item and gold trade.
Hey man, just wondering if ur making a game with RMX-os have u tested it between 2 players on seperate PCs?
Yes, I'm making my game with friend, and we are testing it on two PC's. But trading weapons and armors still not working.
i cant say anything about the trade system, but have u noticed the delay when playing the game? do you play over lan?
Nope, no delays. I'm playing by hamachi. I'm hosting the server on my laptop.
That's weird, I did lots of testing and we couldn't stop delays, do u have Skype? Maybe I can help
No, I don't. But I can understand you know how to rewrite trading part of RMXOS?
I don't personally but i know chaucer could help you!
Would this controller let me flag certain maps as single player; each client is their own map host with their own events, and all that? I'm looking to do most of my maps as single player, and a central town map as the multiplayer zone. I'm not sure if that functionality exists in the script or not. It might be something like an instanced map specific to each individual client; not sure if I'm explaining it well enough. :huh:
Thanks!
There should be a script around that does exactly that: instance maps. But I can't remember if we have it. Try searching our script database (there's a button in the top menu).