• 11 Juin 2024, 06:39:09


Auteur Sujet: Quel Type de timer choisir  (Lu 1640 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Quel Type de timer choisir
« le: 31 Octobre 2010, 14:41:44 »
Bonjour à toutes et à tous,


je me pose une question.

Qu'est ce qui serait le mieux pour un timer.

Faire un timer SetTimerEx pour chaque joueur, ou un timer général SetTimer, qui fait une boucle.

Je me dit un pour chaque s'est mieux, car on m'a dit que le MAX_PLAYERS était égal a la limite du nombre de joueurs sur samp, donc 500.

Mais je viens toujours demander. Merci d'avance
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction

Hors ligne ApocKalipsS

  • *
  • Gangster
  • **** | Une experience GTA IV hors du commun !
  • Messages: 1141
    • Voir le profil
Re : Quel Type de timer choisir
« Réponse #1 le: 31 Octobre 2010, 14:48:55 »
Je te propose le SetTimer.
Pour SetTimerEx, imaginons que j'ai 32 joueurs.
Le timer va être appelé 32 fois, et la fonction qu'elle éxécute 32 fois.
Le SetTimer est appelé qu'une seule fois, mais la fonction est un peu plus longue.
Je te propose en plus de ne pas répéter la boucle MAX_PLAYERS fois, mais de la répeter autant de fois qu'il y a de joueurs.

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Quel Type de timer choisir
« Réponse #2 le: 31 Octobre 2010, 14:54:55 »
autant de fois qu'il y a de joueur, il faut que je definisse une variable en plus dans le scripty qui augmente a la connexion et diminue a la deconnexion.

De plus il va y avoir un conflit d'id non?
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Quel Type de timer choisir
« Réponse #3 le: 01 Novembre 2010, 14:24:16 »
Salut,

faire une boucle jusqu'à MAX_PLAYERS qui ne comporterais qu'un test IsPlayerConnected ne consomme pas énormément...
surtout si tu as ajusté la valeur de MAX_PLAYERS.

Toutefois, j'ai lu de Y_LESS que toute tentative afin de contourner l'utilisation de multiple timers, par exemple un gros timer qui exécute beaucoup de code, est moins efficace que l'utilisation de timer.

1. Exécuter beaucoup de code dans un instant signifie l'arrêt des calculs nécessaires à la synchronisation des joueurs, etc. le temps du calcul en question.
2. Le système de gestion des timers est plus efficace que toute tentative de l'imiter possible. Les gens qui ont développé ce système (non pas la team SA-MP) sont des experts en la matière, si vous croyez faire mieux, il vous faudra énormément d'efforts et d'astuce.

Donc, vous devriez utiliser des SetTimerEx (qui de plus ne consomment absolument RIEN quand un joueur n'est pas connecté, quand es-ce que votre serveur est plein?)

++Sim++





Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Quel Type de timer choisir
« Réponse #4 le: 02 Novembre 2010, 12:14:48 »
Salut,

donc en résumé en haut de son script on devrais mettre

#define MAX_PLAYERS GetMaxPlayers()

Pour optimisez au mieux. Mais une chose me tracasse..

Certain disent qu'il faut rajouter
if(IsPlayerConnected(playerid))

Pour éviter d'utiliser trop de ressources, mais justement la boucle s'exécute avant la fonction. Donc ça reviens au même, niveau consommation ?
Sinon on pourrais utiliser une variable comme là dit Scott, qui compte le nombre de joueurs connecté.


Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Re : Quel Type de timer choisir
« Réponse #5 le: 02 Novembre 2010, 12:29:16 »
Salut,

donc en résumé en haut de son script on devrais mettre

#define MAX_PLAYERS GetMaxPlayers()

Pour optimisez au mieux. Mais une chose me tracasse..

Certain disent qu'il faut rajouter
if(IsPlayerConnected(playerid))

Pour éviter d'utiliser trop de ressources, mais justement la boucle s'exécute avant la fonction. Donc ça reviens au même, niveau consommation ?
Sinon on pourrais utiliser une variable comme là dit Scott, qui compte le nombre de joueurs connecté.




Avant de faire un #define qui existe déjà il faut le retirer en faisant

#undef  MAX_PLAYERS
et ensuite tu fait ton define, et sinon tu n'optimise pas toujours en changeant une valeur constante pas une valeur dynamique obtenu par une fonction, donc je te conseillerai de faire

#define MAX_PLAYERS 32 // Si tu as 32 joueurs max sur ton serveur
Si on met if(IsPlayerConnected(playerid)) dans une boucle ça permet d'éviter de faire des calculs inutiles sur des joueurs qui ne sont pas connecté donc bien évidemment on économise des ressources même si elles sont infimes pour la capacité des ordinateurs actuel.

Citer
Sinon on pourrais utiliser une variable comme là dit Scott, qui compte le nombre de joueurs connecté.

C'est une mauvaise idée vu que les IDs ne se suivent pas toujours.

Exemple:

J'ai l'ID 15 la plus haute ID et nous sommes 15 sur le serveur, maintenant le joueur ayant l'ID 0 se déconnecte le serveur comptabilise 14 joueur, il va donc faire des boucles allant de 0 à 14, donc la boucle ne passera jamais par mon ID, et effectuera des calculs inutiles sur l'ID 0 vu que la personne ayant cette idée est déconnectée ^^


Voila tout ^^



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

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Quel Type de timer choisir
« Réponse #6 le: 02 Novembre 2010, 12:38:17 »
Vue comme ça.. x') Merci beaucoup Sasuke :) :dling

Hors ligne Bayshore

  • *
  • Grand Banditisme
  • Messages: 923
    • Voir le profil
Re : Re : Quel Type de timer choisir
« Réponse #7 le: 02 Novembre 2010, 12:53:44 »
Salut,

faire une boucle jusqu'à MAX_PLAYERS qui ne comporterais qu'un test IsPlayerConnected ne consomme pas énormément...
surtout si tu as ajusté la valeur de MAX_PLAYERS.

Toutefois, j'ai lu de Y_LESS que toute tentative afin de contourner l'utilisation de multiple timers, par exemple un gros timer qui exécute beaucoup de code, est moins efficace que l'utilisation de timer.

1. Exécuter beaucoup de code dans un instant signifie l'arrêt des calculs nécessaires à la synchronisation des joueurs, etc. le temps du calcul en question.
2. Le système de gestion des timers est plus efficace que toute tentative de l'imiter possible. Les gens qui ont développé ce système (non pas la team SA-MP) sont des experts en la matière, si vous croyez faire mieux, il vous faudra énormément d'efforts et d'astuce.

Donc, vous devriez utiliser des SetTimerEx (qui de plus ne consomment absolument RIEN quand un joueur n'est pas connecté, quand es-ce que votre serveur est plein?)

++Sim++

Tu pourrais me montrer son post si tu l'as sous la main ?

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Quel Type de timer choisir
« Réponse #8 le: 02 Novembre 2010, 13:12:19 »
Donc ce serais mieux de faire 15 timer pour 15 joueur qu'un timer général?


Eti si je fait un gros timer, qui s'exécute tout les seconde,

que a chaque seconde je rajoute 1 a differente variable, et que quand une variable attend un nombre définis que ça appelle un public.

public TimerGeneral()
{
    timer1sec++;
timer10Sec++;
timer40Sec++;
timer60Sec++;
for(new i= 0; i < MAX_PLAYERS; i++)
{
    if(IsPlayerConnected(i) && JoueurInfos[i][jSpawn] == 1)
        {
            Timer1Sec2(i);
if(timer10Sec >= 10) { Timer10Sec2(i);}
if(timer40Sec >= 40) { Essence2(i);}
if(timer60Sec >= 60) { Timer1Min2(i);}
        }
}
if(timer10Sec >= 10) { timer10Sec=0; }
if(timer40Sec >= 40) { timer40Sec=0; }
if(timer60Sec >= 60) { timer60Sec=0; }
return 1;
}

Apres un certain temps, ça pourrais devenir imprécis?
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Quel Type de timer choisir
« Réponse #9 le: 02 Novembre 2010, 13:33:38 »
Salut, un timer en général est déjà imprécis ^^ c'étais Syg et Sasuke je crois ce sont amuser à relever les temps et ont découvert quand faite desfois il y avais de grosse marge

Hors ligne scott1

  • *
  • Gangster
  • Messages: 1440
    • Voir le profil
Re : Quel Type de timer choisir
« Réponse #10 le: 02 Novembre 2010, 14:20:28 »
Non mais le plus precis, et qui utilise le moins de ressource, s'est le mien ou  différencier les timer?
Refait un Game mode a partir d'une page blanche



Mes partages:

Systeme de Radio avec Frequence Création

Ajouter des véhicule dans le LARP - Godfather Tuto

Anti Cheat "JunkBuster" traduit en FR Traduction

LARP Traduit FR, V0.3 Traduction

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Quel Type de timer choisir
« Réponse #11 le: 02 Novembre 2010, 14:52:37 »
Salut,

je ne l'avais plus mais il suffit de chercher Y_Less et timers et on trouve: http://forum.sa-mp.com/showthread.php?t=61322

aucune des deux méthode n'est plus précise à la base. Ensuite, ça dépend de la façon dont tu t'en sert

++Sim++





Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Re : Quel Type de timer choisir
« Réponse #12 le: 02 Novembre 2010, 15:23:42 »
Salut, un timer en général est déjà imprécis ^^ c'étais Syg et Sasuke je crois ce sont amuser à relever les temps et ont découvert quand faite desfois il y avais de grosse marge


Pour ceux que ça intéresse:

http://www.gtaonline.fr/forums/index.php/topic,9120.0.html



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