Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Serial Bigouden Membre actif

Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
|
Posté le: 06/11/07 19:57 Sujet du message: Petites question diverses |
|
|
J'ai plusieurs petites questions qui me turlupinent en ce moment ^^"
Tout d'abord, parlons chaines d'ordre... Quand on regarde les chaines d'ordre des sorts de type "flèches", on voit que ces chaines d'ordres sont étrangement assez différentes pour chaque sort.
Petit exemple : pour le sort flèches enflammées, les chaines sont :
Activer : Aucun
Utiliser/Allumer : flamingarrows
Désactiver : Aucun
Off : unflamingarrows
Alors que pour le sort flèches de glace, qui semble pourtant être un sort qui fonctionne exactement de la même façon, il n'y a par défaut aucune chaine d'ordre, pour aucun des 4 champs cités ci-dessus oO
C'est plutot embetant quand on essaye de controler par déclo l'utilisation de tels sorts (j'ai pas encore testé si le fait de donner une chaine d'ordre inutilisé permettait de le faire, d'ailleurs j'aimerais aussi savoir quelle valeur concrète ont les chaine d'ordre quand elles sont attribuées à des compétences avec lesquelles elles n'ont rien à voir, et si avoir deux compétences utilisant la même chaine d'ordre sur la même unité engendre des problèmes).
Deuxième problème, moins prise de tête : alors que j'ai enfin décidé de mettre quelques couleurs (pas trop flashy quand même) dans la description des sorts, je me rends compte que le code utilisé pour définir les couleurs n'est pas composé de 6 chiffres mais de 8 oO
J'aimerais donc savoir quel code de couleur il faut utiliser ^^"
Voilà ça sera tout pour le moment
Merci d'avence ^^ _________________
|
|
Revenir en haut |
|
 |
Bantas Anomalie floodiforme

Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
 |
Serial Bigouden Membre actif

Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
|
Posté le: 06/11/07 21:55 Sujet du message: |
|
|
Merci bien pour les couleurs ^^"
Sinon pour mon premier problème je parle je parle mais j'oublie la question c'est malin x)
En clair (j'espère) j'aimerais savoir si pour controler l'action de passer la compétence en lancement automatique au moyen des chaines d'ordre, on peut donner à la compétence (qui à la base n'a aucune chaine d'ordre, comme flèches de glace) une chaine inutilisée par l'unité, et s'y réferer dnas le déclencheur.
Pis tant qu'à faire à quoi sert la chaine d'ordre Activer vu que la chaine Utiliser/Allumer semble remplir le même role ? _________________
|
|
Revenir en haut |
|
 |
Bantas Anomalie floodiforme

Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
 |
Magus Membre a fort taux de post

Inscrit le: 13 Oct 2007 Messages: 994 Sujets: 25 Spécialité en worldedit: Codeur
|
Posté le: 06/11/07 23:23 Sujet du message: |
|
|
Activer et Desactiver servent pour des sorts que l'ont peut désactiver nous-même (exemple : Defendre des fantassins). _________________
- La théorie c'est quand rien ne fonctionne mais tout le monde sait pourquoi.
- La pratique c'est quand tout fonctionne mais personne ne sait pourquoi.
- Chez moi la théorie et la pratique sont réunies, rien ne fonctionne et personne ne sait pourquoi. |
|
Revenir en haut |
|
 |
Serial Bigouden Membre actif

Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
|
Posté le: 09/11/07 16:50 Sujet du message: |
|
|
Ok merci pour la précision ^^
Sinon j'ai une autre question qui n'a rien à voir avec le reste :
Je suis en train de me mettre au Jass (ça fait tout drole *-*) et je me demandais si une variable locale était toujours valable dans une fonction appelée dans la fonction principale ? _________________
|
|
Revenir en haut |
|
 |
Troll-Brain Ri1kamoua

Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 09/11/07 16:54 Sujet du message: |
|
|
une variable locale n'est n'utilisable qu'au sein de sa fonction.
D'ailleurs on ne peut imbriquer des fonctions l'une dans l'autre non ? _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
 |
Gevans Back

Inscrit le: 21 Aoû 2007 Messages: 1930 Sujets: 85
Médailles: 2 (En savoir plus...)
|
Posté le: 09/11/07 16:55 Sujet du message: |
|
|
Je pense qu'il voulait demander si on pouvait faire
function machin
{
local x
call truc(x)
}
Et je dirais que oui dans ce cas. _________________
Si vous recherchez quelque chose, il y a de très grandes chances que vous trouviez la réponse ici alors jetez y un oeil.
Topic indispensable |
|
Revenir en haut |
|
 |
Troll-Brain Ri1kamoua

Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 09/11/07 16:59 Sujet du message: |
|
|
c'est même certain si c'est bien ce qu'il voulait dire. _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
 |
Serial Bigouden Membre actif

Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
|
Posté le: 09/11/07 17:02 Sujet du message: |
|
|
Beh en fait c'est presque ça ^^"
J'ai un if dans ma fonction principale, et pour vérifier la condition, je fais appel à une autre fonction mais la variable locale ne fait malheureusement pas partie des arguments de cette fonction, donc je me demandais si dans ce cas ça pouvais fonctionner (j'ai l'impression que non ><).
Si ça peut pas marcher à la limite je pourrais remplir les conditions en copiant collant le contenu de la fonction ^^" (si ça marche aussi ><) _________________
|
|
Revenir en haut |
|
 |
Troll-Brain Ri1kamoua

Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
|
Revenir en haut |
|
 |
Bantas Anomalie floodiforme

Inscrit le: 21 Aoû 2007 Messages: 1524 Sujets: 37
Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
 |
Troll-Brain Ri1kamoua

Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 09/11/07 17:10 Sujet du message: |
|
|
ou passer par une globale, tout dépend de ce que tu veux faire.
si la fonction doit servir pour d'autres fonctions toussa toussa _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
 |
Serial Bigouden Membre actif

Inscrit le: 31 Oct 2007 Messages: 142 Sujets: 23 Spécialité en worldedit: Boarf
|
Posté le: 09/11/07 17:11 Sujet du message: |
|
|
Je copie tout le trigger, fraichement converti en texte ^^"
Pour faire simple, ma question sera : quelles variables puis-je passer en local ?
Jass: | function Trig_ManaDrain_Copier_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A00Q' ) ) then
return false
endif
return true
endfunction
function Trig_ManaDrain_Copier_Func004Func002Func001002003001 takes nothing returns boolean
return ( GetOwningPlayer(GetFilterUnit()) == Player(11) )
endfunction
function Trig_ManaDrain_Copier_Func004Func002Func001002003002 takes nothing returns boolean
return ( GetUnitStateSwap(UNIT_STATE_LIFE, GetFilterUnit()) >= 1.00 )
endfunction
function Trig_ManaDrain_Copier_Func004Func002Func001002003 takes nothing returns boolean
return GetBooleanAnd( Trig_ManaDrain_Copier_Func004Func002Func001002003001(), Trig_ManaDrain_Copier_Func004Func002Func001002003002() )
endfunction
function Trig_ManaDrain_Copier_Func004Func002Func003Func004Func001C takes nothing returns boolean
if ( not ( GetUnitStateSwap(UNIT_STATE_MANA, udg_ManaDrainCurrentTarget) > udg_ManaDrainManaDrained ) ) then
return false
endif
if ( not ( ( GetUnitStateSwap(UNIT_STATE_MAX_MANA, udg_Manavore) - GetUnitStateSwap(UNIT_STATE_MANA, udg_Manavore) ) > udg_ManaDrainManaDrained ) ) then
return false
endif
return true
endfunction
function Trig_ManaDrain_Copier_Func004Func002Func003Func004C takes nothing returns boolean
if ( not ( GetLocationX(udg_ManaDrainPositionOfTarget) == GetLocationX(GetUnitLoc(udg_ManaDrainCurrentTarget)) ) ) then
return false
endif
if ( not ( GetLocationY(udg_ManaDrainPositionOfTarget) == GetLocationY(GetUnitLoc(udg_ManaDrainCurrentTarget)) ) ) then
return false
endif
return true
endfunction
function Trig_ManaDrain_Copier_Func004Func002C takes nothing returns boolean
if ( not ( udg_ManavoreChanneling == true ) ) then
return false
endif
return true
endfunction
function Trig_ManaDrain_Copier_Actions takes nothing returns nothing
set udg_ManavoreChanneling = true
call TriggerExecute( gg_trg_CanalisationOn )
set udg_LoopManaDrain = 1
loop
exitwhen udg_LoopManaDrain > 2
set udg_ManaDrainManaDrained = ( I2R(GetHeroStatBJ(bj_HEROSTAT_INT, udg_Manavore, true)) / 3.00 )
if ( Trig_ManaDrain_Copier_Func004Func002C() ) then
set udg_ManaDrainGroupTarget = GetUnitsInRangeOfLocMatching(( 200.00 + ( 10.00 * I2R(GetHeroStatBJ(bj_HEROSTAT_INT, udg_Manavore, true)) ) ), GetUnitLoc(udg_Manavore), Condition(function Trig_ManaDrain_Copier_Func004Func002Func001002003))
set udg_ManaDrainNumberOfTarget = CountUnitsInGroup(udg_ManaDrainGroupTarget)
set bj_forLoopAIndex = 1
set bj_forLoopAIndexEnd = udg_ManaDrainNumberOfTarget
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
set udg_ManaDrainCurrentTarget = GroupPickRandomUnit(udg_ManaDrainGroupTarget)
set udg_ManaDrainPositionOfTarget = GetUnitLoc(udg_ManaDrainCurrentTarget)
call TriggerSleepAction( ( 1.00 / I2R(udg_ManaDrainNumberOfTarget) ) )
if ( Trig_ManaDrain_Copier_Func004Func002Func003Func004C() ) then
if ( Trig_ManaDrain_Copier_Func004Func002Func003Func004Func001C() ) then
call SetUnitManaBJ( udg_ManaDrainCurrentTarget, ( GetUnitStateSwap(UNIT_STATE_MANA, udg_ManaDrainCurrentTarget) - udg_ManaDrainManaDrained ) )
call SetUnitManaBJ( udg_Manavore, ( GetUnitStateSwap(UNIT_STATE_MANA, udg_Manavore) + udg_ManaDrainManaDrained ) )
set udg_ManaDrainTotalManaDrained = ( udg_ManaDrainTotalManaDrained + udg_ManaDrainManaDrained )
call CreateTextTagLocBJ( ( "-" + I2S(R2I(udg_ManaDrainManaDrained)) ), GetUnitLoc(udg_ManaDrainCurrentTarget), 10.00, 10, 0.00, 0.00, 100.00, 10.00 )
call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 96.00, 90 )
call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 2.00 )
call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 4.00 )
else
endif
else
call DoNothing( )
endif
call GroupRemoveUnitSimple( udg_ManaDrainCurrentTarget, udg_ManaDrainGroupTarget )
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
set udg_LoopManaDrain = 1
else
set udg_LoopManaDrain = 2
endif
call CreateTextTagLocBJ( ( "+" + I2S(R2I(udg_ManaDrainTotalManaDrained)) ), GetUnitLoc(udg_Manavore), 10.00, 10, 0.00, 0.00, 100.00, 10.00 )
call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 96.00, 90 )
call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 2.00 )
call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 4.00 )
set udg_ManaDrainTotalManaDrained = 0.00
set udg_LoopManaDrain = udg_LoopManaDrain + 1
endloop
endfunction
//===========================================================================
function InitTrig_ManaDrain_Copier takes nothing returns nothing
set gg_trg_ManaDrain_Copier = CreateTrigger( )
call TriggerAddCondition( gg_trg_ManaDrain_Copier, Condition( function Trig_ManaDrain_Copier_Conditions ) )
call TriggerAddAction( gg_trg_ManaDrain_Copier, function Trig_ManaDrain_Copier_Actions )
endfunction
|
_________________
|
|
Revenir en haut |
|
 |
Troll-Brain Ri1kamoua

Inscrit le: 23 Aoû 2007 Messages: 7146 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 09/11/07 17:14 Sujet du message: |
|
|
déjà tu pourrais nettoyer l'usine à gaz produite par le gui.
Jass: | if ( not ( GetSpellAbilityId() == 'A00Q' ) ) then
return false
endif
return true |
donne le même résultat : Jass: | return GetSpellAbilityId() == 'A00Q' |
au lieu du utiliser tout simplement les fonctions avec un entre elles
Si ton déclencheur avait un événement du genre une unité est attaqué, tu pourrais utiliser les diiférents GetXUnit() dans toutes les fonctions.
Sinon dans ton exemple, tu ne peux en effet utiliser directement une varaiable locale déclarée dans le fonction actions de ton trigger.
tu passes donc comme tu l'as fait par une variable globale ou comme l'a dit Bantas tu rajoutes un dans ta fonction secondaire _________________
Le violet, c'est moche.
Dernière édition par Troll-Brain le 09/11/07 17:22; édité 1 fois |
|
Revenir en haut |
|
 |
|