Prof Party - Stread Tek

Musique d'ambiance
 
AccueilFAQRechercherS'enregistrerConnexion

Partagez | 
 

 Le système de commandes Item

Aller en bas 
AuteurMessage
Snaky
Admin
avatar

Nombre de messages : 538
Localisation : Lyon, France
Date d'inscription : 26/01/2008

MessageSujet: Le système de commandes Item   Sam 10 Mai - 18:51

Bonjour à tous!

Dans tout jeu de tir, il faut pouvoir dégainer l'arme que l'on veut, assez rapidement.

Il est prévu, d'origine, d'offrir 4-5 touches environ pour changer de "classe" d'arme (corps à corps, chimiques, armes à feu, explosifs et super-armes), ainsi qu'un menu de sélection immédiat de l'arme (choisir non pas d'utiliser la classe "explosifs", mais choisir d'utiliser un explosif précis).

Or, pour le moment, il y a un certain blocage de la part du client, et du coup, une incompréhension totale pour le serveur.
Ce qui pose problème, c'est que le même schéma de code sera utilisé pour activer le zoom, la lampe torche ou tout autre gadget de l'arme, et ce décalage client / serveur rend toute avancée impossible pour le moment.

Donc, jusqu'à maintenant, ca patauge plus qu'autre chose...


[Pour pousser plus loin]:

Le client peut envoyer 6 données différentes au serveurs, qu'on va appeler P, R, S, M, G, H, la 7e étant le blanc (on est limité entre 0 et 7, inclus, données).
Pour indiquer le début d'une séquence de données, le client envoie le paquet "P", via la commande "OpenSocket".
Le serveur reçoit toujours parfaitement cette donnée, et la traite bien comme étant le début d'un paquet de données.
Ensuite, le client envoie une suite de données composées de R, S, M ou G (4 données différentes). Chaque fois que le serveur reçoit une donnée R, S, M ou G, il vérifie si le Socket a été ouvert, et si oui, il enregistre la donnée.
Dans le cas du code "511", qui correspond à la prise en main du lanceur de V1, les données correspondantes sont "G, G, G, G, S" (un petit plug-in fait main permet de trouver rapidement la séquence de données correspondant à un numéro précise, et inversement).
Une fois la séquence de données envoyées, le client termine la connexion en envoyant la donnée H, via la commande "CloseSocket".
Le serveur peut alors savoir que la suite de commandes est terminée, et que le client désire clore la connexion et la valider: on peut calculer la valeur correspondante à la séquence de données, et en déduire alors ce que le joueur veut faire (ex: séquence "G, G, G, G, S" => Code numéro 511 => d'apres le fichier INI, il s'agit de dégainer le V1).

Or, il y a parfois soucis: le serveur ne reçoit pas correctement les données. Ainsi, desfois, la séquence suivante fonctionne:
Citation :
P, G, G, G, S, H
Le serveur reçoit bien P, le traite, et considère la séquence comme ouverte. Il recoit ensuite, dans l'ordre, G, G, G, G puis S, et les sauve correctement, puis il reçoit H, et clot alors la connexion pour traiter la liste de données.

Ce résultat, fructueux, est obtenu via la succession de commandes suivantes dans la console:
Citation :
OpenSocket;Socket3;Socket3;Socket3;Socket3;Socket0;CloseSocket
Et tout va bien.
Alors de quoi se plaint-on?

Il arrive parfois que le serveur interprète cette séquence de dommandes comme étant les données:
Citation :
P, G, G, G, R, M

ou encore, en renvoyant la suite de commandes, comme étant:
Citation :
P, M, G, R, M

mais on a aussi eu le droit, trois fois, à du:
Citation :
P, M, R, M

Envoyée une à une, manuellement, la suite de commandes Open, 3, 3, 3, 3, 1, Close pour le Socket fonctionne.
Mais envoyées à la suite automatiquement, il semble que le client fasse une sorte de "blocage", et s'embrouille les pinceaux ("il vaut mieux ne pas vous emmêler les pinceaux!" ^^) dans les données...

Code du fichier de traitement:

Code:
state OPEN_SOCKET
{
   entrycommands
   {
      exec Game/TorsoStateInfo.dll "ItemCMD, Going in"
      exec Game/ItemCmd.dll INITIALIZE
      activatenewweapon
   }
   states
   {
      SOCKET_MAIN         : +NEW_SOCKET_DATA
   }
}
state SOCKET_MAIN
{
   entrycommands
   {
      deactivateweapon mainhand
   }
   states
   {
      SOCKET_CLOSE         : IS_NEW_SOCKET_DATA "H"
      SOCKET_DATA_M         : IS_NEW_SOCKET_DATA "M"
      SOCKET_DATA_S         : IS_NEW_SOCKET_DATA "S"
      SOCKET_DATA_R         : IS_NEW_SOCKET_DATA "R"
      SOCKET_DATA_G         : IS_NEW_SOCKET_DATA "G"
      SOCKET_ERROR      : default
   }
}

state SOCKET_DATA_M
{
   entrycommands
   {
      exec Game/TorsoStateInfo.dll "Socket Data M"
      exec Game/ItemCmd.dll 1 M
      activatenewweapon
   }
   states
   {
      SOCKET_MAIN         : default
   }
}

state SOCKET_DATA_R
{
   entrycommands
   {
      exec Game/TorsoStateInfo.dll "Socket Data R"
      exec Game/ItemCmd.dll 1 R
      activatenewweapon
   }
   states
   {
      SOCKET_MAIN         : default
   }
}

state SOCKET_DATA_S
{
   entrycommands
   {
      exec Game/TorsoStateInfo.dll "Socket Data S"
      exec Game/ItemCmd.dll 1 S
      activatenewweapon
   }
   states
   {
      SOCKET_MAIN         : default
   }
}

state SOCKET_DATA_G
{
   entrycommands
   {
      exec Game/TorsoStateInfo.dll "Socket Data G"
      exec Game/ItemCmd.dll 1 G
      activatenewweapon
   }
   states
   {
      SOCKET_MAIN         : default
   }
}


_________________
Snaky, chef du projet 'Prof Party'
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://profparty.forumpro.fr
 
Le système de commandes Item
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» M. Georges Moise: Un juge qui juge le système judiciaire.
» système de règle Warengine
» [19/11/2011] Barcelone "Name an Item tournament"
» lezard et item mall
» Système de récompense

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Prof Party - Stread Tek :: Le Jeu :: Améliorations :: Améliorations Techniques-
Sauter vers: