Bonjour, pour me simplifier la vie et la votre, j'ai coder ce petit script qui permet de checké le statut des touches du joueurs.
Utilisation :
Mettre le script en FS ou Include (ou intégrer directement dans votre GM). Ce script peut être utilisez en même temps que la callback de base OnPlayerKeyStateChange.
Si vous rencontrez le moindre problème quant à l'utilisation de ce script, je suis disponible.
Ne pas oubliez de rajouter les 3 callback dans votre GM ( ou dans le FS si vous l'utilisez de cet façon)
public OnKeyPressed(playerid, key)
{
return 1;
}
public OnKeyReleased(playerid, key)
{
return 1;
}
public OnPlayerUpdateKeyStatus(playerid)
{
return 1;
}
Fonction et callback
OnPlayerUpdateKeyStatus(playerid) - Cette callback est appelé à chaque fois que le joueur appuie ou relâche sur une touche détectable.
OnKeyPressed(playerid, key) - Cette callback est appelé à chaque fois que le joueur appuie sur une touche détectable.
OnKeyReleased(playerid, key) - Cette callback est appelé à chaque fois que le joueur relâche une touche détectable
GetHoldingTime(playerid, key); - Cette fonction renvoie le nombre de seconde depuis que le joueur à appuyer dessus.
Exemple :
public OnPlayerUpdateKeyStatus(playerid)
{
if(KeyInfo[playerid][key_jump] && KeyInfo[playerid][key_yes] && KeyInfo[playerid][key_walk])
{
SendClientMessage(playerid, 0x165484, "Les touches Jump, Yes et walk ont été préssés.");
}
return 1;
}
public OnKeyReleased(playerid, key)
{
if(GetHoldingTime(playerid, key_yes) > 3) // si le joueur a maintenu la touche pendant 3 sec et la relâche
{
SendClientMessage(playerid, 0x00FF00FF, "Vous avez maintenu la touche pendant au moins 3 secondes");
}
return 1;
}
Crédit :
Un grand merci à S!m qui m'a montrer une meilleur façon de traiter les informations des touches.
FS/Inc 1.0
Pastebin (http://pastebin.com/iy4s4kvG)
(old)Version FS (BETA)
Beta (http://pastebin.com/RA4sYUhH)