Juste une question simple pour les débutants, je code des trucs Lua pour Garrys Mod, j'apprends en lisant le wiki et d'autres codages.
if (self.Owner:SteamID( ) == "Steam_0:1:44037488" ) then
ce qui précède est le code que je veux utiliser, pour vérifier si l'identifiant Steam (qui, je crois, est une chaîne) est égal à ma chaîne exacte.
Est-ce viable? Ou existe-t-il une autre façon de le faire?
Cela devrait fonctionner exactement comme vous vous y attendez. Dans lua '==' for string retournera true si le contenu des chaînes est égal.
Comme il a été souligné dans les commentaires, les chaînes lua sont internées, ce qui signifie que deux chaînes qui ont la même valeur sont en fait la même chaîne.
Une chose à considérer lors de l'apprentissage de Lua (sur www.lua.org/source/5.2/lstring.h.html):
/*
** as all string are internalized, string equality becomes
** pointer equality
*/
#define eqstr(a,b) ((a) == (b))
La comparaison de chaînes dans Lua est bon marché, la création de chaînes ne l'est peut-être pas.
Selon http://wiki.garrysmod.com/page/Player/SteamID , SteamID()
renvoie une chaîne de sorte que vous devriez pouvoir écrire
if self.Owner:SteamID() == "Steam_0:1:44037488" then
...do stuff...
end
Si jamais vous avez besoin de confirmer le type d'un objet, utilisez type
et print
, comme dans ce cas print('type is', type(self.Owner:SteamID()))
devrait afficher 'type is string'.