This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

need little help mrc script to tcl

Old posts that have not been replied to for several years.
Locked
d
dragoneye
Voice
Posts: 9
Joined: Tue Apr 19, 2005 4:21 pm

need little help mrc script to tcl

Post by dragoneye »

hi i was just wondering how can i change this script for eggdrop

Code: Select all

menu channel {
   .start monitor : servermonitor $$?="Enter a server ip:" $$?="Enter the server port: (default 27910)" $$?="Enter name of Team 1: (one word)" $$?="Enter name of Team 2: (one word)"
  .stop monitor : servermonitor off
  .set channel : relaychan $$?="Enter channel where the Server Monitor has to give the scores:"
  .set autorelay on/off : autorelaytoggle
  .set trigger : monitortrigger $$?="Enter the trigger:"
}

alias monitortrigger {
  if $1 == $null {
    break
  }
  set %monitortrigger $1
}

alias relaychan {
  if %relaychan == $null {
    break
  }
  set %relaychan $1
  echo Set the Autorelay channel to: $1
}

alias autorelaytoggle {
  set %autorelay
  if %autorelay == 1 {
    set %autorelay 0
    echo Turned Autorelay Off
    break
  }
  set %autorelay 1
  echo Turned Autorelay On
}

on *:udpread:AQ2Server: {
  var %temp
  var %aq2token
  set %scorerequest 0
  sockread %temp
  if $left(%temp, 1) == \ {
    ;finding the mapname
    %aq2token = $findtok(%temp,mapname,1,92)
    inc %aq2token
    %map = $gettok(%temp,%aq2token,92)
    ;finding the hostname
    %aq2token = $findtok(%temp,hostname,1,92)
    inc %aq2token
    %svhost = $gettok(%temp,%aq2token,92)
    ; team 1 score
    %aq2token = $findtok(%temp,t1,1,92)
    inc %aq2token
    %score1 = $gettok(%temp,%aq2token,92)
    ; team 2 score
    %aq2token = $findtok(%temp,t2,1,92)
    inc %aq2token
    %score2 = $gettok(%temp,%aq2token,92)
    ; team 3 score
    %aq2token = $findtok(%temp,t3,1,92)
    inc %aq2token
    %score3 = $gettok(%temp,%aq2token,92)
    set %mapname %map
    set %hostname %svhost
    set %team1score %score1
    set %team2score %score2
    set %team3score %score3
  }
}

on 1:text:!showscores:*: {
  if %servermonitor == 1 {
    if %scorerequest == 0 {
      timerscorerequest 1 30 set %scorerequest 0
      set %scorerequest 1
      serverstatus
    }
  }
}

alias aq2socktimeout {
  timertimeout off
  sockclose AQ2Server
}

alias servermonitor {
  if $1 == $null {
    echo Usage: servermonitor [ip] [port] [team1name] [team2name] [team3name]
    break
  }
  elseif $1 == off {
    echo Shutting Server Monitor Down
    .timerservermonitor off
    set %servermonitor 0
    unset %serverip
    unset %serverport
    unset %mapname
    unset %hostname
    unset %team1score
    unset %team2score
    unset %team3score
    unset %team1name
    unset %team2name
    unset %team3name
    unset %3teams
    unset %prevmap
    unset %prevt1s
    unset %prevt2s
    unset %prevt3s
  }
  else {
    set %servermonitor 1
    set %serverip $1
    if $2 != $NULL {
      set %serverport $2
    }
    else {
      set %serverport 27910
    }
    if $3 != $NULL {
      set %team1name $3
    }
    else {
      set %team1name Team 1
    }
    if $4 != $NULL {
      set %team2name $4
    }
    else {
      set %team2name Team 2
    }
    if $5 != $NULL {
      set %team3name $3
      set %3teams 1
    }
    else {
      set %team3name Team 3
      set %3teams 0
    }
    echo Activating Server Monitor for server: %serverip $+ : $+ %serverport
    checkaq2server
    .timerservermonitor 0 5 checkaq2server
  }
}

alias checkaq2server {
  set %scorechanged 0

  sockudp -k AQ2Server %serverip %serverport ÿÿÿÿ $+ status
  .timertimeout 1 1 aq2socktimeout

  if %prevmap == %mapname {
    if %team1score != %prevt1s {
      set %prevt1s %team1score
      set %scorechanged 1
    }
    if %team2score != %prevt2s {
      set %prevt2s %team2score
      set %scorechanged 1
    }
  }
  else {
    set %prevmap %mapname
    set %prevt1s %team1score
    set %prevt2s %team2score
    set %scorechanged 1
  }

  if %autorelay == 1 {
    autorelayresults %relaychan
  }
}

alias serverstatus {
  if %servermonitor == 1 {
    if %3teams != 1 {
      msg $chan Score between %team1name and %team2name is %team1score - %team2score at %mapname



    }
    else {
      say On server %hostname ( $+ %serverip $+ : $+ %serverport $+ ), the score for the match %team1name vs %team2name vs %team3name is %team1score - %team2score - %team3score on %mapname
    }
  }
}

alias autorelayresults {
  if %relaychan == $null {
    break
  }
  if %scorechanged == 1 {
    msg %relaychan Score between %team1name and %team2name is %team1score - %team2score at %mapname
    set %scorechanged 0
  }
}
triggers could be like
!server ip:port
!team1 name
!team2 name
!start/!stop
this scripts idea is to tell a live score from q2 server to irc
if someone could help me i will be very happy =)... and keep up the good work guys
User avatar
De Kus
Revered One
Posts: 1361
Joined: Sun Dec 15, 2002 11:41 am
Location: Germany

Post by De Kus »

You cannot copy that, because Q2 uses the UDP protocoll which isn't supported by eggdrop or TCL. You need to call a Pearl script or something like that. I believe I saw such a thing around, but don't ask me when or where ^-^.
De Kus
StarZ|De_Kus, De_Kus or DeKus on IRC
Copyright © 2005-2009 by De Kus - published under The MIT License
Love hurts, love strengthens...
Locked