home *** CD-ROM | disk | FTP | other *** search
/ Treasure Hunt 2001 PRESSKIT / TH2001_PRESSKIT.iso / demo / scol_install / Partition / comm / comroomenv.pkg < prev    next >
Encoding:
Text File  |  2000-09-18  |  4.2 KB  |  214 lines

  1. /* comroomenv.pkg */
  2.  
  3. defcom ChatACK = ChatACK S;; 
  4. defcom NewUser = NewUser S I S;; 
  5. defcom DelUser = DelUser S I S;; 
  6. defcom Hear = Hear S;; 
  7. defcom GetAudio= GetAudio S;; 
  8. defcom Info = Info S S;; 
  9.  
  10. typeof thischn=Chn;; 
  11. typeof thisenv=Env;; 
  12.  
  13. var servernick="";; 
  14. var serverIP="";; 
  15. var MyNick="";; 
  16. var Nusers=0;; 
  17. var IsAServer=1;; 
  18.  
  19. struct TPlayer = [ PlayerChannel : Chn, PlayerNick : S , PlayerID : I , PlayerIP : S ] Const_Player ;; 
  20.  
  21. typeof Players=[TPlayer r1];; 
  22. typeof CurrentUser=TPlayer;; 
  23. typeof tempuser=TPlayer;; 
  24.  
  25. fun AddPlayer(player)= 
  26.   set Players=player::Players; 
  27. };; 
  28.  
  29. fun PlayerNickcmp (player,nick)=
  30.   if !(strcmp player.PlayerNick nick) then 1 else 0;; 
  31.  
  32. fun PlayerIPcmp (player,IP) =
  33.   if !(strcmp player.PlayerIP IP) then 1 else 0;; 
  34.  
  35. fun PlayerIDcmp (player,ID) =
  36.   if player.PlayerID==ID then 1 else 0;;
  37.  
  38. fun PlayerChcmp (player,ch) =
  39.   if player.PlayerChannel==ch then 1 else 0;; 
  40.  
  41. fun GetPlayerByNick (s) =
  42.   searchlist Players @PlayerNickcmp s;; 
  43.  
  44. fun GetPlayerByChannel (s)=
  45.   searchlist Players @PlayerChcmp s;; 
  46.  
  47. fun GetPlayerByID (s) =
  48.   searchlist Players @PlayerIDcmp s;; 
  49.  
  50. fun GetPlayerByIP (s) =
  51.   searchlist Players @PlayerIPcmp s;; 
  52.  
  53. fun DelPlayerByID(id) =
  54.   set Players=deletelist Players GetPlayerByID id;; 
  55.  
  56. fun DelPlayerByIP(ip) =
  57.   set Players=deletelist Players GetPlayerByIP ip;; 
  58.  
  59. fun DelPlayerByNick(n) =
  60.   set Players=deletelist Players GetPlayerByNick n;; 
  61.  
  62. fun DelPlayerByChannel(ch)=
  63.   set Players=deletelist Players GetPlayerByChannel ch;; 
  64.  
  65. fun UpdateCurrentUser ()= 
  66. {  
  67.   0 
  68. };; 
  69.  
  70. fun print(s)= 
  71. {  
  72.   _status s; 
  73. };; 
  74.  
  75. typeof temptext=S;; 
  76.  
  77. fun BroadHear (p,p2)= 
  78.   if (p!=p2) then _on p.PlayerChannel Hear [temptext] 
  79.   else nil 
  80. };; 
  81.  
  82. fun __Hear (s)= 
  83.   set temptext=s; 
  84.   apply_on_list Players @BroadHear GetPlayerByChannel _channel; 
  85. };; 
  86.  
  87. fun __Info (s1,s2)= 
  88.   let GetPlayerByChannel _channel -> player in 
  89.     print strcat strcat strcat s1 player.PlayerNick s2 "\n"; 
  90. };; 
  91.  
  92. fun BroadUser (p,p2)= 
  93.   _on p.PlayerChannel NewUser [p2.PlayerNick p2.PlayerID p2.PlayerIP]; 
  94. };; 
  95.  
  96. fun BroadDelUser (p,p2)= 
  97.   _on p.PlayerChannel DelUser [p2.PlayerNick p2.PlayerID p2.PlayerIP]; 
  98. };; 
  99.  
  100. fun BroadList (p,p2)= 
  101.   _on p2.PlayerChannel NewUser [p.PlayerNick p.PlayerID p.PlayerIP]; 
  102. };; 
  103.  
  104. typeof tempaudio =S;; 
  105.  
  106. fun BroadAudio (p,p2)= 
  107.   if (p!=p2) then _on p.PlayerChannel GetAudio [tempaudio] 
  108.   else nil 
  109. };; 
  110.  
  111. defcom AddLink = AddLink S S;; 
  112.  
  113. fun __NewUser (nick,ID,IP)= 
  114.   print strloc loc "JOIN" nick::IP::(_channelIP _channel)::nil; 
  115.   set tempuser=Const_Player [_channel nick ID IP]; 
  116.   apply_on_list Players @BroadUser tempuser; 
  117.   apply_on_list Players @BroadList tempuser; 
  118.   AddPlayer tempuser; 
  119.   set Nusers=Nusers+1;   
  120. };; 
  121.  
  122. fun GetUserInfos (obj,r)= 
  123. {  
  124.   0 
  125. };; 
  126.  
  127. defcom PhoneOK=PhoneOK;; 
  128.  
  129. defcom PhoneDENY=PhoneDENY;; 
  130.  
  131. var AskPhone=0;; 
  132.  
  133. typeof PhoneChn=Chn;; 
  134.  
  135. fun __GetPhone ()= 
  136.   if (AskPhone==0) then 
  137.   { 
  138.     _on _channel PhoneOK []; 
  139.     set PhoneChn=_channel; 
  140.     set AskPhone=1 
  141.   } 
  142.   else 
  143.   { 
  144.     _on _channel PhoneDENY []; 
  145.     0 
  146.   } 
  147. };; 
  148.  
  149. fun __ReleasePhone ()= 
  150.   if PhoneChn==_channel then 
  151.   { 
  152.     set AskPhone=0 
  153.   } 
  154.   else 0 
  155. };; 
  156.  
  157. fun InitChat (nick,room)= 
  158.   set servernick=nick; 
  159.   set serverIP=_channelIP _channel; 
  160.   set MyNick=_GETtext nickname; 
  161.   _status strcat strcat "On server: " nick ".\n"; 
  162.   set thischn=_channel; 
  163.   set thisenv=_envchannel _channel; 
  164.   _status "Module OK\n";  
  165.   _on _channel ChatACK [MyNick];   
  166.   0 
  167. };; 
  168.  
  169. fun __ChatACK (nick)= 
  170.   0 
  171. };; 
  172.  
  173. fun _connected ()= 
  174.   _fooS "comroomenv connected"; 
  175.   _status "Connected.\n" 
  176. };; 
  177.  
  178. fun _closed ()= 
  179.   _fooS "SERVER PART CLOSE"; 
  180.   let GetPlayerByChannel _channel->p in 
  181.   { 
  182.     _status strcat strcat strcat strcat "Disconnected from " p.PlayerNick " (" p.PlayerIP ").\n"; 
  183.     set Nusers=Nusers-1; 
  184.     DelPlayerByChannel _channel; 
  185.     apply_on_list Players @BroadDelUser p; 
  186.   } 
  187. };; 
  188.  
  189. fun __GetAudio (audio)= 
  190.   set tempaudio=audio; 
  191.   apply_on_list Players @BroadAudio GetPlayerByChannel _channel; 
  192. };; 
  193.  
  194. fun __ChatStart (nick)= 
  195.   InitChat nick ChatRoom; 
  196. };;
  197.