Hello!
I like the all option in the tchat, but...
I have liked some elements as it appears in another window of the same type as chat (So, from the right) who displays the names of players that are currently in the map.
Exemply :
Link For the script :
http://forum.chaos-project.com/index.php/topic,13074.0.html
Thanks! And sorry, for my bad english...
I will wait patiently for your help anyway thank you if you are currently working on ...
Hmmmm.... I managed to read my online.txt and display with print ..
class Scene_Test
def main
file = File.open("online.txt")
fichier = file
fichier = fichier.read
print(fichier)
$scene = Scene_Map.new
end
end
and i call the script event :
Up..
You forgot to close the file.
File.open('online.txt') {|f| print f.read }
If you use brackets like that, the file will automatically close when the code within is finished.
Ok... I forgot to close the file .. But is not a problem lol
But I do not see how to view, because I wish have a window at the extreme right of the chat window ..
Exemply :
HUD
Windows_Chat Login
Player01 : Hello! Player01
Player04 : Hello! Player02
Player03
Player04
you just need to get the RMX-OS datas for online players (That's what I don't know how to get...)
then you just make a window where you want, and put all online players name 1 above the other
I know it is not optimized at all, but .. Basically, I asked in my VB application dl every 30sec online.txt the file and put it at the root of the project .. The RMXP Client, n has read the case online.txt file and display it in a window that it also syncs, every 30sec reading the file vb download!
Ok... To be more simple...
(http://gohproject.free.fr/Exemple......png)
No PV display or PM or anything it's just players connected......
I read and reread the code done by our friend Blizzard :)
And I found one code!!
I can inspire me the same code but instead of displaying it in the chat base I can make it past a window in hand.
However, I'm to have these ideas, but I still do not see how to make a window like the style of chat ... :'(
Oh I thought it was a non-windowskin window with special transparency ^^ maybe u can modify blizzard's window directly instead of yours ?
Quote from: R5GAMER on July 24, 2014, 07:36:57 pm
However, I'm to have these ideas, but I still do not see how to make a window like the style of chat ... :'(
I'm not too sure how it works but I know the chatbox is made with
class Frame < Sprite and all the other class Frame_(etc) are the other windows used by rmxos. Hope it helps >.>
I see all this more closely, I soon solved one of my request for, The story of the main menu without RMX-OS
Then I will confirm if this is resolved or not at that time, I will post on the site.
Thanks Zexion.
I managed to see a list online.text however it lag a lot and I think I know ..
But the idea is use of code by our friend I think you will not even need to read a file, but by accessing the server directly ..
My code actually :
(Although my code is pretty rotten lol)
#==============================================================================
# ■ Window_Test
#------------------------------------------------------------------------------
# By R5GAMER
# 29/07/2014
#==============================================================================
class Window_Test < Window_Base
#--------------------------------------------------------------------------
# ● Initialisation
#--------------------------------------------------------------------------
def initialize
super(0, 0, 250, 100)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Times New Roman"
self.contents.font.size = 15
self.opacity = 0
self.back_opacity = 0
refresh
end
#--------------------------------------------------------------------------
# ● Mise à jour
#--------------------------------------------------------------------------
def refresh
lines = IO.readlines('online.txt')
self.contents.clear
self.contents.font.bold = true
self.contents.draw_text(0, 0, 200, 32, "(#{lines})", 2)
self.contents.font.bold = false
end
end
While Blizzard has retired .. I will need to learn more so that I can integrate in your code ...
I don't understand the need for a file to read. Couldn't you just store the list in a variable?
That would be far easier and more efficient than constantly reading/writing to disk.
Ah yes it's true lol But I do not see how you can do it because I'm not very talented when it comes to actually technical in ruby ..
class Window_Test < Window_Base
#--------------------------------------------------------------------------
# ● Initialisation
#--------------------------------------------------------------------------
def initialize
super(0, 0, 250, 100)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Times New Roman"
self.contents.font.size = 15
self.opacity = 0
self.back_opacity = 0
@lecture = IO.readlines('online.txt')
refresh
end
#--------------------------------------------------------------------------
# ● Mise à jour
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.bold = true
self.contents.draw_text(0, 0, 200, 32, "(#{@lecture})", 2)
self.contents.font.bold = false
end
end
mmmmhhh... It always lag ..
Just add a variable to Game_System or something.
User = Struct.new(:server, :username, :password)
class Game_System
attr_accessor :users
alias user_name_init initialize
def initialize
user_name_init
@users = []
end
end
# Add a user
user = User.new('server', 'R5GAMER', 'password')
$game_system.users.push(user)
# Remove a user
$game_system.users.delete(user)
I posted on another topic to avoid getting yelled lol But I test this code :)
okay... I summarize ..
My file.txt :
I read the file:
IO.readlines('file.txt').each {|line| p line }
I apply :
User = Struct.new(:server, :username, :password)
class Game_System
attr_accessor :users
alias user_name_init initialize
def initialize
user_name_init
@users = []
end
end
# Add a user
user = User.new('server', 'R5GAMER', 'password')
$game_system.users.push(user)
# Remove a user
$game_system.users.delete(user)
And if I replaced :
user = User.new('server', 'R5GAMER', 'password')
To :
user = IO.readlines('file.txt').each {|line| p line }
You think this is good? Or not?
It would store the lines of the text file into the array, not users.
The code I provided would allow you to store multiple users, and access them as such:
user = User.new('server', 'R5GAMER', 'password')
$game_system.users.push(user)
me = user[0]
p user.server
p user.username
p user.password
The whole idea was to forget this whole .txt file thing. Its unnecessary and over-complicates a simple thing.
Okay. So I can use the same method to display this time the names of connected users?
-----------------------------------------------------
Otherwise, for RMX-OS menu without connection ..
I created a launcher in vb in which the client connects from the login, the MDP and the choice of server .. Once inserted all, it launches the game directly without going through any connection menu of the game
The method you gave me could work?
The launcher is probably the unnecessary part. It is a simpler idea to just have the game automatically connect than create a launcher. I am not very familiar with RMX-OS, but I would image the part where the play enters there login info can be skipped and you can simply have it read stored data to achieve the same thing.
#========================================
# This part is RMX-Os no menu Connection :
#========================================
That's basically what I would like to :)
:gunz: My idea:
(http://gohproject.free.fr/1.png)
:evil: I would like to delete these menus here:
(http://gohproject.free.fr/2.png)
(http://gohproject.free.fr/3.png)
I wish there direct access to:
(http://gohproject.free.fr/4.png)
#========================================
# This part is RMX-Os Online Awareness :
#========================================
(http://gohproject.free.fr/5.png)
All looks really good! RMX-OS could use a few tweaks like this!
Yes, all that is possible, and easier, without a launcher, and without a text file.
So to see players online is simple .. So? How do we ..?
And for without menu how can it be done? Because the idea of file.txt was quite interesting .. Because I'd really like to use my launcher ..
Scene_Servers and Scene_UserPass can both just be modified to automatically set the data, instead of getting it from the user. Its no different than making a title skip when debugging a game. You can basically just erase a bunch of code from these two scenes, create some "initialize" methods for them that passes in the server, username, and password variables, and your done.
I doubt I will have the time, but I MIGHT whip it up real fast. I have never used RMX-OS, and I am not about to go about setting ti all up, but I'm pretty sure I could edit the scenes without being able to debug anything.
Ok, I'll read all the Scene!
----------------------------------------------
To the display of user names you can have idea?To view the players I think I found a way to do it ..
Basically, I display a variable that gets a string and I display.
But the problem is that in this String, he always return me null ..
I tried to put all the names in a global variable but still nothing ..
#==============================================================================
# ■ Window_Test
#------------------------------------------------------------------------------
# By R5GAMER
# 29/07/2014
#==============================================================================
class Window_Test < Window_Base
#--------------------------------------------------------------------------
# ● Initialisation
#--------------------------------------------------------------------------
def initialize
super(0, 0, 250, 100)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Times New Roman"
self.contents.font.size = 15
self.opacity = 0
self.back_opacity = 0
end
#--------------------------------------------------------------------------
# ● Mise à jour
#--------------------------------------------------------------------------
def refresh
self.contents.refresh
self.contents.draw_text(0, 0, 200, 32, $names, 1)
end
end
if !defined?(RMXOS) || RMXOS::VERSION < 2.0
raise 'ERROR: The "Online Awareness" requires RMX-OS 2.0 or higher.'
end
#==============================================================================
# module BlizzCFG
#==============================================================================
module BlizzCFG
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# set to false if you want to disable login/logout messages
ONLINE_AWARENESS_SHOW_LOGIN_LOGOUT = true
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
#==============================================================================
# module RMXOS
#==============================================================================
module RMXOS
#============================================================================
# module Documentation
#============================================================================
module Documentation
PARAMETERS['online'] = 'none'
PARAMETERS['onmap'] = 'none'
DESCRIPTIONS['online'] = 'Displays the players currently online.'
DESCRIPTIONS['onmap'] = 'Displays the players currently on the same map.'
end
#============================================================================
# module Data
#============================================================================
module Data
OnlineAwarenessLoggedIn = 'PLAYER has logged in.'
OnlineAwarenessLoggedOut = 'PLAYER has logged out.'
OnlineAwarenessPlayers = 'Currently online: PLAYERS'
OnlineAwarenessNoPlayers = 'No one else is currently online.'
OnlineAwarenessMapPlayers = 'Currently on the same map: PLAYERS'
OnlineAwarenessNoMapPlayers = 'No one else is currently on the same map.'
end
#============================================================================
# Network
#============================================================================
class Network
def add_info2(message)
self.add_message(nil, message, RMXOS::Data::ColorInfo)
@window = Window_Test.new
end
alias check_game_online_awareness_alias check_game
def check_game(message)
if BlizzCFG::ONLINE_AWARENESS_SHOW_LOGIN_LOGOUT
case message
when /\ADCT\t(.+)/ # disconnection message
id = $1.to_i
if self.players.has_key?(id)
self.add_info2(RMXOS::Data::OnlineAwarenessLoggedOut.sub('PLAYER',
self.players[id].username))
end
# does not return as original processing still needs to be done
when /\AENT\t(.+)\t(.+)\t(.+)\t(.+)/ # server entry message
$name = $2
self.add_info2(RMXOS::Data::OnlineAwarenessLoggedIn.sub('PLAYER', $name))
# does not return as original processing still needs to be done
end
end
return check_game_online_awareness_alias(message)
end
alias check_normal_commands_online_awareness_alias check_normal_commands
def check_normal_commands(message)
case message
when /\A\/online\Z/
$names = self.players.values.map {|player| player = player.username}
if $names.size > 0
self.add_info2(RMXOS::Data::OnlineAwarenessPlayers.sub('PLAYERS',
$names.join(', ')))
else
self.add_info2(RMXOS::Data::OnlineAwarenessNoPlayers)
end
return true
when /\A\/onmap\Z/
$names = self.map_players.values.map {|player| player = player.username}
if $names.size > 0
self.add_info2(RMXOS::Data::OnlineAwarenessMapPlayers.sub('PLAYERS',
$names.join(', ')))
else
self.add_info2(RMXOS::Data::OnlineAwarenessNoMapPlayers)
end
return true
end
return check_normal_commands_online_awareness_alias(message)
end
end
end
You're crazy o_o you can't just display an array like that xD I'm on it, Once I finish I post the code to do what you want x)
EDIT : Finished, is that what you want ?
(http://i.imgur.com/80ZdRVD.jpg)
Perfectly!!!!!!!! :D
XD so create a window (I did a new script but I think you can do like you did, putting the window in the OnlineAwareness directly)
with this code
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\#
# Window displaying onmap players
#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\#
class Onmap_Window < Window_Base
def initialize
# ça va servir pour l'affichage
@ancient_player_number = 0
#ton timer, précision dans le refresh
@timer = 0
super(380, 140, 200, 70)
bitmap = Bitmap.new(width - 32, height - 32)
bitmap.hue_change((3 - 1.5).sgn * (1.25 - 40 / 0.8) * 120 /
(3 ** 2))
bitmap.fill_rect(0, 0, bitmap.width, bitmap.height,
Color.new(0, 0, 0, 20))
self.contents = bitmap
self.opacity=125
self.windowskin = RPG::Cache.windowskin(BuddyData::Windowskin)
refresh
end
def refresh
self.contents.clear
self.contents.font.color= Color.new(255, 255, 255, 255)
actual_player_number = 1
y = 0
w = contents.text_size("Sylph was the Wind Goddess").width
# on récupère les joueurs sur la même dès qu'on entre dans le jeu
# Ou dès que le timer atteint la valeur citée plus bas
if @timer == 0
$network.check_normal_commands('/onmap')
end
@timer = @timer+1
#au bout de combien de temps on récupère les données
#(255 ça correspond a jsais pas combien de secondes, j'dirais 30)
if @timer == 255
@timer = 0
end
#si t'as des joueurs sur ta map
if $onmap_players[0] != nil
# Bah on les affiche tous un par un
for i in 0..$onmap_players.length-1
self.contents.draw_text(0, y, w, 32, $onmap_players[i], 1)
y += 15
actual_player_number += 1
# Si on a fait la requete on agrandi la fenetre si y a + de joueurs
if $onmap_player_need_refresh
if actual_player_number > @ancient_player_number
bigger
end
end
end
end
# Si y a moins de joueurs on réduit la fenêtre
if $onmap_player_need_refresh
difference = @ancient_player_number - actual_player_number
if difference > 0
for i in 1..difference
smaller
end
end
@ancient_player_number = actual_player_number
$onmap_player_need_refresh = false
end
end
#agrandis la fenetre et son contenu
def bigger
self.height += 10
bitmap = Bitmap.new(width - 32, height - 32)
bitmap.hue_change((3 - 1.5).sgn * (1.25 - 40 / 0.8) * 120 /
(3 ** 2))
bitmap.fill_rect(0, 0, bitmap.width, bitmap.height,
Color.new(0, 0, 0, 20))
self.contents = bitmap
end
# réduit la fenêtre et son contenu
def smaller
self.height -= 10
bitmap = Bitmap.new(width - 32, height - 32)
bitmap.hue_change((3 - 1.5).sgn * (1.25 - 40 / 0.8) * 120 /
(3 ** 2))
bitmap.fill_rect(0, 0, bitmap.width, bitmap.height,
Color.new(0, 0, 0, 20))
self.contents = bitmap
end
end
In this script you can change the time the game will wait until chacking the onmap players (I put 255 but you can put what you want, but if your number is too small you will have lags)
Then You HAVE to add my 2 lines in OnlineAwareness line 128 and 129 :
when /\A\/onmap\Z/
names = self.map_players.values.map {|player| player = player.username}
$onmap_players = names
$onmap_player_need_refresh = true
if names.size > 0
and finally you can remove lines 132 and 134 of onlineAwareness if you don't want lines to appear in chat
One Problem solved on two (Thanks, has sylphie for his help ..) Now, I need than set the history to Launcher and without connection menu.
Nobody has any ideas? ^^