Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.phpMédailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Pb de random HELP !!!!

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 MRHEATSEEK
Ptit Nouveau


Inscrit le: 15 Jan 2010
Messages: 12
Sujets: 4
Spécialité en worldedit: Faire des trucs avec les touches du clavier


MessagePosté le: 29/03/10 22:39    Sujet du message: Pb de random HELP !!!! Citer

Avant tout bonjour, je rencontre un problème de trigger sur ma map HEROES N ARMIES LEAGUE, je remercie par avance les âmes charitables qui voudront me faire partager leurs connaissances, et m' aider à résoudre mon problème.

J' utilise le système de sélection de héros suivant:

- le joueur a le choix de pick en cliquant sur le portrait du héros visé, placé dans une taverne.
- le joueur peut random en cliquant sur le portrait du random héros (un point d' interrogation), placé dans la même taverne.
-les joueurs ne doivent pas pouvoir se retrouver avec plus d' un type de héros (ex: 2 paladins,4 rangers, etc ...).

Voici mes problèmes:
-de temps à autre un joueur ayant random n' obtient pas de héros ( ce qui est plutôt pénalisant quand sur la map on ne contrôle qu' une unité, en l' ocurrence un héros).
-de plus ce système au cours de son exécution provoque du lag.

Mon système s' articule autour de 3 triggers:

1er Trigger: Trigger config
Jass:


function Trig_Hero_Actions takes nothing returns nothing
local integer i =0
set Hero[1]=('Hamg')
set HeroIcon[1]="ReplaceableTextures\\CommandButtons\\BTNHeroArchMage.blp"
//ainsi de suite pour les 11 autres heros hum ...
loop
exitwhen i>12
call UnitPoolAddUnitType(PoolHum,Hero[i],1.0)
set i= i+1
endloop

set Hero[13]=('Oshd')
set HeroIcon[13]="ReplaceableTextures\\CommandButtons\\BTNShadowHunter.blp"
//blablabla listing hero orcs ...
set i = 13
loop
exitwhen i>24
call UnitPoolAddUnitType(PoolOrc,Hero[i],1.0)
set i=i+1
endloop

endfunction

//===========================================================================
function InitTrig_Hero takes nothing returns nothing
local trigger t = CreateTrigger(  )
    call TriggerAddAction( t, function Trig_Hero_Actions )
endfunction



2ème Trigger: Trigger Hum
Jass:

function PickHum_C takes nothing returns boolean
if (not(GetUnitTypeId(GetBuyingUnit()) == 'e000' ))then
return false
endif
return true
endfunction

function RandomHum takes nothing returns nothing
    local unit s = GetSoldUnit()
    local unit v = GetBuyingUnit()
    local player p = GetOwningPlayer(s)
    local real X = -3550.0
    local real Y = -300.0
    local effect Fx
    local integer id = GetPlayerId(p)
    integer i =0
    call MP(" You will be given a random hero soon, don't panic ! ")
    call RemoveUnit(s)
    call RemoveUnit(v)
    call PolledWait(1.)
    set PHero[id]=PlaceRandomUnit(PoolHum,p,X,Y,0.0)
    loop
    exitwhen i>4
    call SetPlayerTechMaxAllowed(p,GetUnitTypeId(PHero[id]),0)
    set i = i+1
    endloop
    call UnitPoolRemoveUnitType(PoolHum,GetUnitTypeId(PHero[id]))
    call UnitAddItemByIdSwapped('ankh',PHero[id])
    call UnitAddItemByIdSwapped('mcou',PHero[id])
    call PanCameraToForPlayer(p,X,Y)
    call SelectUnitForPlayerSingle(PHero[id],p)
    call MOrc(GetPNC(p) + " has randomed the " + GetUnitName(PHero[id]))   
    set Fx = (AddSpecialEffectTarget("Abilities\\Spells\\Other\\Awaken\\Awaken.mdl",PHero[id],"origin"))
    call DestroyEffect(Fx)
    set Fx = null
    set s = null
    set v = null
    set p = null
endfunction

function PickHum_A takes nothing returns nothing
    local unit s = GetSoldUnit()
    local unit v = GetBuyingUnit()
    local player p = GetOwningPlayer(s)
    local real X = -3550.0
    local real Y = -300.0
    local effect Fx
    local integer id = GetPlayerId(p)
    set PHero[id]=s
    if ( not(GetUnitTypeId(s) == 'E004')) then
    call UnitPoolRemoveUnitType(PoolHum,GetUnitTypeId(PHero[id]))
    call RemoveUnit(v)
    call SetUnitPosition(PHero[id],X,Y)
    call SetUnitFacing(PHero[id],0.0)
    call UnitAddItemById(PHero[id],'ankh')
    call PanCameraToForPlayer(p,X,Y)
    call SelectUnitForPlayerSingle(PHero[id],p)
    call MOrc(GetPNC(p) + " has picked the " + GetUnitName(PHero[id]))
    set Fx = (AddSpecialEffectTarget("Abilities\\Spells\\Other\\Awaken\\Awaken.mdl",PHero[id],"origin"))
    call DestroyEffect(Fx)
    set Fx = null
    else
    call RandomHum()
    endif
    set s = null
    set v = null
    set p = null
endfunction


//===========================================================================
function InitTrig_PickHum takes nothing returns nothing
local trigger t= CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SELL)
    call TriggerAddCondition(t,Condition(function PickHum_C))
    call TriggerAddAction(t, function PickHum_A)

endfunction

3ème Trigger: Trigger Orc

Le même que celui d' en haut en l' adaptant aux héros Orcs.

Note: MAll et MP sont des fonctions customs basées sur DisplayTimedText.

Voila si un gentleman pouvait m' aider ...
_________________
Winners never leave, Leavers never win


Dernière édition par MRHEATSEEK le 30/03/10 18:57; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 30/03/10 11:40    Sujet du message: Citer

Simple, tu détruits tes triggers avant qu'ils ne puissent être utilisés.
Je peux donc t'assurer que le lag ne vient pas de là étant donné que les triggers ne sont jamais déclenchés.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 MRHEATSEEK
Ptit Nouveau


Inscrit le: 15 Jan 2010
Messages: 12
Sujets: 4
Spécialité en worldedit: Faire des trucs avec les touches du clavier


MessagePosté le: 30/03/10 19:22    Sujet du message: Citer

Mmm j' ai fais des changements, mais j' ai toujours les mêmes problemes je comprends toujours pas pourquoi j' obtiens pas de heros par moment.
_________________
Winners never leave, Leavers never win
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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...)
Rédacteur de tuto #3 (Quantité : 1) Grand mage créateur de sort (Quantité : 1)

MessagePosté le: 30/03/10 19:37    Sujet du message: Citer

Il faudrait que tu apprennes à débugger par toi même, affiche des messages un peu partout dans ton code (BJDebugMsg), pour savoir ce qui se passe, quand ca se passe, ou tout simplement si ca se passe.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 MRHEATSEEK
Ptit Nouveau


Inscrit le: 15 Jan 2010
Messages: 12
Sujets: 4
Spécialité en worldedit: Faire des trucs avec les touches du clavier


MessagePosté le: 31/03/10 22:06    Sujet du message: Citer

C' est bon j' ai trouvé la cause du héros "missing" j' avais dans ma variable à deploiement héros une valeur à 0, donc le trigger me créait bah rien ...
Par contre je trouve le processus d' attribution de heros random toujours aussi laggy.
Est-ce qu' en utilisant une table cela reduirait le temps d' execution?
_________________
Winners never leave, Leavers never win
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 01/04/10 00:05    Sujet du message: Citer

C'est plus la création d'unités je pense, as tu un pc en carton ?
Essaye aussi de preload le modèle de ton effet spécial ainsi que les modèles des types unités utilisés (au pire si tu ne sais pas utiliser Preload, tu peux créer/détruire ces unités/effet spécial à l'init de la map)

PS :


Relis toi et cherche l'utilité de la boucle actuelle :

Jass:
loop
    exitwhen i>4
    call SetPlayerTechMaxAllowed(p,GetUnitTypeId(PHero[id]),0)
    set i = i+1
    endloop

_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 MRHEATSEEK
Ptit Nouveau


Inscrit le: 15 Jan 2010
Messages: 12
Sujets: 4
Spécialité en worldedit: Faire des trucs avec les touches du clavier


MessagePosté le: 01/04/10 00:19    Sujet du message: Citer

Citation:
C'est plus la création d'unités je pense, as tu un pc en carton ?


Lawl j' ai un avion de chasse.

Citation:
Essaye aussi de preload le modèle de ton effet spécial ainsi que les modèles des types unités utilisés


Je vais essayer ça.

Le truc c' est que j' ai tester un system random celui de ryoko_sd dans son dota template et ca freezait moins longtemps.Il stockait les heros dans le gamecache, pas moi ,dois-je y voir une relation de cause à effet?Je te remercie par avance pour tes conseils éclairés.
_________________
Winners never leave, Leavers never win
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 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...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 01/04/10 00:29    Sujet du message: Citer

Jamais utilisé une pool, mais je ne peux pas croire qu'une aussi simple utilisation puisse faire freez une bête de course.
A moins que tu utilises une loop quelque part que je n'aurais pas vu (pas à l'init osef, mais in game pendant le choix)

Je ne comprends pas bien ta phrase, mais quoi qu'il en soit sache que le gamecache ne devrait être plus utilisé que pour son utilisation initiale, transférer des données d'une map à une autre dans le cadre d'une campagne.
On a des hashtable now.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 MRHEATSEEK
Ptit Nouveau


Inscrit le: 15 Jan 2010
Messages: 12
Sujets: 4
Spécialité en worldedit: Faire des trucs avec les touches du clavier


MessagePosté le: 01/04/10 00:40    Sujet du message: Citer

OMAGAD, je viens de tester avec le preload ca fonctionne au poil pas une miette de freeze meme en regardant sous le tapis.Merci pour l' idée je te donne rendez-vous dans un prochain topic "Aide sur les declencheurs" Wink
_________________
Winners never leave, Leavers never win
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1
La question posée dans ce topic a été résolue !

 
Sauter vers:  
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


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com