• 19 Juillet 2019, 14:47:01


Auteur Sujet: [BUG]Debutant besoin d'aide  (Lu 2355 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Anolas

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
[BUG]Debutant besoin d'aide
« le: 06 Septembre 2013, 23:29:16 »
Bonsoir ,

Voilà maintenant 6 jour que je galère sur des script qui bloque . Donc je crée des petit script et lors du lancement j'utilise ma commande et rien. Pourtant je ne constate aucune erreur dans la console. Je me dit de plus en plus que l'erreur vien de moi. Peut être que je fait mal les chose mais mon script a l'air juste.

Donc voici un exemple : http://pastebin.com/vj5xBKTu

Un système qui et censée crée un objet a la position de notre joueur. Mais rien ne se passe pas de réponse rien.

Amicalement ,

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : [BUG]Debutant besoin d'aide
« Réponse #1 le: 07 Septembre 2013, 00:18:39 »
Bonsoir Anolas,

Avant de commencer tête baisser dans tes scripts, il faut lire, apprendre et comprendre les bases.
Sans ces bases, tu essayeras de coder et/ou de lire le code de quelqu'un d'autre sans rien y comprendre.

Je vois ici que tu n'as pas la notion de partie cliente (le pc d'un joueur) et partie serveur(la machine qui héberge le serveur), en effet, si tu veux créer un objet mais qu'il soit visible de tous les joueurs, il te faut le créer du côté serveur. La partie cliente sera en général utilisée pour faire de l'affichage (fenêtres, boutons, images etc) et du code qui peut être exécuter du côté client pour soulager le serveur.

Pour bien comprendre comment ça fonctionne et comment faire en sorte qu'un script Lua soit exécuté du côté client ou du côté serveur, je te conseil fortement (pour ne pas dire une obligation) de lire, comprendre et tester les exemples qu'on te propose sur cette page:

Introduction: La programmation

J'ai souligné et mis en rouge le verbe tester car si tu t'amuses juste à lire sans tester les exemples en te disant: "Ouai c'est bon je vois ce que ça fait, pas besoin de tester :closedeyes:"  tu oublieras ou ne verra pas certaines notions importantes.

Quelques conventions de codages car je viens de voir ton code sur pastebin:
- les noms de fonctions et des variables doivent toujours commencer par une minuscule puis une majuscule à chaque première lettre des mots qui composent le nom de la fonction ou de la variable. Exemples:
Code: Lua
  1. function createAtm()
  2. function myAwesomeFunction()
Code: Lua
  1. local theAtmObject = createObject(blabla)

- Utiliser des tabulations pour l'indentation des lignes (pas d'espaces). En général tu ajouteras une indentation supplémentaire lorsque tu rentreras dans quelquechose. Exemple:
Code: Lua
  1. function creeAtm (thePlayer)
  2.         --Je rentre dans ma fonction
  3.         local px, py, pz = getElementPosition(thePlayer)
  4.         if(px == false) then
  5.                 --Je rentre dans un if
  6.                 for k=0, 3, do
  7.                         --je rentre dans une boucle for
  8.                         px = px + 3;
  9.                 end --la fermeture alignée avec l'ouverture
  10.         end -- idem (alignement)
  11.         --Je continue sur le même alignement
  12.         local blabla = maBlablaFonction()
  13. end
PS: Sur ce forum on a l'impression que c'est trop, mais sur un vrai éditeur (Notepad++ par exemple) ou même sur pastebin, c'est 2 fois mois espacés.

- Faire un espace après chaque virgules ou operateurs (+ - / * = etc ). Exemple:
Code: Lua
  1. local px, py, pz = getElementPosition( thePlayer )
  2. setElementPosition( px * 2, py / 2, pz - 2 + 2 )

