Petite question pour le LUA

  • Initiateur de la discussion RedTroz
  • Date de début
  • Initiateur de la discussion
RedTroz

RedTroz

Geek suprême
Messages
825
Score réaction
233
Points
195
Bonsoir,
Je suis actuellement entrain d'essayer de faire un NPC médecin.
Mais il y'a une chose que je ne comprends pas.
Dans mon shared.lua voici le code :
Code:
ENT.Base = "base_ai"
ENT.Type = "anim"
ENT.PrintName = "NPC Medecin"
ENT.Category = "RedTroz Script"
ENT.Instructions = ""
ENT.Spawnable = true
function ENT:Initialize() self:SetModel("models/player/kleiner.mdl") self:SetSolid(SOLID_BBOX) if SERVER then self:SetUseType(SIMPLE_USE) end
end
Voilà, alors ma question est simple, pourquoi doit-on mettre le "self:" avant le SetModel et le SetSolid ?
Merci.
Sam.
 
  • J'aime
Réactions: Je t'aime ❤
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
Déjà, la function initialize n'a rien a faire dans un shared ;)
 
  • J'aime
Réactions: Je t'aime ❤
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
Code:
function ENT:Initialize() self:SetModel("models/Kleiner.mdl") self:SetHullType(HULL_HUMAN) self:SetHullSizeNormal() self:SetNPCState(NPC_STATE_SCRIPT) self:SetSolid(SOLID_BBOX) self:CapabilitiesAdd(CAP_ANIMATEDFACE) self:SetUseType(SIMPLE_USE)
end
Tu mets ca apres tes AddCsLuafile("...")

et apres tu codes ton add-on

Sinon pour répondre a tq question initiale, ca sert a indiquer que l'on parle bien de l'entité spawn :)
 
  • J'aime
Réactions: Je t'aime ❤
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
anthonin lahterman à dit:
Code:
snip
Tu mets ca apres tes AddCsLuafile("...")
Stop copier-coller du code que toi même ne comprends pas... Surtout quand tu dis des conneries (genre le initialize dans le shared, c'est possible et même intéressant dans certains cas)
De plus, l'auteur du poste a demandé à savoir pourquoi on utilisait self:, il n'a pas demandé ton code...

Pour répondre à la question, le self désigne l'objet en lui même.
Si maintenant tu veux faire en sorte de le supprimer automatiquement après être apparu, tu pourrais faire self:Remove() car Remove() est une méthode de la classe ENT (entity)

Le fait de mettre les deux points ( : ) désigne l'utilisation d'une méthode de l'objet.
Tu peux faire le lien avec un player, ply:SetUserGroup("blabla") où ply est un objet de la classe player, il a donc comme méthode SetUserGroup().
 
  • J'aime
Réactions: RedTroz et Je t'aime ❤
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
While True à dit:
Stop copier-coller du code que toi même ne comprends pas... Surtout quand tu dis des conneries (genre le initialize dans le shared, c'est possible et même intéressant dans certains cas)
De plus, l'auteur du poste a demandé à savoir pourquoi on utilisait self:, il n'a pas demandé ton code...
Du code que je ne comprends pas FailFish

Je veux bien comprendre que se soit utile des fois (et encore, je cherche l'utilitée) mais la, ca ne sert a rien, et vu qu'il est débutant, il ne faut pas qu'il s'habitut car c'est utile
While True à dit:
dans certains cas)





While True à dit:
De plus, l'auteur du poste a demandé à savoir pourquoi on utilisait self:, il n'a pas demandé ton code...
anthonin lahterman à dit:
Sinon pour répondre a tq question initiale, ca sert a indiquer que l'on parle bien de l'entité spawn :)
 
  • J'aime
Réactions: Je t'aime ❤
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
J'aurais du screen ton message... L'édition malhonnête, c'est pas bien.
Tu as supprimé une partie du code notamment un ents.Create() avec une entité qu'il n'avait pas, d'où mon message, ton code ne fonctionnant pas dans son cas.
Et tu as ajouté 'Sinon pour répondre a tq question initiale, ca sert a indiquer que l'on parle bien de l'entité spawn'.

Dis moi pourquoi l'initialisation dans le shared est une mauvaise habitude ?
 
  • J'aime
Réactions: Je t'aime ❤
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
While True à dit:
J'aurais du screen ton message... L'édition malhonnête, c'est pas bien.
Tu as supprimé une partie du code notamment un ents.Create() avec une entité qu'il n'avait pas, d'où mon message, ton code ne fonctionnant pas dans son cas.
Et tu as ajouté 'Sinon pour répondre a tq question initiale, ca sert a indiquer que l'on parle bien de l'entité spawn'.

Dis moi pourquoi l'initialisation dans le shared est une mauvaise habitude ?
J'ai rien edit, regarde bien, l'heure de la dernière edition et l'heure de ton message et tu verre qu'il s'y ai passé 1à bonnes minutes !

Et biensur que si mon code fonctionne étant donné qu'il est tirré de mon propre npc médecin.

Sinon, cite moi les avantages a mettre le initialize coté share quand on est débutant?
 
  • J'aime
Réactions: Je t'aime ❤
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
Oui, j'ai certainement inventé le 'ents.Create("texte_medecin_un_truc_dans_le_genre")' ...

Un simple exemple, tu as besoin d'une constante 'publique', par exemple le coût des soins du npc, tu pourrais initialiser self.prix = 500 et ainsi ne pas avoir à envoyer au client le coût des soins (pour l'affichage derma ou autre).
De même coté serveur, il sait combien d'argent retirer au joueur.

