A teeworlds 0.7 network protocol library written in ruby
Go to file
2024-01-20 22:32:12 +08:00
.github/workflows Add method doc coverage to CI 2023-09-17 14:53:44 +02:00
docs Add --verbose-snap to sample client 2023-10-22 14:26:53 +02:00
examples Fix and doc set_startinfo 2023-09-17 19:19:06 +02:00
integration_test Fix crash on server messages and add tests for it 2022-11-20 10:13:07 +01:00
lib Add shutdown rcon command 2024-01-20 22:32:12 +08:00
scripts Use git for versioning not folder names 2023-09-17 17:33:46 +02:00
spec Using these tests as docs broke my mind 2023-03-18 15:47:52 +01:00
.gitignore Ensure gem includes all files from subfolders 2023-09-17 17:16:18 +02:00
.rubocop.yml Add rubocop to CI (closed #2) 2022-11-05 17:57:12 +01:00
client_sample.rb Fix rubocop indent 2023-10-22 18:19:07 +02:00
Gemfile Add tests (closed #3) 2022-11-05 17:13:23 +01:00
Rakefile Add tests (closed #3) 2022-11-05 17:13:23 +01:00
README.md Use git for versioning not folder names 2023-09-17 17:33:46 +02:00
server_sample.rb Add detach to server (closed #12) 2024-01-20 21:50:55 +08:00
teeworlds_network.gemspec Bump to 0.0.7 2023-12-13 19:33:50 +01:00

teeworlds_network

A teeworlds 0.7 client & server library written in ruby

Sample

Here a simple sample usage of the library. Connecting a client to localhost on port 8303. Acting as a simple chat bot. Also properly disconnect when the program is killed gracefully.

For more sample usages checkout the examples/ folder.

require_relative 'lib/teeworlds_client'

client = TeeworldsClient.new(verbose: false)

client.on_chat do |_, msg|
  # note use `next` instead of `return` in the block
  next unless msg.message[0] == '!'

  case msg.message[1..]
  when 'ping' then client.send_chat('pong')
  when 'whoami' then client.send_chat("You are: #{msg.author.name}")
  when 'list' then client.send_chat(client.game_client.players.values.map(&:name).join(', '))
  else client.send_chat('Unkown command! Commands: !ping, !whoami, !list')
  end
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)

Documentation

Checkout docs/READE.md for a full library documentation.