IPB

Здравствуйте, гость ( Вход | Регистрация )

> Secondary skills manager for TE, function allows change some SS values
Demiurg
сообщение 23 Jun 2007, 23:25 (Сообщение отредактировал Demiurg - 03 Aug 2007, 21:12)
Сообщение #1

Immortal
Сообщений: 670
Спасибо сказали: 14 раз




качать отсюда

Здесь представлена функция дли установки и получения силы 16 вторичных навыков на уровнях none, basic, advanced, expert.
Синтаксис:
Код
!!FU27512:P<skill_number>/<mastery>/<integer value>/<mode>/<index of float variable>;
skill_number: must be from {1, 2, 3, 4, 6, 8, 9, 11, 12, 13, 21, 22, 23, 24, 25 ,26}
mastery: none - 0, basic - 1, advanced - 2, expert - 3
integer value: optional parameter, variable or value(if write)
mode: 0 - read, 1 - write(0 by default)
index of float variable: optional parametr, index of (e-)-variable if need convert (in this case must be less than 0)

Сначала проверяется 5ый параметр. Если он меньше нуля, то идет чтение(запись) переменной с плавающей запятой. Иначе идет чтение(запись) 3его параметра.
Вот тестовый пример работы функции:
Код
;После выполнения этого кода базовая логистика будет увеличивать ходы героя на две трети.
!?PI;
!!VRe-7:S2:3;//устанавливаем число с плавающей точкой
!!FU27512:P2/1//1/-7;//устанавливаем силой базовой логистики значение переменной e-7
!!FU27512:P2/1///-1;//получаем в переменную e-1 силу базовой логистики
!!VRy-1:S100*e-1;//домножаем на 100, чтобы получить проценты
!!IF:M^basic logistics increase movementpoints by %Y-1%%^;//выводим на экран


Еще примеры:
Код
;при отсутствии интеллекта герои получают 5 маны за знание
!?PI;
!!VRe-3:S-1:2;
!!FU27512:P24/0//1/-3;

Код
;герой с экспертным имуществом приносит в казну 830 золота в день
!?PI;
!!FU27512:P13/3/830/1;

Код
;получаем процент, на который продвинутая стрельба увеличивает урон стрелков
!?PI;
!!FU27512:P1/2///-3;
!!VRy6:S100*e-3;
!!IF:M^advanced archery skill increase distant damage by %Y6%%^;

Код
;Реализация класса Снайпер(герой с баллистикой и стрельбой получает дополнительные бонусы к стрельбе: +10/+20/+30%) из ТЕ с помощью функции.
;new style of Sniper class
!#VRv2085:S1;
!?BA52&v2085=1;
!!VRv2084:S-1;
!!BA:H0/?y-1 H1/?y-2;
!!HEy-1:S10/?y-3 S1/?y-4;
!!VRv2080&y-3<y-4:Sy-3;
!!VRv2080&y-3>=y-4:Sy-4;
!!VRv2082:Sy-4;
!!FU&y-2<0:E;
!!HEy-2:S10/?y-3 S1/?y-4;
!!VRv2081&y-3<y-4:Sy-3;
!!VRv2081&y-3>=y-4:Sy-4;
!!VRv2083:Sy-4;



!?MM&v2085=1;
!!BG:Q?y-1;
!!FU&y-1=v2084:E;
!!VRv2084:Sy-1;
!!VRy1:S2080+y-1;
!!VRy2:S2082+y-1;
!!VRy3:Svy2*2-1+vy1;
!!VRy3&vy2=0:S0;
!!VRe-1:S1:10*y3;
!!FU27512:P1/vy2//1/-1;

!?BG0&v2085=1;//just in case and AI
!!BG:Q?y-1;
!!FU&y-1=v2084:E;
!!VRv2084:Sy-1;
!!VRy1:S2080+y-1;
!!VRy2:S2082+y-1;
!!VRy3:Svy2*2-1+vy1;
!!VRy3&vy2=0:S0;
!!VRe-1:S1:10*y3;
!!FU27512:P1/vy2//1/-1;


Вот и сама функция
Код
;real - necromancy, archery, attack, armorer, eagle eye, dimplomacy, resistance, learning, logistics, sorcery, intelligence
;for real needs convert
;integer - luck, leadership, mysticism, scouting, estate
;for integer does not need convert

!?FU27512;//set power of some SS
;x1 - secondary skill
;x2 - mastery
;x3 - value for write or read
;x4 - mode: 0 - read 1 - write
;x5 - index of (e-)-variable if need convert (in this case must be less than 0)
!!FU|x4<0/x4>1:E;//wrong mode (must be 0..1)
!!FU|x1<1/x1=5/x1=7/x1=10/x1>26:E;//skills aren't supported
!!FU&x1>13/x1<21:E;//skills aren't supported
!!FU|x2<0/x2>3:E;//wrong mastery (must be 0..3)
!!VRy1&x1=1:S6547944;//archery
!!VRy1&x1=2:S6548072;//logistics
!!VRy1&x1=3:S6547928;//scouting
!!VRy1&x1=4:S6548024;//dyplomacy
!!VRy1&x1=6:S6547880;//leadership
!!VRy1&x1=8:S6547912;//mysticism
!!VRy1&x1=9:S6547864;//luck
!!VRy1&x1=11:S6548008;//eagle eye
!!VRy1&x1=12:S6547896;//necromancy
!!VRy1&x1=13:S6547992;//estate
!!VRy1&x1=21:S6548056;//learning
!!VRy1&x1=22:S6547960;//attack
!!VRy1&x1=23:S6547976;//armorer
!!VRy1&x1=24:S6548104;//intelligence
!!VRy1&x1=25:S6548088;//sorcery
!!VRy1&x1=26:S6548040;//resistance
!!VRx2:*4;
!!VRy1:+x2;
!!if&x4=0:;
 !!UN:Cy1/4/?x3;
 !!UN:C10784536/4/x3;//10784536 - address of e1
 !!VRex5&x5<0:Se1;
