-=[Les Panthères Noires]=-
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Soyez le bienvenue, Invité, dans la tanière des redoutables Panthères Noires sur Mohaa !

Le deal à ne pas rater :
Funko POP! Jumbo One Piece Kaido Dragon Form : où l’acheter ?
Voir le deal

Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

[Tuto] scripting MOHAA

5 participants

Aller en bas  Message [Page 1 sur 1]

1[Tuto] scripting MOHAA Empty [Tuto] scripting MOHAA Sam 17 Nov - 15:30

Feho

Feho
Admin
Admin

Salut, je met à disposition un tutoriel expliquant les bases du langage de script de MOHAA, pour ceux qui voudraient se lancer dans les joies de la création/modification de mods, scripts de maps etc,
et pourquoi pas faire de grandes choses ensemble pour améliorer encore et toujours notre serveur !  cheers
Cerise sur le gâteau, il est disponible en version anglaise et française Wink

Version anglaise : http://gronnevik.se/rjukan/index.php?n=Main.MOHAAScriptLanguage
Version française : http://tropheus.tropheus.free.fr/script%20tut/basesscripting/langage%20mohaa.html

Je vous met aussi un lien vers le forum qui m'a grandement aidé pour réaliser mes scripts : http://www.modtheater.com/forums/scripting.57/



Dernière édition par Feho le Sam 29 Juin - 15:45, édité 2 fois

