Полная версия этой страницы:
New Magic system for WoG
Д'якон
22 Sep 2007, 18:35
Да, но при помощи
AND=!!VR#:&$; - можно проверить бит, как написано в хэлпе.
Как мне тогда проверить какой бит присвоен?
Demiurg
22 Sep 2007, 18:57
Обычно не требуется узнать, какой бит присвоен. Главное назначение команды & - узнать присвоен ли данный бит (набор битов).
Д'якон
22 Sep 2007, 19:06
Так вот я перебираю все биты, и смотрю какой присвоен. А не работает.
gamecreator
22 Sep 2007, 19:12
а ты сохраняешь переменную перед проверкой??
Д'якон
22 Sep 2007, 19:16
В смысле сохраняешь?
Demiurg
22 Sep 2007, 19:20
Если честно, то приведенный тобой код выглядит весьма сомнительно.
Добавлено ([mergetime]1190478008[/mergetime]):
И я так и не понял, зачем нужно узнавать номер бита. Их же может быть несколько установлено. Что тогда?
Д'якон
22 Sep 2007, 19:24
А что если установленно несколько битов, то я не смогу проверить один?
А код можешь протестить, по крайней мере до !?BA1 - работает все корректно.
gamecreator
22 Sep 2007, 19:24
Цитата(Д'якон @ 22 Sep 2007, 19:16)
В смысле сохраняешь?
в ЕРМ результат действия записывается в текущую переменную
Demiurg
22 Sep 2007, 19:25
Сможешь.
!!VR:&(2^(bit_number-1));
Д'якон
22 Sep 2007, 19:26
Цитата(Demiurg @ 22 Sep 2007, 19:20)
И я так и не понял, зачем нужно узнавать номер бита.
Я по твоему же совету. Смотри посты выше. Заношу каждый закл в отдельный бит. Для того чтобы их потом после битвы вернуть герою
Demiurg
22 Sep 2007, 19:27
Цитата(Д'якон @ 22 Sep 2007, 20:26)
Я по твоему же совету. Смотри посты выше. Заношу каждый закл в отдельный бит. Для того чтобы их потом после битвы вернуть герою
Только, когда ты возвращаешь закл герою тебе не нужно узнавать номер бита.
Ты подставляешь номер закла в формулу.
Если проверка дает положительный ответ, то даешь закл герою.
Д'якон
22 Sep 2007, 19:28
НУ. Я так и делаю.
Demiurg
22 Sep 2007, 19:30
Цитата(Д'якон @ 22 Sep 2007, 20:28)
НУ. Я так и делаю.
Ты говорил, что ты
узнаешь номер бита. В предлагаемом варианте тебе не нужно знать номер бита. Ты перебираешь в цикле все заклы.
Berserker
22 Sep 2007, 19:33
Извиняюсь, в упор не понимаю в чём проблема.
До битвы запоминаем все заклы в битах 0..30 серии v-переменных, после восстанавливаем.
Д'якон
22 Sep 2007, 19:33
Да да ты прав. Приведи пример.
Demiurg
22 Sep 2007, 19:39
Набросок.
int v = 0;
Before
int j = 1;
For (i = 0; i < 30; i++)
{
if (hero has spell #i) v:|j;
j*=2;
}
After
int i = 0;
For (j = 1; j < 2^30; j = j*2)
{
if (v&j) get hero spell #i;
i++;
}
Berserker
22 Sep 2007, 20:21
Читаемость С всегда была на высоте

Дьякон, дам совет. Не берись за то, что сложно. Начни с более простого. Или юзай вариант такой: (простой в реализации)
1) на ИИ не действует
2) алгоритм
!?BG0...
Проверили, может ли герой колдовать закл, если нет, то
!!IF:M^Учение - свет, качай нужные скилы сперва!^;
!!BG:A0;
Выходим.
Элегантно и просто, хотя челу неудобно. Впрочем, если написано, что для магии огня 4-го уровня нужна грамотность, то нечего все заклы 4 и 5-го пробовать
Д'якон
22 Sep 2007, 21:37
Я такой скрипт уже делал. Посмотри предыдущие посты. А с проблемами разобрался. Ничего сложного, хоть и потребовалась помощь Демиурга

.
Добавлено ([mergetime]1190486255[/mergetime]):
Сейчас потестю и выложу.
Д'якон
22 Sep 2007, 22:02
Наконец. Вот. Может кривоват, я посмотрю может подправлю, но работает нормально (например используется глобальная переменная, но от этого можно уйти). Теперь составлю какая магия от чего зависит и допишу окончательно.
Код
!?BA0;
!!FU1234:Px1/x2/x3/x4/x5;
!!IF:V2/1;
!!FU1234:Px1/x2/x3/x4/x5;
!?BA1;
!!VRy1:S1;
!!BA:H0/?y2;
!!IF:V3/0;
!!DO1235/10/40/1:Py1/y2;
!!IF:V3/1;
!!DO1235/41/69/1:Py1/y2;
!!BA:H1/?y2;
!!IF:V3/0;
!!DO1235/10/40/1:Py1/y2;
!!IF:V3/1;
!!DO1235/41/69/1:Py1/y2;
!?FU1234
!!IF:V1/0;
!!BA&-2:H0/?y1;
!!BA&2:H1/?y1;
!!HEy1:Sx2/?y4 Sx4/?y5 Mx1/?y7;
!!if&y4<x3|y5<x5:;
!!IF:V1/1;
!!en;
!!HEy1&1:Mx1/0;
!!IF:Wy1;
!!if&y7=1/x1>9/x1<41:;
!!VRy8:S1;
!!VRx1:-10;
!!DO1236/10/40/1:Py8/x1;
!!VRw1:|v1;
!!en;
!!if&y7=1/x1>41/x1<60;
!!VRy8:S1;
!!VRx1:-41;
!!DO1236/41/69/1:Py8/x1;
!!VRw2:|v1;
!!en;
!!IF:V2/0;
!?FU1235;
!!IF:Wx2;
!!VRy1&-3:Sw1&x1;
!!VRy1&3:Sw2&x1;
!!VRx1:*2;
!!FU&y1=0:E;
!!HEx2:Mx16/1;
!?FU1236;
!!if&x2>0:;
!!VRx1:+x1;
!!VRx2:-1;
!!en;
!!VRv1:Sx1;
Д'якон
28 Sep 2007, 19:31
Предлогаю, Вам, предлогать (каламбур, блин) от каких навыков должна зависить какая магия.
Общий принцип считаю должен быть таким:
для магии более низкого ур-ня должны в основном использоваться часто изучаемые навыки.
А вот для более высокого и полезной магии навыки типа грамотности и т.п.
Вот предлогаю некоторые:
Щит - защита базовая, тактика базовая;
лечение - первая помощь, грамотность;
воскрешение - первая помощь эксперт, интелект эксперт;
поднять мертвецов - некромантия базовая, первая помощь продвинутая
ускорение - логистика базовая, поиск пути базовый;
защита от огня,воды,земли,воздуха - защита базовая, грамотность базовая
Что-то в этом роде. Для низкоуровневых заклов можно и по одному навыку.
Docent Picolan
28 Sep 2007, 19:39
Цитата
Предлогаю, Вам, предлогать
ха-ха. и оба раза написал с ошибкой
Fire Shield (Огненный Щит) - магия огня продвинутая
Anti-Magic (Анти-магия) - сопротивление магии базовое
Д'якон
30 Sep 2007, 10:44
Выставляю на одобрение. Вносите свои коррективы. Чтобы не затянулось обсуждение (если будет), принимаю предложения до пятницы. Потом доделываю код.
1=basic, 2 =advanced, 3 =expert
5 level
Implosion - Earth Magic 3, Scholar 3;
Fire Elemental - Fire Magic 3; Learning 3;
Air Elemental - Air Magic 3; Learning 3;
Earth Elemental - Earth Magic 3; Learning 3;
Water Elemental - Water Magic3; Learning 3;
Armageddon -Fire Magic 3; Mysticism 3;
Sacrifice - Scholar 3; Mysticism 3;
4 level
Resurrection - Earth Magic 3, First Aid 3;
Meteor Shower - Earth Magic 2, Fire Magic 2;
Animate Dead - Necromancy 3, First Aid 3;
Prayer - Leadership 3; Luck 3;
Clone - Scholar 2; Learning 2;
Inferno - Fire Magic 2; Offence 2;
Fire Shield - Fire Magic 2; Armorer 2;
Berserk - Fire Magic 2; Leadership 2;
Magic Mirror - Mysticism 1; Resistance 2;
Chain Ligtning - Air Magic 3; Sorcery 3;
3 level
Sorrow - Leadership 1; Resistance 1;
Protect from Earth - Armorer 2; Resistance 2;
Force Field -Earth Magic 1; Armorer 1;
Earthquake - Earth Magic 2;
Teleport - Air Magic 2;
Mirth - Water Magic 2; Luck 2;
Frost Ring - Water Magic 1;
Forgetfulness - Resistance 1; Archery 1;
Slayer - Luck 3; Offence 3;
Frenzy - Offence 2; Leadership 1;
Fireball - Fire Magic 1; Ballistics 1;
Hypnotize - Intelligence 1; Sorcery 2;
Destroy Undead - Armorer 1; Sorcery 1;
Counterstrike - Armorer 3; Armorer 3;
Anti-magic - Resistance 2;
2 level
Slow - Earth Magic 1;Logistics 1;
Death Ripple - Necromancy 2; Sorcery 1;
Ice Bolt - Water Magic 1; Artillery 1;
Cure - First Aid 1;
Misfortune - Luck 1;
Land Mine - Scouting 1;
Fire Wall - Fire Magic 1;
Blind - Eagle Eye 1;
Lightning Bolt - Artillery 1; Air Magic 1;
Fortune - Luck 1;
Disrupting Ray - Sorcery 1;
1 Level
Stone Skin - Armorer 1; Earth Magic 1;
Shield -Armorer 1;
QuickSand - Scouting 1;
Weakness - Sorcery 1;
Remove Obstacle - Intelligence 1;
Protect from water - Water magic 1; Resistance 1;
Dispel - First Aid 1;
Bless - Leadership 1;
Protect from fire - Fire Magic 1; Resistance 1;
Curse - Mysticism 1;
Bloodlust - Offence 1;
Protect from air - Air Magic 1; Resistance 1;
Precision - Archery 1;
Magic Arrow - Archery 1; Air Magic 1;
Haste - Logistics 1;
Air Shield - Archery 1; Armorer 1;
Docent Picolan
30 Sep 2007, 13:35
Цитата
Fire Shield - Fire Magic 2; Offence 2;
а оффенс зачем? это ведь усиление атаки. какое отношение это имеет огненному щиту? лучше sorcery или оставить только одну магию огня...
Д'якон
30 Sep 2007, 17:50
I'm sorry. Now better?
Docent Picolan
30 Sep 2007, 18:05
yes. так ещё куда не шло
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.