GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Eloctro le 03 Janvier 2009, 15:01:33

Titre: bug radar
Posté par: Eloctro le 03 Janvier 2009, 15:01:33
Bonjour ,
Voila je fait un radar mais j'ai une erreur :
Code: (cpp) [Sélectionner]
new Float:x,Float:y,Float:z;
new Float:distance,value;
new SLOTS
for(new i=0; i<SLOTS; i++)//Ligne d'erreur
{
GetPlayerPos(i, x, y, z);
distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
value = floatround(distance * 5000);
if(UpdateSeconds > 1)
{
value = floatround(value / UpdateSeconds);
}

else if(PlayerToPoint(15, i,1643.2842,-1714.4871,15.6055))
{
  if( radar == 0)
{
radar = 1;
SendClientMessage(i, COLOR_RED, "(!) Attention, vous avez été flashé par un radar à plus de 150 km/h! (!)");
}
}
}
Je me suis aider du radar de nikko et quelque modif mais j'ai une erreure
F:\SA MP\gamemodes\Rpg-street.pwn(5907) : error 001: expected token: ";", but found "for"
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
Titre: Re : bug radar
Posté par: Nikko™ le 03 Janvier 2009, 15:02:50
new SLOTS;

;)

++
nikko
Titre: Re : bug radar
Posté par: Eloctro le 03 Janvier 2009, 15:07:48
Merci ,
Erreur bête lol d'habitude j'y pense désolé !
Parcontre j'ai déja défini i(new i;) et je voudrait le retirer mais sa me mais des erreures
Et je ses pas comment prendre la distance !
Titre: Re : bug radar
Posté par: inbox le 03 Janvier 2009, 15:12:13
Bonjour,

essaye comme ceci

#define MAX_SLOTS 200
new SLOTS[MAX_SLOTS];

Cordialement,
Titre: Re : bug radar
Posté par: Eloctro le 03 Janvier 2009, 15:19:25
c'est bon pour la vitessae j'essaille pour sltos
Titre: Re : bug radar
Posté par: Nikko™ le 03 Janvier 2009, 15:23:20
Je ne pense pas que ca marchera ton radar, il manque des truc ... du genre:
      
if(floatround(value/1500) >= 140 && IsPlayerInAnyVehicle(i) && (PlayerToPoint(25.0, i, 1822.0105,-1632.0487,12.9347)))
{
  RemovePlayerFromVehicle(i);
}

Pour tester la vitesse du joueur

++
nikko
Titre: Re : bug radar
Posté par: Eloctro le 03 Janvier 2009, 15:28:31
C'est bon la vittesse javai fait exactement pareil je vous passe mon script vous dites si sa peut marcher j'ai pas Gta la
Code: (cpp) [Sélectionner]
new Float:x,Float:y,Float:z;
new Float:distance,value;
//new SLOTS;
/*for(new i=0;  i<SLOTS;i++)
{*/
GetPlayerPos(i, x, y, z);
distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
value = floatround(distance * 5000);
if(UpdateSeconds > 1)
{
value = floatround(value / UpdateSeconds);
}

else if(floatround(value/1000) >= 140 && IsPlayerInAnyVehicle(i) && PlayerToPoint(15, i,1643.2842,-1714.4871,15.6055))
{
  if( radar == 0)
{
radar = 1;
SendClientMessage(i, COLOR_RED, "(!) Attention, vous avez été flashé par un radar à plus de 150 km/h! (!)");
}
}
//}
Titre: Re : bug radar
Posté par: inbox le 03 Janvier 2009, 15:30:24
Pourquoi mets tu un RemovePlayerFromVehicle ?

Si le joueur se fait flashé fait payer la note :p
c'est beaucoup plus marrant.

Tu peux faire encore pire mais bon c'est a toi de voir se que tu préfères

Cordialement,

Titre: Re : bug radar
Posté par: Eloctro le 03 Janvier 2009, 15:32:55
Mais oui
Mais je serais chez moi je ferai la note et le timer de 10 secondes pour réactiver le radar sinon le message va se répéter
Titre: Re : bug radar
Posté par: inbox le 03 Janvier 2009, 15:35:09
Non !
Si tu fais un timer normal
exemple => SetTimer("Radar",1000,0); // 1= Actif sans limite - 0= Actif 1 fois (pour chaque passage)

Cordialement,
Titre: Re : bug radar
Posté par: Eloctro le 03 Janvier 2009, 15:38:00
Mais nan dans un playerToPoint faut lactiver une foi le Timer sinon sa va prendre du CPU pour rien !
Titre: Re : bug radar
Posté par: inbox le 03 Janvier 2009, 15:40:55
Tu as mal lu mon sujet  :bangin

le SetTimer("Radar",1000,0); avec le 0 est fait pour ça
ca l'active 1 fois seulement
une fois que le joueur a passer le radar le timer se stop jusqu'au prochain passage si il repasse vers le radar

cordialement,
Titre: Re : bug radar
Posté par: Eloctro le 03 Janvier 2009, 15:44:13
nan le 1 sactivera une foi pour tou le temp meme si apres il est en dehor de la zone le 0 sactivera seulement dans la zone et comme les PlayerToPoint se répète il s'activer plusieurs fois !
Titre: Re : bug radar
Posté par: inbox le 03 Janvier 2009, 15:49:01
Ah bon
es tu certains ? :p

