• 18 Avril 2024, 03:26:25


Auteur Sujet: [AIDE] startResource  (Lu 3512 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne CafeOLait

  • *
  • Nouveau
  • Messages: 16
    • Voir le profil
[AIDE] startResource
« le: 30 Janvier 2012, 00:29:33 »
Re-Bonsoir  :-[

Voila, je peaufine un peu mon script de barrières, mais afin d'avoir des objets,
je dois charger un fichier *.map.

J'ai -en regardant un peux le wiki- trouvé la fonction
Citer
startResource

Voici mon arborescence
(/script est la base de mon script  ::) )
(/yann est la resource à lancer)
Citer
/resource
   /a
   /b
   /script
      /yann
          /yann.map
          /meta.xml
      /meta.xml
      /main.lua
      /main.lua.old

Voici mon script pour le moment
[spoiler]
function a (a)
outputChatBox ( "\n", getRootElement(), 255, 125, 0, true )
outputChatBox ( "Lancement des Scripts", getRootElement(), 255, 125, 0, true )
end
setTimer ( a, 50, 1)

function barrieres ( script)
gatea = createObject ( 969, 1397.1, 2701.6, 9.8, 0, 0, 270 )
gateb = createObject ( 969, 1397.1, 2693.6, 9.8, 0, 0, 270 )
gatec = createObject ( 987, 2294.6, 2503.2, 2.3, 0, 0, 274 )
gated = createObject ( 987, 2319.8, 2440.5, 2.3, 0, 0, 90 )
gateea = createObject ( 987, 2245.6, 2481.5, 14, 0, 0, 270 )
gateeb = createObject ( 987, 2245.6, 2469.5, 14, 0, 0, 270 )
gateec = createObject ( 987, 2245.6, 2457.5, 14, 0, 0, 270 )
gateed = createObject ( 987, 2245.6, 2445.5, 14, 0, 0, 270 )
arene = createObject ( 17018, -1417, 363, 25, 0, 0, 270 )
airport = createObject ( 987, -1549.8, -426, 5, 0, 0, 316 )
arene2 = createObject ( 3277, -1426.8, 368.4, 26.1, 0, 0, 0 )
outputChatBox ( "! Script Barriere [WAIT] !", getRootElement(), 0, 230, 255, true )
end
setTimer ( barrieres, 500, 1)

function b (b)
if ( barrieres) then
   outputChatBox ( "! Script Barriere [OK] !", getRootElement(), 0, 255, 0, true )
else
   outputChatBox ( "! Script Barriere [FAIL] !", getRootElement(), 255, 0, 0, true )
end
end
setTimer ( b, 1000, 1)

function loadMapFile ( filename )
   startResource ( yann)
end
setTimer ( loadMapFile, 1500, 1)

function c (c)
if ( LoadMapFile) then
   outputChatBox ( "! Map Yann [OK] !", getRootElement(), 0, 255, 0, true )
else
   outputChatBox ( "! Map Yann [FAIL] !", getRootElement(), 255, 0, 0, true )
end
end

setTimer ( c, 2000, 1)

[/spoiler]

Donc mon problème est que j'obtien ce message d'erreur:
Citer
[2012-01-30 00:21:46] WARNING: script\main.lua:33: Bad argument @ 'startResource'

(J'ai mit la source du problème en rouge)

Et j'aimerais savoir, si vous ne sauriez pas me donner un petit
coup de patte...

Merci beaucoup pour votre aide...
CafeOLait

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : [AIDE] startResource
« Réponse #1 le: 30 Janvier 2012, 09:36:32 »
Bonjour,
La fonction startResource permet de lancer une ressource.
/script est une ressource, mais yann n'en est pas une, c'est seulement un dossier dans la ressource script avec un .map à l'intérieur ( tu peux supprimer la meta.xml du dossier yann, c'était pour le Map Editor )

Pour que ta map soit lancée au démarage de ton script, il suffit de la mettre dans ta meta.xml de ton dossier script.
Pour cela, il suffit de rajouter ceci:
Code: (xml) [Sélectionner]
<map src="yann/yann.map" />
Ensuite pour ton code, je te propose celui là, je l'ai commenté et tu remarqueras que c'est plus simple que ce que tu pensais  :happy
Code: (lua) [Sélectionner]
function barrieres( )
-- le \n ne marche pas dans un outputChatBox, la solution est d'en faire un avec rien à l'intérieur:
outputChatBox ( "", getRootElement(), 255, 125, 0, true )
outputChatBox ( "Chargement des barrières", getRootElement(), 255, 125, 0, true )
gatea = createObject ( 969, 1397.1, 2701.6, 9.8, 0, 0, 270 )
gateb = createObject ( 969, 1397.1, 2693.6, 9.8, 0, 0, 270 )
gatec = createObject ( 987, 2294.6, 2503.2, 2.3, 0, 0, 274 )
gated = createObject ( 987, 2319.8, 2440.5, 2.3, 0, 0, 90 )
gateea = createObject ( 987, 2245.6, 2481.5, 14, 0, 0, 270 )
gateeb = createObject ( 987, 2245.6, 2469.5, 14, 0, 0, 270 )
gateec = createObject ( 987, 2245.6, 2457.5, 14, 0, 0, 270 )
gateed = createObject ( 987, 2245.6, 2445.5, 14, 0, 0, 270 )
arene = createObject ( 17018, -1417, 363, 25, 0, 0, 270 )
airport = createObject ( 987, -1549.8, -426, 5, 0, 0, 316 )
arene2 = createObject ( 3277, -1426.8, 368.4, 26.1, 0, 0, 0 )
outputChatBox ( "! Script Barriere [WAIT] !", getRootElement(), 0, 230, 255, true )
-- je vérifie si toutes les barrieres ont été crées:
if ( gatea and gateb and gatec and gated and gateea and gateeb and gateec and gateed and arene and airport and arene2 ) then
return true -- renvoie true à la fonction qui a appelée la fonction barrieres
else
return false -- renvoie false à la fonction qui a appelée la fonction barrieres
end
end

function chargementBarrieres( )
local reussit = barrieres() -- j'appelle la fonction  barrière et je stock la valeur qu'elle me renvoie dans la variable réussit
if ( reussit == true ) then
   outputChatBox ( "! Script Barriere [OK] !", getRootElement(), 0, 255, 0, true )
else
   outputChatBox ( "! Script Barriere [FAIL] !", getRootElement(), 255, 0, 0, true )
end
end
setTimer( chargementBarrieres, 500, 1 )

Voila, j'espère que ça te sera utile.

Cordialement,
    Citizen
The rEvolution is coming ...

Hors ligne CafeOLait

  • *
  • Nouveau
  • Messages: 16
    • Voir le profil
Re : [AIDE] startResource
« Réponse #2 le: 30 Janvier 2012, 12:02:03 »
Merci,
Je vais essayer un peux plus tard, ici je ne suis pas sur mon pc.

Mais chez moi bizarrement quand je met le \n seul, j ai une ligne blanche  :P

Bonne journée  ;)

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : Re : [AIDE] startResource
« Réponse #3 le: 30 Janvier 2012, 12:07:12 »
Mais chez moi bizarrement quand je met le \n seul, j ai une ligne blanche  :P

Ah ?  :blink ba s'il l'accepte, pourquoi ne le mets-tu pas devant Chargement des barrières:
Code: (lua) [Sélectionner]
outputChatBox( "\nChargement des barrières", getRootElement(), 255, 125, 0, true )c'est pour gagner de la place évidemment, mais si ça marche, tu m'auras appris quelquechose  :P

Cordialement,
    Citizen
The rEvolution is coming ...

Hors ligne CafeOLait

  • *
  • Nouveau
  • Messages: 16
    • Voir le profil
Re : [AIDE] startResource
« Réponse #4 le: 30 Janvier 2012, 13:09:18 »
Verdict...

Toujours mon bad argument @ 'StartResource'

Et Pourtant...
Citer
<meta>
<info author="CafeOLait" version="0.0.1" type="script" name="Fence Script" description="This script ad fences in the game." />
<script src="main.lua" type="server" />

<map src="yann/yann.map" />

</meta>

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : Re : [AIDE] startResource
« Réponse #5 le: 31 Janvier 2012, 09:20:15 »
Toujours mon bad argument @ 'StartResource'

Où vois tu un startResource dans mon code ???

Ce que je viens de te donner remplace TOUT ton code précédent.
The rEvolution is coming ...

Hors ligne CafeOLait

  • *
  • Nouveau
  • Messages: 16
    • Voir le profil
Re : [AIDE] startResource
« Réponse #6 le: 31 Janvier 2012, 18:05:24 »
Je crois que mes explications du départ on été très confuses  :bangin ...

Je recommence... Je crois que ce sera plus simple  :D ...

Mon but en fait, est de créer un script généralisé...

Mon script doit démarrer d'autres ressources mais en cadencé...

Par Exemple:
1) Démarre la map yann.map (50mili)
3) Démarre la map Jean-Marie.map (1sec)
2) Démarre le script barrières (2sec)
3) Démarre ...

Cela me permetterais de savoir si tout c'est bien lancé et relativement cadencé pour ne
pas surcharger le serveur au démarrage...

Mais le principal problèmes, est de démarrer la resource ET de vérifier si elle c'est bien lancée.

! Map Yann [WAIT]
! Map Yann [OK][FAIL]
! Map Jean-Marie [WAIT]
! Map Jean-Marie [OK][FAIL]
! Script Barrieres [WAIT]
! Script Barrieres [OK][FAIL]

