Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////// Systeme de Ceinture //////////////////////////////////////////
- // Crée par : Yoyo3071a
- // Avec l'aide du FS de sasuke78200 : Like GTAIV
- // ProxDetector par : GM GodFather
- // Fonction GetPlayerSpeed par Sim
- // PlayerToPoint by GodFather
- // Version du script : v2.0
- //===================== ChangeLog ===============================//
- // v1.0 ==> Version 1 finial
- // v1.5 ==> Modification du systeme pour utiliser la touche saut
- // v1.5 ==> Le message pour mettre la ceinture ce met uniquement quand on est dans le vehicule
- // v1.5 ==> Affichage d'un gametext pour indiquer la touche saut au joueur dans sa configuration
- // v2.0 ==> Possibilité de definir la touche a utiliser en #define en haut
- // v2.0 ==> Systeme avec gestion de casque pour les scooter et moto
- // v2.0 ==> Ceinture disponible uniquement dans certain vehicule !
- // v2.0 ==> Systeme de verification de la ceinture pour une team defini par le scripteur
- //===================== ChangeLog ===============================//
- //////////////////////////////////////////// Systeme de Ceinture //////////////////////////////////////////
- #include <a_samp>
- #include <a_players>
- /////////////////////////////////////////// PARAMETRE DU FILTERSCRIPT ////////////////////////////
- //__________ Definition de la touche a utilisée pour la ceinture/casque __________//
- #define TOUCHE_CEINTURE KEY_HANDBRAKE
- //__________ Definition de la team qui peut utiliser la commande /verifierceinture __________//
- stock IsACop(playerid)
- return (CallRemoteFunction("IsACop","i",playerid));
- // Instruction : Remplacer IsACop par la fonction de votre gamemod qui vous permet de dire si le joueur un policier
- // ou pas et inserer les information qui permette de l'identifier ( playerid etc ... )
- /////////////////////////////////////////// PARAMETRE DU FILTERSCRIPT ////////////////////////////
- new Float:LastHealth[MAX_PLAYERS],Float:LastSpeed[MAX_PLAYERS]; // by sasuke78200
- forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
- forward ProxDetector(Float:radi, playerid, str[],col1,col2,col3,col4,col5);
- forward VerifDommage(playerid);
- forward Float:GetPlayerSpeed(playerid); // By Sim
- new ceinture[MAX_PLAYERS];
- new gPlayerLogged[MAX_PLAYERS];
- forward stopeffet(playerid);
- #define COULEUR_BLANC 0xFFFFFFAA
- #define COULEUR_VIOLET 0xC2A2DAAA
- #define COULEUR_GRIS 0xAFAFAFAA
- #define COULEUR_JAUNE 0xF2FB25FF
- #define COULEUR_ROUGE 0xBD0000FF
- #define COULEUR_BLEUCLAIR 0x33CCFFAA
- /*--------------------------------------INCLUDE: UTILS------------------------*/
- IsNumeric(const string[])
- {
- for (new i = 0, j = strlen(string); i < j; i++)
- {
- if (string[i] > '9' || string[i] < '0') return 0;
- }
- return 1;
- }
- ReturnUser(text[], playerid = INVALID_PLAYER_ID)
- {
- new pos = 0;
- while (text[pos] < 0x21) // Strip out leading spaces
- {
- if (text[pos] == 0) return INVALID_PLAYER_ID; // No passed text
- pos++;
- }
- new userid = INVALID_PLAYER_ID;
- if (IsNumeric(text[pos])) // Check whole passed string
- {
- // If they have a numeric name you have a problem (although names are checked on id failure)
- userid = strval(text[pos]);
- if (userid >=0 && userid < MAX_PLAYERS)
- {
- if(!IsPlayerConnected(userid))
- {
- /*if (playerid != INVALID_PLAYER_ID)
- {
- SendClientMessage(playerid, 0xFF0000AA, "User not connected");
- }*/
- userid = INVALID_PLAYER_ID;
- }
- else
- {
- return userid; // A player was found
- }
- }
- /*else
- {
- if (playerid != INVALID_PLAYER_ID)
- {
- SendClientMessage(playerid, 0xFF0000AA, "Invalid user ID");
- }
- userid = INVALID_PLAYER_ID;
- }
- return userid;*/
- // Removed for fallthrough code
- }
- // They entered [part of] a name or the id search Echoue (check names just incase)
- new len = strlen(text[pos]);
- new count = 0;
- new name[MAX_PLAYER_NAME];
- for (new i = 0; i < MAX_PLAYERS; i++)
- {
- if (IsPlayerConnected(i))
- {
- GetPlayerName(i, name, sizeof (name));
- if (strcmp(name, text[pos], true, len) == 0) // Check segment of name
- {
- if (len == strlen(name)) // Exact match
- {
- return i; // Return the exact player on an exact match
- // Otherwise if there are two players:
- // Me and MeYou any time you entered Me it would find both
- // And never be able to return just Me's id
- }
- else // Partial match
- {
- count++;
- userid = i;
- }
- }
- }
- }
- if (count != 1)
- {
- if (playerid != INVALID_PLAYER_ID)
- {
- if (count)
- {
- SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
- }
- else
- {
- SendClientMessage(playerid, 0xFF0000AA, "ERROR ECRAN");
- }
- }
- userid = INVALID_PLAYER_ID;
- }
- return userid; // INVALID_USER_ID for bad return
- }
- /*----------------------------------END INCLUDE: UTILS----------------------------------------------------*/
- strtok(const string[], &index)
- {
- new length = strlen(string);
- while ((index < length) && (string[index] <= ' '))
- {
- index++;
- }
- new offset = index;
- new result[20];
- while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- return result;
- }
- public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z) // by godfathers
- {
- if(IsPlayerConnected(playerid))
- {
- new Float:oldposx, Float:oldposy, Float:oldposz;
- new Float:tempposx, Float:tempposy, Float:tempposz;
- GetPlayerPos(playerid, oldposx, oldposy, oldposz);
- tempposx = (oldposx -x);
- tempposy = (oldposy -y);
- tempposz = (oldposz -z);
- //printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
- if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
- {
- return 1;
- }
- }
- return 0;
- }
- public OnFilterScriptInit()
- {
- print("[[[[[ Systeme de Ceinture v2.0 ... Chargement en cours ]]]]]");
- }
- public OnFilterScriptExit()
- {
- print("[[[[[ Systeme de Ceinture v2.0 ... FilterScript terminée ]]]]]");
- }
- public OnPlayerConnect(playerid)
- {
- gPlayerLogged[playerid] = 0;
- ceinture[playerid] = 0;
- LastHealth[playerid] = 0; // by sasuke78200
- LastSpeed[playerid] = 0; // by sasuke78200
- SetTimerEx("VerifDommage", 150, 1, "i", playerid);
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- LastHealth[playerid] = 0; // by sasuke78200
- LastSpeed[playerid] = 0; // by sasuke78200
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new cmd[256];
- new tmp[256];
- new string[256];
- new giveplayerid, idx;
- cmd = strtok(cmdtext, idx);
- if(strcmp("/verifierceinture", cmdtext, true, 9) == 0)
- {
- tmp = strtok(cmdtext, idx);
- if(!strlen(tmp))
- {
- SendClientMessage(playerid, COULEUR_GRIS, "Commande: /verifierceinture [playerid]");
- return 1;
- }
- giveplayerid = ReturnUser(tmp);
- if(IsACop(playerid))
- {
- if(IsPlayerConnected(giveplayerid))
- {
- if(giveplayerid != INVALID_PLAYER_ID)
- {
- new Float:x, Float:y, Float:z;
- new PlayerName[256];
- GetPlayerPos(giveplayerid, x, y, z);
- GetPlayerName(giveplayerid, PlayerName, 24);
- if(PlayerToPoint(6.0, playerid, x, y, z) && ceinture[giveplayerid] == 1)
- {
- format(string, sizeof(string), "* %s a sa ceinture de sécurité ou son casque.", PlayerName);
- SendClientMessage(playerid, COULEUR_BLEUCLAIR, string);
- return 1;
- }
- else if(PlayerToPoint(6.0, playerid, x, y, z) && ceinture[giveplayerid] == 0)
- {
- format(string, sizeof(string), "* %s n'a pas sa ceinture de sécurité ou son casque.", PlayerName);
- SendClientMessage(playerid, COULEUR_BLEUCLAIR, string);
- return 1;
- }
- else
- {
- SendClientMessage(playerid, COULEUR_GRIS, " Ce joueur est trop loing de vous !");
- return 1;
- }
- }
- else
- {
- SendClientMessage(playerid, COULEUR_GRIS, " Le joueur que vous avez indiquer n'existe pas !");
- return 1;
- }
- }
- }
- else
- {
- SendClientMessage(playerid, COULEUR_GRIS, " Vous n'êtes pas un membre des forces de l'odres !");
- return 1;
- }
- }
- return 0;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- new vehiclenum = GetPlayerVehicleID(playerid);
- if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
- {
- if (GetVehicleModel(vehiclenum) == 448 || GetVehicleModel(vehiclenum) == 461 || GetVehicleModel(vehiclenum) == 462 || GetVehicleModel(vehiclenum) == 463 || GetVehicleModel(vehiclenum) == 468 || GetVehicleModel(vehiclenum) == 471 || GetVehicleModel(vehiclenum) == 481 || GetVehicleModel(vehiclenum) == 509 || GetVehicleModel(vehiclenum) == 510 || GetVehicleModel(vehiclenum) == 521 || GetVehicleModel(vehiclenum) == 522 || GetVehicleModel(vehiclenum) == 581 || GetVehicleModel(vehiclenum) == 586 )
- {
- SendClientMessage(playerid, COULEUR_JAUNE, "[INFO] Votre moto/scooter est équipée d'un casque et d'un régulateur de vitesse (LCTRL enfoncée) !");
- GameTextForPlayer(playerid,"~r~ Utilisez la touche ~k~~TOUCHE_CEINTURE~",3000,4);
- }
- else
- {
- SendClientMessage(playerid, COULEUR_JAUNE, "[INFO] Votre vehicule est équipée de ceinture de sécuritée et d'un régulateur de vitesse (LCTRL enfoncée) !");
- GameTextForPlayer(playerid,"~r~ Utilisez la touche ~k~~TOUCHE_CEINTURE~",3000,4);
- }
- }
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- LastHealth[playerid] = 0; // by sasuke78200
- LastSpeed[playerid] = 0; // by sasuke78200
- new string[256];
- new nomjoueur[MAX_PLAYER_NAME];
- new vehiclenum = GetPlayerVehicleID(playerid);
- if(IsPlayerInAnyVehicle(playerid) == 1 && ceinture[playerid] == 1)
- {
- if (GetVehicleModel(vehiclenum) == 448 || GetVehicleModel(vehiclenum) == 461 || GetVehicleModel(vehiclenum) == 462 || GetVehicleModel(vehiclenum) == 463 || GetVehicleModel(vehiclenum) == 468 || GetVehicleModel(vehiclenum) == 471 || GetVehicleModel(vehiclenum) == 481 || GetVehicleModel(vehiclenum) == 509 || GetVehicleModel(vehiclenum) == 510 || GetVehicleModel(vehiclenum) == 521 || GetVehicleModel(vehiclenum) == 522 || GetVehicleModel(vehiclenum) == 581 || GetVehicleModel(vehiclenum) == 586 )
- {
- GetPlayerName(playerid, nomjoueur, sizeof(nomjoueur));
- SendClientMessage(playerid, COULEUR_BLANC, "Vous avez retiré votre casque automatiquement !");
- format(string, sizeof(string), "* %s descends et retire son casque.", nomjoueur);
- ceinture[playerid] = 0;
- }
- else
- {
- GetPlayerName(playerid, nomjoueur, sizeof(nomjoueur));
- SendClientMessage(playerid, COULEUR_BLANC, "Vous avez retiré votre ceinture automatiquement !");
- format(string, sizeof(string), "* %s descends et retire sa ceinture de sécuritée.", nomjoueur);
- ceinture[playerid] = 0;
- }
- }
- else if(IsPlayerInAnyVehicle(playerid) == 1 && ceinture[playerid] == 0)
- {
- ceinture[playerid] = 0;
- return 1;
- }
- ProxDetector(30.0, playerid, string, COULEUR_VIOLET,COULEUR_VIOLET,COULEUR_VIOLET,COULEUR_VIOLET,COULEUR_VIOLET);
- printf("%s", string);
- return 1;
- }
- public Float:GetPlayerSpeed(playerid)
- {
- new Float:X, Float:Y, Float:Z;
- GetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z);
- return (floatsqroot(X * X + Y * Y + Z * Z) * 180);
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- new string[256];
- new nomjoueur[MAX_PLAYER_NAME];
- new vehiclenum = GetPlayerVehicleID(playerid);
- if((newkeys==TOUCHE_CEINTURE)&&(IsPlayerInAnyVehicle(playerid))&&(GetPlayerState(playerid)==PLAYER_STATE_DRIVER))
- {
- if(IsPlayerInAnyVehicle(playerid) == 1 && ceinture[playerid] == 0)
- {
- if(GetVehicleModel(vehiclenum) == 448 || GetVehicleModel(vehiclenum) == 461 || GetVehicleModel(vehiclenum) == 462 || GetVehicleModel(vehiclenum) == 463 || GetVehicleModel(vehiclenum) == 468 || GetVehicleModel(vehiclenum) == 471 || GetVehicleModel(vehiclenum) == 481 || GetVehicleModel(vehiclenum) == 509 || GetVehicleModel(vehiclenum) == 510 || GetVehicleModel(vehiclenum) == 521 || GetVehicleModel(vehiclenum) == 522 || GetVehicleModel(vehiclenum) == 581 || GetVehicleModel(vehiclenum) == 586 )
- {
- GetPlayerName(playerid, nomjoueur, sizeof(nomjoueur));
- SendClientMessage(playerid, COULEUR_BLANC, "Vous avez mis votre casque !");
- format(string, sizeof(string), "* %s prends et mets son casque.", nomjoueur);
- ceinture[playerid] = 1;
- }
- else
- {
- GetPlayerName(playerid, nomjoueur, sizeof(nomjoueur));
- SendClientMessage(playerid, COULEUR_BLANC, "Vous avez mis votre ceinture !");
- format(string, sizeof(string), "* %s prends et mets sa ceinture de sécuritée.", nomjoueur);
- ceinture[playerid] = 1;
- }
- }
- else if(IsPlayerInAnyVehicle(playerid) == 1 && ceinture[playerid] == 1)
- {
- if(GetVehicleModel(vehiclenum) == 448 || GetVehicleModel(vehiclenum) == 461 || GetVehicleModel(vehiclenum) == 462 || GetVehicleModel(vehiclenum) == 463 || GetVehicleModel(vehiclenum) == 468 || GetVehicleModel(vehiclenum) == 471 || GetVehicleModel(vehiclenum) == 481 || GetVehicleModel(vehiclenum) == 509 || GetVehicleModel(vehiclenum) == 510 || GetVehicleModel(vehiclenum) == 521 || GetVehicleModel(vehiclenum) == 522 || GetVehicleModel(vehiclenum) == 581 || GetVehicleModel(vehiclenum) == 586 )
- {
- GetPlayerName(playerid, nomjoueur, sizeof(nomjoueur));
- SendClientMessage(playerid, COULEUR_BLANC, "Vous avez retiré votre ceinture !");
- format(string, sizeof(string), "* %s prends et retire sa ceinture de sécuritée.", nomjoueur);
- ceinture[playerid] = 0;
- }
- else
- {
- GetPlayerName(playerid, nomjoueur, sizeof(nomjoueur));
- SendClientMessage(playerid, COULEUR_BLANC, "Vous avez retiré votre casque !");
- format(string, sizeof(string), "* %s prends et retire son casque.", nomjoueur);
- ceinture[playerid] = 0;
- }
- }
- ProxDetector(30.0, playerid, string, COULEUR_VIOLET,COULEUR_VIOLET,COULEUR_VIOLET,COULEUR_VIOLET,COULEUR_VIOLET);
- }
- }
- public VerifDommage(playerid)
- {
- if(IsPlayerInAnyVehicle(playerid) == 1 && ceinture[playerid] == 0)
- {
- new Float:health = 0.0; // by sasuke78200
- new vehicleid = GetPlayerVehicleID(playerid);
- new Float:Speed = GetPlayerSpeed(playerid);
- GetVehicleHealth(vehicleid,health);
- if(LastSpeed[playerid] - Speed >= 50 && LastHealth[playerid] - health >= 250)
- {
- new Float:x,Float:y,Float:z;
- GetPlayerPos(playerid,x,y,z);
- SetPlayerPos(playerid,x,y,z + 5);
- GetVehicleVelocity(vehicleid,x,y,z);
- SetPlayerVelocity(playerid,x *2,y*2,z + 3);
- SendClientMessage(playerid, COULEUR_ROUGE, "Et voilà, pas de ceinture on passe par le pare brise est sa fait mal !! Pensez a votre ceinture !!");
- SetPlayerDrunkLevel(playerid, 50000);
- SetTimerEx("stopeffet", 60000, 0, "i", playerid);
- }
- LastHealth[playerid] = health;
- LastSpeed[playerid] = Speed;
- }
- return 1;
- }
- public stopeffet(playerid)
- {
- SetPlayerDrunkLevel(playerid, 0);
- return 1;
- }
- public ProxDetector(Float:radi, playerid, str[],col1,col2,col3,col4,col5) // ProxDetector du GodFather
- {
- if(IsPlayerConnected(playerid))
- {
- new Float:posx, Float:posy, Float:posz;
- new Float:oldposx, Float:oldposy, Float:oldposz;
- new Float:tempposx, Float:tempposy, Float:tempposz;
- GetPlayerPos(playerid, oldposx, oldposy, oldposz);
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i))
- {
- GetPlayerPos(i, posx, posy, posz);
- tempposx = (oldposx -posx);
- tempposy = (oldposy -posy);
- tempposz = (oldposz -posz);
- if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
- {
- SendClientMessage(i, col1, str);
- }
- else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
- {
- SendClientMessage(i, col2, str);
- }
- else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
- {
- SendClientMessage(i, col3, str);
- }
- else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
- {
- SendClientMessage(i, col4, str);
- }
- else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
- {
- SendClientMessage(i, col5, str);
- }
- }
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement