1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Результаты поиска

  1. Hardx
  2. Hardx
  3. Hardx
  4. Hardx
  5. Hardx
  6. Hardx
  7. Hardx
  8. Hardx
  9. Hardx
  10. Hardx
  11. Hardx
  12. Hardx
  13. Hardx
  14. Hardx
  15. Hardx
    Тема

    PW Ability Draft

    ку всем) На днях возникла прикольная идея, запилить в пв Ability Draft(как в доте) К примеру, после создания персонажа, изначально умений у него нету, учить умения своего класса он не может, но может выбрать умения из общего пула умений всех персонажей. Естественно выбирать персонаж сможет только по 2-3 умения с каждой уважухи. К примеру: [IMG] Это только пример, но если подойти к этому грамотно, может получится неплохая фишка, которая добавить уникальности каждому герою, игроки будут придумывать какие нибудь связки, выбирать приоритеты(уйти в бафы или контроль, или как всё нормально совместить), пвп будут не такие предсказуемые, если еще учитывать умения джина, да и игрокам понравится такое разнообразие. И естественно со всех умений убрать ограничение по оружию, и сделать анимацию на все расы. Что скажите по этой фиче? Ну и собственно не случайно я создал тему в разделе "ищю", всё это мне по силам реализовать, но всё сливается в одну банальную проблему. Нет возможности открыть сервер в материальном плане. Если кто заинтересовался, пишите в лс, там всё обсудим.
    Автор темы: Hardx, 2 дек 2015, ответов - 27, в разделе: Ищу
  16. Hardx
  17. Hardx
    я бы не рассматривал просто рефлексию — очень оно медленно. я генерировал чтение-запись в runtime, с помощью System.Reflection.Emit. получалось, что по факту методы Read и Write генерирует сама программа для каждого нужного класса (и дочерних) на старте один раз, а дальше выбирал нужный метод для нужного класса и выполнял. получалось практически одинаково по скорости как если бы это писать вручную. Для меня runtime и мета-данные пока что еще что-то новое. Я так понял, мне нужно с помощью MethodBuilder`a и IL кода создать методы чтения и записи? Звучит всё как-то сложно) И да, если у кого-то будет такой же вопрос, как у меня в первом посте, вот решение: if (prop.PropertyType.IsArray) { var length = ReadCUInt32(); var value = Activator.CreateInstance(prop.PropertyType, length); for (int i = 0; i < length; i++) { ((object[])value)[i] = Activator.CreateInstance(prop.PropertyType.GetElementType()); Deserialization(((object[])value)[i]); } prop.SetValue(cls, value); }
    Сообщение от: Hardx, 26 окт 2015 в разделе: PW Вопросник
  18. Hardx
  19. Hardx
  20. Hardx
    forbid = new GRoleForbid(); Если я явно начну указывать типы, тогда этот метод будет только для одной структуры. Вот обычный пример инициализации класса с помощью рефлексии: //Допусти в нашей структуре, цикл нашел свойство "gRoleBase" с типом "GRoleBase" //prop = полностью всё наше свойство. //prop.PropertyType = GRoleBase //В объект value записывается инициализация класса GRoleBase object value = Activator.CreateInstance(prop.PropertyType); //Свойству gRoleBase устанавливается значение инициализации. prop.SetValue(cls, value); //Начинает читать все свойства, которые находятся в классе gRoleBase DoReflection(value, packetReader); И это всё хорошо работает, но с массивами немного не катает. У массивов prop.PropertyType = GRoleforbid[], поэтому инициализировать массив я могу, а вот объекты внутри массива я не знаю как. Опять же, в методе DoReflection ничего не должно быть явного.
    Сообщение от: Hardx, 25 окт 2015 в разделе: PW Вопросник