Bien à toi.
Et désolé pour la confusion engendrée...

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : Re : [AIDE] startResource
« Réponse #7 le: 31 Janvier 2012, 21:24:02 »
et relativement cadencé pour ne pas surcharger le serveur au démarrage...

Alors pour ça, y a aucun soucis  :P

Je vois ce que tu veux faire mais pour moi ( opinion personnelle ) ça ne sert à rien, surtout si dans 3 mois tu lanceras plein de trucs au démarrage et que ça te prennent 2 min a tout charger alors qu'une dizaine de secondes suffisent.

Mais je ne suis pas là pour dire ce que tu dois faire, donc je vais faire exactement ce que tu m'as dit.
Donc si tu veux démarrer la map après (50mili), c'est à dire l'obligation d'utiliser un setTimer inutile :p, il faut que tu remettes ta map et la meta.xml de la map dans un dossier ( mapyann par exemple ) qui doit se trouver au même endroit que le dossier de ton script.
Citer
/resources
   /a
   /b
   /mapyann
       /yann.map
       /meta.xml
   /script
      /meta.xml
      /main.lua
      /main.lua.old

Ensuite dans ton script, il suffit ( comme tu avais fait ) d'utiliser la fonction startResource mais il faut lui donner une variable du type resource. Tu aurais dû voir dans l'exemple du wiki, qu'il fait appel à la fonction getResourceFromName afin de récupérer cette fameuse variable.

Ducoups si je corrige ton code, cela donne:

Code: (lua) [Sélectionner]
local maVariable = getResourceFromName ( "mapyann" ) -- on récupère la ressource qui s'appelle mapyann dans maVariable
startResource( maVariable ) -- on lance la ressource


Citer
Mais le principal problèmes, est de démarrer la resource ET de vérifier si elle c'est bien lancée.
Démarrer c'est fait, maintenant il nous reste à vérifier si elle c'est lancée.
Dans la fiche de la fonction startResource, je vois ceci:
Citation de: Wiki
Returns true if the resource has been started successfully, false otherwise.
Et ba c'est pile ce qu'il nous faut !

Je reprends le bout de code précédent et j'ajoute ceci:
Code: (lua) [Sélectionner]
local maVariable = getResourceFromName ( "mapyann" ) -- on récupère la ressource qui s'appelle mapyann dans maVariable
local success = startResource( maVariable ) -- on lance la ressource ET on récupère la valeur renvoyée par la fonction dans success
if ( success == true ) then
outputChatBox ( "! Map Yann [OK] !", getRootElement(), 0, 255, 0, true )
else
outputChatBox ( "! Map Yann  [FAIL] !", getRootElement(), 255, 0, 0, true )
end
 

J'espère que cette fois, c'est ce que tu voulais  :)

Cordialement,
    Citizen
The rEvolution is coming ...

Hors ligne CafeOLait

  • *
  • Nouveau
  • Messages: 16
    • Voir le profil
Re : [AIDE] startResource
« Réponse #8 le: 31 Janvier 2012, 22:01:09 »
Oui c'est exactement ca... sauf que, j'ai toujours mon bad argument...

 :...

POURTANT... J'ai utilisé ton script au CTRL+C / CTRL+V :D

Citer
function loadyann ()
local maVariable = getResourceFromName ( "mapyann" ) -- on récupère la ressource qui s'appelle mapyann dans maVariable
local success = startResource( maVariable ) -- on lance la ressource ET on récupère la valeur renvoyée par la fonction dans success
if ( success == true ) then
   outputChatBox ( "! Map Yann [OK] !", getRootElement(), 0, 255, 0, true )
else
   outputChatBox ( "! Map Yann  [FAIL] !", getRootElement(), 255, 0, 0, true )
end
end
setTimer( loadyann, 1500, 1)

  :wall

A devenir fou  :P

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : [AIDE] startResource
« Réponse #9 le: 01 Février 2012, 15:22:52 »
Mais le dossier dans lequel il y a ta map, s'appelle t'il "mapyann" ?
Et as tu remis la meta.xml de la maps ( pas celle du script ) dans le même dossier ?
Si le dossier ce nomme autrement, il faut que tu le remplaces dans cette ligne:

Code: (lua) [Sélectionner]
local maVariable = getResourceFromName ( "NomDuDossierDeLaMap" )
Si tout était correct, essaye un "refresh all" dans la console et voir s'il n'y a pas d'erreur concernant cette map.

Normalement c'est censé marcher.

The rEvolution is coming ...

Hors ligne CafeOLait

  • *
  • Nouveau
  • Messages: 16
    • Voir le profil
Re : [AIDE] startResource
« Réponse #10 le: 02 Février 2012, 17:47:35 »
J'ai changé mon fusil d'épaule...  :snip

Mare de se bad argument alors, j'utilise le mtaserver.conf...

Merci à vous...