Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Chatd Server 1.0

Oippa [22.08.2003 18:10:34]

#

Chatd on chatti serveri joka pyörii portissa 8888 eli se aukaisee portin 8888 ja siihen voi ottaa yhteyttä telnetin raw modella ja erillaisilla clienteillä joita voi tulla kysymään #tuobbi-89 @ ircnet kannulta...

chatd_server.mrc

;
; CHATD SERVER 1.0
; By: Oippa
;
; chatd serveri pyörii porttissa 8888
; Virallinen chatd serveri pyörii osoitteessa: vintti.net:8888 (ei 24h)
;

menu * {
  .CHATD
  ..Käynnistä:/chatd
}

alias chatd {
  socklisten chatd 8888
}

; Funkkarit ;
alias syota { sockwrite -nt $1- }
alias erota { return $gettok($3,$2,$asc($1)) }

on *:SOCKLISTEN:chatd:{
  set %rand $rand(1,10000)
  sockaccept yhdistÿ $+ %rand
  $syota(yhdistÿ $+ %rand Syötä nimimerkki komennolla /nick <nimimerkki>: )
}

on *:SOCKREAD:yhdist*:{
  sockread %yhdistys_data
  tokenize 32 %yhdistys_data
  if (($left($1,1) == /)) {
    if (($upper($1) == /NICK)) {
      if (($left($2,1) == @)) { sockclose $sockname }
      else {
        sockrename $sockname kayttajaÿ $+ $2
        $syota(kayttaja* $time *** $erota(ÿ,2,$sockname) liittyi chattiin! )
        $syota($sockname ################### )
        $syota($sockname - Päivän viesti, $ip - )
        $syota($sockname - Tervetuloa chatd serverille! )
        $syota($sockname - )
        $syota($sockname - MOTD loppuu. )
        $syota($sockname ################### )
      }
    }
    else { sockclose $sockname }
  }
  else { sockclose $sockname }
}

on *:SOCKREAD:kayttaja*:{
  sockread %kayttaja_data
  tokenize 32 %kayttaja_data
  if (($left($1,1) == /)) {
    if (($upper($1) == /OPER) && ($2 == %admin_pass)) { $syota(kayttaja* *** $erota(ÿ,2,$sockname) on nyt OP ) | sockrename $sockname kayttajaÿ@ $+ $erota(ÿ,2,$sockname) }
    if (($upper($1) == /DEOP) && ($left($erota(ÿ,2,$sockname),1) == @)) { $syota(kayttaja* *** $erota(ÿ,2,$sockname) ottaa moden OP pois $2 $+ :lta ) | sockrename kayttajaÿ@ $+ $2 kayttajaÿ $+ $2 }
    if (($upper($1) == /OP) && ($left($erota(ÿ,2,$sockname),1) == @)) { $syota(kayttaja* *** $erota(ÿ,2,$sockname) laittaa moden OP $2 $+ :lle ) | sockrename kayttajaÿ $+ $2 kayttajaÿ@ $+ $2 }
    if (($upper($1) == /ME)) { $syota(kayttaja* $time * $erota(ÿ,2,$sockname) $2- ) }
    if (($upper($1) == /SAY) && ($left($erota(ÿ,2,$sockname),1) == @)) { $syota(kayttaja* $time $2-) }
    if (($upper($1) == /MSG)) { $syota(kayttajaÿ $+ $2 $time MSG $erota(ÿ,2,$sockname) $+ : $3- ) | $syota($sockname $time MSG $erota(ÿ,2,$sockname) $+ : $3- ) }
    if (($upper($1) == /QUIT)) {
      if (($len($2) <= 20)) { $syota(kayttajaÿ* $time *** $erota(ÿ,2,$sockname) quittasi ( $+ $2- $+ ) ) | sockclose $sockname }
      else { $syota($sockname ERROR! (Quit messu on yli 20 sallitun merkkin!) ) }
    }
    if (($upper($1) == /NICK) && ($left($2,1) != @)) {
      if (($len($2) <= 15)) {
        if (($left($erota(ÿ,2,$sockname),1) == @)) { $syota(kayttaja* $time *** $erota(ÿ,2,$sockname) on nyt @ $+ $2) | sockrename $sockname kayttajaÿ@ $+ $2 }
        else { $syota(kayttaja* $time *** $erota(ÿ,2,$sockname) on nyt $2) | sockrename $sockname kayttajaÿ $+ $2 }
      }
      else { $syota($sockname ERROR! (Nick on yli 15 sallitun merkkin!) ) }
    }
    if (($upper($1) == /KICK) && ($left($erota(ÿ,2,$sockname),1) == @)) { $syota(kayttaja* $time *** $erota(ÿ,2,$sockname) potki $2 $+ :n chatistä syy( $+ $3- $+ )) | sockclose kayttajaÿ $+ $2 }
    if (($upper($1) == /NIKIT)) {
      var %rivit 1
      while (%rivit <= $sock(kayttajaÿ*,0)) {
        $syota($sockname %rivit $+ . $+ $erota(ÿ,2,$sock(kayttajaÿ*,%rivit)))
        inc %rivit
      }
    }
  }
  else {
    if ((%kayttaja_data != $null)) {
      $syota(kayttaja* $time < $+ $erota(ÿ,2,$sockname) $+ > %kayttaja_data )
    }
  }
}

on *:SOCKCLOSE:kayttajaÿ*:{
  $syota(kayttajaÿ* $time *** $erota(ÿ,2,$sockname) quittasi! )
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta