So, i'm thinking about some usefull plug-in for my project. But i think that i need a feature not implemented. How can I (for example) send fresh information from server each 30sec ? I don't want to use client for this like request information each 30sec...
Maybe a system cron that create a small bot that connect the server and speak to my plug-in but it's like nuclear bomb for chirurgical action...
Arf aller en français, pour que ça reste plus clair.
J'aimerais pouvoir envoyer toutes les 30 secondes (par exemple) des informations fraiches de la part du serveur, par exemple l'état des PNJ sur une carte. Mais je n'aimerais pas forcément passer par une action du client qui demanderait à intervalle régulier ces informations. Es-ce possible dans l'état ? Ou comment puis-je implémenter cette fonction ?
Sinon deuxième question, es-ce que le problème de connexion sql fermée après x temps d'utilisation est toujours d'actualité sur cette version ?
i was a little tired yesterday... i forgot the mean thing i would say. so, thank you a lot for this really beautifull project.
Je vais m'étendre un peu plus en français, je m'y sens plus à l'aise.
Je voulais juste te dire un grand merci pour ce super projet, je l'utilise depuis un moment dans sa version 0.5.1 et c'est vrai que ce que je peux voir de cette nouvelle version est vraiment une super avancée. Avant j'ai du créer des "bots" en python qui se connectaient au serveur, répondaient aux nodes spécifiques des clients, mais ça devenait vite complexe et chiant à mettre en place, tu nous as offert de belles possibilités dans cette mise à jour. ça me redonne l'envie de coder :) .
Donc un grand merci pour ce que tu donnes de toi dans ce projet. Claps!
Et j'espère pouvoir rendre mes futurs plug-in assez générique pour les transmettre après coup à cette communauté. Maintenant c'est à nous de te créer une chouette collection de plug-in ça ne rendra que plus complet ce serveur.
A mon avis, même si tu n'est pas comme moi, un inculte du Python >.< Tu devrais faire un Client Server ...
Je m'explique :
C'est un Client Modifier de tel manière a être le seul a pouvoir demander ces informations et les renvoyer sur les autres clients (en PM par exemple).
prenons un exemple concret :
Ton jeu utilise un systeme de Mob qui se déplace en aléatoire... ton Client-Server Va Calculer ces déplacements, l'envoyer a tous le monde sur la map (1 Room par Map). Si quelqu'un l'attaque, il va envoyer l'id du mob et ses dernières coordonnées(du mob). Le Client-Server va Regarder la position envoyer et la comparer a celle actuel; Si ces coordonnées sont relativement juste, il renvoie un packet pour avertir le Client qu'il a toucher le mob. Le Client-Server va Modifier la DB (En LSO ou en SQL/XML via PHP).
Je ne sais pas vraiment si j'ai repondu a la question... Mais, ta question est assez Flou dans le sens que l'etat d'un PNJ sa veut pas dire grand chose pour moi =/ (PNJ dans le sens NPC ou dans le sens Mob ?)
Bon, j'avoue que cette solution est pour des petits jeux et pas des MMORPG xD car, sa ralenti beaucoup trop X.x' Voila Voila ^.^ Bonne Chance =)
You could build a timer, but you will have to use python threads to do that. Example plugin autoSend.py :
Code:
from threading import Thread
import time
class autoSend:
def __init__(self,server):
self.server = server
self.name = "autoSend"
# Do action every second
self.frequency = 1
# Just to see what's happenning
self.server.logger.info("autoSend LOADED")
# New SendIt Timer
tim = SendIt(self.frequency,server)
# Starting the THREAD (not the run method)
tim.start()
# SendIt is still looping but we can go on
self.server.logger.info("autoSend RETURNING")
return
class SendIt(Thread):
def __init__ (self,frequency,server):
Thread.__init__(self)
self.server = server
self.frequency = frequency
self.server.logger.info("SENDIT LOADED")
def run(self):
self.server.logger.info("SENDIT RUNNINNG")
# looping forever
while 1:
# Sleeping for "frequency" second
time.sleep(self.frequency)
# Logging ...
self.server.logger.info(time.ctime())
# Sending
self.server.serverSendToAllClients("Hello it's " + str(time.ctime() ) , "SendItTimer")
The SQL connection issue has been solved in this release :)
SQL connections now works like in PHP scripts, every new client requesting a login generate a new connection immediatly closed.Célio Conort Lonesome Palabre developper
Re:Timer? - 2008/04/04 13:36Thanks a lot, that was exactly what i need :)
Pour nexus, oui c'était ce que j'avais fait avant, mais il me manquait le coup du thread, je suis pas un inculte mais un débutant à qui il manque des "pièces" du puzzle on va dire :).
Pour les client server ce n'est plus utile maintenant puisqu'on a la possibilité de faire des plug-in... ceux-ci ont donc accès a toutes les informations du server ce qui est bien plus chouette quand même.
Avant je devais garder une liste des clients dans mon "bot" alors qu'elle existait déjà dans le server, lancer deux programmes, palabre et mes bots, etc..
La ça devient beaucoup plus simple à mettre en place.
merci beaucoup pour l'aide.
Par contre je ne pense pas que ça rallentisse beaucoup trop. Si tu optimises bien le protocole de dialogue entre client / serveur, que tu mettes en caches beaucoup d'information (pour les calculs etc..) tu peux faire une application web qui va justement utiliser beaucoup moins de bande passante que d'afficher 15 pages pour faire la même chose (des déplacements sur une carte par exemple :)) Ensuite pour que ton petit plug-in python prenne toutes tes ressources je pense qu'il faut y aller fort... Mais à voir ouais.