01.02.2014, 20:47
(
Last edited by S4t3K; 01/02/2014 at 09:46 PM.
)
Hello.
Pour ceux qui ne connaоtraient pas (d'ailleurs, moi mкme je suis pas trop familiarisй avec cette callback), OnPlayerKeyStateChange(playerid, newkeys, oldkeys) est la callback permettant d'interagir avec certaines touches du clavier du client, enfin d'un ID de joueur (playerid comme giveplayerid (obtenu avec ReturnUser par exemple)
Ce tutoriel va s'appuyer du wiki sa-mp, car comme la page franзaise a pas йtй traduite en entier, faut bien que les gens avec des difficultйs en Anglais puissent l'utiliser.
Pour commencer, les paramиtres de la callback
playerid, c'est l'ID du joueur duquel on check le changement de touche
newkeys, c'est la touche sur laquelle on a appuyй
oldkeys, c'est la touche qui йtait appuyйe avant
Vous me direz oldkeys ne sert а rien, eh bien si ! Ca permet de savoir si un joueur maintient la touche !
(Si la touche appuyйe avant et aprиs sont les mкmes, alors la touche est considйrйe comme "maintenue" par pawno)
Prenons comme exemple un truc basique, soit "Si le joueur appuie sur la touche de tir, alors il dйmarre sa voiture"
On devra check si le joueur est dans une voiture, donc IsPlayerInAnyVehicle
Ce qui nous donnera
Ensuite, on peut faire des tas de choses avec зa.
Voici la liste des touches (ou plutфt de leurs noms, par exemple KEY_FIRE)
https://sampwiki.blast.hk/wiki/Keys_FR
Je vous fait un autre truc qui fait que tant que le joueur sprinte, il tue tous les autres joueurs du serveur
J'ai repris la syntaxe de blocs entre parenthиses pour les deux touches identiques du wiki car j'ai toujours procйdй comme зa et j'ai jamais eu de problиmes.
Bref, voilа, si vous avez besoin de prйcisions, demandez
Pour ceux qui ne connaоtraient pas (d'ailleurs, moi mкme je suis pas trop familiarisй avec cette callback), OnPlayerKeyStateChange(playerid, newkeys, oldkeys) est la callback permettant d'interagir avec certaines touches du clavier du client, enfin d'un ID de joueur (playerid comme giveplayerid (obtenu avec ReturnUser par exemple)
Ce tutoriel va s'appuyer du wiki sa-mp, car comme la page franзaise a pas йtй traduite en entier, faut bien que les gens avec des difficultйs en Anglais puissent l'utiliser.
Pour commencer, les paramиtres de la callback
playerid, c'est l'ID du joueur duquel on check le changement de touche
newkeys, c'est la touche sur laquelle on a appuyй
oldkeys, c'est la touche qui йtait appuyйe avant
Vous me direz oldkeys ne sert а rien, eh bien si ! Ca permet de savoir si un joueur maintient la touche !
(Si la touche appuyйe avant et aprиs sont les mкmes, alors la touche est considйrйe comme "maintenue" par pawno)
Prenons comme exemple un truc basique, soit "Si le joueur appuie sur la touche de tir, alors il dйmarre sa voiture"
On devra check si le joueur est dans une voiture, donc IsPlayerInAnyVehicle
Ce qui nous donnera
PHP Code:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) // La callback
{
if(newkeys & KEY_FIRE) // On check si la touche nouvellement appuyйe est la touche de tir, mettez bien & et pas ==
{
if(IsPlayerInAnyVehicle(playerid)) // On check maintenant si le joueur est dans un vйhicule
{
new vehid = GetPlayerVehicleID(playerid);
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehid, 1, lights, alarm, doors, bonnet, boot, objective);
SendClientMessage(playerid, -1, "{9ACD32}[Information]{FFFFFF} Vous avez dйmarrй votre voiture en appuyant sur la touche de tir !");
}
}
return 1;
}
Voici la liste des touches (ou plutфt de leurs noms, par exemple KEY_FIRE)
https://sampwiki.blast.hk/wiki/Keys_FR
Je vous fait un autre truc qui fait que tant que le joueur sprinte, il tue tous les autres joueurs du serveur
PHP Code:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) // La callback
{
if( (newkeys & KEY_SPRINT) && (oldkeys & KEY_SPRINT) ) // On check si les deux touches sont identiques
{
for(new i = 0; i < MAX_PLAYERS; i++) // On utilise for pour faire en sorte que i englobe tous les joueurs
{
if(IsPlayerConnected(i))
{
if(i == playerid) continue; // Si i vaut le joueur qui cours, on continue la commande sans rien faire au joueur qui court
SetPlayerHealth(i, 0.0); // On tue tout le monde sauf le joueur qui court
}
}
}
return 1;
}
Bref, voilа, si vous avez besoin de prйcisions, demandez