Morceaux de code destinés à ceux qui souhaitent créer un serveur roleplay.
==========================================================================================
• Le compteur de vitesse en km/h:
À placer avant la fonction onPlayerCommand:
function onPlayerEnterVehicle(playerid, vehicleid, seatid)
{
setTimer(vStats, 100, -1, playerid);
return 1;
}
addEvent("playerEnterVehicle", onPlayerEnterVehicle);
function getSpeed(vehicleid)
{
local velo = getVehicleVelocity(vehicleid);
return sqrt(pow(velo[0], 2) + pow(velo[1], 2) + pow(velo[2], 2))*3.6;
}
function vStats(playerid)
{
if(isPlayerInAnyVehicle(playerid))
{
local vehicleid = getPlayerVehicleId(playerid);
local vhealth = getVehicleHealth(vehicleid);
local speed = getSpeed(vehicleid).tointeger();
displayPlayerInfoText(playerid, speed +" km/h", 1000);
}
}
==========================================================================================
• La commande "/me" ou "/moi":
À placer avant la fonction onPlayerCommand:
function ProxDetector(radi, playerid, string,col1,col2,col3,col4,col5)
{
if(isPlayerConnected(playerid))
{
local posx;
local posy;
local posz;
local oldposx;
local oldposy;
local oldposz;
local tempposx;
local tempposy;
local tempposz;
local pos = getPlayerCoordinates(playerid);
oldposx = pos[0];
oldposy = pos[1];
oldposz = pos[2];
for(local i = 0; i < MAX_PLAYERS; ++i)
{
if(isPlayerConnected(i))
{
local pos2 = getPlayerCoordinates(i);
posx = pos2[0];
posy = pos2[1];
posz = pos2[2];
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)))
{
sendPlayerMessage(i, string, col1);
}
else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
{
sendPlayerMessage(i, string, col2);
}
else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
{
sendPlayerMessage(i, string, col3);
}
else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
{
sendPlayerMessage(i, string, col4);
}
else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
sendPlayerMessage(i, string, col5);
}
}
}
}
return 1;
}
À placer dans la fonction onPlayerCommand:
if(cmd[0] == "/me" || cmd[0] == "/moi")
{
if(cmd.len() == 1) return sendPlayerMessage(playerid, "Utilisation: /me [texte].");
else return ProxDetector(30.0,playerid,getPlayerName(playerid) +" "+ astring(cmd, 1), 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
}
==========================================================================================
Allez faisons vivre cette partie un peu !
COMMENT INSTALLER UN COMPTEUR SUR SON SERVEUR
Déjà il vous faut les images. Elles sont appelées par défaut Bck.png et Pin.png. Vous pouvez télécharger un grand nombre de "Speedometer" sur ce site :
http://www.gtagaming.com/downloads/search/speedometer (http://www.gtagaming.com/downloads/search/speedometer)
(Ne prendre bien sûr, que les speedometers compatibles avec GTA IV :ninja )
Pour ma part j'ai choisis celui-ci :
http://www.gtagaming.com/downloads/gta-iv/misc-mods/9516 (http://www.gtagaming.com/downloads/gta-iv/misc-mods/9516)
1. Téléchargez le .zip et décompressez-le.
2. Dans le dossier AdamiX's speedometers\KMH\left\AdamiX, selectionnez les deux images, et déplacez-les dans le dossier "resources" de votre dossier serveur.
3. Ensuite, il faut que le joueur qui se connecte à cotre serveur puisse voir le speedometer lorsqu'il entre dans un véhicule. Vous devrez donc modifier votre clientscript (si vous en avez déjà un), ou créer un nouveau fichier .nut et mettre le code suivant :
local Speed1 = GUIImage("Bck.png");
Speed1.setVisible(false); // On défini l'image Bck, et on la rend invisible au démarrage du serveur
local Speed2 = GUIImage("Pin.png");
Speed2.setVisible(false);// On défini l'image Pin, et on la rend invisible au démarrage du serveur
local ply = getLocalPlayer();
if(isVehicleValid(getPlayerVehicleId(ply))) // Si le joueur entre dans un vehicule valide
{
local
midScreenX = screen[0] / 2, // On défini la moitié de la longueur de l'écran pour que l'imaged s'adapte à toutes les définitions des ordis.
midScreenY = screen[1] / 2; // Même chose pour la largeur
Speed1.setPosition(midScreenX - 630, midScreenY + 127, false); // On règle la position de l'image par rapport à l'axe X et Y
Speed1.setSize(256.0, 256.0, false);
Speed1.setVisible(true); // On fait apparaître l'image.
Speed2.setPosition(midScreenX - 630, midScreenY + 127, false); // Même principe que pour Speed1
Speed2.setSize(242.0, 238.0, false);
local KM = sqrt(pow(getVehicleVelocity(getPlayerVehicleId(ply))[0], 2) + pow(getVehicleVelocity(getPlayerVehicleId(ply))[1], 2) + pow(getVehicleVelocity(getPlayerVehicleId(ply))[2], 2))*3.6;
Speed2.setRotation(0.0, 0.0, KM);
Speed2.setVisible(true);
} else {
Speed1.setVisible(false);
Speed2.setVisible(false);
}
}
addEvent("frameRender", onFrameRender);
Ensuite, il faut que vous chargiez les images dans settings.xml, vous allez alors mettre le code qui va suivre dans ce fichier :
<clientresource>Bck.png</clientresource>
<clientresource>Pin.png</clientresource>
Voilà !
PS : Si c'est le speedometer right qui vous plait plus, vous pouvez l'installer, mais il faudra modifier la position ici :
Speed1.setPosition(midScreenX - 630, midScreenY + 127, false);
Et ici :
Speed2.setPosition(midScreenX - 630, midScreenY + 127, false);