Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_mysql>
- #include <streamer>
- #include <sscanf2>
- #include <Thread>
- #include <s_useful>
- #define HOTE "localhost"
- #define USER "root"
- #define DB "samp"
- #define PASS ""
- #define MAX_RADARS 3000
- #define D_VITESSE 1998
- #define D_AMENDE 1999
- #define D_RADIUS 2000
- enum rInfo
- {
- Float:xPos,
- Float:yPos,
- Float:zPos,
- Float:radi,
- Float:xRot,
- Float:yRot,
- Float:zRot,
- rVitesse,
- rAmende,
- rPoseur[MAX_PLAYER_NAME+1],
- rObjet,
- };
- new InfoRadar[MAX_RADARS][rInfo];
- new MySQL, requete[1024], radaractu, sauv, posi;
- public OnFilterScriptInit()
- {
- MySQL = mysql_connect(HOTE, USER, DB, PASS);
- if(MySQL) printf("~- Connexion à l'hôte SQL réussie.");
- else mysql_reconnect(MySQL);
- ChargerRadars();
- sauv = CreateThread("SauvRadars");
- posi = CreateThread("CheckPos");
- printf(">> s_radars chargé !");
- return 1;
- }
- public OnFilterScriptExit()
- {
- mysql_close(MySQL);
- DechargerRadars();
- DestroyThread(sauv);
- DestroyThread(posi);
- printf(">> s_radars déchargé !");
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new cmd[26], params[128];
- sscanf(cmdtext, "'/'s[26] s[128]", cmd, params);
- if(strcmp(cmd, "radar", true) == 0)
- {
- if(!strlen(params)) return SendSyntaxMessage(playerid, "/radar [Action]", "35B000", "Actions", "poser, detruire, modifier");
- if(strcmp(params, "poser", true) == 0)
- {
- if(radaractu + 1 >= MAX_RADARS) return SendErrorMessage(playerid, "La limite maximale de radars posés à été atteinte !");
- for(new r = 1; r < MAX_RADARS; r++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 3.0, InfoRadar[r][xPos], InfoRadar[r][yPos], InfoRadar[r][zPos])) return SendErrorMessage(playerid, "Il y a déjà un radar posé dans un rayon de 3 unités.");
- if(!IsValidDynamicObject(InfoRadar[r][rObjet]))
- {
- SetPVarInt(playerid, "CreeRadar", r);
- InfoRadar[r][xPos] = GetPlayerxPos(playerid);
- InfoRadar[r][yPos] = GetPlayeryPos(playerid);
- InfoRadar[r][zPos] = GetPlayerzPos(playerid);
- InfoRadar[r][rPoseur] = GetName(playerid);
- InfoRadar[r][rObjet] = CreateDynamicObject(18880, InfoRadar[r][xPos], InfoRadar[r][yPos], InfoRadar[r][zPos], 0.0, 0.0, 0.0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
- format(requete, sizeof(requete),"INSERT INTO `Radars` VALUES('%d', '%f', '%f', '%f', '0.0', '0.0', '0.0', '0.0' '%s', '0', '0')", r, GetPlayerxPos(playerid), GetPlayeryPos(playerid), GetPlayerzPos(playerid), GetName(playerid));
- mysql_tquery(MySQL, requete);
- radaractu++;
- if(cache_affected_rows() > 0)
- {
- SendRadarMessage(playerid, "Le radar a correctement été ajouté à la base de données. Vous pourrez le repositionner plus tard. Vous allez maintenant pouvoir renseigner la vitesse limite et le prix de l'amende.");
- ShowPlayerDialog(playerid, D_VITESSE, DIALOG_STYLE_INPUT, "{35B000}Radars", "Rentrez dans la boîte de dialogue ci-dessous la {35B000}vitesse limite{FFFFFF} \n qui ne doit pas être dépassée par le conducteur.", "Valider", "");
- return 1;
- }
- else return SendRadarMessage(playerid, "Le radar n'a pas pu être ajoutée à la base de données. Veuillez réessayer.");
- }
- }
- }
- if(strcmp(params, "detruire", true) == 0)
- {
- for(new r = 1; r < MAX_RADARS; r++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 3.0, InfoRadar[r][xPos], InfoRadar[r][yPos], InfoRadar[r][zPos]) && strcmp(InfoRadar[r][rPoseur], GetName(playerid), false) == 0)
- {
- DestroyDynamicObject(InfoRadar[r][rObjet]);
- format(requete, sizeof(requete), "DELETE FROM `Radars` WHERE `id` = '%d'", r);
- mysql_tquery(MySQL, requete);
- return SendRadarMessage(playerid, "Vous venez de détruire ce radar !");
- }
- else return SendErrorMessage(playerid, "Vous n'êtes pas à proximité d'un radar ou vous n'êtes pas autorisé à détruire ce radar.");
- }
- }
- if(strcmp(params, "modifier", true) == 0)
- {
- new subpar[36];
- if(!sscanf(params, "s[36]", subpar)) return SendSyntaxMessage(playerid, "/radar modifier [Modif]", "35B000", "Modifs", "Radius, Vitesse, Amende");
- for(new r = 1; r < MAX_RADARS; r++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 3.0, InfoRadar[r][xPos], InfoRadar[r][yPos], InfoRadar[r][zPos]) && !strcmp(GetName(playerid), InfoRadar[r][rPoseur], false))
- {
- if(!strcmp(subpar, "radius", true) || !strcmp(subpar, "radi", true))
- {
- SetPVarInt(playerid, "ModifRadar", r);
- ShowPlayerDialog(playerid, D_RADIUS, DIALOG_STYLE_INPUT, "{35B000}Radars", "Entrez la valeur voulue comme radius (en unités samp) pour ce radar.", "Valider", "");
- return 1;
- }
- else if(!strcmp(subpar, "vitesse", true))
- {
- SetPVarInt(playerid, "ModifRadar", r);
- ShowPlayerDialog(playerid, D_VITESSE, DIALOG_STYLE_INPUT, "{35B000}Radars", "Entrez la valeur voulue comme vitesse limite (en km/h) pour ce radar.", "Valider", "");
- return 1;
- }
- else if(!strcmp(subpar, "amende", true))
- {
- SetPVarInt(playerid, "ModifRadar", r);
- ShowPlayerDialog(playerid, D_AMENDE, DIALOG_STYLE_INPUT, "{35B000}Radars", "Entrez la valeur voulue comme amende à payer (en dollars) si un conducteur se fait flasher sur votre radar.", "Valider", "");
- return 1;
- }
- else return SendSyntaxMessage(playerid, "/radar modifier [Modif]", "35B000", "Modifs", "Radius, Vitesse, Amende");
- }
- }
- }
- }
- return 0;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == D_VITESSE)
- {
- if(!IsNumeric(inputtext))
- {
- ShowPlayerDialog(playerid, D_VITESSE, DIALOG_STYLE_INPUT, "{35B000}Radars", "Vous devez entrer une valeur numérique en km/h dans la boîte de dialogue ci-dessous.", "Valider", "");
- return 1;
- }
- if(!response)
- {
- ShowPlayerDialog(playerid, -1, DIALOG_STYLE_MSGBOX, "fermer", "fermer", "fermer", "");
- return 1;
- }
- for(new r = 1; r < MAX_RADARS; r++)
- {
- if(r == GetPVarInt(playerid, "CreeRadar"))
- {
- InfoRadar[r][rVitesse] = strval(inputtext);
- SendClientFormattedMessage(playerid, -1, "{35B000}[Radars]{FFFFFF} Vous avez mit la vitesse minimale du radar à %d km/h. Maintenant, vous devez renseigner l'amende payée par le conducteur si il dépasse cette vitesse limite.", strval(inputtext));
- ShowPlayerDialog(playerid, D_AMENDE, DIALOG_STYLE_INPUT, "{35B000}Radars", "Insérez maintenant l'amende que le conducteur va recevoir si il dépasse la vitesse limite insérée.", "Valider", "");
- format(requete, sizeof(requete), "UPDATE `Radars` SET `vitesse` = '%d' WHERE `id` = '%d'", strval(inputtext), r);
- mysql_tquery(MySQL, requete);
- return 1;
- }
- else if(r == GetPVarInt(playerid, "ModifRadar"))
- {
- InfoRadar[r][rVitesse] = strval(inputtext);
- format(requete, sizeof(requete), "UPDATE `Radars` SET `vitesse` = '%d' WHERE `id` = '%d'", strval(inputtext), r);
- mysql_tquery(MySQL, requete);
- if(cache_affected_rows() > 0) return SendClientFormattedMessage(playerid, -1, "{35B000}[Radars]{FFFFFF} Vous avez mit la vitesse minimale du radar à %d km/h.", strval(inputtext));
- else return SendRadarMessage(playerid, "Il y a eu un problème lors de la modification de ce radar dans la base de données.");
- }
- }
- }
- if(dialogid == D_AMENDE)
- {
- if(!IsNumeric(inputtext))
- {
- ShowPlayerDialog(playerid, D_VITESSE, DIALOG_STYLE_INPUT, "{35B000}Radars", "Vous devez entrer une valeur numérique en $ dans la boîte de dialogue ci-dessous.", "Valider", "");
- return 1;
- }
- if(!response)
- {
- ShowPlayerDialog(playerid, D_VITESSE, DIALOG_STYLE_INPUT, "{35B000}Radars", "Vous devez entrer une valeur numérique en $ dans la boîte de dialogue ci-dessous.", "Valider", "");
- return 1;
- }
- for(new r = 1; r < MAX_RADARS; r++)
- {
- if(r == GetPVarInt(playerid, "CreeRadar"))
- {
- InfoRadar[r][rAmende] = strval(inputtext);
- SendClientFormattedMessage(playerid, -1, "{35B000}[Radars]{FFFFFF} Vous avez mit l'amende du radar à $%d. Maintenant, vous devez renseigner le radius d'action (au format flottant)", strval(inputtext));
- ShowPlayerDialog(playerid, D_RADIUS, DIALOG_STYLE_INPUT, "{35B000}Radars", "Insérez maintenant le radius d'activité du radar (en unité samp flottantes)", "Valider", "");
- format(requete, sizeof(requete), "UPDATE `Radars` SET `amende` = '%d' WHERE `id` = '%d'", strval(inputtext), r);
- mysql_tquery(MySQL, requete);
- return 1;
- }
- else if(r == GetPVarInt(playerid, "ModifRadar"))
- {
- InfoRadar[r][rAmende] = strval(inputtext);
- format(requete, sizeof(requete), "UPDATE `Radars` SET `amende` = '%d' WHERE `id` = '%d'", strval(inputtext), r);
- mysql_tquery(MySQL, requete);
- if(cache_affected_rows() > 0) return SendClientFormattedMessage(playerid, -1, "{35B000}[Radars]{FFFFFF} Vous avez mit l'amende du radar à $%d.", strval(inputtext));
- else return SendRadarMessage(playerid, "Il y a eu un problème lors de la modification de ce radar dans la base de données.");
- }
- }
- }
- if(dialogid == D_RADIUS)
- {
- if(!strfind(inputtext, "."))
- {
- ShowPlayerDialog(playerid, D_VITESSE, DIALOG_STYLE_INPUT, "{35B000}Radars", "Vous devez entrer une valeur flottante en unités samp dans la boîte de dialogue ci-dessous.", "Valider", "");
- return 1;
- }
- if(!response)
- {
- ShowPlayerDialog(playerid, D_VITESSE, DIALOG_STYLE_INPUT, "{35B000}Radars", "Vous devez entrer une valeur flottante en unités samp dans la boîte de dialogue ci-dessous.", "Valider", "");
- return 1;
- }
- for(new r = 1; r < MAX_RADARS; r++)
- {
- if(r == GetPVarInt(playerid, "CreeRadar"))
- {
- InfoRadar[r][radi] = floatstr(inputtext);
- SendClientFormattedMessage(playerid, -1, "{35B000}[Radars]{FFFFFF} Vous avez mit le radius du radar à %f unités. Vous pouvez maintenant éditer le radar à proprement parler.");
- EditDynamicObject(playerid, InfoRadar[r][rObjet]);
- format(requete, sizeof(requete), "UPDATE `Radars` SET `radius` = '%f' WHERE `id` = '%d'", floatstr(inputtext), r);
- mysql_tquery(MySQL, requete);
- return 1;
- }
- else if(r == GetPVarInt(playerid, "ModifRadar"))
- {
- InfoRadar[r][radi] = floatstr(inputtext);
- format(requete, sizeof(requete), "UPDATE `Radars` SET `radius` = '%d' WHERE `id` = '%d'", floatstr(inputtext), r);
- mysql_tquery(MySQL, requete);
- if(cache_affected_rows() > 0) return SendClientFormattedMessage(playerid, -1, "{35B000}[Radars]{FFFFFF} Vous avez mit le radius du radar à %f unités.", floatstr(inputtext));
- else return SendRadarMessage(playerid, "Il y a eu un problème lors de la modification de ce radar dans la base de données.");
- }
- }
- }
- return 0;
- }
- public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
- {
- for(new r = 0; r < MAX_RADARS; r++)
- {
- if(objectid == InfoRadar[r][rObjet])
- {
- if(response == 0 && GetPVarInt(playerid, "CreeRadar") == 0)
- {
- EditDynamicObject(playerid, objectid);
- return 1;
- }
- else if(GetPVarInt(playerid, "CreeRadar") != 0)
- {
- CancelEdit(playerid);
- return 1;
- }
- if(response == 1)
- {
- InfoRadar[r][xPos] = x;
- InfoRadar[r][yPos] = y;
- InfoRadar[r][zPos] = z;
- InfoRadar[r][xRot] = rx;
- InfoRadar[r][yRot] = ry;
- InfoRadar[r][zRot] = rz;
- DeletePVar(playerid, "CreeRadar");
- SauvRadars();
- return 1;
- }
- }
- }
- return 0;
- }
- stock SendSyntaxMessage(playerid, cmd[], couleur[], param[], parinfo[])
- {
- SendClientFormattedMessage(playerid, -1, "{33CCFF}[Usage]{FFFFFF} %s", cmd);
- if(strlen(param) < 3 && strlen(parinfo) < 3) return 1;
- else return SendClientFormattedMessage(playerid, -1, "{%s}[%s]{FFFFFF} %s", couleur, param, parinfo);
- }
- stock SendRadarMessage(playerid, message[])
- {
- return SendClientFormattedMessage(playerid, -1, "{35B000}[Radars]{FFFFFF} %s", message);
- }
- stock ChargerRadars()
- {
- for(new r = 1; r < MAX_RADARS; r++)
- {
- format(requete, sizeof(requete), "SELECT * FROM `Radars` WHERE `id` = '%d'", r);
- mysql_tquery(MySQL, requete);
- if(cache_num_rows() > 0)
- {
- InfoRadar[r][xPos] = cache_get_field_content_float(0, "xPos", MySQL);
- InfoRadar[r][yPos] = cache_get_field_content_float(0, "yPos", MySQL);
- InfoRadar[r][zPos] = cache_get_field_content_float(0, "zPos", MySQL);
- InfoRadar[r][xRot] = cache_get_field_content_float(0, "xRot", MySQL);
- InfoRadar[r][yRot] = cache_get_field_content_float(0, "yRot", MySQL);
- InfoRadar[r][zRot] = cache_get_field_content_float(0, "zRot", MySQL);
- InfoRadar[r][rObjet] = CreateDynamicObject(18880, InfoRadar[r][xPos], InfoRadar[r][yPos], InfoRadar[r][zPos], InfoRadar[r][xRot], InfoRadar[r][yRot], InfoRadar[r][zRot]);
- InfoRadar[r][rAmende] = cache_get_field_content_int(0, "amende", MySQL);
- InfoRadar[r][rVitesse] = cache_get_field_content_int(0, "vitesse", MySQL);
- InfoRadar[r][radi] = cache_get_field_content_float(0, "radius", MySQL);
- }
- else break;
- radaractu = r-1;
- printf("Tous les radars ont été chargés !");
- }
- }
- stock SauvRadars()
- {
- for(new r = 1; r < MAX_RADARS; r++)
- {
- format(requete, sizeof(requete), "UPDATE `Radars` SET `xPos` = '%f', `yPos` = '%f', `zPos` = '%f', `xRot` = '%f', `yRot` = '%f', `zRot` = '%f', `radius` = '%f', `amende` = '%d', `vitesse` = '%d' WHERE `id` = '%d'",
- InfoRadar[r][xPos], InfoRadar[r][yPos], InfoRadar[r][zPos],
- InfoRadar[r][xRot], InfoRadar[r][yRot], InfoRadar[r][zRot],
- InfoRadar[r][radi], InfoRadar[r][rAmende], InfoRadar[r][rVitesse], r);
- mysql_tquery(MySQL, requete);
- }
- SleepThread(5000);
- }
- stock DechargerRadars()
- {
- SauvRadars();
- for(new r = 1; r < MAX_RADARS; r++)
- {
- if(IsValidDynamicObject(InfoRadar[r][rObjet])) DestroyDynamicObject(InfoRadar[r][rObjet]);
- else break;
- printf("Tous les radars ont été déchargés !");
- }
- }
- stock GetVehicleSpeed(vehicleid)
- {
- new Float:speed[4];
- GetVehicleVelocity(vehicleid, speed[0], speed[1], speed[2]);
- speed[3] = floatsqroot(floatabs(floatpower(speed[0] + speed[1] + speed[2],2)));
- return floatround(speed[3] * 100 * 1.61);
- }
- stock CheckPos()
- {
- for(new p = 0; p < MAX_PLAYERS; p++)
- {
- for(new r = 0; r < MAX_RADARS; r++)
- {
- if(IsPlayerConnected(p) && IsPlayerInAnyVehicle(p))
- {
- if(IsPlayerInRangeOfPoint(p, InfoRadar[r][radi], InfoRadar[r][xPos], InfoRadar[r][yPos], InfoRadar[r][zPos]))
- {
- if(GetVehicleSpeed(GetPlayerVehicleID(p)) >= InfoRadar[r][rVitesse])
- {
- GivePlayerMoney(playerid, -InfoRadar[r][rAmende]);
- SendClientFormattedMessage(playerid, -1, "{35B000}[Radars]{FFFFFF} Vous écopez d'une amende de $%d pour excès de vitesse (flashé à %dkm/h alors que la vitesse limite est de %d km/h)", InfoRadar[r][rAmende], GetVehicleSpeed(GetPlayerVehicleID(playerid), true), InfoRadar[r][rVitesse]);
- GivePlayerMoney(GetPlayerID(InfoRadar[r][rPoseur], InfoRadar[r][rAmende]);
- SendClientFormattedMessage(GetPlayerID(InfoRadar[r][rPoseur]), -1, "{35B000}[Radars]{FFFFFF} %s a été flashé à %d km/h sur un radar que vous avez posé. Il écope d'une amende de $%d.", GetVehicleSpeed(GetPlayerVehicleID(playerid), true), InfoRadar[r][rAmende]);
- }
- }
- }
- }
- }
- SleepThread(100);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement