Le voici le voilà le code est un peu en vrac je l'ai pas beaucoup ranger ..
c'est un projet que j'avais entrepris et pas fini car je bloquais sur le tri d'information d'un socket tcp
(encadré dans le code)
pour ce qui est de l'utilise il suffit de taper
/gs
et voilà
les choses qui ne marchent pas sont : le systeme de ban/kick list des joueurs et les infomations du server pour ce qui est du changement de map ou d'execution de commande rcon c'est bon :)!
Source / Exemple :
alias gs { dialog -m gs gs }
dialog gs {
title "Gestion Servers Counter-Strike"
size -1 -1 233 129
option dbu
box "Servers Ips:", 1, 1 1 112 70
combo 2, 5 20 60 50, size
button "Add", 3, 67 20 37 12
button "Del", 4, 67 35 37 12
button "Edit", 5, 67 50 37 12
text "Syntaxe : <IP>:<PORT>", 6, 5 10 62 8
box "Propriétés Rcon :", 7, 1 71 112 46
edit "rcon?", 8, 4 90 60 10
button "set", 9, 65 90 37 10
text "Rcon : -", 10, 57 78 40 10
check "montrer/cacher", 11, 4 103 60 10
button "Fermer", 12, 1 119 231 10
tab "Rcon Cmds", 13, 117 1 114 115
edit "", 14, 123 32 104 10, tab 13
text "Ne pas mettre Rcon devant la commande", 15, 123 22 104 10, tab 13
button "Executer", 16, 123 43 104 8, tab 13
button "Go", 17, 178 55 37 10, tab 13
button "kick", 18, 182 78 37 8, tab 13
button "ban", 19, 174 90 16 20, tab 13
edit "", 20, 123 55 50 10, tab 13
button "Liste maps", 21, 123 65 50 7, tab 13
box "Steam ids", 22, 119 73 111 41, tab 13
list 23, 122 81 50 29, tab 13 size vsbar
edit "", 24, 192 90 15 10, tab 13
text "min", 25, 208 91 15 8, tab 13
text "0 pour un ban a vie", 26, 193 99 33 13, tab 13
tab "Info Server", 27
button "Rafraîchir", 28, 152 105 40 10, tab 27
text "Nom : ?", 29, 122 26 105 16, tab 27
text "Status : ?", 30, 122 44 40 8, tab 27
text "Moteur : ?", 31, 122 56 50 8, tab 27
text "Jeu : ?", 32, 169 56 50 8, tab 27
text "Joueurs : ?", 33, 169 66 40 8, tab 27
text "Map : ?", 34, 122 66 46 8, tab 27
text "D change Map : ?", 35, 122 76 50 8, tab 27
text "Anti cheat : ?", 36, 122 86 40 8, tab 27
text "Clé : ?", 37, 169 86 32 8, tab 27
text "Server : ?", 38, 122 96 38 8, tab 27
text "Os : ?", 39, 169 96 37 8, tab 27
box "Informations", 40, 119 17 112 87, tab 27
tab "Aide - Cr", 41
text "Si vous avez besoin d'aide, les Channels suivants sont a votre disposition :", 42, 123 21 103 15, tab 41
text "#karael #karael.pv #mix.cs.fr", 43, 123 39 28 23, tab 41
text "Essayer de me contacter sinon tout simplement comme ceci : /msg karael votre probleme correctement et clairement rediger", 44, 123 70 100 29, tab 41
text "Cree par Karael", 45, 123 106 45 8, tab 41
text "Ping : ?", 46, 74 6 35 8
}
on *:dialog:gs:*:*:{
if ($devent == init) {
if (!%gsrconv) { set %gsrconv c }
if (%gsrconv == c) { did -ra gs 11 Mot de passe Visible }
if (%gsrconv == m) { did -ra gs 11 Mot de passe Cacher }
if (%gsserverliste) { r.gsserverliste }
r.gsrcon
}
if ($devent == sclick) {
if ($did == 2) { set %gsserverip $did(gs,2) | unset %incgsping | r.gsrcon | r.gsrc }
if ($did == 3) {
if ($did(gs,2) isin %serverliste) { set %gser Ip déjà utilisée. | dialog -m gs.er gs.er }
elseif ($did(gs,2) !isin %serverliste) && ($did(gs,2)) && ((%2poin isin $did(gs,2)) && (%poin isin $did(gs,2))) { set %gsserveradd $did(gs,2) | set %gsserverliste %gsserverliste %gsserveradd | r.gsserverliste | unset %gsserveradd }
else { set %gser Syntaxe incorrecte veulliez utiliser : $rand(10,999) $+ . $+ $rand(10,999) $+ . $+ $rand(10,999) $+ . $+ $rand(10,999) $+ : $+ $rand(2000,3000) | dialog -m gs.er gs.er }
}
if ($did == 4) { set %gsserverliste $remove(%gsserverliste,%gsserverip) | r.gsserverliste | unset %gsrcon [ $+ [ %gsserverip ] ] | unset %gsserverip }
if ($did == 5) { echo Bouton Edit : A faire! }
if ($did == 9) && (%gsserverip) && ($did(gs,8)) { set %gsrcon [ $+ [ %gsserverip ] ] $did(gs,8) | r.gsrc | r.gsrcon }
if ($did == 12) { /dialog -x gs gs | unset %gsserverip | unset %incgsping }
if ($did == 28) { s.gt }
if ($did == 16) { if ($did(gs,14)) && (%gsserverip) { set %gssend $did(gs,14) | s.gsrcmd } }
if ($did == 21) { dialog -m gsmap gsmap }
if ($did == 17) && ($did(gs,20)) { set %gssend changelevel [ [ $did(gs,20) ] ] | s.gsrcmd }
if ($did == 11) {
if (%gsrconv == m) { set %gsrconv c | r.gsrcon }
elseif (%gsrconv == c) { set %gsrconv m | r.gsrcon }
}
}
}
dialog gsmap {
title "Liste des maps"
size -1 -1 119 74
option dbu
combo 1, 6 9 60 56, size
text "Liste des Maps", 2, 6 1 59 8
button "Add Map", 3, 71 11 37 8
button "Del Map", 4, 71 21 37 8
button "Ok", 5, 1 65 117 9
}
on *:dialog:gsmap:*:*:{
if ($devent == init) { r.gsmap }
if ($devent == sclick) {
if ($did == 1) { /did -ra gs 20 $did(gsmap,1) }
if ($did == 3) && ($did(gsmap,1)) { set %gsmapliste %gsmapliste $did(gsmap,1) | r.gsmap }
if ($did == 4) && ($did(gsmap,1)) { set %gsmapliste $remove(%gsmapliste,$did(gsmap,1)) | r.gsmap }
if ($did == 5) { /dialog -x gsmap gsmap }
}
}
alias r.gsmap {
set %r.gsm $numtok(%gsmapliste,32)
did -r gsmap 1
while (%r.gsm) {
did -a gsmap 1 $gettok(%gsmapliste,%r.gsm,32)
dec %r.gsm
}
unset %r.gsm
}
alias s.gsrcmd {
sockclose chall
sockclose execut
set %gsrcmdc %gsserverip $+ cmd
set %gsrcmdip $gettok(%gsserverip,1,58)
set %gsrcmdport $gettok(%gsserverip,2,58)
sockudp -k chall %gsrcmdip %gsrcmdport ÿÿÿÿchallenge rcon
}
on *:udpread:chall:{
sockread -fn %var
set %challenge $gettok(%var ,3,32)
sockclose $sockname
sockudp -k execut %gsrcmdip %gsrcmdport ÿÿÿÿrcon %challenge %gsrcon [ $+ [ %gsserverip ] ] %gssend
}
on *:udpread:execut:{
sockread -fn %rconvar
echo -a %rconvar
}
alias r.gsrcon {
if (%gsrcon [ $+ [ %gsserverip ] ]) && (%gsrconv == m) { did -ra gs 8 %gsrcon [ $+ [ %gsserverip ] ] }
elseif (%gsrcon [ $+ [ %gsserverip ] ]) && (%gsrconv == c) { did -ra gs 8 ****** }
else { did -ra gs 8 Rcon? }
}
alias r.gsrc { set %gsrc $iif(%gsrcon [ $+ [ %gsserverip ] ] != $null, Ok, Non) | did -ra gs 10 Rcon : %gsrc }
alias r.gsserverliste {
set %r.gs $numtok(%gsserverliste,32)
did -r gs 2
while (%r.gs) { did -a gs 2 $gettok(%gsserverliste,%r.gs,32)
dec %r.gs }
unset %r.gs
}
dialog gs.er {
title "Erreur"
size -1 -1 100 40
option dbu
text "", 1, 1 3 100 17, center
button "Fermer", 2, 31 25 30 10
}
On *:dialog:gs.er:init:*:/did -ra gs.er 1 %gser
On *:dialog:gs.er:sclick:2:/dialog -x gs.er gs.er
alias s.gt {
set %gtsockip 80.248.220.21:27025
sockclose %gtsockip
sockopen %gtsockip gametiger.com 80
}
on *:sockopen:%gtsockip:{
sockwrite -n %gtsockip GET /search?address=80.248.220.21%3A27025&game=all HTTP/1.1
sockwrite -n %gtsockip Host: gametiger.com
sockwrite -n %gtsockip Connection: close
sockwrite -n %gtsockip $crlf
}
on *:sockread:%gtsockip:{
if ($sockerr) {
}
#############
else {
sockread -fn %gtsock
set %gtsocks %gtsock
set %gtnom <table><tr class="dark"><td colspan=2><center><font color=ffffff><b>Server Details</td></tr><tr><td bgcolor=ccccdd><b>Server Name</td><td><font color=666666><b></b></td></tr>
set %gtstatus <tr><td bgcolor=ccccdd><b>Status</td><td><img src=/images/up.gif border=0 width=15 height=15 align=left valign=bottom></td></tr>
set %gtmoteur <tr><td bgcolor=ccccdd><b>Engine</td><td> </td></tr>
set %gtgame <tr><td bgcolor=ccccdd><b>Game</td><td> </td></tr>
set %gtmap <tr><td bgcolor=ccccdd><b>Map</td><td> </td></tr>
set %gtlastmap <tr><td bgcolor=ccccdd><b>Last Map Change</td><td> ago</td></tr>
set %gttypeofserver <tr><td bgcolor=ccccdd><b>Type of Server</td><td></td></tr>
set %gtos <tr><td bgcolor=ccccdd><b>OS</td><td></td></tr>
set %gtpassword <tr><td bgcolor=ccccdd><b>Password required</td><td></td></tr>
set %gtactive <tr><td bgcolor=ccccdd><b>Active/Max Players </td><td><img src=/images/down.gif border=0 width=15 height=15 align=left valign=bottom></td></tr>
if (%gtnom isin %tgsocks) { /echo -a 29 Nom : $remove(%tgsocks,%gtnom) }
if (%gtstatus isin %tgsocks) { /echo -a 30 Status : $remove(%tgsocks,%gtstatus) }
if (%gtmoteur isin %tgsocks) { /echo -a 31 Moteur : $remove(%tgsocks,%gtmoteur) }
if (%gtgame isin %tgsocks) { /echo -a 32 Jeu : $remove(%tgsocks,%gtgame) }
if (%gtmap isin %tgsocks) { /echo -a 34 map : $remove(%tgsocks,%gtmap) }
if (%gtlastmap isin %tgsocks) { /echo -a 35 D change Map : $remove(%tgsocks,%gtlastmap) }
if (%gttypeofserver isin %tgsocks) { /echo -a 38 Server : $remove(%tgsocks,%gttypeofserver) }
if (%gtos isin %tgsocks) { /echo -a 39 Os : $remove(%tgsocks,%gtos) }
if (%gtpassword isin %tgsocks) { /echo -a 37 Proteger : $remove(%tgsocks,%gtpassword) }
if (%gtactive isin %tgsocks) { /echo -a 33 Joueurs : $remove(%gtsocks,%gtactive) }
}
##############################################
}
Conclusion :
Il y a de grande chance pour que je le termine voir meme le perfectionne cette année.
Si l'envie vous prend de m'aider n'hésitez pas! (contact mp)
je l'ai mis en expert puisqu'il gere les sockets udp.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.