!!el:;
 !!VRe1&x5<0:Sex5;
 !!UN&x5<0:C10784536/4/?x3;//10784536 - address of e1
 !!UN:Cy1/4/x3;
!!en:;


Замечания:
1) Нужно учитывать, что часть навыков хранится в типе integer, а часть в float. В integer хранятся следующие навыки: leadership, luck, mysticism, scouting, estates.
2) Для некоторых навыков позволены отрицательные значения. Например для интеллекта в одном из примеров устанавливается -0,5.
3) Не забывайте, что функция работает только под ТЕ по следующей причине: "В WOG 3.58f запрещена запись с помощью !!UN:C в область памяти, отвечающей за вторичные скиллы".
4) Описание работы конвертеров: Конвертер из действительного числа в его машинное целочисленное представление записывает по адресу переменной e1 значение и считывает оттуда с помощью !!UN:C его машинное представление. Конвертер из машинного целочисленного представления в действительное число записывает с помощью !!UN:C по адресу переменной e1 машинное представление и копирует переменную e1 в переменную ex2, где x2(<0) - выделенный пользователем индекс для получения значения.


--------------------
Самый страшный, кого можно встретить на экзамене, – факер Нео

Go to the top of the pageAdd Nick
 
+Quote Post

Сообщений в этой теме
- Demiurg   Secondary skills manager for TE   23 Jun 2007, 23:25
- - Berserker   Если будет работать, будет здорово. Не помешала бы...   24 Jun 2007, 19:30
- - Demiurg   Обновление. Теперь можно не только устанавливать з...   25 Jun 2007, 14:42
- - Чёртос-2 (Chortos-2)   Почему ты думаешь, что запрещена запись через ...   25 Jun 2007, 16:39
- - Demiurg   У меня не получилось Я пробовал Код!?TM2; ...   25 Jun 2007, 17:27
- - Demiurg   Обновил ссылку. Сделал возможность устанавливать и...   25 Jun 2007, 23:21
- - Demiurg   Обновление. Упростил конвертер из машинного предст...   27 Jun 2007, 10:37
- - gamecreator   там, где по 4 строчки для каждого навыка расписано...   27 Jun 2007, 13:03
- - Druin   там условия разные...   27 Jun 2007, 13:12
- - gamecreator   нет, напр. первую четверку как: !!UN&x...   27 Jun 2007, 15:50
- - Чёртос-2 (Chortos-2)   ERM‐интерпретатор не поймет. Я бы сделал та...   27 Jun 2007, 16:31
|- - Demiurg   Цитата(Чёртос-2 (Chortos-2) @ 27 Ju...   27 Jun 2007, 18:48
|- - Чёртос-2 (Chortos-2)   Цитата(Demiurg @ 27 Jun 2007, 18:48)Насколько...   27 Jun 2007, 19:50
- - Berserker   Согласен с Чёртосом. Комментарий (ложка дегтя в бо...   27 Jun 2007, 21:16
|- - Demiurg   Цитата(Berserker @ 27 Jun 2007, 22:16)3) Посм...   27 Jun 2007, 21:50
- - Berserker   Ну в лоб всё можно. Только комп работает с разной ...   28 Jun 2007, 20:51
- - Demiurg   Время как-нибудь уж померю Была бы проблема. Насче...   28 Jun 2007, 21:52
- - Berserker   Я про другие макросы, скоро узнаешь   28 Jun 2007, 22:29
|- - Demiurg   Цитата(Berserker @ 28 Jun 2007, 23:29)Я про д...   28 Jun 2007, 22:47
- - Berserker   Нет, нет, и ещё раз нет Причина: ЕРМ-парсер не пр...   29 Jun 2007, 22:24
- - Demiurg   Berserker очень прав. Время вызова функции ~ 0,5ms...   30 Jun 2007, 01:21
- - Demiurg   Обновил функцию. Встроил конвертеры. Добавил прове...   30 Jun 2007, 15:19
- - Berserker   Макросы - первая задача после евмы. Завтра выложу...   30 Jun 2007, 21:10
- - Чёртос-2 (Chortos-2)   В первом примере используется переменная v1, значе...   03 Jul 2007, 11:03
- - ZVS   ERM интерпретатор "разбирает" все тригге...   10 Jul 2007, 19:20
- - Berserker   ZVS, всё это верно Ваш труд поистенне велик, но И...   10 Jul 2007, 19:33
- - ZVS   Это возможно. Опять - интерфейсные соглашения и вн...   10 Jul 2007, 19:51
- - Berserker   Можно даже проще. Допустим Вы напишите универсальн...   10 Jul 2007, 20:01
- - ZVS   Это хорошо. Но некоторые ресиверы подразумевают ca...   10 Jul 2007, 20:04
- - Berserker   В таком случае завтра придёт письмо. Рад, что не п...   10 Jul 2007, 20:08


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 25 April 2024 - 22:34
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика