Besoin d'aide pour script .asi (gta)

vm4thieu Messages postés 8 Date d'inscription vendredi 12 juin 2009 Statut Membre Dernière intervention 15 juin 2009 - 12 juin 2009 à 03:37
i love you sylvie72 Messages postés 1 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 27 avril 2010 - 27 avril 2010 à 23:48
Bonjour tlm,

Je débute complètement en coding, je n'ai commencé que depuis 15 jours, et j'apprend tous sur le tas. Donc quand on ne trouve pas le début d'un exemple sur lequel s'inspirer, c'est compliqué! xD

Je suis en train de créer un mod spectateur pour GTAIV, mais je suis bloqué pour quelque chose.

Je vous explique. Dans GTA, les joueurs sont défini par un entier qui va de 0 à 31.
Or, je ne sais pas comment switcher les joueurs un par un, et ce, en appuyant sur une seule touche.

Comme par exemple:
F7Next player 0 - 31
F6Previous player 31 -0
F8= Activate cheat function

Voici un c/c de la partie du code concerné:
[CODE]
void CustomFiberThread::RunScript()
{
// This is a fiber thread, so we use an loop to run the contents of this script.
// The thread will terminate when we return from this function.

while (IsThreadAlive())
{
if ((GetAsyncKeyState(VK_F7) & 1) != 0)
{
u32 playerId = 0; // Utilisateur à switcher, de 0 à 31.
u32 playerIndex = ConvertIntToPlayerIndex(playerId);
PrintStringWithLiteralStringNow("STRING", GetPlayerName(playerIndex), 1000, 1);
}
else if ((GetAsyncKeyState(VK_F8) & 1) != 0)
{
u32 playerId = 0;
u32 playerIndex = ConvertIntToPlayerIndex(playerId);
Ped ped;
f32 x,y,z;
GetPlayerChar(playerIndex, &ped);
GetCharCoordinates(ped, &x, &y, &z);
}
Wait(100);
}
}
[/CODE}

Quelqu'un pourrait il m'expliquer clairement comment je dois m'y prendre, s'il vous plait, en me donnant exemple.. Je suis un gros débutant et je galère depuis 2 jours avec ça.. xD

10 réponses

vm4thieu Messages postés 8 Date d'inscription vendredi 12 juin 2009 Statut Membre Dernière intervention 15 juin 2009
12 juin 2009 à 03:42
Bonjour tlm,

Je débute complètement en coding, je n'ai commencé que depuis 15 jours, et j'apprend tous sur le tas. Donc quand on ne trouve pas le début d'un exemple sur lequel s'inspirer, c'est compliqué! xD

Je suis en train de créer un mod spectateur pour GTAIV, mais je suis bloqué pour quelque chose.

Je vous explique. Dans GTA, les joueurs sont défini par un entier qui va de 0 à 31.
Or, je ne sais pas comment switcher les joueurs un par un, et ce, en appuyant sur une seule touche.

Comme par exemple:
F7Next player 0 - 31
F6Previous player 31 -0
F8= Activate cheat function

Voici un c/c de la partie du code concerné:
void CustomFiberThread::RunScript()
{
// This is a fiber thread, so we use an loop to run the contents of this script.
// The thread will terminate when we return from this function.

while (IsThreadAlive())
{
if ((GetAsyncKeyState(VK_F7) & 1) != 0)
{
u32 playerId = 0;	// Utilisateur à switcher, de 0 à 31.
u32 playerIndex = ConvertIntToPlayerIndex(playerId);
PrintStringWithLiteralStringNow("STRING", GetPlayerName(playerIndex), 1000, 1);
}
else if ((GetAsyncKeyState(VK_F8) & 1) != 0)
{
u32 playerId = 0;
u32 playerIndex = ConvertIntToPlayerIndex(playerId);
Ped ped;
f32 x,y,z;
GetPlayerChar(playerIndex, &ped);
GetCharCoordinates(ped, &x, &y, &z);
}
Wait(100);
}
}


Quelqu'un pourrait il m'expliquer clairement comment je dois m'y prendre, s'il vous plait, je suis un gros débutant et je galère depuis 2 jours avec ça.. xD
0
vm4thieu Messages postés 8 Date d'inscription vendredi 12 juin 2009 Statut Membre Dernière intervention 15 juin 2009
12 juin 2009 à 15:44
J'avais essayé de cette façon, en créant un compteur, mais ça ne fonctionne pas. Quand je le teste, c'est uniquement le nom de player 0 qui s'affiche à l'écran, et aucun incrémentation n'a lieu...

if ((GetAsyncKeyState(VK_F7) & 1) != 0) 
{ 
for(u32 playerId = 0; playerid<32; playerId++)
{
u32 playerId = 0; // Utilisateur à switcher, de 0 à 31. 
u32 playerIndex = ConvertIntToPlayerIndex(playerId); 
PrintStringWithLiteralStringNow("STRING", GetPlayerName(playerIndex), 1000, 1); 
}
}


Je ne vous demande pas de faire le truc à me place, mais juste de me dire si je vais dans la bonne directement ou si jme plante carrément.
Y-a t-il une méthode plus simple ?
Et t-il possible d'énumérer simplement les joueurs de 0 à 31, tout en pouvant les switcher à l'aide d'une seule touche ?

J'ai vraiment essayé plusieurs méthode, mais aucune fonctionne, c'est pour cette raison que j'ai besoin de votre aide.
0
vm4thieu Messages postés 8 Date d'inscription vendredi 12 juin 2009 Statut Membre Dernière intervention 15 juin 2009
12 juin 2009 à 15:47
C'est impossible d'éditer ses messages sur ce forum ou quoi ?
Si c'est le cas c'est incroyable, j'ai jamais vu ça de ma vie.

J'ai fais une erreur dans mon précédant message, voilà le code que j'ai réalisé et qui ne s'incrémente pas:

 
if ((GetAsyncKeyState(VK_F7) & 1) != 0) 
{ 
for(u32 playerId = 0; playerid<32; playerId++) 
{ 
u32 playerIndex = ConvertIntToPlayerIndex(playerId); 
PrintStringWithLiteralStringNow("STRING", GetPlayerName(playerIndex), 1000, 1); 
} 
} 
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 juin 2009 à 19:37
Jamais de boucle infinie, que soit sur lecture état du clavier ou nimporte quoi d'autre.
Fais un hook clavier.

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vm4thieu Messages postés 8 Date d'inscription vendredi 12 juin 2009 Statut Membre Dernière intervention 15 juin 2009
13 juin 2009 à 07:26
Faire un hook clavier, d'après ce que j'ai pu voir, c'est pas de mon niveau, beaucoup trop compliqué pour moi.
Et ça me parait un peu énorme pour faire ce que je veux faire, non ?

Ya pas un moyen simple de faire un truc du genre:

if ((GetAsyncKeyState(VK_F7) & 1) != 0) première appuie sur la touche

u32 playerId = 0;
u32 playerIndex = ConvertIntToPlayerIndex(playerId);
PrintStringWithLiteralStringNow("STRING", GetPlayerName(playerIndex), 1000, 1);



if ((GetAsyncKeyState(VK_F7) & 1) != 0) second appuie sur la touche

u32 playerId = 1;
u32 playerIndex = ConvertIntToPlayerIndex(playerId);
PrintStringWithLiteralStringNow("STRING", GetPlayerName(playerIndex), 1000, 1);



if ((GetAsyncKeyState(VK_F7) & 1) != 0) 3ème appuie sur la touche

u32 playerId = 2;
u32 playerIndex = ConvertIntToPlayerIndex(playerId);
PrintStringWithLiteralStringNow("STRING", GetPlayerName(playerIndex), 1000, 1);


Etc... Et comme ça jusque playerId=31

Voilà, c'est juste ça dont j'ai besoin. Et tu me dis qu'il n'y a pas moyen de faire compter le nombre d'appuie sur une touche, sans passer par un hook clavier ?

Désolé mais je ne suis pas sur de comprendre. Comme jle disais, je suis débutant en tout type de language.
0
vm4thieu Messages postés 8 Date d'inscription vendredi 12 juin 2009 Statut Membre Dernière intervention 15 juin 2009
13 juin 2009 à 07:42
Ah, ça y est j'ai compris. C'est bien un hook que je recherche tout compte fait.. xD
Tu as parfaitement compris ce que je recherchais.
Je fais essayé de faire ça.
0
vm4thieu Messages postés 8 Date d'inscription vendredi 12 juin 2009 Statut Membre Dernière intervention 15 juin 2009
13 juin 2009 à 09:57
C'est possible de faire un hook sans dll ?
Car le script asi sur lequel je m'inspire, n'a pas de dll.. C'est un .asi seul.
Biensur, il n'est pas disponible en source.
Mais c'est exactement comme je le décrit, on appuie sur la même touche pour changer de player.
Connait tu stp un exemple qui correspond plus ou moins à ce que je recherche et que je pourrais adapter facilement, et l'inclure dans mon script ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 juin 2009 à 20:44
Pas besoin de DLL sur hook clavier.

ciao...
BruNews, MVP VC++
0
vm4thieu Messages postés 8 Date d'inscription vendredi 12 juin 2009 Statut Membre Dernière intervention 15 juin 2009
15 juin 2009 à 01:26
Bon tout compte fait, j'ai trouvé une autre solution. En énumérant les joueurs un par un, et par un succession de "if".
C'est complètement stupide mais ça fonctionne.
Le hook clavier ok, mais si je dois passer plusieurs jours voir plusieurs semaine à comprendre comment ça fonctionne avant de pouvoir en faire un.. Et tout ça juste pour pouvoir switcher des joueurs dans un jeux.. ça le ferait pas du tout.
0
i love you sylvie72 Messages postés 1 Date d'inscription samedi 21 avril 2007 Statut Membre Dernière intervention 27 avril 2010
27 avril 2010 à 23:48
Bonjour, je voudrais creer des scripts asi pour Gta IV !!! Mais je n'est pas les outils necessaires... et a vrai dire je ne sait meme pas quel outils me faut il !

Je precise que mes script seront compatible avec gta 4 1.0.6.0 ... il faut donc que mes outils soit aussi compatible avec cette version.... et les seule que j'ai trouver sont pour la version 1.0.4.0 !

si vous pouviez m'expliquer ce dont j'ai besoin... sa serait cool !! Merci D'avance....
0
Rejoignez-nous