• 28 Mars 2024, 18:17:41


Auteur Sujet: Codes & Scripts utiles  (Lu 14187 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Barto

  • Aiiiiiiirght
  • *
  • GTAOnline Addict
  • Messages: 4205
    • Voir le profil
Codes & Scripts utiles
« le: 03 Mai 2010, 20:07:24 »
Bonjour à tous.
Je propose que l'on réunisse quelques codes et scripts utiles dans ce topic. Et même aider des personnes qui galèrent à créer une commande.
Je commence avec la commande /players, commande plutôt connue que l'on trouve facilement mais je la poste ici.

En haut du code :
const Green = 0X00FF00AA;

Dans onPlayerCommand :
function onPlayerCommand(playerid, command)
{
local cmd = split(command, " ");
if(cmd[0] == "/players")
{
    sendPlayerMessage(playerid, Green, "Joueurs connectés :");
    for(local i=0; i<=getPlayerSlots(); i++)
        {
             if(isPlayerConnected(i))
     {
                  sendPlayerMessage(playerid, Green, getPlayerName(i)+" ("+i+")");
     }
        }
}
return 0;
}

Vous pouvez bien sûr modifier la couleur comme vous le voulez.
Les filles, c'est comme les échappées en cyclisme, faut en tenter plusieurs pour en réussir une.

Gifs interdit dans les avatars/signs

Hors ligne Kawoua

  • GTAOnline Member
  • *
  • Grand Banditisme
  • KaWouA
  • Messages: 800
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #1 le: 03 Mai 2010, 20:28:52 »
Super idée Bart je posterai quelques scripts utiles  :)



PlayBonus
Marvel Inc ™

Hors ligne SPL1T

  • *
  • Nouveau
  • Messages: 1
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #2 le: 23 Octobre 2010, 19:38:55 »
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);
}

==========================================================================================
« Modifié: 23 Octobre 2010, 23:01:31 par SPL1T »

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #3 le: 11 Juin 2011, 05:18:12 »
Salut,

je relance ce topic:

//trop souvent mal conçue, ici on teste bel et bien une distance
function isPlayerInRange(playerid, radius, x, y, z)
{
local pos = getPlayerCoordinates(playerid);

pos[0] -= x;
pos[1] -= y;
pos[2] -= z;

return ((pos[0] * pos[0] + pos[1] * pos[1] + pos[2] * pos[2]) <= (radius * radius));//préfère ne pas utiliser x, y et z comme je ne suis pas sur de la façon dont les paramètres sont passés...
}

//même chose avec deux points connus
function pointToPoint(x, y, z, x2, y2, z2, radius)
{
        local tmpX, tmpY, tmpZ;

tmpX = x - x2;
tmpY = y - y2;
tmpZ = z - z2;

return ((tmpX * tmpX + tmpY * tmpY + tmpZ * tmpZ) <= (radius * radius));
}

Et voici une version mieux codée du ProxDetector:

//j'ai conservé l'ordre des paramètres même si je ne l'approuve pas tellement...
function ProxDetector(radius, playerid, string,col1,col2,col3,col4,col5)
{
        local dist;
        local radi = radius * radius;

        local tmpPos;
        local pos = getPlayerCoordinates(playerid);

        for(local i = 0; i < MAX_PLAYERS; i++)//es-ce que les ID commencent à 1? j'ai changé pour ça...
        {
            if(isPlayerConnected(i))
            {
                tmpPos = getPlayerCoordinates(i);//récupère la position du joueur

                tmpPos[0] -= pos[0];
                tmpPos[1] -= pos[1];
                tmpPos[2] -= pos[2];
                dist = (tmpPos[0] * tmpPos[0] + tmpPos[1] * tmpPos[1] + tmpPos[2] * tmpPos[2]);//calcul de la distance entre les deux joueurs, le tout est exposant 2

                if (dist < radi/256)//équivalent à 1/16 car exposant 2
                {
                    sendPlayerMessage(i, string, col1);
                }
                else if (dist < radi/64)//équivaut à 1/8
                {
                    sendPlayerMessage(i, string, col2);
                }
                else if (dist < radi/16)//équivaut 1/4
                {
                    sendPlayerMessage(i, string, col3);
                }
                else if (dist < radi/4)
                {
                    sendPlayerMessage(i, string, col4);
                }
                else if (dist < radi)
                {
                    sendPlayerMessage(i, string, col5);
                }

            }
        }
        return 1;
}

(Il est possible que ces fonctions comportent des erreurs de syntaxe comme je ne connais pas tellement le Squirrel..., j'ai fait en regardant certains codes sur le forum officiel...)

++Sim++
« Modifié: 11 Juin 2011, 16:10:06 par Sim »





Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #4 le: 11 Juin 2011, 11:18:36 »
Sim je pense que les ID de joueurs commencent par 0, car c'est une spécificité de raknet que sa-mp et iv-mp utilisent ^^



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : Codes & Scripts utiles
« Réponse #5 le: 11 Juin 2011, 16:08:56 »
Salut,

Sim je pense que les ID de joueurs commencent par 0, car c'est une spécificité de raknet que sa-mp et iv-mp utilisent ^^

Ok, merci :P
Je me demandais vu l'utilisation de ++i au lieu de i++, je n'ai pas vérifier si cela causait une incrémentation au début de l'appel d'ailleurs...

Sinon les codes semblent bon? (premier essaie en Squirrel hein....)

++Sim++





Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #6 le: 11 Juin 2011, 17:33:37 »
Je ne sais pas du tout lol je ne code pas en squirell :s



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #7 le: 13 Juin 2011, 16:50:15 »
Ils me paraissent bon, mais je te conseil d'utiliser getPlayers() qu'une boucle for pour lister tes joueurs, c'est plus rapide car n'appelle pas isPlayerConnected et te donne en plus le nom du joueur.

Hors ligne Armans

  • *
  • Tueur en série
  • Messages: 173
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #8 le: 26 Juin 2011, 17:38:20 »
Sa pourrait m'aider car la je vais commenssais en squerriel mais bon je vais encore galèrer sa me soule il peuve pas crée un truck simple pour une fois  :wall



Fait un GM a partir de rien

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Re : Codes & Scripts utiles
« Réponse #9 le: 27 Juin 2011, 13:52:54 »
Sa pourrait m'aider car la je vais commenssais en squerriel mais bon je vais encore galèrer sa me soule il peuve pas crée un truck simple pour une fois  :wall

Le Squirrel est très simple, suffit d'apprendre, et si tu fais plus simple, tu perds en possibilités ;).
C'est comme le vélo, si t'ajoute 36 roulettes pour que ça soit plus simple, tu va perdre en vitesse  :closedeyes

Hors ligne Heisenberg

  • *
  • Tueur
  • Messages: 50
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #10 le: 12 Septembre 2011, 19:02:53 »
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

(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

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);
« Modifié: 12 Septembre 2011, 19:08:23 par Heisenberg »

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #11 le: 12 Septembre 2011, 19:17:20 »
C'est plutôt pas mal, mais ça ne marchera pas, et si ça marche, ça risque à 99.9% de faire crasher le client  :laugh

En fait, dis toi que chaque fonctions prend un peu de CPU.
Tu n'a pas mit ton code dans un event, mais je suppose que tu le met dans la fonction frameRender (qui est appelée à chaque FPS).
Dans ton code, tu ajuste la taille, la position, tu récupère l'ID du véhicule plusieurs fois et tu récupère la velocity du véhicule plusieurs fois aussi.
Si un joueur a un FPS de 25 par exemple, ça veut dire qu'il va devoir effectuer ce code 25 fois, donc soit il lag, soit il crash.
Je te recommande de récupérer l'ID de la voiture quand le joueur monte dans sa voiture, définir une variable pour la velocity que tu réutilisera & définir une variable pour vérifier si il est dans un véhicule.
Il faut vraiment optimiser au maximum son code pour les scripts client, et se dire que le joueur a un monocore à 100mhz...

Hors ligne Heisenberg

  • *
  • Tueur
  • Messages: 50
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #12 le: 12 Septembre 2011, 19:51:36 »
Citer
Je te recommande de récupérer l'ID de la voiture quand le joueur monte dans sa voiture, définir une variable pour la velocity que tu réutilisera & définir une variable pour vérifier si il est dans un véhicule.
Il faut vraiment optimiser au maximum son code pour les scripts client, et se dire que le joueur a un monocore à 100mhz...

Je savais pas tout ça héhé. Mais j'me sens complètement perdu là. Je ne sais pas du tout quelle fonction utiliser :(




Hors ligne Gilux

  • *
  • Mafioso
  • GOOBY PLS
  • Messages: 2209
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #13 le: 12 Septembre 2011, 22:02:42 »
Un timer ?  :happy

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Codes & Scripts utiles
« Réponse #14 le: 13 Septembre 2011, 17:49:55 »
Non, frameRender, ça sera bien plus fluide et + optimisé.
Cette fonction est appelée à chaque images.