Sockudp aide svp :)

zeprex Messages postés 6 Date d'inscription jeudi 25 mai 2006 Statut Membre Dernière intervention 27 novembre 2008 - 15 janv. 2008 à 23:22
cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 - 16 janv. 2008 à 14:10
Bonjour a tous, sur le forum j'ai trouvé un code me permettant de scanner un ip cs et de m afficher

- Le nom
- Les joueurs ( slots/slots )
- ....

J'aimerais disposer du meme code pour le jeux ET(Ennemy Territory ou wolfenstein )

Si vosu pouviez m'aider a trouver la ligne correcte dans le sockudp merci

alias hlserver { 
  set %hlserver.ip $$1 
  set %hlserver.spitchan $iif($2,$2,$active)      
  sockudp -k hlchanserver $gettok(%which.server,1,58) $gettok(%which.server,2,58) ÿÿÿÿTSource Engine Query  
  set %hlserver.ping $ticks 
  .timertimeout 1 3 timeout 
} 

ON *:INPUT:#:{
  if ($1 == !setserver) {
    if (!$3) {
      notice $nick &#x0;1F;Correct syntax&#x0;1F;: !setserver <1,2,3>  -- (&#x0;1F;ex&#x0;1F;: !setserver 1 192.168.45.86:27015) 
      halt 
    } 
    if ($2 == 1) &amp;&amp; ($gettok($$3,2,58)) { 
      set %1st.server $3- | notice $nick Server (&#x0;2;1&#x0;2;) with ip:&#x0;2; $gettok($$3,1,58) &#x0;2;and port:&#x0;2; $gettok($$3,2,58) &#x0;2;successfully updated. 
    } 
    if ($2 == 2) &amp;&amp; ($gettok($$3,2,58)) { 
      set %2nd.server $3- | notice $nick Server (&#x0;2;2&#x0;2;) with ip:&#x0;2; $gettok($$3,1,58) &#x0;2;and port:&#x0;2; $gettok($$3,2,58) &#x0;2;successfully updated. 
    } 
    if ($2 == 3) &amp;&amp; ($gettok($$3,2,58)) {
      set %3rd.server $3- | notice $nick Server (&#x0;2;3&#x0;2;) with ip:&#x0;2; $gettok($$3,1,58) &#x0;2;and port:&#x0;2; $gettok($$3,2,58) &#x0;2;successfully updated. 
    } 
    elseif (!$gettok($$3,2,58)) &amp;&amp; ($3) { 
      notice $nick &#x0;1F;Correct syntax&#x0;1F;: !setserver <1,2,3>  -- (&#x0;1F;ex&#x0;1F;: !setserver 1 192.168.45.86:27015) 
    } 
  } 
  if ($1 == !server) {
    if (!$2) { 
      msg $chan &#x0;1F;Correct syntax&#x0;1F;: !server <1,2,3> 
    } 
    if ($2 == 1) { 
      set %which.server %1st.server | hlserver %1st.server $chan 
    } 
    if ($2 == 2) { 
      set %which.server %2nd.server | hlserver %2nd.server $chan 
    } 
    if ($2 == 3) { 
      set %which.server %3rd.server | hlserver %3rd.server $chan 
    } 
  } 
}

on *:udpread:hlchanserver:{ 
  sockread &amp;temp 
  if ($bvar(&amp;temp,5) == 73) { 
    var %hlserver.source 1 
    var %i = 7 
  } 
  elseif ($bvar(&amp;temp,5) == 109) { 
    var %i = $calc($bfind(&amp;temp,1,0) + 1) 
  } 
  var %hlserver.name = $bvar(&amp;temp,%i,100).text 
  inc %i $len(%hlserver.name) 
  inc %i 

  var %hlserver.ping = $calc($ticks - %hlserver.ping) 

  .timertimeout off 
  msg %hlserver.spitchan &#x0;1F;IP&#x0;1F;: %hlserver.ip $chr(172) &#x0;1F;Name&#x0;1F;: %hlserver.name $chr(172) 
  sockclose hlchanserver 
  unset %hlserver.*    
} 

alias timeout { 
  msg %hlserver.spitchan Server doesn't answer. 
  sockclose hlchanserver 
  unset %hlserver.* 

1 réponse

cs_wims Messages postés 2466 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 1 août 2010 1
16 janv. 2008 à 14:10
Ton code est super mal foutu, y'aurais bien moyen d'optimiser ça...
En attendant, le code lis a des endroit bien précis dans la variable binaire, ce qui laisse supposer que les données sont envoyée a un endroit précis, si les données pour l'autre jeux ne sont pas au même endroit, ça risque de merder.
La chose a faire, c'est de stocké les données recu pour ET et de les affichers (dans un fichier text, ou en echo directement, mais ça peux coincé avec la longueur du text) ensuite tu regardes ou sont les infos et tu vas cherché si tu n'arrives pas a faire tout ça donnes au moins ici deux exemple de ce que le jeu ET envois, utilise ce code :

alias testudp sockudp -k Ga server port

on *:udpread:Ga:sockread &a | bwrite Ga.txt -1 -1 &a
ensuite regarde le fichier Ga.txt, il contiendra les données.
0
Rejoignez-nous