Guest User

Untitled

a guest
Jun 20th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.86 KB | None | 0 0
  1. class SpecialPlayerDataProxy
  2. {
  3. private dictionary info;
  4.  
  5. SpecialPlayerDataProxy()
  6. {
  7.  
  8. }
  9.  
  10. //эту функцию вызываем в critter_in или как оно там было:)
  11. int getCharacterFraction(int charId)
  12. {
  13. if (dict.get(charId) == null)
  14. makeRequestGetCharInfo(charId);
  15.  
  16. //0 элемент массива например будет фракцией
  17. return dict.get(charId)[0];
  18. }
  19.  
  20. private void makeRequestGetCharInfo(int charId)
  21. {
  22.  
  23. sring functionName = '__Название функции которая вернет то что нам надо';
  24. /* Вызываемая функция будет такого вида
  25. * void _FuncName_unsafe(Critter& player, int param0, int param1, int param2, string@ param3, int[]@ param4)
  26. */
  27. string strToFilll// = 'в эту строку будет записыватся знчения'
  28. array arrayToFill;// = 'в этот массив тоже'
  29.  
  30.  
  31. /**
  32. * Поидее strToFill и arrayToFill передаются указатели, т.е мы можем писать в них значения на прямую хоть это и тупо
  33. * Но вообще не понятно зачем разделение Client/Server
  34. *
  35. * Должно работать хотя это и криво в противном случае нужно быдет вызывать в теле функции слушателя
  36. * cr.runClientScript someCallBack ниже щас будет пример каллбека
  37. * cr.RunClientScript('__requestGetCharInfo_Callback', playerId, null, someStr, someArray);
  38. */
  39.  
  40. RunServerScriptUnsafe(functionName, null, null, strToFill, arrayToFill);
  41.  
  42. //Теперь в дикшенари по чар айди можно извлечь этот массив, чтобы в рамках текщей сессия не запрашивать инфо опять.
  43. dict.set(charId, arrayToFill)
  44. }
  45.  
  46. void requestGetCharInfo_Callback(int playerId, int param1, int param2, string@ someStr, int[]@ someArray)
  47. {
  48. dict.set(playerId, someArray);
  49.  
  50. //В таком случае getCharacterFraction не вернет знчения эта функция калл бек должна будет покрасить криттера плеера
  51. //Следующий вызов уже будетв озвращать значение из dictionary
  52. }
  53. }
  54.  
  55. /**
  56. * функция выдающая ответ должна быть вида
  57. * void someFunction(Critter& player, int param0, int param1, int param2, string@ param3, int[]@ param4)
  58. * {
  59. * param4 = [........] задали параметры в массив
  60. * param3 = ...... задали строку как я понимаю эта функция может быть где угодно
  61. * }
  62. *
  63. * Но вообще не понятно зачем разделение Client/Server
  64. */
Add Comment
Please, Sign In to add comment