Hellow,
Troisième tuto pour dev en Sourcepawn.
Ici nous allons apprendres les fonctions.
#Attentions, sans connaitres comment compiler un plugin en locale ça ne vous serviras pas (Un tutos de compilations arrive).
Explications :
Les fonctions sont les bases dans un languages de programation, ce sont les mots qui permettent de faire différentes choses.
Elles sont définis par leur languages mais des extentions, includes, ... peuvent en apporter bien plus.
Dans le Sourcepawn une fonction est appeller par une include (principalement !).
Une include est une librairie de fonction, ça permet aussi de moduler un plugin, mais nous verront ça bien bien après.
Pour inclure un librairie de fonction nous devons dire au plugins de lire l'include, ce n'est pas compliquers.
Ici nous allons utiliser l'include sdktools qui permet de donner une arme, ...
Voilà, le plugins sais que il dois lire l'include sdktools
Nous allons désormais créé un plugin qui permetteras de donner un deagle, c'est simple.
Nous allons utiliser :
Dans certaines fonctions nous allons utiliser se que on appel un CallBack.
Le CallBack est simplement l'appellation de se que dois faire la fonction.
Fonction = Maman | CallBack = Enfant (En très gros c'est ça).
Pour pouvoir donner une arme nous avons besoin de l'include sdktools et de définir la commande quand le plugins se lance
Vous avez surement remarquer que dans le RegConsoleCmd nous avons se que nous appellons des arguments.
Le premier arguments est la commande qui permet d'appeller le callback (sm_deagle dans la console ou !deagle dans le chat ou /deagle dans le chat).
Le deuxième argument est le nom du CallBack de la commande, nous aurions pus l'appeller CallBackDeLaCommandeDeagle, mais le CallBack appeller doit porter le même nom, sinon ça ne marche pas.
Le troisième argument est lexplication de la commande dans le sm_help (Perso je l'utilise jamais).
Maintenant nous devons appeler le callback de la commande
Ici commence la complication : (client, args)
Ce sont les arguments demander quand vous définisser une commande.
La variable client permet de définir le joueur qui tape la commande, l'arguments args c'est le nombre d'argument après la commande :
!deagle toto prout caca auras trois arguments.
#Informations : Vous pouvez nommer les variables comme vous avez envie
Maintenant nous allons vérifie que le joueur est connecter et en jeu. Cela évite d'avoir un message dans les logs du genre
"Index clients XXX is invalid"
Pour cela nous allons utiliser les conditions dexistence (Tuto #2)
Nous vérifions maintenant que sont équipe est supérieur celle des CT sinon on lui dit qu'il est en CT
On vérifie qu'il est en vie sinon on lui dit qu'il est mort
Et on donne le deagle si il est en vie
Voilà, le plugin est coder, mais il y a un problème, si le joueur à déjà une arme secondaire (un petit gun) ça donneras l'arme à terre et la commande peut-être flood.
Pour cela nous allons faire une vérification, et si il à déja un gun on lui retire.
Pour faire tout cela nous allons avoir besoin de l'include <cstrike>
Nous allons utiliser :
GetPlayerWeaponSlot : Permet de reprendre une arme de l'index du client utiliser
CS_SLOT_SECONDARY : Define défini par l'include cstrike (nous verrons les defines plus tard)
RemovePlayerItem : Permet de retirer l'item d'un joueur
Nous allons créé une nouvelle variable nommer weapon et y stocker l'arme secondaire :
Si ce n'est pas vide (au dessus de -1) on donne l'arme, sinon on la remove et on la donne
Pour les fonctions vous pouvez aussi les créés tout commes les includes.
La création d'une fonction se fais simplement :
Je passe le questionnaire pour ce tutos, j'ai pas trop d'idée ^^"
Troisième tuto pour dev en Sourcepawn.
Ici nous allons apprendres les fonctions.
#Attentions, sans connaitres comment compiler un plugin en locale ça ne vous serviras pas (Un tutos de compilations arrive).
Explications :
Les fonctions sont les bases dans un languages de programation, ce sont les mots qui permettent de faire différentes choses.
Elles sont définis par leur languages mais des extentions, includes, ... peuvent en apporter bien plus.
Dans le Sourcepawn une fonction est appeller par une include (principalement !).
Une include est une librairie de fonction, ça permet aussi de moduler un plugin, mais nous verront ça bien bien après.
Pour inclure un librairie de fonction nous devons dire au plugins de lire l'include, ce n'est pas compliquers.
Ici nous allons utiliser l'include sdktools qui permet de donner une arme, ...
Code PHP:
#include <sdktools>
Nous allons désormais créé un plugin qui permetteras de donner un deagle, c'est simple.
Nous allons utiliser :
Code:
OnPluginStart : Appeller quand le plugins se lance
RegConsoleCmd : Définis une commande console (! et / dans le chat OU sm_ dans la console)
GivePlayerItem : Permet de donner une arme (un item)
IsClientInGame : Permet de vérifier si le joueur est en jeu
IsClientConnected : Permet de vérifier si le joueur est connecter
IsPlayerAlive : Permet de vérifier si le joueur est en vie
PrintToChat : Envois un message dans le chat à l'index du client demander
GetClientTeam : Permet de reprendre la team de l'index du client demander
Le CallBack est simplement l'appellation de se que dois faire la fonction.
Fonction = Maman | CallBack = Enfant (En très gros c'est ça).
Pour pouvoir donner une arme nous avons besoin de l'include sdktools et de définir la commande quand le plugins se lance
Code PHP:
#include <sdktools>
public void OnPluginStart()
{
RegConsoleCmd("sm_deagle", Command_Deagle, "Commande qui permet de donner un deagle");
}
Le premier arguments est la commande qui permet d'appeller le callback (sm_deagle dans la console ou !deagle dans le chat ou /deagle dans le chat).
Le deuxième argument est le nom du CallBack de la commande, nous aurions pus l'appeller CallBackDeLaCommandeDeagle, mais le CallBack appeller doit porter le même nom, sinon ça ne marche pas.
Le troisième argument est lexplication de la commande dans le sm_help (Perso je l'utilise jamais).
Maintenant nous devons appeler le callback de la commande
Code PHP:
#include <sdktools>
public void OnPluginStart()
{
RegConsoleCmd("sm_deagle", Command_Deagle, "Commande qui permet de donner un deagle");
}
public Action:Command_Deagle(client, args)
{
}
Ce sont les arguments demander quand vous définisser une commande.
La variable client permet de définir le joueur qui tape la commande, l'arguments args c'est le nombre d'argument après la commande :
!deagle toto prout caca auras trois arguments.
#Informations : Vous pouvez nommer les variables comme vous avez envie
Maintenant nous allons vérifie que le joueur est connecter et en jeu. Cela évite d'avoir un message dans les logs du genre
"Index clients XXX is invalid"
Pour cela nous allons utiliser les conditions dexistence (Tuto #2)
Code PHP:
#include <sdktools>
public void OnPluginStart()
{
RegConsoleCmd("sm_deagle", Command_Deagle, "Commande qui permet de donner un deagle");
}
public Action Command_Deagle(int client, int args)
{
if(IsClientInGame(client) && IsClientConnected(client))
{
}
}
Code PHP:
#include <sdktools>
public void OnPluginStart()
{
RegConsoleCmd("sm_deagle", Command_Deagle, "Commande qui permet de donner un deagle");
}
public Action Command_Deagle(int client, int args)
{
if(IsClientInGame(client) && IsClientConnected(client))
{
if(GetClientTeam(client) > 1)
{
}
else
{
PrintToChat(client, "Vous ne pouvez pas utiliser la commande en spectateur");
}
}
}
Code PHP:
#include <sdktools>
public void OnPluginStart()
{
RegConsoleCmd("sm_deagle", Command_Deagle, "Commande qui permet de donner un deagle");
}
public Action Command_Deagle(int client, int args)
{
if(IsClientInGame(client) && IsClientConnected(client))
{
if(GetClientTeam(client) > 1)
{
if(IsPlayerAlive(client))
{
}
else
{
PrintToChat(client, "Vous ne pouvez pas utiliser la commande en étant mort");
}
}
else
{
PrintToChat(client, "Vous ne pouvez pas utiliser la commande en spectateur");
}
}
}
Code PHP:
#include <sdktools>
public void OnPluginStart()
{
RegConsoleCmd("sm_deagle", Command_Deagle, "Commande qui permet de donner un deagle");
}
public Action Command_Deagle(int client, int args)
{
if(IsClientInGame(client) && IsClientConnected(client))
{
if(GetClientTeam(client) > 1)
{
if(IsPlayerAlive(client))
{
GivePlayerItem(client, "weapon_deagle");
}
else
{
PrintToChat(client, "Vous ne pouvez pas utiliser la commande en "étant mort");
}
}
else
{
PrintToChat(client, "Vous ne pouvez pas utiliser la commande en spectateur");
}
}
}
Pour cela nous allons faire une vérification, et si il à déja un gun on lui retire.
Pour faire tout cela nous allons avoir besoin de l'include <cstrike>
Nous allons utiliser :
GetPlayerWeaponSlot : Permet de reprendre une arme de l'index du client utiliser
CS_SLOT_SECONDARY : Define défini par l'include cstrike (nous verrons les defines plus tard)
RemovePlayerItem : Permet de retirer l'item d'un joueur
Nous allons créé une nouvelle variable nommer weapon et y stocker l'arme secondaire :
Si ce n'est pas vide (au dessus de -1) on donne l'arme, sinon on la remove et on la donne
Code PHP:
#include <sdktools>
#include <cstrike>
public void OnPluginStart()
{
RegConsoleCmd("sm_deagle", Command_Deagle, "Commande qui permet de donner un deagle");
}
public Action Command_Deagle(int client, int args)
{
if(IsClientInGame(client) && IsClientConnected(client))
{
if(GetClientTeam(client) > 1)
{
if(IsPlayerAlive(client))
{
int weapon = GetPlayerWeaponSlot(client, CS_SLOT_SECONDARY)
if(weapon != -1)
{
RemovePlayerItem(client, weapon);
GivePlayerItem(client, "weapon_deagle");
}
else
{
GivePlayerItem(client, "weapon_deagle");
}
}
else
{
PrintToChat(client, "Vous ne pouvez pas utiliser la commande en "étant mort");
}
}
else
{
PrintToChat(client, "Vous ne pouvez pas utiliser la commande en spectateur");
}
}
}
La création d'une fonction se fais simplement :
Code PHP:
stock void SetClientSpeed(client, float amount)
{
SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", amount);
}