• 20 Avril 2024, 05:45:27


Auteur Sujet: Paquets perdus  (Lu 3516 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Paquets perdus
« le: 12 Décembre 2014, 20:04:31 »
Bonjour bonjour !

Alors pour commencer à exposer mon problème je vais introduire la situation !
Sur mon serveur, j'organise des events pour les événements IRL, par exemple, à Halloween, j'ai fait envahir la ville de Blueberry (dans la campagne, mon serveur se déroule sur Red County) par des zombies (NPCs) à tuer,  on gagnait des citrouilles (Monnaie), qu'on pouvait échanger contre des vêtements d'halloween, des armes exclusives, de l'argent, etc. !

Ainsi pour Noël, j'avais fait ceci, vous deviez vous rendre à l'atelier du père noël se situant vers la rivière au sud de Red County, là, vous pouviez prendre un traineau (Objets de rennes, cadeaux, planches etc. sur un dodo invisible), et en cliquant, ça prenait le vecteur de la caméra, et ça lançait un cadeau en fonction, qui explosait lorsqu'il était en dessous de la map (GetPointZPos), ou lorsque son trajet était terminé (+- 400 mètres), on avait aussi une map rajoutant des sapins dans les jardins, des lumières de noël etc., et aussi un script qui nous attachait un objet de neige qui tombe.

Pour activer le mode Noël, Halloween, etc., j'utilise des defines:

Code: ("pawn") [Sélectionner]
//#define EVENT_HALLOWEEN
//#define EVENT_NOEL

Pour activer ou désactiver un script, il suffit d'enlever ou d'ajouter
//Compiler, Upload sur le serveur dédié et reboot.


Jusque là, tout va bien, le traineau vole bien, les cadeaux pêtent bien, la neige est pas mal, et j'avais scripté une monnaie (Les mini-cadeaux), échangeables contre un gros cadeau qui contenait des vêtements de noël, des armes, des objets, de l'exp, de l'argent, etc.

Le problème, c'est que vu que tout marchait bien, j'ai décidé de scripter la mission de Noël, en gros, le traineau apparu, vous avez une maison où le cadeau doit être livré, vous avez 100 cadeaux, une fois tous livrés, vous gagnez ceux que vous avez correctement lancé et qui n'ont pas atterri à côté !

Je script je script je script, et lorsque je lance le serveur, tout va bien, le problème est lorsque je me connecte.

Là, ça nous affiche bien le dialog qui nous demande notre mot de passe, ça affiche bien les textdraws, ça affiche un message de bienvenue, en somme, ça exécute OnPlayerConnect.

Mais justement, c'est tout ce que ça exécute, après, plus rien ne s'exécute, le mot de passe rentré ne fait rien, et la sélection de team customisée ne s'affiche pas, rien ne marche plus, alors je vais voir les logs:

Warning: client exceeded 'ackslimit' ***.***.***.***:***** (3265) Limit: 3000/sec

Alors, je me suis dit que c'était normal que ça arrive des fois, alors j'ai réessayé, et non, ça refaisait tout le temps pareil !

J'ai essayé alors de prendre server.cfg, changer l'ackslimit sur 5000, rebelote, toujours inaccessible !

J'ai bien envie de voir ce qui ne marche pas, alors je mets carrément sur 40.000 ! Le problème est que sur 40000, je peux me connecter, rentrer mon mot de passe, parfois choisir mon skin, spawn, mais après 15 secondes de connexion, le problème revient !

J'ai aussi demandé à 3 autres personnes de venir tester, pas la peine de vous dire la réponse je pense.

Ainsi, j'ai décidé de désactiver le mod Noël, résultat: ça marche. Puis, j'ai activé le mod Halloween (Qui est bien plus massif, mange beaucoup plus de variables, et de mémoire (les NPCs...), ça marche !

J'avais en effet au début pensé que j'avais peut-être brisé une limite (Mon code approche des 100.000 lignes de code), mais non.

J'ai alors décidé d'extraire mon code de Noël et de le mettre dans le gamemode lvdm fourni de base avec sa-mp. Là ça vacille, je peux aller au village, prendre un traineau, mais les cadeaux ne marchent pas, et lorsque j'annule la mission de Noël et tente de la reprendre, la commande se solde par un Server: Unknown Command...

Le plus curieux dans cette histoire, c'est que le script de Noël n’apparaît même pas encore sur la callback OnPlayerConnect !

J'ai vraiment essayé beaucoup de choses, mais ne trouve pas non plus de vraie solution sur cela, et je ne comprends pas ce qui peut causer ça, j'ai relu des millions de fois mon code, et je reste sur mon incompréhension :/

Enfin voilà; Je vous fournis le code de tout ce qui est entouré par des #if defined EVENT_NOEL & #endif (Sauf les scripts de météo qui ne fait qu'enlever certaines météos comme la pluie qui ne va pas spécialement avec la neige & le script de chargement du nombre de mini-cadeaux !), ainsi que le OnPlayerConnect:

OnPlayerConnect(playerid): http://pastebin.com/mC9b4y2C
Noël: http://pastebin.com/vRD1xV6a

P.-S.: Je sais que je respecte pas des masses de convention et que mon code est bizarrement indenté !



Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Paquets perdus
« Réponse #1 le: 12 Décembre 2014, 21:12:38 »
Salut, tu dois avoir beaucoup de paquets qui transitent entre ton client et ton serveur du coup SA-MP limite ça.

Ce que tu peux faire c'est augmenter l'acklimits comme tu l'as fait, et augmenter les sync_rate

tu peux t'aider de ça

https://vortexservers.com/clients/knowledgebase/29/SA-MP-recommended-sync-rates.html



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

Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Re : Paquets perdus
« Réponse #2 le: 12 Décembre 2014, 22:22:11 »
ça ne marche pas non plus, mais ce qui est particulièrement curieux, c'est qu'il n'y a pas vraiment de code concernant noël dans les infos envoyées dès le début de la connexion :/

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Paquets perdus
« Réponse #3 le: 12 Décembre 2014, 22:59:49 »
Tu utilises des bots? Ça arrive souvent quand on tente de les tuer.

Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Re : Paquets perdus
« Réponse #4 le: 13 Décembre 2014, 00:10:13 »
Je n'en n'utilise qu'un seul, immobile, et quand ça bug, c'est directement après le démarrage du serveur, (et aussi des fois quelques dizaines de minutes après pour voir si c'est pas un bug d'initialisation), mais le bot n'interagit pas avec noël, de plus, il est sur le serveur depuis le début (pas seulement pour noël) et n'a jamais causé de problèmes !
« Modifié: 13 Décembre 2014, 18:08:45 par CarCrasher »

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Paquets perdus
« Réponse #5 le: 14 Décembre 2014, 21:19:50 »
Hum, pas de boucle qui tourne trop longtemps ?
Utilises tu la dernière version serveur de SA-MP ?



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

Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Re : Paquets perdus
« Réponse #6 le: 14 Décembre 2014, 23:06:01 »
J'utilise la 0.3z R2 !

Mais maintenant que tu le dis, il y a quelque chose qui pourrait bouffer des tonnes de mémoire !

Code: (pawn) [Sélectionner]
public OnDynamicObjectMoved(objectid)
{
#if defined EVENT_NOEL
for(new i = 0; i < MAX_PLAYERS; i ++)
    {
        for(new j = 0; j < 10; j ++)
            {
    new Float:x, Float:y, Float:z;
    GetDynamicObjectPos(sleighpresents[i][j], x, y, z);
    CreateExplosion(x, y, z, 6, 10.0);
    DestroyDynamicObject(sleighpresents[i][j]);
    sleighpresents[i][j] = -1;
            }
        }
#endif
}

(Enfin, sachant que j'ai redéfini Max_Players à 100, et qu'il y a des objets qui bougent tout le temps comme les ascenseurs pour accéder à des maisons flottantes, des parcours aériens avec des roues qui bougent etc. !)

Je vais voir ça :D


Désolé, mais il va falloir que je te remercie de m'avoir fait remarquer ça, parce que malheureusement ça marche :(

À cause de toi je vais être obligé de scripter la suite ! :kiss:
« Modifié: 14 Décembre 2014, 23:18:23 par CarCrasher »

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Paquets perdus
« Réponse #7 le: 15 Décembre 2014, 12:50:44 »
Content de voir que tu as trouvé le problème ;)



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