• 15 Mai 2024, 03:36:27


Auteur Sujet: Heure Synchro  (Lu 2077 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne NatiVe™

  • *
  • Messages: 7977
    • Voir le profil
Heure Synchro
« le: 21 Septembre 2007, 21:48:04 »
Salut all !

Aujourd'hui je viens vous donner l'heure synchro pour vos serveur !

Par exemple s'il est 10 en chez vous il seras 10 heure dans votre serveur, s'il est 20 il seras 20 heure sur votre serveur etc...

Voila le code :

En Haut

forward time ();

Dans OnPlayerConnect

time();

En Bas

public time(){
new Text:Clock;
TextDrawDestroy(Clock);
new hour,minute,second;
gettime(hour,minute,second);
new string[256];
if (minute <= 9){format(string,25,"%d:0%d",hour,minute);}
else {format(string,25,"%d:%d",hour,minute);}
TextDrawHideForAll(Clock);
Clock=TextDrawCreate(549,24,string);
TextDrawLetterSize(Clock,0.55,2);
TextDrawFont(Clock,3);
TextDrawBackgroundColor(Clock,0x000000AA);
TextDrawSetOutline(Clock,2);
TextDrawShowForAll(Clock);
SetTimer("time",30000,0);
if (hour == 0){SetWorldTime(0);}
if (hour == 1){SetWorldTime(1);}
if (hour == 2){SetWorldTime(2);}
if (hour == 3){SetWorldTime(3);}
if (hour == 4){SetWorldTime(4);}
if (hour == 5){SetWorldTime(5);}
if (hour == 6){SetWorldTime(6);}
if (hour == 7){SetWorldTime(7);}
if (hour == 8){SetWorldTime(8);}
if (hour == 9){SetWorldTime(9);}
if (hour == 10){SetWorldTime(10);}
if (hour == 11){SetWorldTime(11);}
if (hour == 12){SetWorldTime(12);}
if (hour == 13){SetWorldTime(13);}
if (hour == 14){SetWorldTime(14);}
if (hour == 15){SetWorldTime(15);}
if (hour == 16){SetWorldTime(16);}
if (hour == 17){SetWorldTime(17);}
if (hour == 18){SetWorldTime(18);}
if (hour == 19){SetWorldTime(19);}
if (hour == 20){SetWorldTime(20);}
if (hour == 21){SetWorldTime(21);}
if (hour == 22){SetWorldTime(22);}
if (hour == 23){SetWorldTime(23);}
if (hour == 24){SetWorldTime(24);}

return 1;
}

Et le tour est jouer !  :happy

Il a plusieur fois été dit par plusieur personne que ce FS faisait bugé le serveur mais non ! il marche trés bien je n'ai eu absolument aucun probleme avec pour le moment !

Merci a vous

AK NV.



Tu vois avant? Bah j'étais là encore avant!

Hors ligne R@f

  • *
  • GTAOnline Addict
  • Messages: 4655
    • Voir le profil
Re : Heure Synchro
« Réponse #1 le: 21 Septembre 2007, 23:19:25 »
joli joli
merci merci
 :) :)

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Heure Synchro
« Réponse #2 le: 22 Septembre 2007, 01:29:02 »
Attention, certains clients plantent plus ou moins systématiquement quand on fait un TextDrawDestroy avant que le player ne soit "spawner".
J'ai fait un truc compliqué pour contourner ce problème et je le posterais peut-être bientôt mais je compte plutôt sur la team SAMP pour corriger ce bug.

Et effectivement, j'ai systématiquement planté en voulant me connecter au serveur d'Arsenik jusqu'au moment où il à supprimé l'appel à sa fonction time.

EDIT : Bon ben en fait, j'avais 5 minutes alors je l'ai fait : http://pastebin.gtaonline.fr/pastebin.php?show=65
Ce filterscript ne plante pas avec la version 0.2.2, enfin normalement (je l'ai testé dans tous les sens mais on est jamais vraiment sur).

Le truc pour éviter les plantages c'est de différer la destruction et l'affichage des TextDraws un seconde après que le joueur soit "spawné".
Ceci est fait au moyen d'un timer démarré pour chaque joueur qui "spawne" et d'un flag (IsSpawn) qui évite d'afficher un TextDraw avant que le joueur ne soit "spawné" depuis au moins une seconde.

Il reste quand même un petit problème insolvable : c'est la destruction des derniers TextDraws quand le joueur se deconnecte (car ça plante le client). Donc il se peut que le serveur consomme de la mémoire (un peu) mais surtout qu'il consomme tous les TextDraws.
Pour éviter ça, on peut decommenter les lignes 57 et 58 du script mais la plupart des clients risquent de planter quand ils se deconnecteront (ce qui en soit n'est pas très grave)

Pour modifier ce filterscript et l'adapter (par exemple pour afficher l'heure comme l'a fait Arsenik) il faut modifier la fonction ShowTime.
Il n'est pas nécessaire de relancer de timer dans cette fonction, elle ne doit faire que de l'affichage.

++
Syg
« Modifié: 22 Septembre 2007, 02:11:42 par Syg »
Courtesy of GtaManiac

Hors ligne UrbanGhetto

  • *
  • Grand Banditisme
  • I PWN You !
  • Messages: 948
    • Voir le profil
    • http://h2oteam.roxorgamers.com/
Re : Heure Synchro
« Réponse #3 le: 24 Septembre 2007, 17:07:11 »
Syg, Je peut te poser une question ?

Pourquoi t'es aussi fort ? lol  :P

˙·٠•● Je dis, mieux vaut toucher à un clavier qu'a de la drogue | Le meilleur topic du forum | Ce que j'ai fait a fait de moi ce que je suis ●•٠·˙

Hors ligne NatiVe™

  • *
  • Messages: 7977
    • Voir le profil
Re : Re : Heure Synchro
« Réponse #4 le: 24 Septembre 2007, 18:56:02 »
Syg, Je peut te poser une question ?

Pourquoi t'es aussi fort ? lol  :P

Mdr ! pas mal la question ! xD

AK NV.


Tu vois avant? Bah j'étais là encore avant!

Hors ligne Micka

  • *
  • Gangster
  • Messages: 1016
    • Voir le profil
    • Planet-Ados
Re : Re : Heure Synchro
« Réponse #5 le: 24 Septembre 2007, 20:17:22 »
Syg, Je peut te poser une question ?

Pourquoi t'es aussi fort ? lol  :P

Car c'est son métier et sa passion.

Sinon merci pour ça AK mais je préfère ne pas le mettre, pour la bonne et simple raison, comme l'a dit Syg, ça fais planter le client. :)

Donc tant que y a pas de nouvelle version, je me limite.

Hors ligne steven93

  • *
  • Tueur
  • Messages: 66
    • Voir le profil
Re : Heure Synchro
« Réponse #6 le: 24 Septembre 2007, 20:28:57 »
nn mes j avou la il est for  :D :D

Hors ligne NatiVe™

  • *
  • Messages: 7977
    • Voir le profil
Re : Heure Synchro
« Réponse #7 le: 24 Septembre 2007, 20:34:44 »
Aumoin je vous le passe !

Apres sa vous plais ou pas !

AK NV.


Tu vois avant? Bah j'étais là encore avant!