Tout dépends de ce que tu fais sur la partie partagée, venir dire que c'est une mauvaise habitude est faux.
Tu peux par contre lui conseiller de ne pas mettre tel ou tel truc en shared, et je ne te dirai rien, mais tu ne peux pas généraliser.
 
  • J'aime
Réactions: Je t'aime ❤ et brh450
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
Ce qui est un avantage est un inconvenient pour les débutants, si il commence par ça, il ne saura pas faire de net ni envoyer des données!
 
  • J'aime
Réactions: Je t'aime ❤
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
Je ne sais pas si t'as bien saisi le sens de l'exemple; l'initialisation dans le shared permet d'éviter l'utilisation de net.

anthonin lahterman à dit:
Ce qui est un avantage est un inconvenient pour les débutants, si il commence par ça, il ne saura pas faire de net ni envoyer des données!
Il n'y a pas ici de notions d'avantage/inconvénient pour les débutants, avant de savoir envoyer/recevoir des données, il faut déjà connaître et maitriser les notions de client/server/shared.
Et en terme de pédagogie, je ne suis pas le seul à le penser (voir Episode 1 des tutos de CodeBlue :
)
 
  • J'aime
Réactions: Je t'aime ❤
Diablos26

Diablos26

Psychopathe
Messages
951
Score réaction
326
Points
315
Ou voir l'intégralité de ça... après je dis ça je dis rien :rolleyes:
 
  • J'aime
Réactions: Je t'aime ❤ et RedTroz
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
Diablos26 à dit:
Ou voir l'intégralité de ça... après je dis ça je dis rien :rolleyes:
Toi paies ta pub :D

PS: Il est en attente d'approbation, on ne peut pas encore le consulter (du moins pas sans être connecté)
 
  • J'aime
Réactions: Je t'aime ❤ et Diablos26
Diablos26

Diablos26

Psychopathe
Messages
951
Score réaction
326
Points
315
While True à dit:
Toi paies ta pub :D

PS: Il est en attente d'approbation, on ne peut pas encore le consulter (du moins pas sans être connecté)
Je la glisse quand je peux, je suis malin :rolleyes:. Je sais mais y a tellement de cours en attente que il n'est pas dit que le mien sera accepté un jour.. du coup il faut en effet se connecter obligatoirement mais j'ai pas eu d'autres choix FailFish. Le mieux après c'est de cliquer sur "Recommander" en bas de la page principale, je sais pas ce qu'on peut faire d'autre pour statistiquement monter mes chances d'acceptation du cours.. c'est la vie BatChest.
 
  • J'aime
Réactions: Je t'aime ❤ et anthonin lahterman
Azimut

Azimut

Geek
Messages
123
Score réaction
36
Points
80
anthonin lahterman à dit:
Déjà, la function initialize n'a rien a faire dans un shared ;)
Bien sûr que si..
 
  • J'aime
Réactions: Je t'aime ❤
  • Initiateur de la discussion
RedTroz

RedTroz

Geek suprême
Messages
825
Score réaction
233
Points
195
Diablos26 à dit:
Ou voir l'intégralité de ça... après je dis ça je dis rien :rolleyes:
Je me base sur ça ne t'en fait pas :p
 
  • J'aime
Réactions: Diablos26 et Je t'aime ❤
  • Initiateur de la discussion
RedTroz

RedTroz

Geek suprême
Messages
825
Score réaction
233
Points
195
Au final je vais regarder quelques vidéos de Code Blue afin de mieux comprendre le coté client ainsi que le coté serveur et pour apprendre de petit à petit le GLUA.
Merci pour vos réponses !
La bise
 
  • J'aime
Réactions: Diablos26
Discord d'entraide
Rejoignz-nous sur Discord