On ne peut tout simplement pas faire une variable array 2D.
Même en vJass c'est la bidouille qu'à décrit Profet.
Ce que tu appelles bidouille est utilisé dans tous les langages, les compilateurs générant un code équivalant à la bidouille.
On peut passer un tableau d'handle si on fait suivre les handles, c'est à dire les créer tous l'un après l'autre.
On peut aussi fractionner certaines fonctions afin qu'à chaque appel elles nous retournent le résultat suivant (en fournissant certains paramètres nécessaires, souvent utilisé dans les recherches avec un pointeur).
Si elle n'est pas censé être appelée plusieurs fois en même temps tu peux utiliser une variable globale.
Sinon tu peux intégrer le code de TirageSansRemise directement dans la fonction cible.
Tu as aussi le vJass ou le gamecache comme possibilités.
Troll-Brain a écrit:
C'est aussi simple que cela pour rendre jasshelper utilisable pour les mac ?
worldedit.exe est le même, etc ?
Ca m'étonne beaucoup que personne n'ait jamais release une version mac alors
Ce n'est pas si simple, il a codé avec Delphi (6 ou 7), hors il n'en existe qu'une version Windows et une Linux. Il faut donc trouver un autre compilateur peut être qu'il y en a compatible avec le même pascal, peut-être qu'ils peuvent même importer les fichiers projets, sinon il faut refaire les fichiers projets (pas très difficile), ou modifier certaines parties pour qu'elles soient compatibles avec le pascal du compilateur.
Néanmoins il n'y en a aucun qui a compilé pour Linux...
Mais cela peut s'expliquer car Grimoire ne peut pas être adapté comme beaucoup d'autres logiciels, les utilisateurs de Mac ou Linux utilisent donc généralement un émulateur Windows pour faire tourner les outils. _________________
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: 30/09/08 16:19 Sujet du message:
Ca reste de la bidouille dans le sens ou il faut créer une fonction soit même pour le réaliser.
Ca ne fait pas partie des fonctions de base du langage, ce qui n'est pas très performant, à plus forte raison pour un langage script, c'est ce que je voulais dire.
Par contre je pensais naïvement qu'il n'existait qu'un seul langage pascal.
J'ignorais que les compilateurs avaient leur propre "vocabulaire", ou alors je n'ai pas saisi ce que tu voulais dire ? _________________
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: 30/09/08 17:09 Sujet du message:
Tout est relatif, la différence ne dépasse pas, loin de là, la milli seconde c'est certain. (Je ne m'hasarderai pas à parler en nano secondes pour ne pas donner un chiffre fantaisiste, même si je sais que l'échelle est bien inférieure à 10^ -3 s)
Mais le facteur de multiplication de temps d'exécution doit bien d'être au moins de 10 , 100 ou plus. _________________
Oui on a compris, mais au final, ça dépend de l'utilisation que tu en fais, sauf dans le cas de periodiques extrêmement courts (et encore) un appel de fonction native ou pas, passera complètement inaperçu. _________________
Bêta Systems:70% Bêta Spells:13% Bêta Arts & graphics:70%
j'ai un peu modifié la fonction de tiragesansremise pour récuperer une chaine par joueur, pour l'instant sa marche, par contre j'ai du mal pour récuperer les valeurs
j'ai fait ca :
Secret:
Jass:
function TirageSansRemise takes integer a, integer b, integer n, player p returns nothing
local integer temp = -1
local integer index
local integer max = (b-a) + 1
set udg_N = n
loop
exitwhen a > b
set temp = temp + 1
set udg_Table[temp] = a
set a = a + 1
endloop
loop
exitwhen n == 0
set n = n - 1
set max = max - 1
set index = GetRandomInt(0, max )
set temp = udg_Table[index]
set udg_Table[index] = udg_Table[max]
set udg_Table[max] = temp
endloop
loop
exitwhen n == udg_N
set udg_S[GetConvertedPlayerId(p)] = (udg_S[GetConvertedPlayerId(p)] + " " + I2S( udg_Table[n] ) )
set n = n + 1
endloop
endfunction
et pour convertir :
Secret:
Jass:
function String2Table takes string s returns nothing
local integer n = 0
local integer index = 0
loop
exitwhen n == StringLength( s )
if SubString(s, n, n + 1) != " " then
set index = index + 1
if SubString(s, n + 1, n + 2) != " " then
set udg_Table[index] = ( S2I(SubString(s, n, n + 1)) * 10 ) + S2I(SubString(s, n + 1, n + 2))
set n = n + 1
else
set udg_Table[index] = S2I(SubString(s, n, n + 1))
endif
else
set n = n + 1
endif
endloop
endfunction
mais bien sur ca marche pas
je pense que sa viens des substring, il me semble que c'est un intevalle fermé d'un coté, j'ai essayé plusieurs mais sa donne rien
alors je viens encore demander de l'aide^^ _________________
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: 30/09/08 21:05 Sujet du message:
Jass:
if SubString(s, n, n + 1) != " " then
D'après ce que j'ai lu d'un oeil rapide tu as compris comment utiliser SubString.
Par contre je vois un gros souci, le if que j'ai cité est faux à la première itération de la boucle, et comme toutes tes actions sont imbriquées dans ce if, ca te fait une joli boucle infinie, n ne changeant jamais de valeur.
PS : Juste pour info si tu ne le savais pas :
Jass:
function GetConvertedPlayerId takes player whichPlayer returns integer
return GetPlayerId(whichPlayer) + 1
endfunction
Ah c'etait ce n qui foirait tout !
oui en effet il bougait pas au 2eme else
j'ai corrigé maintenant sa marche
Secret:
Jass:
loop
exitwhen n > StringLength( s )
if SubString(s, n, n + 1) != " " then
set index = index + 1
if SubString(s, n + 1, n + 2) != " " then
set udg_Table[index] = ( S2I(SubString(s, n, n + 1)) * 10 ) + S2I(SubString(s, n + 1, n + 2))
set n = n + 2
else
set udg_Table[index] = S2I(SubString(s, n, n + 1))
set n = n + 1
endif
else
set n = n + 1
endif
endloop
sa récupere pas la derniere valeur mais bon osef^^
Troll-Brain a écrit:
Jass:
function GetConvertedPlayerId takes player whichPlayer returns integer
return GetPlayerId(whichPlayer) + 1
endfunction
Toutes les heures sont au format GMT + 1 Heure Aller à la page Précédente1, 2, 3, 4Suivante
Page 3 sur 4 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