Chez moi le 0 s'active 1 fois et pas tout le temps
Je t'invite a revoir la fonction Setimer alors
http://wiki.sa-mp.com/wiki/SetTimer (http://wiki.sa-mp.com/wiki/SetTimer)

Bonne chance pour la suite :)

Cordialement,
Titre: Re : bug radar
Posté par: Eloctro le 03 Janvier 2009, 15:54:56
Mais oui le 0 sactive une foi mais si je mes un message dans un PlayerToPoint il sactivera plusieur foi ca rle playertopoint lme repete don il repetera le timer tant que tu sortira pas
Titre: Re : bug radar
Posté par: Nikko™ le 03 Janvier 2009, 15:56:28
ui a raison, on utilise un playertopoint, si la zone est un peu grande et que le joueur passe plus d'une seconde dans la zone, ca affichera 2 message.

Inbox, jai pas compris ton system du 0 et du 1, dans lexemple du wiki, il est a 0, et il est sencé se passer quoi ?

++
nikko
Titre: Re : bug radar
Posté par: inbox le 03 Janvier 2009, 15:59:47
Excusez moi mais si
vous coder votre code correctement le message ne s'affiche pas deux fois
seulement faut mettre un SetTimer a 0 et le mettre la ou il faut
et pas n'importe ou

cordialement,
Titre: Re : bug radar
Posté par: Eloctro le 03 Janvier 2009, 16:17:40
Eisseille Inbox tu verra !

Sujet clos !  :lock
Titre: Re : bug radar
Posté par: inbox le 03 Janvier 2009, 16:35:53
Je l'ai fait sur mon serveur avec plus de 88 Radars pour le moment
et ça marche très bien.

Cordialement,
Titre: Re : bug radar
Posté par: Eloctro le 03 Janvier 2009, 17:01:11
Jui curieu de voir ton serveur !
Titre: Re : Re : bug radar
Posté par: Nikko™ le 03 Janvier 2009, 17:21:54
C'est bon la vittesse javai fait exactement pareil je vous passe mon script vous dites si sa peut marcher j'ai pas Gta la
Code: (cpp) [Sélectionner]
new Float:x,Float:y,Float:z;
new Float:distance,value;
//new SLOTS;
/*for(new i=0;  i<SLOTS;i++)
{*/
GetPlayerPos(i, x, y, z);
distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
value = floatround(distance * 5000);
if(UpdateSeconds > 1)
{
value = floatround(value / UpdateSeconds);
}

else if(floatround(value/1000) >= 140 && IsPlayerInAnyVehicle(i) && PlayerToPoint(15, i,1643.2842,-1714.4871,15.6055))
{
  if( radar == 0)
{
radar = 1;
SendClientMessage(i, COLOR_RED, "(!) Attention, vous avez été flashé par un radar à plus de 150 km/h! (!)");
}
}
//}

Petit précision: met a 1500 le if(floatround(value/1000) ;)
et met pas de else if, met un if tout seul ;)

++
nikko
Titre: Re : bug radar
Posté par: Eloctro le 03 Janvier 2009, 18:00:08
Bon voila mon code et j'ai dautre PlayerToPoint donc je fait
IF(le premier)
ELSE IF(les autres)
ELSE IF
....nan ?
j'ai un probleme j'ai le messge quand je sui en dessous de 70

Code: (cp) [Sélectionner]
new Float:x,Float:y,Float:z;
new Float:distance,value;
GetPlayerPos(i, x, y, z);
distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
value = floatround(distance * 11000);
if(UpdateSeconds > 1)
{
value = floatround(value / UpdateSeconds);
}
else if(floatround(value/1400) >= 71 && IsPlayerInAnyVehicle(i) && PlayerToPoint(25, i,1604.5836,-1730.3593,13.1247))
{
if( radar == 0)
{
radar = 1;
SendClientMessage(i, COLOR_RED, "(!) Souriez vous êtes flashé par un radar (!)");
SendClientMessage(i, COLOR_RED, "Vous perdez 1000$ vous étez à plus de 70 Kmh");
SetTimerEx("radat", 10000,0, "i");
}
}
Titre: Re : bug radar
Posté par: Nikko™ le 03 Janvier 2009, 19:43:45
Tout ce truc tu l'a intégré dans un timer cest bien ca ?

Si oui, met:

new Float:x,Float:y,Float:z;
new Float:distance,value;
GetPlayerPos(i, x, y, z);
distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
value = floatround(distance * 11000);
if(UpdateSeconds > 1)
{
value = floatround(value / UpdateSeconds);
}
if(floatround(value/1500) >= 71 && IsPlayerInAnyVehicle(i) && PlayerToPoint(25, i,1604.5836,-1730.3593,13.1247) && radar == 0)
{
radar = 1;
SendClientMessage(i, COLOR_RED, "(!) Souriez vous êtes flashé par un radar (!)");
SendClientMessage(i, COLOR_RED, "Vous perdez 1000$ vous étez à plus de 70 Kmh");
SetTimerEx("radat", 10000,0, "i");
}

Et le radar, tu la défini avec [MAX_PLAYERS] ? si oui met radar[playerid] = ..;

++
nikko
Titre: Re : bug radar
Posté par: Eloctro le 04 Janvier 2009, 11:56:06
Nan c'est pas dans un Timer c'est un  simple playerToPoint et quand on passe dessu il dit le message se désactive pendant 10 (la il active un timer pour le réativer) secondes pour pas une répétition du message