2[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Sam 17 Nov - 21:45

tchobouboule

tchobouboule
Lieutenant
Lieutenant

moi je suis avec vous :p je vous apporte mon soutien <3
Jveux bien donner les idées llo

3[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Sam 17 Nov - 23:00

val

val
Colonel
Colonel

Très bonne initiative feho, malheureusement les script c'est la ou je m'y connais le moin dans mohaa mais bon on peux toujours apprendre et se perfectionner ^_^ globalement quand je vois un script tout fait je le comprend mais j'ai du mal a en démarrer un par moi même car je n'ai jamais vraiment eu le temps ( et l'envie aussi surtout ) d’étudier la syntaxe ^_^ rien que pour un truc simple comme ton "serveur de redirection" j'ai une vague ides de comment sa ce fait mais je suis pas capable de le rediger moi même Crying or Very sad

4[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Dim 18 Nov - 0:55

Feho

Feho
Admin
Admin

Oui au début c'est vrai que c'est un peu galère, le script du kick grenade par exemple il fait à peine quelques lignes mais j'ai mis du temps à le comprendre, avec les triggers etc...
Après je me suis fais la main principalement sur des scripts existants.

Pour le serveur de redirection, je te montre le système :

D'abord j'ai créé un script, appelé redirection.scr, que j'ai placé dans le dossier "global" (qui se trouve dans Pak0.pk3) de mon serveur local :

Code:
main:

   while (1)
   {
      for (local.num = 1; local.num <= $player.size; local.num++)
      {
         $player[local.num] stufftext "connect 217.163.22.18:12203"
      }
      
      wait 2
   }

end

Ce script dit, tant que 1 est égal à 1 (while (1) qui est le raccourcis de while (1 == 1)), donc en gros indéfiniment, exécuter la commande "stufftext" sur chaque joueur (boucle for) pour les connecter à l'IP de notre vrai serveur, puis attendre 2 secondes.

Ensuite, je voulais que ce script tourne sur n'importe quelle map pour envoyer chaque joueur qui se connecte vers la bonne IP.

Dans chaque script de map on trouve la ligne : exec global/DMprecache.scr
Ce DMprecache.scr est donc exécuté à chaque fois qu'une nouvelle map commence, il sert à mettre en cache les fichiers .tik des armes etc. Si on veut qu'un script se lance sur chaque map, c'est donc dans ce fichier qu'on va ajouter la ligne qui l'exécute.
Dans mon cas j'ai juste ajouté la ligne "exec global/redirection.scr" à la fin de DMprecache.scr, et le tour est joué !

5[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Dim 18 Nov - 10:19

val

val
Colonel
Colonel

ok merci, j'avais essayé un truc du genre mais je l'avais mis direct dans le script de la map et sa ne marchais pas hihihi

6[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Dim 18 Nov - 13:11

Bgbros

Bgbros
Capitaine
Capitaine

J'ai beau le lire encore et encore, j'y arrive pas beaucoup ...
Il faudrait que quelqu'un m'explique tous en m'aidant a en crée un.

7[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Dim 18 Nov - 19:31

val

val
Colonel
Colonel

Je vais essayer de faire une "traduction"

"Script de redirection" original
Code:

main:

  while (1)
  {
      for (local.num = 1; local.num <= $player.size; local.num++)
      {
        $player[local.num] stufftext "connect 217.163.22.18:12203"
      }
     
      wait 2
  }

end


"Script de redirection" Traduit (expliqué au neophyte)

Code:


scriptprincipal:

quand 1=1

 // c'est a dire tout le temps

  {
      Pour ( NOMBRE = 1; NOMBRE inférieur ou égal a QUANTITÉ DE JOUEUR SUR LE SERVEUR ; NOMBRE prend la valeur NOMBRE + 1 )

 // sa fait une boucle, au bout d'un moment NOMBRE ne pourra pas être augmenté car il sera supérieur a QUANTITÉ DE JOUEUR SUR LE SERVEUR, donc  a ce moment on passe a la ligne suivante

      {
        joueur[NOMBRE] -> envoyer le texte dans la console " connect 217.163.22.18:12203"
 // joueur [NOMBRE] correspond au nouveau joueur sur le serveur, c'est le NOMBRE que vous voyer avec "rcon status", le texte envoyé connecte le joueur au serveur PN
      }
     
      Attendre 2 secondes
  }

// et hop on repart au début et ainsi de suite


Le truc du DMprecache sert juste a l'executer tout le temps car le script DMprechache est chargé avec toute les maps, il n'a plus qu'a metre dans son dm precache : "executer le script de redirection" et hop a chaque fois qu'une map sera chargé le DMprecache sera chargé et le script de redirection le sera également Very Happy

J'espère que c'est bien sa et si il y a une ereur dis le moi feho afro

8[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Dim 18 Nov - 22:41

Feho

Feho
Admin
Admin

C'est tout à fait ça, sauf pour le while où j'aurais mis "tant que 1 = 1" au lieu de "quand 1 = 1" ^^
D'ailleurs si on traduit le script en algorithmique ça donnerai quelque chose comme :
Code:
Début
   
   Tant que 1 = 1 faire
      Pour local.num de 1 jusqu'à nombre de joueurs faire
         connecter joueur numéro local.num à l'IP 217.163.22.18:12203
      finPour

      Attendre 2 secondes
   finTantque

Fin

Belle explication de la boucle for et du stufftext en tout cas Smile

9[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Mer 21 Nov - 10:38

Bgbros

Bgbros
Capitaine
Capitaine

Ca y est, j'y arrive ...
Il me faudrait juste ta commande pour voir les murs invisibles car ils y en a qui sont mais pas du tous là où il faut !

Merci Smile

10[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Mer 21 Nov - 12:24

val

val
Colonel
Colonel

Moi pour créer des barrières invisibles je spawn un objet ( caisse, vehicule, ect) puis je le met a une echelle minuscule pour que il soit invisible :


local.barriere1 = spawn script_model // on crée une variable locale qui spawn un model du jeu
local.barriere1 model "static/indycrate.tik" // on spécifie le chemin d'accès au model que l'on veut ( pak0.pk3 dossier "models" ), la en l'occurence ici une caisse basique
local.barriere1.origin = ( -2577 2759 320 )// on spécifie la position du model sur la map, avec des coordonnées au format x,y,z
local.barriere1.angles = ( 0 0 0 ) // la on spécifie les angles du models, format x,y,z aussi il me semble, chiffre en degrés (de 0 a 360, marche aussi avec des valeurs négatives)
local.barriere1 solid// on spécifie que le model est bien solide ( sinon on peut le traverser, pas très utile )
local.barriere1 nodamage // le model ne peut pas etre detruit, normal !
local.barriere1.scale = 0.000001 // on choisi l’échelé du modèle, ( plus grand, plus petit, mais sa colision reste la même que avec la taille normale ), en l'occurence ici on l'a mis infiniment petit, donc il en devient invisible.



Utilise tu une méthode similaire pour le serveur feho Question

11[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Mer 21 Nov - 15:47

Bgbros

Bgbros
Capitaine
Capitaine

(Je me permet de répondre Cool)

On fait autrement, il y a moyen de placer des murs invisibles directement en virant la ligne pour trouver la texture mais il faut définir la taille du mur soit-même.

local.mur = spawn script_object // Variable
local.mur.origin = ( 2408 -2489 125) // Position In-Game (x,y,z)
local.mur.angle = -90 // Tu viens de débloquer Feho je crois
local.mur setsize ( -1 -10 -96) ( 1 200 96) // A partir de l'origin, modifie la taille du mur (L,B,Bo) (R,F,T) Like a Star @ heaven
local.mur solid // Pour rendre le tous solide


Like a Star @ heaven Arrow (Left,Back,Bottom) (Right,Front,Top)

12[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Mer 21 Nov - 16:23

val

val
Colonel
Colonel

Non pour les angles c'est correct, il y deux méthodes : angles ( 0 0 0 ) ou angle = 0 (en degrés)

study

Super pour le truc du set size, mais a mon de metre un model avec la même taille pour chaque je ne connais pas la technique pour le rendre visible scratch , a moins de tout simplement faire un mod client qui change la texture caulk en un truc non transparent ( genre bleu pétant )

Faudra que je teste sa Wink

13[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Mer 21 Nov - 18:24

Feho

Feho
Admin
Admin

Merci BGBros :p
Y'à juste le setsize que je comprend mieux sous cette forme : setsize ( -x -y -z ) ( x y z ),
et ensuite modifier l'angle si besoin d'un angle précis autre que 0, 90 ou 180 par exemple.

Et oui pour les angles les deux notations fonctionnent.
Sinon pour avoir des murs visibles j'utilise une texture de bois, un genre de planche rectangulaire à peine plus grande qu'une porte (D'ailleurs c'est que que j'ai utilisé sur m6l2a pour ajouter des semblant de portes).

14[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Mer 21 Nov - 18:35

val

val
Colonel
Colonel

ah oui static/cratelid2 quelque chose comme sa ?
Mais dans ce cas le setsize le met direct a la bonne taille?

15[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Mer 21 Nov - 20:15

Feho

Feho
Admin
Admin

Oui c'est ça :
local.static = spawn script_model
local.static model "static/cratelid2.tik"
local.static.origin = ( 1264 -3296 198 )
local.static.angles = ( 0 0 90 )
local.static.scale = 4

Par contre le setsize modifie juste la partie solide, c'est la propriété scale qui modifie la taille visible

16[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Mer 21 Nov - 20:19

val

val
Colonel
Colonel

ok c'est bien ce que je pensais Smile

17[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Jeu 7 Fév - 11:51

val

val
Colonel
Colonel

yop feho j'ai besoin de ton aide pour la cvar modematch :

J'ai regarder admin_pro vite fait pour ce qui concernait les fichier .st, en fait selon la version du jeu il change de fichier. c'est definit dans global/settings :

Code:

getgame:
   local.game = getcvar "version"
   local.i=15

   if(local.game[local.i]==" ")
   {
      local.i= 16
   }

   local.gamestates = waitexec game.file["settings/advanced"]::statefiles

   for(local.g=1;local.g <= local.gamestates.size;local.g++)
   {
      if(local.game[local.i]==local.gamestates[local.g][1])
      {      
         local.state = local.gamestates[local.g] [2]
         break
      }
   }

   switch(local.game[local.i])
   {
   case "A":
      setcvar "g_statefile" local.state
      game.game = "AA"
   break
   case "S":
      setcvar "g_statefile" local.state
      game.game = "SH"
   break
   case "B":
      setcvar "g_statefile" local.state
      game.game = "BT"
   break
   }

end
et dans le settings/Advanced.txt :

Code:

statefiles:

   local.statepath = makearray
      // Game         // file
      "A"          global/nagle_aa
      "S"          global/nagle_sh
      "B"          global/nagle_bt
   endarray

end local.statepath


mon idée sa serait donc de faire un truc comme :

Code:

getgame:
   local.game = getcvar "version"
   local.i=15

   if(local.game[local.i]==" ")
   {
      local.i= 16
   }
        if (getcvar "modematch" == "0")
        {
        local.gamestates = waitexec game.file["settings/advanced"]::statefiles
        }
        else
        {
        local.gamestates = waitexec game.file["settings/advanced"]::statefiles2

en mettant ce truc dans Advanced.txt :
Code:

statefiles2:

   local.statepath = makearray
      // Game         // file
      "A"          global/mike_torso
      "S"          global/mike_torso
      "B"          global/mike_torso
   endarray

j'ai pas le temps de tester tout de suite mais si tu est sur que sa ne marchera pas dis le moi Smile

18[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Jeu 7 Fév - 13:25

Feho

Feho
Admin
Admin

Salut val,

A première vue pour moi ça fonctionnerait, mais je pense qu'on peut remonter encore plus à la source du problème, car de cette façon on désactiverait bien les mods qui se lancent via le torso.st, mais je suis pas sûr que ça désactive tous les scripts d'admin pro (mines etc).
Le mieux serait d'empêcher absolument tous les scripts d'admin pro de s'exécuter.

Hier soir j'ai regardé vite fait, tout démarre du fichier global/ambient.scr.
J'ai donc testé de placer l'ambient.scr original dans mon dossier global, les mines ne fonctionnaient plus mais j'avais encore les voix et la hauteur de saut augmentée, en fait j'avais oublié un mike_torso.st identique à nagle_aa_torso.st dans un dossier et j'ai pas continué à chercher...

Enfin bref faudra qu'on voit tout ça à deux ce soir si tu veux Wink

19[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Jeu 7 Fév - 16:31

val

val
Colonel
Colonel

d'accord j'ai compris ce que tu voulais dire, en fait on doit empêcher admin pro de s’exécuter... je regarde sa et je te dit Smile

Edit : aie, d’après ce que j'ai test ambient.scr se charge quand le serveur ce lance, donc c'est impossible de changer la variable déjà définit dans la config au départ même si on recharge la map Sad


20[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Ven 8 Fév - 11:45

val

val
Colonel
Colonel

grâce à super feho sa marche Smile

reste plus qu'a modifier les caratéristiques des armes en mod match, après quelques recherche utiliser 2 .tik différents n'est pas possible.

Par contre j'ai vu quelques post intéressants sur Mod theater qui montres des commandes qui pourraient le faire :

-> http://www.modtheater.com/threads/combine-multiple-sniper-mods-into-one-use-the-weapons-limiter-too.36104/

quelque chose comme par exemple

self weaponcommand mainhand bulletdamage 120

ou self est le joueur....

sa te dit quelque chose feho?

21[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Ven 8 Fév - 12:41

Feho

Feho
Admin
Admin

Arf c'est bien ce que j'avais vu pour les tik :/

Et oui pour les weaponcommand c'est ce que je disais hier avec les mitrailleuses portables, que j'avais réussi à modifier leur précision, mais seulement partiellement car apparemment la commande weaponcommand n'accepte qu'une valeur (alors que pour la précision (dmbulletspread) il en faut 4)...

Par contre je viens de voir dans ton lien (que j'avais pas lu entièrement l'autre jour) qu'on pourrait modifier le dmbulletspread si on arrive à faire exécuter le script par l'arme elle-même (et donc que self représente l'arme) Smile

22[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Sam 9 Fév - 8:27

Lt.Greg

Lt.Greg
Major
Major

Pas grand chose à voir mais vous ne connaissez pas des programmes de modélisation 3D?
Sinon, c'est un peu complexe mais, dans les grandes lignes, je crois avoir compris.
Merci Feho! Very Happy

23[Tuto] scripting MOHAA Empty Re: [Tuto] scripting MOHAA Ven 22 Fév - 21:09

Feho

Feho
Admin
Admin

Salut Greg et désolé pour ta question qui a un peu été oubliée ^^
J'ai plusieurs fois entendu parlé de SketchUp mais je n'ai jamais testé.

P.S. : J'ai déplacé le sujet dans la nouvelle section "Développement".

Contenu sponsorisé



Revenir en haut  Message [Page 1 sur 1]

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum