• 04 Juin 2026, 18:58:30


Auteur Sujet: Changer de joueur en mode "spec"  (Lu 1457 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Changer de joueur en mode "spec"
« le: 21 Mai 2009, 20:42:37 »
Bonjour bonjour,

J'ai une petite question a poser.  :D
J'ai trouvé comment faire pour que quand un killerid tue un playerid, le playerid reste en "spec" sur le killerid.
Maintenant, j'ai eu l'idée de faire en sorte que lorsque le joueur qui "spec" apuie clique avec sa souris (je fait ca avec le KeyStatChange..), ca change de perso a voir (Comme dans Counter strike quoi ...) Mais je ne sais pas comment faire pour que ca switch de joueur ...
Merci si vous pouvez m'aider :)

++
nikko

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Changer de joueur en mode "spec"
« Réponse #1 le: 21 Mai 2009, 20:49:34 »
quand il dead tu creer une var global qui enregistre l id du killer puis tu spec sur le killer ensuite met dans la callback keystatechange des qu il appuye sur la touche que tu veut ca prend la var et +1 ensuite tu spec sur la variable mais va attention regarde si le jouer est connecte et s il n'est pas deja en train de spec =D



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Changer de joueur en mode "spec"
« Réponse #2 le: 21 Mai 2009, 23:11:55 »
Salut,

tu devrais te créer une fonction FindNextPlayerToSpectate ou un nom du genre, tu peut t'inspirer de celle de barron qui vient avec le serveur à la base


++Sim++





Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : Changer de joueur en mode "spec"
« Réponse #3 le: 22 Mai 2009, 12:46:58 »
Merci sim j'ai vu ca, mais je ne comprend pas trop leur code a vrai dire ...

++
nikko

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Changer de joueur en mode "spec"
« Réponse #4 le: 22 Mai 2009, 12:55:26 »
Poste le est on essayera de t expliquer  ;)



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Changer de joueur en mode "spec"
« Réponse #5 le: 22 Mai 2009, 15:11:33 »
Salut,

observons le code....
ObserverSwitchToNextVehicle(playerid)
{
new x=0;
while(x!=MAX_PLAYERS) { // MAX_PLAYERS iterations
   gPlayerObserving[playerid]++;
   if(gPlayerObserving[playerid] == MAX_PLAYERS) {
// we need to cycle back to the start
gPlayerObserving[playerid] = 0;
}
// see if the target player has a vehicle,
// if so assign this player to observe it
if(gPlayerVehicles[gPlayerObserving[playerid]] != 0) {
PlayerSpectateVehicle(playerid,gPlayerVehicles[gPlayerObserving[playerid]]);
return;
}
x++;
}
// didn't find any vehicles to observe. we'll have to default to last
PlayerSpectateVehicle(playerid,gPlayerVehicles[gPlayerObserving[playerid]]);
}

voilà la fonction, il nous faut maintenant la décortiquer....

new x=0;
while(x!=MAX_PLAYERS) { // MAX_PLAYERS iterations
x++;

comme tu le vois, la loop continue jusqu'à ce que l'on est fais le tour de tous les joueurs (la loop a exécutée un tour complet de tous les 200 joueurs, ou une quantité différente si l'on change la valeur de MAX_PLAYERS)

par la suite, la loop vérifie si l'on est rendu au plus haut possible, quand il n'y a plus de joueur, il faudrait sans doute revenir au début pour faire une belle fonction, c'est d'ailleurs exactement ce que fais le code, on augmente le nombre correspondant au joueur regardé par le spectateur puis si l'on est rendu au bout, on recommence au début:

   gPlayerObserving[playerid]++;
   if(gPlayerObserving[playerid] == MAX_PLAYERS) {
// we need to cycle back to the start
gPlayerObserving[playerid] = 0;
}

puis le dernier ne te concerne pas tellement, comme dans barron le joueur doit ce trouver dans un rc pour être regardé, on test s'il y est et on assigne le spectateur à ce joueur...

if(gPlayerVehicles[gPlayerObserving[playerid]] != 0) {
PlayerSpectateVehicle(playerid,gPlayerVehicles[gPlayerObserving[playerid]]);
return;
}

dans ton cas, ton joueur serait en spectateur sur le joueur qui l'as tué, il faudrait une variable qui conserve le ID de ce joueur, puis tu exécute l'équivaleut de ce code selon le critère que tu désireras, par contre si tu veut l'exécuter en sens in verse tu n'as qu'à changer 2 choses:

   gPlayerObserving[playerid]--;
   if(gPlayerObserving[playerid] < 0) {
// we need to cycle back to the start
gPlayerObserving[playerid] = MAX_PLAYERS;
}


et voilà, en espérant que ce code soit plus claire pour toi  :D

++Sim++