To be frank, I basically combined the DatabasePlugin & AvatarChatPlugin to achieve what I wanted.
Sending and receiving works for the AvatarChatPlugin but only SENDING works for the Database.
The issue is clear, there is no listener specific to the DatabasePlugin OR from a different perspective, the current listener doesn't know how to handle a message from the DatabasePlugin.
NetworkController.cs | NOTE: You can clearly see the Database Plugin Functions at the bottom. Stripped most of the code due to the post limit. Left the important parts though. Important blocks are color coded.
So what can I do to get this to work?Code:using UnityEngine; using System.Collections; using System.Collections.Generic; using System; using Electrotank.Electroserver5.Api; using Electrotank.Electroserver5.Core; public class NetworkController : MonoBehaviour { // Database Plugin Name public static string DB_PLUGIN_NAME = "DatabasePlugin"; public static string PLUGIN_NAME = "OplexOrigins"; public static string EXTENSION_NAME = "OplexOriginsExtension"; public Transform localplayer; private ElectroServer _es; private Room room = null; private string _userName; private bool started = false; private int as3_x = -1; private int as3_y = -1; private PlayerSpawnController playerSpawnController = null; // Sends Formatted ESObjects To CORE Plugin public void sendToPlugin(EsObject esob) { if (room != null && _es != null) { // Build Request PluginRequest pr = new PluginRequest(); pr.Parameters = esob; pr.RoomId = room.Id; pr.ZoneId = room.ZoneId; pr.PluginName = PLUGIN_NAME; // Send It _es.Engine.Send(pr); } } // Sends a position update message to the plugin. public void sendPositionUpdate(EsObject esob) { esob.setBoolean(PluginTags.USE_UDP, useUDP); sendToPlugin(esob); } void FixedUpdate() { if (started) { /* * Dispatch events from the Electroserver instance internal event queue. * Being in fixed update ensures it occurs in a timely fashion independent * of frame rate. */ _es.Engine.Dispatch(); } } void Update() { if (Input.GetKeyDown (KeyCode.Mouse0)) { SendMessage("UpdateStatusMessage", _userName + " has fired a shot!!!"); localplayerfired(); } if(Input.GetAxis("Mouse X") != 0 || Input.GetAxis("Mouse Y") !=0) { if(Input.GetKey (KeyCode.F)) { fls (); } } } public void SendPublicMessage(string message) { PublicMessageRequest request = new PublicMessageRequest(); request.Message = message; request.RoomId = room.Id; request.ZoneId = room.ZoneId; _es.Engine.Send(request); } // Called When Plugin Message Arrives private void onPluginMessageEvent(PluginMessageEvent e) { if (e.PluginName != PLUGIN_NAME) { // we aren't interested, don't know how to process it return; } EsObject esob = e.Parameters; //trace the EsObject payload; comment this out after debugging finishes! //Log("Plugin event: " + esob.ToString()); //get the action which determines what we do next string action = esob.getString(PluginTags.ACTION); if (action == PluginTags.POSITION_UPDATE_EVENT) { handlePositionUpdateEvent(esob); } else if (action == PluginTags.AVATAR_STATE_EVENT) { SendAnimationMessageToRemotePlayerObject(esob); } else if (action == PluginTags.USER_LIST_RESPONSE) { handleUserListResponse(esob); } else if (action == PluginTags.USER_ENTER_EVENT) { handleUserEnterEvent(esob); } else if (action == PluginTags.USER_EXIT_EVENT) { handleUserExitEvent(esob); } else if (action == PluginTags.ADD_TO_RANK || action == PluginTags.GET_RANK) { updateDisplay(esob); } else if (action == "Fire Out") { FireRecieved(esob); } else if (action == "Flash_Light_Update") { flashlight_recieve(esob); } else { Log("Action not handled: " + action); } } //================================// //= Database Functions //================================// // Called When Database Plugin Message Arrives /*private void onPluginMessageEvent(PluginMessageEvent e) { if (e.PluginName != DB_PLUGIN_NAME) { // we aren't interested, don't know how to process it return; } EsObject esob = e.Parameters; //trace the EsObject payload; comment this out after debugging finishes! //Log("Plugin event: " + esob.ToString()); //get the action which determines what we do next string action = esob.getString(PluginTags.ACTION); if (action == PluginTags.ADD_TO_RANK || action == PluginTags.GET_RANK) { updateDisplay(esob); } else { Log("Action not handled: " + action); } }*/ // Sends Formatted ESObjects To DATABASE Plugin public void sendToDatabase(EsObject esob) { Log("Database Request Fired!!!"); if (room != null && _es != null) { // Build Request PluginRequest pr = new PluginRequest(); pr.Parameters = esob; // This Is A Server Level Plugin! RoomId/ZoneId Is A No Go! pr.PluginName = DB_PLUGIN_NAME; // Send It _es.Engine.Send(pr); } } // Displays Database Elements When Called private void updateDisplay(EsObject esob) { Log("updateDisplay Fired!!!"); int rank = esob.getInteger(PluginTags.GET_RANK); SendMessage("onRankChange", "" + rank); GameObject gObj = GameObject.Find("CharGUI"); gObj.SendMessage("onRankChange", "" + rank); //GameScreen gameScreen = (GameScreen)gObj.GetComponent<GameScreen>(); //gameScreen.rank = "" + rank; } // Append Health public void doAddToRank(string amount) { Log("doAddToRank Fired!!!"); int delta = Convert.ToInt32(amount); EsObject esob = new EsObject(); esob.setString(PluginTags.ACTION, PluginTags.ADD_TO_RANK); esob.setInteger(PluginTags.ADD_TO_RANK, delta); sendToDatabase(esob); } // Get Current Health public void doGetRank() { Log("doGetRank Fired!!!"); EsObject esob = new EsObject(); esob.setString(PluginTags.ACTION, PluginTags.GET_RANK); sendToDatabase(esob); } }
Thanks!!!


Reply With Quote
