• 28 Mars 2024, 22:38:09


Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - S!m

Pages: [1] 2 3 ... 153
1
Scripting SA-MP [Pawn center] / Re : besoin d'aide
« le: 12 Juillet 2015, 04:42:55 »
Bonjour,

tu ne trouve pas que tu ouvre beaucoup d'accolade dans ce bout de code?

Regarde un peut le bout suivant et essaie de déterminer ce qui serait logique:

        if(CarCheck == vCivile[0])
        {
                if(gTeam[playerid] != TEAM_CIVILE)
                {
                        SendClientMessage(playerid, 0x33CCFFAA, "Vous n'avez pas les clefs de ce véhicule.");
                        RemovePlayerFromVehicle(playerid); //On fait sortir le joueur si il n'est pas CIVILE.
                        return 1;
                }


        if(CarCheck == vPolice[2])
        {
                if(gTeam[playerid] != TEAM_POLICE)
                {
                        SendClientMessage(playerid, 0x33CCFFAA, "Vous n'avez pas les clefs de ce véhicule.");
                        RemovePlayerFromVehicle(playerid); //On fait sortir le joueur si il n'est pas de la police.
                        return 1;
                }
        }

PS. J'ai refait un peu la séparation et l'indentation pour que ce soit plus clair.

Sim

2
Scripting SA-MP [Pawn center] / Re : Les timers...
« le: 31 Mai 2014, 04:16:14 »
Salut,

petit commentaire en passant,

une telle enquête avait déjà été faite avec les versions précédentes de SA:MP sur le forum officiel et on arrive avec un petit problème:

Le décalage temporel dépend de la machine.

On peut toutefois rapidement déterminer le ratio au lancement du serveur en lançant un timer d'une durée connue et en évaluant le temps réel requis etc... et ainsi ajuster le ratio au démarrage du serveur!

++Sim++

3
Salut,

j'aime bien l'idée c,est vraiment original et ça peut donner un bon résultat.
Ton approche est bonne, mais il y a un petit détail.

Avec ton 1.6 et 11.0 tu dois déterminer la norme de ton vecteur.
Il s'agit donc d'utiliser un pythagore pour déterminer la distance en diagonale.
Dans ton cas la valeur est de 11,1.

Il s'agit donc de la valeur avec laquelle tu dois multiplié tes sin et cos.
Puisque tu as un décalage à ton 0° (les valeurs que tu donne implique un certain angle), il est possible que tu doivent ajouter ce décalage à ton angle. Avec une arctangente tu peut déterminer l'angle en question (on parle d'un angle de 8.3° environ).

Normalement, tu devrais donc faire un truc dans ce genre là:

GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid, angle);
angle += 8.3; // on ajoute notre offset de 8.3° environ sens anti-horaire
x -= (11 * floatsin(angle, degrees)); // inversé à cause de l'orientation des angles dans gta...
y += (11 * floatcos(angle, degrees));

Bonne chance

++Sim++

4
Salut,

je viens de jeter un coups d'oeil et franchement...le script dans ton lien Gszume est vraiment douteux.
Il fera la job, mais faudrait m'expliquer pourquoi il fait ça:

    x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2;
    y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2;
}

Il ajoute une valeur qu'il multiplie par 0 et fait + x2 - x2....
La moitié de ce code est complètement inutile...


Vous seriez mieux d'utiliser l'une de ces fonctions :


Si tu veut que la voiture avance dans la direction où pointe le véhicule:
stock SetVehicleSpeed(vehicleid, Float:speed)
{
    new Float:velocityX, Float:velocityY, Float:velocityZ, Float:angle;
    GetVehicleVelocity(vehicleid, velocityX, velocityY, velocityZ);
    GetVehicleZAngle(vehicleid, angle);
    velocityX = floatsin((-1)*a, degrees)* (speed/100);
    velocityY = floatcos(a, degrees) * (speed/100);
    SetVehicleVelocity(vehicleid, velocityX, velocityY, velocityZ);
    return 1;
}

Si tu veux qu'il continue dans la direction où il va déjà:
stock SetVehicleSpeed(vehicleid, Float:speed)
{
    new Float:velocityX, Float:velocityY, Float:velocityZ, Float:speed_eq;
    GetVehicleVelocity(vehicleid, velocityX, velocityY, velocityZ);
    speed_eq = floatsqroot(velocityX * velocityX + velocityY * velocityY + velocityZ + velocityZ);
    velocityX *= speed/(speed_eq * 100);
    velocityY *= speed/(speed_eq * 100);
    velocityZ *= speed/(speed_eq * 100);
    SetVehicleVelocity(vehicleid, velocityX, velocityY, velocityZ);
    return 1;
}

***Note: Je peux m'être tromper pour les sin/cos car je ne suis plus sur de la façon dont les angles se place dans SA-MP et il faut ajuster le 100 pour avoir un résultat qui soit tel que le SetVehicleVelocity ou en km/h etc... Il suffit de choisir la valeur appropriée.

Je vais vérifier demain à tête reposée.

++Sim++

5
Scripting SA-MP [Pawn center] / Re : Compteur
« le: 25 Janvier 2014, 03:03:06 »
Salut,

j'aurais tendance à dire de jouer avec la valeur de Reglage_Vitesse (au début de ton script probablement).
Essaie de multiplier la valeur actuelle par environ 2.5 et tu devrais tomber près des standards.


As-tu vraiment conçu ton compteur à 100%?
Car tu n'aurais pas mis cette variable sans savoir son utilité normalement...
(même si tu modifie un script on ne vas pas te tomber dessus...)

++Sim++

6
Problèmes et bugs / Re : Problème Cheateur coutournant connexion
« le: 27 Décembre 2013, 15:24:41 »
Salut,

en fait tu ne peut pas mettre le nom du joueur, seulement son ID.

Si tu écris un nom, ça va systématiquement banir le joueur avec l'ID 0...

++Sim++

7
Salut,

allez je vais être gentil parce que c'est un long script et que tu ne sais pas plus que nous:

 - le texte qui n'apparait pas : ligne 447 sur le pastebin, remplace return 0 par return 1 (si je me fie aux autres return plus tôt).
 - commandes qui ne fonctionnent pas : ligne 2762, on ne peut pas terminer OnPlayerCommandText par un return 1 dans un fs sinon ça cancelle les commandes des scripts suivants. remplace par return 0
 - Pour ton problème de crash regarde si c'est correction aident...sinon cherche un peu et revient après avoir fait des recherche. La personne la mieux placer pour trouver ton problème c'est toi.


Essaie de chercher un peu prochaine fois. Si t'as un problème de texte, va voir dans OnPlayerText, si t'as un problème de commande, va voir dans OnPlayerCommandText....

Bonne chance

++Sim++

8
Scripting SA-MP [Pawn center] / Re : [COMMANDE] Unknow Commande
« le: 27 Décembre 2013, 15:01:00 »
Salut,

attention, j'ai vu quelques petits problèmes.

Si on reprend la commande originale:

if(strcmp(cmdtext, "/devenir", true) == 0)
{
subcmd = strtok(cmdtext, idx);
if( !strlen(subcmd) )
{
SendClientMessage(playerid, COLOR_RED, "[UTILISATION]{0xFF4500FF} /devenir <nom>");
SendClientMessage(playerid, COLOR_RED, "[UTILISATION]{0xFF4500FF} (mem)bre, (help)eur, (mod)erateur, (admin)istrateur");
return 1;
}
else if(strcmp(subcmd, "mem", true) == 0 || strlen(subcmd, "membre", true) == 0)
{
    if(UserInformation[playerid] == USER_MEMBER)
    {
        SendClientMessage(playerid, COLOR_ERROR, "Vous êtes déjà membre.");
}
else
{
    UserInformation[playerid] == USER_MEMBER;
    SendClientMessage(playerid, COLOR_GREEN, "Vous êtes désormais membre ! ");
}
}
else if(strcmp(subcmd, "help", true) == 0 || strlen(subcmd, "helpeur", true) == 0)
{
    if(UserInformation[playerid] == USER_MEMBER)
    {
        SendClientMessage(playerid, COLOR_ERROR, "Vous n'avez pas les droits nécessaire pour executer cela.");
}
else
{
UserInformation[playerid] == USER_HELPEUR;
SendClientMessage(playerid, COLOR_GREEN, "Vous êtes désormais Helpeur !");
}
}
return 1;
}

Es-ce que ton OnPlayerCommandText commence avec un strtok?

La façon de fonctionner de strtok est très simple, elle va chercher le enieme mot dans le texte.
Si tu as fait un strtok auparavant, elle ira chercher le second terme.
Sinon, elle ira chercher le premier terme (soit «/devenir»).
Attention, si tu utilise strtok dans tout ton système de commande sache que ce n'est pas vraiment le meilleur système (tendance à faire des erreurs (dans le code), risque au niveau des dimensions des array etc...).

Petit conseil:
Si tu as peut de commande et voudrait bien te lancer dans une petite amélioration de ton script, tu pourrais essayer de passer ton code en YCMD ou ZCMD qui sont très bons (ZCMD un peu plus simple pour toi).

Si tu ne veut pas passer avec un tel système de commande, j'aurais tendance à faire ainsi:

if(strcmp(cmdtext[1], "devenir", true, 7) == 0) //(on ne vérifie pas le premier caractère que l'on sait être "/"
    {
        format(subcmd, size(subcmd), cmdtext[9]); // on copie à partir du 9e caratère qui est la première lettre du second mot ('/0' si aucun mot normalement)
        if(strlen(subcmd) < 3) // tout texte de moins de 3 caractère sera trop court
        {
            ........
        }
        else if(strcmp(subcmd, "mem", true) == 0 || strcmp(subcmd, "membre", true) == 0)
        {
            ...............
        }
        ........
        return 1;
    }

Voilà, ça devrait fonctionner pour remplacer ta façon de faire et c'est plus rapide.
Toutefois, c'est moins compréhensible, si tu veut tu peut changer le cmdtext[1] en cmdtext, il faut alors mettre "/devenir" et 8 pour la longueur au lieu de 7.

merci et bonne chance

++Sim++

9
Salut,

sache que les includes sont inclus dans le script compilé.
Normalement tu devrais compiler ton script sur ton pc local et ensuite envoyé le .amx compilé sur ton hébergeur. Bref, rien de spécial à faire avec ton hébergeur, dès que ça compile correctement tu peut considérer que l'include est dans le script.

Ton hébergeur n'a pas besoin d'avoir les fichiers includes., tu lui envoie seulement les .amx (et les fichiers scriptfiles dont ton serveur a besoin).

Si tu as besoin d'autre chose, il s'agit possiblement des plugins. À ce moment ça dépend de la solution de gestion de ton hébergeur, mais il suffit de les placer dans le dossier plugins normalement.

Essaie de détailler un peu ce que tu demande pour qu'on comprenne mieux.

Bonne chance

++Sim++

10
Scripting SA-MP [Pawn center] / Re : Problème de string
« le: 27 Décembre 2013, 14:37:32 »
Salut,

essaie de changer ton 30 par une constante et d'utiliser cette constante au lieu de sizeof.
Si je me souviens bien, sizeof a de petits problèmes pour ce genre d'array complexe (avec un enum surtout).

Bref:

#define VETEMENT_MAX 30

    enum habits
            {
                teteid,
                tetenom[VETEMENT_MAX],
                visageid,
                visagenom[VETEMENT_MAX],
                montreid,
                montrenom[VETEMENT_MAX],
                dosid,
                dosnom[VETEMENT_MAX],
                mainid,
                mainnom[VETEMENT_MAX]
            }
    new vetements[MAX_PLAYERS][habits];

    format(vetements[playerid][tetenom], VETEMENT_MAX, "Beret noir");

et sinon, personnellement je stockerais les informations de tous les vêtements dans un array un peu comme celui que tu utilise pour tes joueurs:

enum description_vetement
{
    nom[VETEMENT_MAX],
    object_id,
    vetement_type,
    Float:decal_x,
    Float:decal_y,
    Float:decal_z,
    ...
}
new syst_vetements[MAX_VETEMENTS][description_vetement];

Un truc dans ce genre là.
Tu pourrais regrouper ces informations pour les mettre dans une seule section de code plus facile à lire en créant une fonction qui ajoute les entrées dans l'array un peu comme ceci:

AjoutVetement(nom[], obj_id, Float:pos_x, Float:pos_y, Float:pos_z....)
{
    new id = 0;
    while(syst_vetements[id][object_id] != 0 && id < MAX_VETEMENTS)
        id++;
    if(id < MAX_VETEMENTS)
    {
        syst_vetements[id][object_id = obj_id;
        ....
    }
    else
        id = -1;
    return id;
}

Enfin, un code de ce genre.

Ne te sens pas obligé d'aller vers cela, mais ça te permettrais de faire plein de lignes condensés avec toutes tes informations alignés comme dans les véhicules et les objets par exemple....

PS. Il peut y avoir des erreurs dans les codes, je n'ai pas vérifier.

Bonne Chance

++Sim++

11
Scripting SA-MP [Pawn center] / Re : Couleurs sous YSI
« le: 02 Octobre 2013, 04:40:33 »
Salut,

petit conseil: commence par bien déterminer d'où vient ton problème en utilisant print et printf!

De cette façon, tu saura la valeur de ta variable et tu pourras vérifier à partir d'où ton problème débute en remontant de la création de la zone à la récupération de la valeur.

Vérifie les valeurs de tes variables associés à tes zones de gang et la valeur retournée par la fonction gangzoneshowforplayer en plus des valeurs de tes couleurs.

Bonne chance

++Sim++

12
Scripting SA-MP [Pawn center] / Re : Problème script
« le: 05 Août 2013, 20:50:51 »
Salut,

en gros ton problème c'est que tu crée ta variable, y stocke une valeur, mais ne t'en sert pas par après.

Tel que ton code est, la variable est complètement inutile.

De plus, ton message ne doit pas être récupérer avec un strval (qui retourne une valeur numérique, 0 dans ce cas).

Utilise directement tmp.

Note: mauvaise méthode, surtout si ton tmp est récupérer par un second strtok.
Utilise plutôt zcmd ou ycmd.

++Sim++

13
Scripting SA-MP [Pawn center] / Re : Equivalent sleep()
« le: 12 Juillet 2013, 03:55:57 »
Salut,

la seule solution potable est un timer.
Pourquoi voudrait tu l'éviter?

++Sim++

14
Bonjour Kreys,

en fait ton problème est bien simple:

Dans la callback OnPlayerCommandText, dès qu'un script retourne la valeur 1 c'est qu'une commande a été exécutée et donc le serveur ne vas pas voir dans les scripts suivants. De plus, les filterscripts passent avant le gamemode. La fonction SendErrorMessage renvoie 1. Donc, dès qu'une commande ou non du filterscript est exécuté, le serveur ne vas pas voir plus loin dans le code.

Pour régler ton problème:
Remplace le return SendErrorMessage .... dans le filterscript par return 0.

Lorsqu'au contraire la callback retourne 0, cela indique au serveur qu'aucune commande n'a été exécuté et qu'il doit poursuive son exécution des scripts suivants.

Bonne chance.

++Sim++

15
Salut,

n'oublie pas de décaler les valeurs vers le haut si tu veux éviter qu'un ID alternatif soit le même que celui d'un joueur...

new nombre_hasard= random(TA_PLAGE) + LIMITE_INFÉRIEURE;

sans oublier de modifier à nouveau la valeur de la variable lorsque le joueur retire sa cagoule...

Bonne chance

++Sim++

Pages: [1] 2 3 ... 153