Demande aide pour un script
Modérateur: Zénithale
8 messages
• Page 1 sur 1
Demande aide pour un script
Voil?, je recherche deux fonctions pour une multipalyer de ToE
Une pour savoir quels joueurs sont Humains ou IA.
L'autre pour savoir le nombre de slots de cr?atures disponible sur un h?ros SUR LA CARTE AVENTURE !
Une pour savoir quels joueurs sont Humains ou IA.
L'autre pour savoir le nombre de slots de cr?atures disponible sur un h?ros SUR LA CARTE AVENTURE !
Modifié en dernier par Spazz le Ven 23 Nov 2007, 13:11, modifié 1 fois.
- Spazz
- Novice
- Messages: 8
- Enregistré le: Mer 3 Jan 2007, 14:36
Si ta carte n'est pas une single mission (voir dans lessous dossiers du .h5m de ta carte), le script est d?sactiv?. Il est utilis? uniquement pour les cartes singlemission... Donc pas de multiplayer avec un script, quel qu'il soit (? moins qu' un patch ait chang? sa ^^)...
Inutile de vous lamenter, votre code ne marchera jamais. En effet, il n'a jamais reçu la capacité de se déplacer.
-
The Shadow of Death - Maître
- Messages: 722
- Enregistré le: Mer 5 Juil 2006, 15:18
- Localisation: Dans son Caveau Royal
Pour le nombre de slots disponibles, je doute que ce soit possible. Mais conna?tre le nombre de cr?atures diff?rentes dans l'arm?e (ce qui est je pense finalement le but), on doit pouvoir utiliser
GetHeroCreaturesTypes(heroname)
Par contre, contrairement ? l'exemple donn? dans le pdf, j'ai l'impression qu'il renvoie une liste, pas un tableau, avec 7 ?l?ments, qui valent nil s'il n'y a pas de cr?atures. A tester...
count = 0
t1, t2, t3, t4, t5, t6, t7 = GetHeroCreaturesTypes(heroname)
if t1 ~= nil then count = count+1
if t2 ~= nil then count = count+1
...
Bien s?r, j'esp?re qu'on peut condenser tout ?a...
GetHeroCreaturesTypes(heroname)
Par contre, contrairement ? l'exemple donn? dans le pdf, j'ai l'impression qu'il renvoie une liste, pas un tableau, avec 7 ?l?ments, qui valent nil s'il n'y a pas de cr?atures. A tester...
count = 0
t1, t2, t3, t4, t5, t6, t7 = GetHeroCreaturesTypes(heroname)
if t1 ~= nil then count = count+1
if t2 ~= nil then count = count+1
...
Bien s?r, j'esp?re qu'on peut condenser tout ?a...
-
sfidanza - Initié
- Messages: 107
- Enregistré le: Mar 6 Juin 2006, 19:15
- Localisation: Reims, France
Justement, cette fonction ne me convient pas, car je voudrais faire des "AddHeroCreatures" en ?tant s?r que le H?ros a un slot de libre. Et le probl?me avec ta proposition, c'est que si le joueur d?double ses stacks de cr?atures ( par exemple 2 stacks de 10 vampires), la fonction renverra 20 vampires en une seul valeur et je n'arrive pas ? trouver une solution...
Je viens de v?rifier, ton code marche bien, mais il ne renvoit pas "nil" mais "0" si il n'y a pas de r?f?rence, et ensuite, il regroupe les cr?atures ayant le m?me identifiant en un seul stack ... donc ?a ne permet pas de conna?tre le nombre de slot disponible.
Je viens de v?rifier, ton code marche bien, mais il ne renvoit pas "nil" mais "0" si il n'y a pas de r?f?rence, et ensuite, il regroupe les cr?atures ayant le m?me identifiant en un seul stack ... donc ?a ne permet pas de conna?tre le nombre de slot disponible.
- Spazz
- Novice
- Messages: 8
- Enregistré le: Mer 3 Jan 2007, 14:36
Dans ce cas, la fonction fera apparaitre la boite qui permet au joueur de r?organiser ses troupes pour int?grer le nouveau stack. Je ne sais pas ce que ?a donne avec un h?ros AI (j'imagine qu'il se d?brouille), mais avec un humain ?a me semble pas mal.
Cela dit, je me suis d?j? fait cette r?flexion (mais comment fait-on pour le nombre de peloton?!), et je n'ai pas mieux...
Sur HC, Maurice a list? beaucoup de fonctions qui ne sont pas dans le pdf, peut-?tre aura-t-il une id?e:
http://heroescommunity.com/viewthread.php3?TID=23668
Cela dit, je me suis d?j? fait cette r?flexion (mais comment fait-on pour le nombre de peloton?!), et je n'ai pas mieux...
Sur HC, Maurice a list? beaucoup de fonctions qui ne sont pas dans le pdf, peut-?tre aura-t-il une id?e:
http://heroescommunity.com/viewthread.php3?TID=23668
-
sfidanza - Initié
- Messages: 107
- Enregistré le: Mar 6 Juin 2006, 19:15
- Localisation: Reims, France
Je savais pas que AddHeroCreatures pouvait faire appara?tre la boite permettant de r?organiser ses troupes, c'est toujours bon ? savoir, et ?a me r?sout l'un des deux probl?mes. Merci ;)
Malheureusement, je crains qu'il n'y ai pas de solution pour ma seconde question...
Malheureusement, je crains qu'il n'y ai pas de solution pour ma seconde question...
- Spazz
- Novice
- Messages: 8
- Enregistré le: Mer 3 Jan 2007, 14:36
?a m'?tonnerait qu'il n'y ait pas une fonction d?di?e, mais j'ai beau chercher, je ne trouve pas.
Il y a bien une solution tr?s pedestre, mais elle est loin d'?tre id?ale:
EnableHeroAI(heroName, enable) g?n?re une erreur si elle est invoqu?e sur un joueur humain, donc
(j'ai laiss? les infos de d?buggage pour tester le script)
Bilan: il faudra autant de jours qu'il y a de joueurs humains avant d'avoir toute la liste. Mais ? n'importe quel moment, on peut savoir:
- si la liste est compl?te (all_player_types_checked)
- si un joueur donn? est inactif (-1), pas v?rifi? (0), Humain (1), AI (2)
Attention, sur un joueur humain, le script sort du new_day_trigger sur une erreur, donc il faut placer le code en fin de trigger.
Il y a bien une solution tr?s pedestre, mais elle est loin d'?tre id?ale:
EnableHeroAI(heroName, enable) g?n?re une erreur si elle est invoqu?e sur un joueur humain, donc
- Code: Tout sélectionner
player_type = {}; -- 1=human ; 2=AI
last_player_checked = 0;
for p=PLAYER_1, PLAYER_8 do -- initialise ? 0 pour les joueurs actifs
if GetPlayerState(p) == PLAYER_ACTIVE then
player_type[p] = 0;
else
player_type[p] = -1;
print("Player "..p.." is inactive");
end;
end;
function isComputer(player)
EnableHeroAI(GetPlayerHeroes(player)[0], true);
player_type[player] = 2;
print("Player "..player.." is AI");
return not nil;
end;
function getPlayerTypes()
if last_player_checked > 0 then
player_type[last_player_checked] = 1;
print("Player "..last_player_checked.." is human");
end;
for p=PLAYER_1, PLAYER_8 do
if player_type[p] == 0 then
print("Checking player "..p);
last_player_checked = p;
isComputer(p);
end;
end;
last_player_checked = -1;
-- Probl?me: la boucle va s'arr?ter d?s qu'elle rencontre un joueur humain
end;
Trigger(NEW_DAY_TRIGGER , "check_player_types");
function check_player_types()
print("New day trigger...");
if last_player_checked > -1 then getPlayerTypes(); end;
end;
-- ? mettre en fin de fichier: l'erreur bloquera la suite du script...
getPlayerTypes(); -- NEW_DAY_TRIGGER ne fonctionne pas en jour 1 (?)
(j'ai laiss? les infos de d?buggage pour tester le script)
Bilan: il faudra autant de jours qu'il y a de joueurs humains avant d'avoir toute la liste. Mais ? n'importe quel moment, on peut savoir:
- si la liste est compl?te (all_player_types_checked)
- si un joueur donn? est inactif (-1), pas v?rifi? (0), Humain (1), AI (2)
Attention, sur un joueur humain, le script sort du new_day_trigger sur une erreur, donc il faut placer le code en fin de trigger.
-
sfidanza - Initié
- Messages: 107
- Enregistré le: Mar 6 Juin 2006, 19:15
- Localisation: Reims, France
8 messages
• Page 1 sur 1
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités