GTAOnline.net
Multi Theft Auto (mta) => Scripting MTA [Lua Center] => Discussion démarrée par: Remi le 30 Avril 2014, 13:53:16
-
Bonjour,
Depuis hier, je travaille sur une refonte du système de skin de MTA:DayZ. Jusqu'à la pas de soucis, le joueur spawn désormais avec le skin de CJ. Mais je souhaite également que le joueur gagne ou perd du poids.
Malheureusement le setPedStat ne semble pas adapté à l'utilisation que je souhaite en faire. En effet, je peux très bien lui faire gagner du poids de façon aléatoire en mettant :
setPedStat(source, 21, math.random(15,30))
Hors si, je souhaite lui mettre du poids en plus ailleurs. Ça n'ajoute pas le poids en plus, ça ajoute le poids par dessus l'ancienne valeur.
J'avais eu l'idée de mettre +15,+30 par exemple, mais cela ne fonctionne pas et me renvois ce message d'erreur :
WARNING: Loading script failed: unexpected symbol near '+'
Avez-vous une idée afin d'ajouter du poids en évitant de l'ajouter par dessus l'ancienne valeur ? J'imagine que l'utilisation de setPedStat y est pour quelque chose.. Connaissez-vous une alternative ?
Merci à vous,
Rémi.
-
Bah c'est à toi de récupérer le poids actuel et de faire une addition. Je trouve ça bizzare que tu n'en ai pas eu l'idée avant:
local weight = getPedStat(source, 11) or 0
setPedStat(source, 21, weight + math.random(15,30))
Ou de façon plus propre et réutilisable en créant une fonction pour faire un ajout:
function addPlayerWeight( player, weight )
local curweight = getPedStat(source, 11) or 0
setPedStat(source, 21, curweight + weight)
end
--que tu peux utiliser n'importe où comme ceci:
addPlayerWeight(player, math.random(15,30))
-
Effectivement, j'avais essayé sauf que j'avais fait la chose très mal. J'avais juste oublié de mettre 'or 0' pourtant ça saute aux yeux tellement que c'est logique.
Merci à toi Citizen encore une fois :)
-
J'avais juste oublié de mettre 'or 0' pourtant ça saute aux yeux tellement que c'est logique.
Hummm nan ça m'étonnerait qu'il ne te manquait juste le or 0, c'est juste une sécurité superflu qui fait que la valeur devient 0 si le getPedStat renvoit une valeur inattendu comme false ou nil.
Mais il n'y a aucune raison pour que cela arrive si source sera toujours un joueur. Donc le "or 0" est bien superflu et n'est pas "logique" et ne saute pas yeux comme tu l'as dit précédemment.
Aussi je viens de réaliser en relisant le code que j'ai écris 11 dans le getPedStat au lieu de 21 (petite faute de frappe que j'espère tu as vu et corrigé).
Je ne vais pas dire que tu mens, mais si tu avais juste oublié le "or 0", tu ne serais pas venu poser la question car ça aurait fonctionné.
-
J'avais juste oublié de mettre 'or 0' pourtant ça saute aux yeux tellement que c'est logique.
Aussi je viens de réaliser en relisant le code que j'ai écris 11 dans le getPedStat au lieu de 21 (petite faute de frappe que j'espère tu as vu et corrigé).
Je ne vais pas dire que tu mens, mais si tu avais juste oublié le "or 0", tu ne serais pas venu poser la question car ça aurait fonctionné.
Je sais plus tellement ce que j'avais mis, mais il me semble que c'était effectivement pas une question de 'or 0' comme précédemment indiqué.
Sinon oui, j'avais remarqué la faute de frappe. :)
-
Un gros Hors sujet, mais là au moins il le verra :smile:
[spoiler]Joyeux anniversaire Citizen :birthday2:[/spoiler]
++
-
Haha merci beaucoup Lacuisse, ça me fait plaisir :laugh:
Sinon j'aurai aussi vu dans Blabla Alakon :biggrin:
Beaucoup de boulot même pendant l'été :(
++
-
C'est plus une réflexion pour te dire de participer un peu dans la section Staff car même si tu n'es "que" modérateur section tu en fait pleinement parti :rolleyes: