private function InitializeCinematic takes nothing returns boolean
local integer i = 0
local integer random = GetRandomInt(0,100)
set ChapterIntermission = true
call CinematicModeBJ(true,bj_FORCE_ALL_PLAYERS)
call CinematicFadeBJ( bj_CINEFADETYPE_FADEOUT, 0.,MASK,0,0,0,0)
call SetMusicVolume(100)
call SuspendTimeOfDay(true)
call SetTimeOfDayScale(0.)
call SetFloatGameState(GAME_STATE_TIME_OF_DAY, 0.)
call SetSkyModel("Environment\\Sky\\FelwoodSky\\FelwoodSky.mdx")
call SetDayNightModels("Environment\\DNC\\DNCDalaran\\DNCDalaranTerrain\\DNCDalaranTerrain.mdx","Environment\\DNC\\DNCDalaran\\DNCDalaranUnit\\DNCDalaranUnit.mdx")
call MusicOff()
call FogEnable(true)
call FogMaskEnable(true)
loop
exitwhen i > MAXPLAYER
call SetPlayerAllianceBJ( Player(i), ALLIANCE_SHARED_VISION, true, Player(10) )
call SetPlayerAllianceBJ( Player(10), ALLIANCE_SHARED_VISION, true, Player(i) )
set i = i + 1
endloop
call CinematicFadeBJ( bj_CINEFADETYPE_FADEIN, 4.,MASK,0,0,0,0)
call MusicCinematic()
if random <=25 then
call StartCinematic1()
elseif random >25 and random <=50 then
call StartCinematic2()
elseif random >50 and random <=75 then
call StartCinematic3()
elseif random >75 then
call StartCinematic4()
endif
call BJDebugMsg("Random="+I2S(random))
return false
endfunction
public function init takes nothing returns nothing
local trigger t = CreateTrigger()
call AbilityPreload(CINEM_UNIT)
call AbilityPreload(BLOOD_FX)
call CinematicModeBJ(true,bj_FORCE_ALL_PLAYERS)
call CinematicFadeBJ( bj_CINEFADETYPE_FADEOUT, 0.,MASK,0,0,0,0)
call TriggerRegisterTimerEvent(t, WAIT,false)
call TriggerAddCondition(t, Condition(function InitializeCinematic))
endfunction
endscope
Observez l'entier "random" (local integer random = GetRandomInt(0,100) ).
Ensuite, le BJDebugMsg"Random="+I2S(random))
En gros ce trigger permet d'enclencher une des 4 cinématiques pour le moment disponibles.
Devinez quoi? En 20 parties sur Batttle Net (donc carte widgetizée+optimisée), le seul et unique random affiché par le BJDebugMssg est:
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
Posté le: 21/07/10 10:13 Sujet du message:
Amen mon gros, le WorldEditor ne se trompe jamais dans les signes qu'il envoie. Tu peux contacter des personnes et leur dire que tu as la preuve d'avoir trouvé la réponse sur le vie ! _________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain »
En attendant je n'utilise pas l'option (préférences) pour avoir toujours le même entier, et quoi que je modifie, j'ai toujours le même entier.
Il va varier selon la portée que j'indique (entre 0 et 100, 0 et 10 etc) mais reste toujours le même. J'ai aussi regardé en lancant le déclencheur plus tard (constante WAIT). Rien ne change. J'ai systématiquement le même entier à chaque chargement de la carte oO. _________________
Inscrit le: 21 Fév 2010 Messages: 1785 Sujets: 22 Spécialité en worldedit: La modestie Médailles: 1 (En savoir plus...)
Posté le: 21/07/10 15:30 Sujet du message:
Peut-être que, sans le savoir, tu as touché aux fonctions de randomization?
Peut-être que t'as pas de chance?
Peut-être que c'est un bug du JNGP?
Peut-être qu'il faut mettre "GetRandomInt" après la déclaration des locales?
Peut-être que le continuum espace-temps s'effondrera sur lui-même si une autre valeur sort? _________________
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
Posté le: 21/07/10 16:17 Sujet du message:
Faudrait regarder le script généré, mais ca m'étonnerait que ca ne soit pas correctement compilé.
Je pense plus à une improbable série.
Tu as réessayé depuis ? _________________
J'ai refait des tonnes de tests. Rien. Même si le nombre peut changer, ça ne fonctionne pas.
Ça fait 5 releases de la carte depuis que j'ai ce problème, et je teste depuis ce matin en modifiant des trucs. Evidemment, selon le random que je demande, le nombre fixe varie (0 à 10? 10 à 100 etc.) Mais il n'en reste pas moins fixe. Là je suis passé de 42 à 73.
Me reste à tester avec des réels.
Edit
Lol/ 5 chargements de carte avec des réels. 5 fois le résultat: 47.958 qui s'affiche.
private function InitializeCinematic takes nothing returns boolean
local integer k = 0
local integer random = 0
local integer i = 0
set ChapterIntermission = true
call CinematicModeBJ(true,bj_FORCE_ALL_PLAYERS)
call CinematicFadeBJ( bj_CINEFADETYPE_FADEOUT, 0.,MASK,0,0,0,0)
call SuspendTimeOfDay(true)
call SetTimeOfDayScale(0.)
call SetFloatGameState(GAME_STATE_TIME_OF_DAY, 0.)
call SetSkyModel("Environment\\Sky\\FelwoodSky\\FelwoodSky.mdx")
call SetDayNightModels("Environment\\DNC\\DNCDalaran\\DNCDalaranTerrain\\DNCDalaranTerrain.mdx","Environment\\DNC\\DNCDalaran\\DNCDalaranUnit\\DNCDalaranUnit.mdx")
call MusicOff()
call FogEnable(true)
call FogMaskEnable(true)
loop
exitwhen i > MAXPLAYER
call SetPlayerAllianceBJ( Player(i), ALLIANCE_SHARED_VISION, true, Player(10) )
call SetPlayerAllianceBJ( Player(10), ALLIANCE_SHARED_VISION, true, Player(i) )
set i = i + 1
endloop
call CinematicFadeBJ( bj_CINEFADETYPE_FADEIN, 4.,MASK,0,0,0,0)
set k = 0
loop
exitwhen k > 10
set random = GetRandomInt(0,100)
call BJDebugMsg("k= "+I2S(k)+" Random= "+I2S(random))
set k = k + 1
endloop
call BJDebugMsg(" Random= "+I2S(random))
if random<=20 then
call StartCinematic1()
elseif random >20 and random <= 40 then
call StartCinematic2()
elseif random >40 and random <= 60 then
call StartCinematic3()
elseif random >60 and random <= 80 then
call StartCinematic4()
elseif random >80 then
call StartCinematic5()
endif
call MusicCinematic()
return false
endfunction
private function init takes nothing returns nothing
local trigger t = CreateTrigger()
call AbilityPreload(CINEM_UNIT)
call AbilityPreload(BLOOD_FX)
call CinematicModeBJ(true,bj_FORCE_ALL_PLAYERS)
call CinematicFadeBJ( bj_CINEFADETYPE_FADEOUT, 0.,MASK,0,0,0,0)
call TriggerRegisterTimerEvent(t, WAIT,false)
call TriggerAddCondition(t, Condition(function InitializeCinematic))
endfunction
endlibrary
En gros, en plus, j'ai ajouté une boucle pour régler le random.
private function InitializeCinematic takes nothing returns boolean
local integer k = 0
local integer random = 0
local integer i = 0
//set ChapterIntermission = true
//call CinematicModeBJ(true,bj_FORCE_ALL_PLAYERS)
//call CinematicFadeBJ( bj_CINEFADETYPE_FADEOUT, 0.,MASK,0,0,0,0)
//call SuspendTimeOfDay(true)
//call SetTimeOfDayScale(0.)
//call SetFloatGameState(GAME_STATE_TIME_OF_DAY, 0.)
//call SetSkyModel(SKY)
//call SetDayNightModels(LIGHT_TERRAIN,LIGHT_UNIT)
//call MusicOff()
//call FogEnable(true)
//call FogMaskEnable(true)
//loop
//exitwhen i > MAXPLAYER
//call SetPlayerAllianceBJ( Player(i), ALLIANCE_SHARED_VISION, true, Player(10) )
//call SetPlayerAllianceBJ( Player(10), ALLIANCE_SHARED_VISION, true, Player(i) )
//set i = i + 1
//endloop
//call CinematicFadeBJ( bj_CINEFADETYPE_FADEIN, 4.,MASK,0,0,0,0)
set k = 0
loop
exitwhen k > 10
set random = GetRandomInt(0,100)
call BJDebugMsg("k= "+I2S(k)+" Random= "+I2S(random))
set k = k + 1
endloop
call BJDebugMsg(" Random= "+I2S(random))
//if random<=20 then
//call StartCinematic1()
//elseif random >20 and random <= 40 then
//call StartCinematic2()
//elseif random >40 and random <= 60 then
//call StartCinematic3()
//elseif random >60 and random <= 80 then
//call StartCinematic4()
//elseif random >80 then
//call StartCinematic5()
//endif
//call MusicCinematic()
return false
endfunction
Me donne la même suite de nombres à chaque fois :/ et pourquoi dans ce seul trigger :O _________________
Inscrit le: 05 Avr 2010 Messages: 114 Sujets: 8 Spécialité en worldedit: Faire des maps originales; déclencheurs; solutions.
Posté le: 21/07/10 23:14 Sujet du message:
Dans ton screenshot je vois plusieurs résultats différents pour "Random =",
Si ton problème est que le *premier* random est toujours le meme (73 si j'ai bien compris), mais que les autres sont vraiment randomizés, tu peux au pire en choisir un au pif parmi les autres générés?
EDIT:Oublie, j'avais pas tout lu :/
EDIT2: et en créant une fonction dédiée pour le GetRandomInt, que tu appelles depuis ce trigger? si y'a que celui-ça qui bug, ça devrait marcher? _________________
J'ai, quoi que je change, toujours la même suite d'entiers (elle sera différente selon le calcul que je demande, mais, une fois enregistré, j'ai toujours le même ordre/les mêmes nombres).
J'ai résolu le problème de façon temporaire en demandant un à autre trigger de me calculer un GetRandomInt(0,100) et en le stockant dans une variable globale. _________________
Toutes les heures sont au format GMT + 1 Heure Aller à la page 1, 2Suivante
Page 1 sur 2 La question posée dans ce topic a été résolue !
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum