SA-MP Forums

Go Back   SA-MP Forums > Non-English > Old Languages Archive > Français/French

 
 
Thread Tools Display Modes
Old 19/06/2012, 03:41 PM   #1
psymono
Big Clucker
 
Join Date: Oct 2011
Posts: 143
Reputation: 1
Default Obtenir seulement les 2 premiers chiffres d'une IP

Bonsoir,

Je souhaiterais avoir de l'aide sur une petite chose, Comment on peut obtenir les 2 premiers chiffres d'une ip

Ex : J'ai l'ip 78.21.30.47 et je veut obtenir dans mon "new ip;" seulement les 2 premiers chiffres : ici mon "new ip" sera = a "78.21"

Comment puis-je faire pour avoir sa ? J'ai essayer beaucoup de chose mais je n'arrive pas a trouver.

Merci a vous.
psymono is offline  
Old 19/06/2012, 05:22 PM   #2
mehdi-jumper
High-roller
 
mehdi-jumper's Avatar
 
Join Date: Sep 2011
Location: New-Zealand
Posts: 1,884
Reputation: 51
Default Re : Obtenir seulement les 2 premiers chiffres d'une IP

dans ta déclaration de new ip, tu dois avoir new ip[UNNombre];

Remplace le nombre par celui que tu veux, il correspond au nombre de caracteres que tu aura
mehdi-jumper is offline  
Old 19/06/2012, 05:36 PM   #3
Soap'
Gangsta
 
Soap''s Avatar
 
Join Date: Nov 2011
Posts: 858
Reputation: 10
Default Re : Obtenir seulement les 2 premiers chiffres d'une IP

En gros, tu met 5
Soap' is offline  
Old 19/06/2012, 06:09 PM   #4
Varkoll_
High-roller
 
Varkoll_'s Avatar
 
Join Date: Dec 2009
Location: Peut-être pas sur Terre ?
Posts: 1,940
Reputation: 61
Default Re : Obtenir seulement les 2 premiers chiffres d'une IP

Tiens je te fait un C/C de mon main, j'y ai inséré la méthode pour pouvoir n'afficher que deux chiffres, après c'est à toi de l'adapter en fonction, et de le faire "un peu plus économe":
[php]
main()
{
new coco = 4;
printf("Coco = %d", coco);
new adresse = GetVariableAddress(coco);
printf("Adresse de Coco = %d", adresse);
@ptr[adresse] = 8;
printf("Coco = %d", coco);
new ip[16] = "192.168.1.1";
new sp = 0;
new car;
for(new i = 0; i < strlen(ip); i++)
{
if(ip[i] == '.')
{
sp++;
}
if(sp == 2)
{
car = i;
break;
}
}
strdel(ip, car, strlen(ip));
printf("Ma nouvelle ip est: %s", ip);
}
[/php]

(P.S: Ne t'occupes pas des pointeurs c'est n'a rien à voir)
__________________
Varkoll_ is offline  
Old 19/06/2012, 07:11 PM   #5
psymono
Big Clucker
 
Join Date: Oct 2011
Posts: 143
Reputation: 1
Default Re : Obtenir seulement les 2 premiers chiffres d'une IP

Ok merci c'est enfaite pour faire un ban de plage IP, je ferais donc /banip 127.0 et sa ban la plage ip 127.0 si quelqu'un a l'ip qui commence par 127.0 sa lui dit qu'il est ban, j'ai quelque idée.
psymono is offline  
Old 19/06/2012, 07:42 PM   #6
Varkoll_
High-roller
 
Varkoll_'s Avatar
 
Join Date: Dec 2009
Location: Peut-être pas sur Terre ?
Posts: 1,940
Reputation: 61
Default Re : Obtenir seulement les 2 premiers chiffres d'une IP

[quote=psymono;1933397]Ok merci c'est enfaite pour faire un ban de plage IP, je ferais donc /banip 127.0 et sa ban la plage ip 127.0 si quelqu'un a l'ip qui commence par 127.0 sa lui dit qu'il est ban, j'ai quelque idée.[/quote]

Donc en gros tu as compris mon code ?
__________________
Varkoll_ is offline  
Old 19/06/2012, 09:25 PM   #7
decondelite
High-roller
 
decondelite's Avatar
 
Join Date: Nov 2008
Location: France
Posts: 1,387
Reputation: 58
Default Re: Obtenir seulement les 2 premiers chiffres d'une IP

Leo, il y a une variante, mais peut-être moins optimale: c'est d'utiliser tout simplement strfind deux fois, puis d'utiliser strmid en utilisant le résultat du deuxième strfind comme longueur de chaine.

Perso je préfère cette méthode, car c'est plus compact et lisible en terme de longueur de code, et ça permet également de conserver intacte l'adresse IP originale tout en stockant la "range" dans une autre variable.
__________________
decondelite, A.K.A Jarek

The power to make the biggest dreams of war server players become reality. Minigun turrets, fully controllable SAM sites, shooting police mavericks, devastating bomber planes, jedi light saber with force push, and many more.
decondelite is offline  
Old 20/06/2012, 06:27 AM   #8
Varkoll_
High-roller
 
Varkoll_'s Avatar
 
Join Date: Dec 2009
Location: Peut-être pas sur Terre ?
Posts: 1,940
Reputation: 61
Default Re : Obtenir seulement les 2 premiers chiffres d'une IP

Je savais bien qu'il y avait d'autres moyens mais j'ai voulu faire le code "simpliste" pour que psymono comprennes mieux. Perso j'avais commencé avec un méthode se rapprochant de la tienne mais j'ai préféré faire comme cela :)
__________________
Varkoll_ is offline  
Old 20/06/2012, 02:50 PM   #9
psymono
Big Clucker
 
Join Date: Oct 2011
Posts: 143
Reputation: 1
Default Re : Obtenir seulement les 2 premiers chiffres d'une IP

[quote=leo3412;1933469]Donc en gros tu as compris mon code ?[/quote]

Oui j'ai a peut près compris mais ton GetVarriableAdresse remplace le GetPlayerIp ?
et ton strdel remplace quoi ?

Ya juste ces deux chose la sinon sa va.

EDIT : j'ai tout repris a ma sauce ;)

Voilà ce que j'ai pour le moment : ( j'ai transformer sa en commande pour test ).

[php] else if(strcmp(cmd, "/test", true) == 0)
{
// new coco = 4;
// printf("Coco = %d", coco);
// new adresse = GetVariableAddress(coco);
new adresse[256];
GetPlayerIp(playerid,adresse,sizeof(adresse));
printf("Adresse de Coco = %s", adresse);
// printf("Coco = %d", coco);
new ipmessage[16];
format(ipmessage, sizeof(ipmessage), "%s", adresse);
new ip[16] = ipmessage;
new sp = 0;
new car;
for(new h = 0; h < strlen(ip); h++)
{
if(ip[h] == '.')
{
sp++;
}
if(sp == 2)
{
car = h;
break;
}
}
strdel(ip, car, strlen(ip));
printf("Ma nouvelle ip est: %s", ip);
return 1;
}[/php]

Seul truc c'est que j'ai cette erreur j'arrive pas à la réglé...

error 008: must be a constant expression; assumed zero ("new ip[16] = ipmessage;" )

Merci.

Last edited by psymono; 20/06/2012 at 03:46 PM.
psymono is offline  
Old 21/06/2012, 09:04 AM   #10
Varkoll_
High-roller
 
Varkoll_'s Avatar
 
Join Date: Dec 2009
Location: Peut-être pas sur Terre ?
Posts: 1,940
Reputation: 61
Default Re : Obtenir seulement les 2 premiers chiffres d'une IP

L'adresse n'a rien à voir, tout ce qui t'intérésse dans mon code c'est:
[php]
new ip[16] = "192.168.1.1";
new sp = 0;
new car;
for(new i = 0; i < strlen(ip); i++)
{
if(ip[i] == '.')
{
sp++;
}
if(sp == 2)
{
car = i;
break;
}
}
strdel(ip, car, strlen(ip));
printf("Ma nouvelle ip est: %s", ip);
[/php]
__________________
Varkoll_ is offline  
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Off
Smilies are Off
[IMG] code is Off
HTML code is Off



All times are GMT. The time now is 06:20 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.