client Api Version: 1.6.6
platform : unity3d
To add friends in smartfox, I do the following
1-in admin panel ---> ZoneConfigurator --->[myzone] ---> BuddyList tab --- > activate = on
2-restart smartfox
3-in c# :
Code: Select all
SmartFox sfs;
private string currentState = "Available";
private static string BUDDYVAR_AGE = SFSBuddyVariable.OFFLINE_PREFIX + "age";
private static string BUDDYVAR_MOOD = "mood";
void Awake()
{
sfs = WareConnection.PaperWare.SmartFoxConnection.Connection;
sfs.AddEventListener(SFSBuddyEvent.BUDDY_LIST_INIT, OnBuddyListInit);
sfs.AddEventListener(SFSBuddyEvent.BUDDY_ERROR, OnBuddyError);
sfs.AddEventListener(SFSBuddyEvent.BUDDY_ONLINE_STATE_UPDATE, OnBuddyListUpdate);
sfs.AddEventListener(SFSBuddyEvent.BUDDY_VARIABLES_UPDATE, OnBuddyListUpdate);
sfs.AddEventListener(SFSBuddyEvent.BUDDY_ADD, OnBuddyListUpdate);
sfs.AddEventListener(SFSBuddyEvent.BUDDY_REMOVE, OnBuddyListUpdate);
sfs.AddEventListener(SFSBuddyEvent.BUDDY_BLOCK, OnBuddyListUpdate);
}
void Start()
{
OnAddBuddyClick("hamed");
sfs.Send(new Sfs2X.Requests.Buddylist.InitBuddyListRequest());
}
public void OnOnlineToggleChange(bool isChecked)
{
sfs.Send(new Sfs2X.Requests.Buddylist.GoOnlineRequest(isChecked));
}
public void OnAddBuddyClick(string buddyInput)
{
sfs.Send(new Sfs2X.Requests.Buddylist.AddBuddyRequest(buddyInput));
}
public void OnRemoveBuddyClick(string buddyName)
{
sfs.Send(new Sfs2X.Requests.Buddylist.RemoveBuddyRequest(buddyName));
}
private void OnBuddyError(BaseEvent evt)
{
Debug.LogError("The following error occurred in the buddy list system: " + (string)evt.Params["errorMessage"]);
}
private void OnBuddyListInit(BaseEvent evt)
{
// Populate list of buddies
OnBuddyListUpdate(evt);
// Set current user details as buddy
// Nick
string NickName = (sfs.BuddyManager.MyNickName != null ? sfs.BuddyManager.MyNickName : "");
// States
foreach (string state in sfs.BuddyManager.BuddyStates)
{
string stateValue = state;
string StateGo = stateValue;
}
// Online
bool OnlineState = sfs.BuddyManager.MyOnlineState;
}
private void OnBuddyListUpdate(BaseEvent evt)
{
// Recreate list content
foreach (Buddy buddy in sfs.BuddyManager.BuddyList)
{
if (!buddy.IsOnline)
{
//online / offline
}
else
{
string state = buddy.State;
if (state == "Available")
{
}
else if (state == "Away")
{
}
else if (state == "Occupied")
{
}
}
}
}
void Update()
{
if (sfs != null)
{
sfs.ProcessEvents();
}
}
but every time admin tool log show this error :
Code: Select all
java.lang.IllegalStateException: BuddyList operation failure. BuddyListManager is not active. Zone: { Zone: PaperArmy }, Sender: ( User Name: Hamed, Id: 1, Priv: 0, Sess: 127.0.0.1:20253 )
com.smartfoxserver.v2.api.SFSBuddyApi.checkBuddyManagerIsActive(SFSBuddyApi.java:474)
com.smartfoxserver.v2.api.SFSBuddyApi.initBuddyList(SFSBuddyApi.java:74)
com.smartfoxserver.v2.controllers.system.buddylist.InitBuddyList.execute(InitBuddyList.java:32)
com.smartfoxserver.v2.controllers.v290.SystemReqController.processRequest(SystemReqController.java:157)
com.smartfoxserver.v2.controllers.v290.SystemReqController.enqueueRequest(SystemReqController.java:114)
com.smartfoxserver.bitswarm.io.protocols.AbstractProtocolCodec.dispatchRequestToController(AbstractProtocolCodec.java:39)
com.smartfoxserver.v2.protocol.SFSProtocolCodec.dispatchRequest(SFSProtocolCodec.java:125)
com.smartfoxserver.v2.protocol.SFSProtocolCodec.onPacketRead(SFSProtocolCodec.java:90)
com.smartfoxserver.v2.protocol.binary.BinaryIoHandler$1.run(BinaryIoHandler.java:525)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
tnx