- Essayer (c'est pas grave si tu le fais pas) de nommer tes fonctions et variables en anglais. Car comme ça tu  ne peux pas avoir de problème avec les accents (attention je n'insinue pas qu'on peut mettre des accents, on peut pas, je dis juste que createdObject sonne mieux que objetCree).

Voilà, et désolé pour le temps de rédaction mais fallait que je sois clair et précis en te donnant toutes ces informations pour bien débuter.

Donc je te conseil de mettre de coter ton petit script, de suivre le tuto du wiki et une fois que t'as compris et que les exemples marchent, modifie ces exemples pour tester ta création d'objet.

Bon codage !

Citizen
« Modifié: 07 Septembre 2013, 00:24:11 par Citizen »
The rEvolution is coming ...

Hors ligne Anolas

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : [BUG]Debutant besoin d'aide
« Réponse #2 le: 07 Septembre 2013, 00:35:07 »
Merci d'avoir prit tant de temps pour me répondre et surtout avec autant de précision. J'ai put lire la partie que tu avait traduite. Et effectivement je suis conscient que j'ai de gros problème avec cette histoire de client et de serveur.

Cependant , lire des 100 de ligne anglaise ou je comprend 1 mots sur 3. Disont que lorsque je regarde les fonction que j'utilise sur le wiki je vois plus de chose ( string , bool , ...) que je ne comprend pas.

Je prend en compte tes conseille et je vais essayer de me plonger sur cette histoire de client/serveur.

Amicalement

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : [BUG]Debutant besoin d'aide
« Réponse #3 le: 07 Septembre 2013, 01:37:27 »
Alors pour la lecture des prototypes (~définitions) des fonctions prenons un exemple:
object createObject ( int modelid, float x, float y, float z, [ float rx, float ry, float rz, bool isLowLOD = false ] )

On peut voir que cette fonction à besoin de 8 arguments dont les 4 derniers sont optionnels.

Tous les petits mots en verts représente enfait les types. Explications:

Le object devant createObject veut dire que la fonction retourne une donnée de type object.

int modelid
veux dire que le 1er argument à passer à la fonction est un int (Integer - un entier)

float x
veux dire que le 2ème argument à passer est un float (un chiffre à virgule: 4.200 ou 4, oui si tu passes 4 alors qu'il veut un float, il va tout seul le transformer en 4.0)

bool isLowLOD = false
veux dire que le 8ème argument (optionnel celui là) doit être un bool (Boolean - que 2 valeurs possible: true ou false) et que par défaut, il sera à false

Les noms des arguments donnés dans le wiki ne servent juste qu'à les identifier pour les détails qui suivent à chaque fois: Required Arguments et Optional Arguments (pas tout le temps présente la partie Optional Arguments, ça dépends des fonctions bien évidemment)

/!\Attention: Si tu veux par exemple changer la valeur du 8ème argument, tu est obligé de préciser tous les arguments qui précèdent (rx, ry et rz).

Exemples d'utilisations:
Code: Lua
  1. createObject ( 1337, 5540.6654, 1020.55122, 1240.545, 90, 0, 0, true )
  2. createObject ( 1337, 5540.6654, 1020.55122, 1240.545, 90, 0, 0 )
  3. createObject ( 1337, 5540.6654, 1020.55122, 1240.545, 90, 0 )
  4. createObject ( 1337, 5540.6654, 1020.55122, 1240.545, 90 )
  5. createObject ( 1337, 5540.6654, 1020.55122, 1240.545 )

Et bien sûr, pour récupérer la valeur retournée par la fonction, il faut créer une variable:
Code: Lua
  1. local monObjet = createObject ( 1337, 5540.6654, 1020.55122, 1240.545 )

Voilà, bon apprentissage et codage !

Cordialement,
Citizen
The rEvolution is coming ...

Hors ligne Anolas

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : [BUG]Debutant besoin d'aide
« Réponse #4 le: 08 Septembre 2013, 02:50:18 »
Bonjour ,


Je suis actuelement dans un moment un peut compliquer. 1 semaine que j'essaye de faire des systeme et variée ( ChatBox , Crée ATM, GiveArgent ) Et je craque car rien en veut marcher. Je sais pas comment m'y prendre car mes script on l'air bon mais j'ai l'impression de mal proceder dans le lancement des ressource. Ou alors j'oublie de detail.

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : [BUG]Debutant besoin d'aide
« Réponse #5 le: 08 Septembre 2013, 15:53:36 »
C'est pour ça que je t'ai envoyer vers le lien d'un tutoriel pour bien commencer, fait tout ce qu'il y a marqué:
- Créer une nouvelle ressource (un dossier sans crochets "[]") dans le dossier resources (Multi Theft Auto\server\mods\deathmatch\resources) que tu nommes myserver
- Ensuite tu crées un fichier meta.xml dans ta ressource pour dire au serveur ce que c'est comme ressource et qu'est-ce qui faut y charger dedans.
- Ensuite tu va créer un fichier en .lua qui va contenir ton code (ne pas mélanger du code client et du code serveur dans le même fichier). Une fois créé, tu vas copier-coller la commande createVehicle qui est dans le tutoriel.
- Tu ajoutes dans la meta ton fichier comme c'est marqué dans le tutoriel.
- Tu lances ou relances complètement le serveur et tu tapes dans la console du serveur: "start myserver" sans les guillemets bien évidemment.
- Tu lances ton MTA, tu te connectes à ton serveur et dès que tu as spawn, tu tapes la commande: "/createVehicle 468" sans les guillemets aussi, et ça devrait te faire apparaître une moto à coté de toi.

T'as juste besoin de savoir lire pour faire ta première ressource avec une commande qui fonctionne, c'est pas surhumain. Donc faut aussi que tu y mettes du tien. Ça marche dans les deux sens, je t'aide à condition que tu fasses ce que je te dis. Ton code va pas marcher par magie en bidouillant sans rien y connaître. Les tutoriels sont là pour ça, et je ne suis pas là pour de recracher texto ce qu'il y a marqué dans le tutoriel, ça nous ferai perdre du temps à tous les deux.

Quand tu lanceras ta ressource "myserver" depuis la console du serveur, si jamais il y a une erreur, elle devrait s'afficher. Donc vérifie bien qu'il n'y a pas d'erreur au lancement de la ressource, sinon ta commande ne marchera pas.

Cordialement,
Citizen
The rEvolution is coming ...

Hors ligne Anolas

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : [BUG]Debutant besoin d'aide
« Réponse #6 le: 09 Septembre 2013, 19:10:40 »
Bonsoir ,

C'est aprer avoir relus ton message que je me suis rendu compte du manque de luciditée dont j'ai fait pars. J'ai donc myserver qui fonctionne avec un spawn et cette fameuse moto. Merci de m'avoir ouvert les yeux car je m'obstinée sur quelque chose que je ne suis pas capable de faire. Je vais maintent essayer d'autre petite commande simple avant d'attaquer se fameux systeme sur le quel je m'obstinée. Si jamais tu a des idée que je pourrais faire ou d'autre conseille je me ferait un plaisir de t'ecouter.

Amicalement