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:
//#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/mC9b4y2CNoël:
http://pastebin.com/vRD1xV6aP.-S.: Je sais que je respecte pas des masses de convention et que mon code est bizarrement indenté !