Document more samples
This commit is contained in:
parent
794915942c
commit
875132a03a
69
README.md
69
README.md
|
@ -1,18 +1,87 @@
|
|||
# teeworlds-client
|
||||
A teeworlds 0.7 client library written in ruby
|
||||
|
||||
## Simple chat printing client
|
||||
|
||||
```ruby
|
||||
require_relative 'lib/teeworlds-client'
|
||||
|
||||
client = TwClient.new(verbose: false)
|
||||
|
||||
# print all incoming chat messages
|
||||
client.hook_chat do |msg|
|
||||
puts "chat: #{msg}"
|
||||
end
|
||||
|
||||
# properly disconnect on ctrl+c
|
||||
Signal.trap('INT') do
|
||||
client.disconnect
|
||||
end
|
||||
|
||||
# connect to localhost and block the current thread
|
||||
client.connect('localhost', 8303, detach: false)
|
||||
```
|
||||
|
||||
## Print all network traffic
|
||||
|
||||
```ruby
|
||||
require_relative 'lib/teeworlds-client'
|
||||
|
||||
client = TwClient.new(verbose: true)
|
||||
|
||||
# connect to localhost and block the current thread
|
||||
client.connect('localhost', 8303, detach: false)
|
||||
```
|
||||
|
||||
## Detach client (do not block the main thread)
|
||||
|
||||
```ruby
|
||||
require_relative 'lib/teeworlds-client'
|
||||
|
||||
client = TwClient.new(verbose: true)
|
||||
|
||||
# connect to localhost and detach a background thread
|
||||
client.connect('localhost', 8303, detach: true)
|
||||
|
||||
loop do
|
||||
# send a chat message every 5 seconds
|
||||
sleep 5
|
||||
client.send_chat('hello friends!')
|
||||
end
|
||||
```
|
||||
|
||||
## Set custom skin and other player infos
|
||||
|
||||
```ruby
|
||||
require_relative 'lib/teeworlds-client'
|
||||
|
||||
client = TwClient.new(verbose: true)
|
||||
|
||||
# all keys are optional
|
||||
# if not provided they will fall back to the default value
|
||||
client.set_startinfo(
|
||||
name: "ruby gamer",
|
||||
clan: "",
|
||||
country: -1,
|
||||
body: "spiky",
|
||||
marking: "duodonny",
|
||||
decoration: "",
|
||||
hands: "standard",
|
||||
feet: "standard",
|
||||
eyes: "standard",
|
||||
custom_color_body: 0,
|
||||
custom_color_marking: 0,
|
||||
custom_color_decoration: 0,
|
||||
custom_color_hands: 0,
|
||||
custom_color_feet: 0,
|
||||
custom_color_eyes: 0,
|
||||
color_body: 0,
|
||||
color_marking: 0,
|
||||
color_decoration: 0,
|
||||
color_hands: 0,
|
||||
color_feet: 0,
|
||||
color_eyes: 0)
|
||||
|
||||
# connect to localhost and block the current thread
|
||||
client.connect('localhost', 8303, detach: false)
|
||||
```
|
||||
|
|
|
@ -24,6 +24,29 @@ class TwClient
|
|||
@hooks = {}
|
||||
@thread_running = false
|
||||
@signal_disconnect = false
|
||||
@start_info = {
|
||||
name: "ruby gamer",
|
||||
clan: "",
|
||||
country: -1,
|
||||
body: "spiky",
|
||||
marking: "duodonny",
|
||||
decoration: "",
|
||||
hands: "standard",
|
||||
feet: "standard",
|
||||
eyes: "standard",
|
||||
custom_color_body: 0,
|
||||
custom_color_marking: 0,
|
||||
custom_color_decoration: 0,
|
||||
custom_color_hands: 0,
|
||||
custom_color_feet: 0,
|
||||
custom_color_eyes: 0,
|
||||
color_body: 0,
|
||||
color_marking: 0,
|
||||
color_decoration: 0,
|
||||
color_hands: 0,
|
||||
color_feet: 0,
|
||||
color_eyes: 0
|
||||
}
|
||||
end
|
||||
|
||||
def hook_chat(&block)
|
||||
|
@ -78,6 +101,17 @@ class TwClient
|
|||
@signal_disconnect = true
|
||||
end
|
||||
|
||||
def set_startinfo(info)
|
||||
info.each do |key, value|
|
||||
unless @start_info.key?(key)
|
||||
puts "Error: invalid start info key '#{key}'"
|
||||
puts " valid keys: #{@start_info.keys}"
|
||||
exit 1
|
||||
end
|
||||
@start_info[key] = value
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def connection_loop
|
||||
|
@ -122,33 +156,9 @@ class TwClient
|
|||
end
|
||||
|
||||
def send_msg_startinfo()
|
||||
start_info = {
|
||||
name: "ruby gamer",
|
||||
clan: "",
|
||||
country: 1,
|
||||
body: "spiky",
|
||||
marking: "duodonny",
|
||||
decoration: "",
|
||||
hands: "standard",
|
||||
feet: "standard",
|
||||
eyes: "standard",
|
||||
custom_color_body: 0,
|
||||
custom_color_marking: 0,
|
||||
custom_color_decoration: 0,
|
||||
custom_color_hands: 0,
|
||||
custom_color_feet: 0,
|
||||
custom_color_eyes: 0,
|
||||
color_body: 0,
|
||||
color_marking: 0,
|
||||
color_decoration: 0,
|
||||
color_hands: 0,
|
||||
color_feet: 0,
|
||||
color_eyes: 0
|
||||
}
|
||||
|
||||
data = []
|
||||
|
||||
start_info.each do |key, value|
|
||||
@start_info.each do |key, value|
|
||||
if value.class == String
|
||||
data += Packer.pack_str(value)
|
||||
elsif value.class == Integer
|
||||
|
|
Loading…
Reference in a new issue