Author Topic: fusion de 2 scr  (Read 1581 times)

painkiler

  • Bleusaille
  • Posts: 3
fusion de 2 scr
« on: January 25, 2011, 12:21:27 AM »
bonsoir j aimerai vien savoir comme faire pour fusioner c est 2 scripts

1 de mon mod dm
      et
1 de mon mod obj

le principe reinplanter mais spot lumineux qui cliniote dans ma map Obj


voici le premier jusque la tous va bien ( jai reusi a remetre mon brouilard dedans mais pas les lumiere

main:

setcvar "g_obj_alliedtext1" "-< Détruire >-"
setcvar "g_obj_alliedtext2" "-< le canon de 150mm >-"
setcvar "g_obj_alliedtext3" ""
setcvar "g_obj_axistext1" "-< Défendre >-"
setcvar "g_obj_axistext2" "-< le canon de 150mm >-"
setcvar "g_obj_axistext3" ""

setcvar "g_scoreboardpic" "none"

local.master = spawn ScriptMaster

local.master aliascache explo_hallway1 sound/weapons/explo/explo_hallway1.wav soundparms 2.4 0.4 0.8 0.5 550 6500 auto loaded maps "dm obj"

//-----------------------------//
level waittill prespawn
//-----------------------------//

level.script = maps/obj/obj_592th.scr

exec global/exploder.scr

pulsating_fog:

// Couleurs brouillard
   local.farplane_color = "0.5 0.1 "
   local.blue = 0
   local.blue_max = 1.3
   local.blue_min = 0
   local.blue_step = 0.01
// Distance brouillard
   local.fogplane = 3900
   local.fogplane_step = 07
// Vitesse
   local.pulsate_speed = 0.06
   local.acending = 0.06
// animation CoDe
   while ( 1 ) //for ever
   {
      // Switch pulse direction at max and min
      if(local.blue < local.blue_min || local.blue > local.blue_max)
   {
      local.acending = ! local.acending
   }
   wait local.pulsate_speed
   if(local.acending)
   {
      local.blue = local.blue + local.blue_step
      local.fogplane = local.fogplane + local.fogplane_step
   }
   else
   {
      local.blue = local.blue - local.blue_step
      local.fogplane = local.fogplane - local.fogplane_step
   }
   // Set the variables in $world
   $world farplane_color ( local.farplane_color + local.blue )
   $world farplane local.fogplane
}
end

level.dmrespawning = 1
level.dmroundlimit = 4
level.clockside = "axis"

level.defusing_team = "axis"
level.planting_team = "allies"

//-----------------------------//
level waittill spawn
//-----------------------------//

level.bomb_damage = 200
level.bomb_explosion_radius = 1048

//-----------------------------//
//level waittill roundstart
//-----------------------------//

$bombe1 thread global/obj_dm.scr::bomb_thinker
$bombe1 thread victoire_axe
thread victoire_allies $bombe1

end

//===========================//
//*** Victoire des Alliés ***//
//===========================//
victoire_allies local.bombe:

while (local.bombe.exploded != 1)
{
  wait 0.1
}
wait 1.5

teamwin allies

end

//===========================//
//*** Victoire des Allemands ***//
//===========================//
victoire_axe:

level waittill axiswin

end

et voici le 2 eme en DM


main:

level waittill prespawn

   exec global/DMprecache.scr
   level.script = maps/dm/Saturday_night-fever2.scr
   level.music = "Saturday_night-fever2"
   exec global/ambient.scr Saturday_night-fever2
   exec global/door_locked.scr::lock
   
//objectif Alliés
   setcvar "g_obj_alliedtext1" " Saturday Night "
   setcvar "g_obj_alliedtext2" "    Fever II    "
   setcvar "g_obj_alliedtext3" "  by Amigos3D  "

// objectif Axes
   setcvar "g_obj_axistext1" "La fievre du samedi"
   setcvar "g_obj_axistext2" "      soir II      "  
   setcvar "g_obj_axistext3" " CASKAMI PROD.2003 "


// image des scores
   setcvar "g_scoreboardpic" "none"

// Anime brouillard
   thread pulsating_fog

// Anime Lumieres
   thread lumiere1
   thread lumiere2

// sons localisés
   local.master = spawn ScriptMaster
    local.master aliascache snd_disco sound/amb_amigos3d/DanHartman_Relightmyfire.mp3 soundparms 7.6 0.1 1.0 0.0 1100 9000 auto loaded maps "obj dm"   
   local.master aliascache snd_restor sound/amb_amigos3d/disco1.wav soundparms 4.5 0.1 1.0 0.0 600 5500 auto loaded maps "obj dm"

// call additional stuff for playing this map round based is needed

   if(level.roundbased)
      thread roundbasedthread
   

level waittill spawn

// Les sons
   $discman loopsound snd_disco
   $restorant loopsound snd_restor
end



//-----------------------------------------------------------------------------

roundbasedthread:

// Can specify different scoreboard messages for round based games here.
   
   level waitTill prespawn

// Anime Lumieres
   thread lumiere1
   thread lumiere2

// sons localisés
   local.master = spawn ScriptMaster
    local.master aliascache snd_disco sound/amb_amigos3d/DanHartman_Relightmyfire.mp3 soundparms 7.5 0.1 1.0 0.0 1100 8900 auto loaded maps "obj dm"   
   local.master aliascache snd_restor sound/amb_amigos3d/disco1.wav soundparms 4.0 0.1 1.0 0.0 600 6500 auto loaded maps "obj dm"

   level waittill spawn

// Les sons
   $discman loopsound snd_disco
   $restorant loopsound snd_restor
end

// set the parameters for this round based match
   level.dmrespawning = 0 // 1 or 0
   level.dmroundlimit = 4 // round time limit in minutes
   level.clockside = kills // set to axis, allies, kills, or draw

level waittill roundstart

end

//-----------------------------------------------------------------------------

pulsating_fog:

// Couleurs brouillard
   local.farplane_color = "0.5 0.1 "
   local.blue = 0
   local.blue_max = 1.3
   local.blue_min = 0
   local.blue_step = 0.01
// Distance brouillard
   local.fogplane = 3900
   local.fogplane_step = 07
// Vitesse
   local.pulsate_speed = 0.06
   local.acending = 0.06
// animation CoDe
   while ( 1 ) //for ever
   {
      // Switch pulse direction at max and min
      if(local.blue < local.blue_min || local.blue > local.blue_max)
   {
      local.acending = ! local.acending
   }
   wait local.pulsate_speed
   if(local.acending)
   {
      local.blue = local.blue + local.blue_step
      local.fogplane = local.fogplane + local.fogplane_step
   }
   else
   {
      local.blue = local.blue - local.blue_step
      local.fogplane = local.fogplane - local.fogplane_step
   }
   // Set the variables in $world
   $world farplane_color ( local.farplane_color + local.blue )
   $world farplane local.fogplane
}
end

//jeux de lumieres

lumiere1:
$cone1 hide
wait .5
$cone1 show
wait .5
thread lumiere1
end


lumiere2:
$cone2 show
wait .5
$cone2 hide
wait .5
thread lumiere2
end


merci pour votre aide

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
fusion de 2 scr
« Reply #1 on: February 01, 2011, 04:23:42 PM »
Salut

Y'a pas de recette miracle:
- Essaie de comprend ce à quoi sert chaque thread
- Essaie de savoir quand est lancé chaque thread ainsi que pourquoi
- Voit quels thread se retrouvent d'un CoDe à l'autre (leurs points communs) pour en générer un seul

A partir de ca, tu peux croiser les thread et "fusionner" les scripts.
Il faut bien voir qu'un langage informatique comme le script MoH est un langage: il est très difficile de fusionner deux romans (en "langage" français), donc, il est délicat de fusionner deux scripts.

Une bonne méthode sinon pour fusionner deux scripts est la lecture parallèle:
- Ouvre les deux scripts, et affiche les en même temps sur ton écran
- Imagine la "tête de lecture du script", qui démarre sur le "main:" de chaque script
- Lis chacun des deux scripts en même temps, comme ladite tête le ferait. Tu lis la ligne du script 1, et en même temps, la ligne du script 2. Tu en déduis laquelle est utile, et tu l'écris dans ton script fusionné, puis tu recommence
- Si tu arrive sur un "wait", tu "bloque" la lecture de ce script jusqu'à ce que l'autre script arrive sur un "wait".
Si tu quitte le thread, tu arrête la lecture du script.

Tu procède de même pour chaque thread existant dans les deux CoDes.
Si un thread n'existe que dans un seul CoDe, tu le recopie dans ton script fusionné. ATTENTION: quand tu le recopie, il ne faudra pas l'inclure dans un autre thread, cad qu'il ne devra pas y avoir de

Quote
thread:
[...]
end

Quote
thread2:
...
end

Quote
thread:
...
thread2:
...
end
...
end

Quote
thread:
...
end
thread2:
...
end
« Last Edit: February 01, 2011, 04:36:39 PM by snaky »