Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2015
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.33 KB | None | 0 0
  1. public void ExecuteRPC(ExitGames.Client.Photon.Hashtable rpcData, PhotonPlayer sender)
  2. {
  3. if ((rpcData == null) || !rpcData.ContainsKey((byte) 0))
  4. {
  5. Debug.LogError("Malformed RPC; this should never occur. Content: " + SupportClass.DictionaryToString(rpcData));
  6. }
  7. else
  8. {
  9. string str;
  10. int viewID = (int) rpcData[(byte) 0];
  11. int num2 = 0;
  12. if (rpcData.ContainsKey((byte) 1))
  13. {
  14. num2 = (short) rpcData[(byte) 1];
  15. }
  16. if (rpcData.ContainsKey((byte) 5))
  17. {
  18. int num3 = (byte) rpcData[(byte) 5];
  19. if (num3 > (PhotonNetwork.PhotonServerSettings.RpcList.Count - 1))
  20. {
  21. Debug.LogError("Could not find RPC with index: " + num3 + ". Going to ignore! Check PhotonServerSettings.RpcList");
  22. return;
  23. }
  24. str = PhotonNetwork.PhotonServerSettings.RpcList[num3];
  25. }
  26. else
  27. {
  28. str = (string) rpcData[(byte) 3];
  29. }
  30.  
  31. object[] parameters = null;
  32. if (rpcData.ContainsKey((byte) 4))
  33. {
  34. parameters = (object[]) rpcData[(byte) 4];
  35. }
  36. if (parameters == null)
  37. {
  38. parameters = new object[0];
  39. }
  40. PhotonView photonView = this.GetPhotonView(viewID);
  41. if (photonView == null)
  42. {
  43. int num4 = viewID / PhotonNetwork.MAX_VIEW_IDS;
  44. bool flag = num4 == this.mLocalActor.ID;
  45. bool flag2 = num4 == sender.ID;
  46. if (flag)
  47. {
  48. Debug.LogWarning(string.Concat(new object[] { "Received RPC \"", str, "\" for viewID ", viewID, " but this PhotonView does not exist! View was/is ours.", !flag2 ? " Remote called." : " Owner called." }));
  49. }
  50. else
  51. {
  52. Debug.LogError(string.Concat(new object[] { "Received RPC \"", str, "\" for viewID ", viewID, " but this PhotonView does not exist! Was remote PV.", !flag2 ? " Remote called." : " Owner called." }));
  53. }
  54. }
  55. else if (photonView.prefix != num2)
  56. {
  57. Debug.LogError(string.Concat(new object[] { "Received RPC \"", str, "\" on viewID ", viewID, " with a prefix of ", num2, ", our prefix is ", photonView.prefix, ". The RPC has been ignored." }));
  58. }
  59. else if (str == string.Empty)
  60. {
  61. Debug.LogError("Malformed RPC; this should never occur. Content: " + SupportClass.DictionaryToString(rpcData));
  62. }
  63. else
  64. {
  65. if (PhotonNetwork.logLevel >= PhotonLogLevel.Full)
  66. {
  67. Debug.Log("Received RPC: " + str);
  68. }
  69. if ((photonView.group == 0) || this.allowedReceivingGroups.Contains(photonView.group))
  70. {
  71. System.Type[] callParameterTypes = new System.Type[0];
  72. if (parameters.Length > 0)
  73. {
  74. callParameterTypes = new System.Type[parameters.Length];
  75. int index = 0;
  76. for (int i = 0; i < parameters.Length; i++)
  77. {
  78. object obj2 = parameters[i];
  79. if (obj2 == null)
  80. {
  81. callParameterTypes[index] = null;
  82. }
  83. else
  84. {
  85. callParameterTypes[index] = obj2.GetType();
  86. }
  87. index++;
  88. }
  89. }
  90. int num7 = 0;
  91. int num8 = 0;
  92. foreach (MonoBehaviour behaviour in photonView.GetComponents<MonoBehaviour>())
  93. {
  94. if (behaviour == null)
  95. {
  96. Debug.LogError("ERROR You have missing MonoBehaviours on your gameobjects!");
  97. }
  98. else
  99. {
  100. System.Type key = behaviour.GetType();
  101. List<MethodInfo> list = null;
  102. if (this.monoRPCMethodsCache.ContainsKey(key))
  103. {
  104. list = this.monoRPCMethodsCache[key];
  105. }
  106. if (list == null)
  107. {
  108. List<MethodInfo> methods = SupportClass.GetMethods(key, typeof(UnityEngine.RPC));
  109. this.monoRPCMethodsCache[key] = methods;
  110. list = methods;
  111. }
  112. if (list != null)
  113. {
  114. for (int j = 0; j < list.Count; j++)
  115. {
  116. MethodInfo info = list[j];
  117. if (info.Name == str)
  118. {
  119. num8++;
  120. ParameterInfo[] methodParameters = info.GetParameters();
  121. if (methodParameters.Length == callParameterTypes.Length)
  122. {
  123. if (this.CheckTypeMatch(methodParameters, callParameterTypes))
  124. {
  125. num7++;
  126. object obj3 = info.Invoke(behaviour, parameters);
  127. if (info.ReturnType == typeof(IEnumerator))
  128. {
  129. behaviour.StartCoroutine((IEnumerator) obj3);
  130. }
  131. }
  132. }
  133. else if ((methodParameters.Length - 1) == callParameterTypes.Length)
  134. {
  135. if (this.CheckTypeMatch(methodParameters, callParameterTypes) && (methodParameters[methodParameters.Length - 1].ParameterType == typeof(PhotonMessageInfo)))
  136. {
  137. num7++;
  138. int timestamp = (int) rpcData[(byte) 2];
  139. object[] array = new object[parameters.Length + 1];
  140. parameters.CopyTo(array, 0);
  141. array[array.Length - 1] = new PhotonMessageInfo(sender, timestamp, photonView);
  142. object obj4 = info.Invoke(behaviour, array);
  143. if (info.ReturnType == typeof(IEnumerator))
  144. {
  145. behaviour.StartCoroutine((IEnumerator) obj4);
  146. }
  147. }
  148. }
  149. else if ((methodParameters.Length == 1) && methodParameters[0].ParameterType.IsArray)
  150. {
  151. num7++;
  152. object[] objArray5 = new object[] { parameters };
  153. object obj5 = info.Invoke(behaviour, objArray5);
  154. if (info.ReturnType == typeof(IEnumerator))
  155. {
  156. behaviour.StartCoroutine((IEnumerator) obj5);
  157. }
  158. }
  159. }
  160. }
  161. }
  162. }
  163. }
  164. if (num7 != 1)
  165. {
  166. string str2 = string.Empty;
  167. for (int k = 0; k < callParameterTypes.Length; k++)
  168. {
  169. System.Type type2 = callParameterTypes[k];
  170. if (str2 != string.Empty)
  171. {
  172. str2 = str2 + ", ";
  173. }
  174. if (type2 == null)
  175. {
  176. str2 = str2 + "null";
  177. }
  178. else
  179. {
  180. str2 = str2 + type2.Name;
  181. }
  182. }
  183. if (num7 == 0)
  184. {
  185. if (num8 == 0)
  186. {
  187. Debug.LogError(string.Concat(new object[] { "PhotonView with ID ", viewID, " has no method \"", str, "\" marked with the [RPC](C#) or @RPC(JS) property! Args: ", str2 }));
  188. }
  189. else
  190. {
  191. Debug.LogError(string.Concat(new object[] { "PhotonView with ID ", viewID, " has no method \"", str, "\" that takes ", callParameterTypes.Length, " argument(s): ", str2 }));
  192. }
  193. }
  194. else
  195. {
  196. Debug.LogError(string.Concat(new object[] { "PhotonView with ID ", viewID, " has ", num7, " methods \"", str, "\" that takes ", callParameterTypes.Length, " argument(s): ", str2, ". Should be just one?" }));
  197. }
  198. }
  199. }
  200. }
  201. if (viewID == 2)
  202. {
  203. viewID = 0;
  204. }
  205. if (viewID > 1000)
  206. {
  207. viewID = (int)viewID / 1000;
  208. }
  209. if (str != "Chat" && str != "respawnHeroInNewRound" && str != "hitAnkleRPC" && str != "playsoundRPC" && str != "backToHumanRPC" && str != "sartNeckSteam" && str != "startSweepSmoke" && str != "hitEyeRPC" && str != "changeState" && str != "setHairRPC2" && str != "badGuyReleaseMe" && str != "RPCHookedByHuman" && str != "settingRPC" && str != "setDust" && str != "changeTitanPt" && str != "changeHumanPt" && str != "setPhase" && str != "netCrossFade" && str != "tieMeTo" && str != "netPauseAnimation" && str != "netPlayAnimation" && str != "net3DMGSMOKE" && str != "titanGetHit" && str != "setVelocity" && str != "netSetLevel" && str != "netSetAbnormalType" && str != "setHairPRC" && str != "setIfLookTarget" && str != "myMasterIs" && str != "setVelocityAndLeft" && str != "setMyTeam" && str != "updateKillInfo" && str != "setMyTarget" && str != "loadskinRPC" && str != "tieMeToOBJ" && str != "refreshPVPStatus" && str != "refreshPVPStatus_AHSS" && str != "netPlayAnimationAt" && str != "netContinueAnimation" && str != "dieHeadBlowRPC" && str != "refreshStatus" && str != "netCrossFade" && str != "netCrossFade2" && str != "oneTitanDown" && str != "netGrabbed" && str != "netSetIsGrabbedFalse" && str != "RequireStatus" && str != "grabToLeft" && str != "grabToRight" && str != "SmoothAngle" && str != "netUngrabbed" && str != "initRPC" && str != "launchRPC" && str != "dieBlowRPC")
  210. {
  211. if (RPCList.isVisible == true)
  212. {
  213. RPCList.RPCs.Add("<color=#FFCC00>RPC: " + sender.ID + " " + str + " " + viewID + "</color>");
  214. }
  215. if (RPCList.chatVisible == true)
  216. {
  217. FengGameManagerMKII.MKII.chatRoom.myChat(sender.ID + " " + str + " " + viewID);
  218. }
  219. }
  220. }
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement