Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обучение ERM
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Страницы: 1, 2, 3, 4, 5
MasterOfPuppets
Цитата
^Представь себе процесс дебага или совместной работы с таким "скриптом" )

Да не, у меня просто мод без всяких "вкл/выкл". biggrin.gif ZSETUP01.TXT - чистый лист. А настройки берутся из файла настроек. Никаких багов нет.
Цитата
требуется z-переменная <32000.
...
Загнал в ERT статические переменные 1100-1104, и все работало ОК.

Малость не понял. А почему не должно было работать? Или в одном файле находились ERT 1100-1104 и >1999? Я так делал, но баги, хоть и не сразу, но дают о себе знать. yes.gif
major
А что за баги/глюки, и когда они дают о себе знать? можно поподробнее?
MasterOfPuppets
Подробнее: есть у меня функция, задающая имена и биоргафии героям из ERT. Когда я ставил номера ERT 1000-1999, всё было в порядке. Когда перешёл на 200000-299999 - тоже всё было в порядке. Если же вставлял строки 1000-1999 в 200000-299999, или просто создавал строку 2000 - игра вроде бы нормально себя вела при одном запуске, но при следующих - длинная цепь малопонятных ошибок для каждого круга функции.
Вот. Также не работали подсказки, если был номер 2000. Правда, я пользовал HT:V, а не Т.
G.I.
Да, я имел в виду атаку ближайшего или случайного врага
Jelu
люди хелп! чёто не работает скрипт, даже не понимаю в чём проблема.
вот он:
VSE
!?CM0;
!!CM:I?y1;
!!HE-1:I?y2;
!!if&y1=8/y2>=10;
!!CM:R0;
!!IF:L^Укажите место^;
!!UN:R5/1/41;
!?CM0;
!!CM:I?y3;
!!if&y3=37:;
!!CM:P?y4/?y5/?y6;
!!HE-1:P?y7/?y8/?y9;
!!UN:Iy7/y8/y9/45/4;
!!UN:Iy4/y5/y6/45/4;
!!en:;
MasterOfPuppets
Цитата
VSE

ZVSE

Ещё второго !!en не вижу. lupa.gif
Jelu
не в том дело,
интерпритатор пишет, что ошибка в
!?CM0;
!!CM:I?y1;
!!HE-1:I?y2;
!!if&y1=8/y2>=10;
!!CM:R0;

Добавлено ([mergetime]1244653575[/mergetime]):
там можно бесконечно порталы ставить, просто нажал на карту и всё mad.gif
Astaroth
Может тебе стоит с флагами помудрить

Если игрок выбрал заклинание, т.е. только собирается его применить, то флаг # присваеваешь на 1,
Как применил - то на 0

ZVSE

!?CM0;
!!CM:I?y1;
!!HE-1:I?y2;
!!if&y1=8/y2>=10;
!!CM:R0;
!!IF:L^Укажите место^;
!!UN:R5/1/41;
!!IF:V100/1;
!?CM0;
!!CM:I?y3;
!!if&y3=37/100:;
!!CM:P?y4/?y5/?y6;
!!HE-1:P?y7/?y8/?y9;
!!UN:Iy7/y8/y9/45/4;
!!UN:Iy4/y5/y6/45/4;
!!IF:V100/0;
!!en:;

Попробуй
Aleee
"!!if&y1=8/y2>=10;"

А какой у !!if синтаксис? Не обязательно ставить двоеточие
перед завершением строки?
asm
Цитата(Jelu @ 10 Jun 2009, 22:06)
не в том дело,
интерпритатор пишет, что ошибка в
!?CM0;
!!CM:I?y1;
!!HE-1:I?y2;
!!if&y1=8/y2>=10;
!!CM:R0;

Добавлено ([mergetime]1244653575[/mergetime]):
там можно бесконечно порталы ставить, просто нажал на карту и всё  mad.gif

Дак правильно он пишет
У тебя триггер новый начался, а
!!if&y1=8/y2>=10;
не закрыт, тебе же МОП написал

поставь перед !?CM0;
в нужное место фразу
!!en:;
Astaroth
Цитата
Дак правильно он пишет
У тебя триггер новый начался, а
!!if&y1=8/y2>=10;
не закрыт, тебе же МОП написал

поставь перед !?CM0;
в нужное место фразу
!!en:;


Гы! biggrin.gif Че т я эту ошибку не спалил... rolleyes.gif
MasterOfPuppets
Цитата
А какой у !!if синтаксис? Не обязательно ставить двоеточие
перед завершением строки?

Необязательно. Я уже писал об этом на форуме.
Phoenix - Mod
Обязательно. В доках по-крайней мере на это делается акцент. Да и вообще парсер ищет ":", а не найдя посчитает следующий ресивер подкомандой условия, в общем каша будет, хотя ошибки не выдастся.
MasterOfPuppets
В моём скрипте >60000 символов, везде и повсеместно двоеточия в конструкциях не пишу принципиально. А конструкции я использую дай бог...
Да и сам скрипт основан на глобальной функции примерно такого вида:

!!VR$Start$:S1;
!!FU@GLOBAL@: P;
!!VR$Start$:C2/1;
!!FU@GLOBAL@: P;

!?FU@GLOBAL@;
!!if&$Start$=1;
.......
!!en;
!!if&$Start$=2;
....
!!FU@GLOBAL[1]@: P;
!!en;

!?FU@GLOBAL[1]@;
!!if&$Start[1]$=1;
....
!!en;

Думаю, если бы существовала эта "каша", то в такой среде она бы варилась очень хорошо. А вот условия скрипта ВСЕГДА выполняются как положено.
DracoLich
Вы немного темой ошиблись не? sad.gif
Jelu
всё нормально, если с флагом.
Однако стрелка меняется на обычную сразу после нажатия на кнопку closedeyes.gif
FRAGMENT
народ помогите мне!
делаю мапу
подскажите как из моба зделать провидца???
ерм потихоньку учу
Docent Picolan
вам скорее в эту тему - http://forum.df2.ru/index.php?showtopic=54...iew=getlastpost
DracoLich
Недостаточно данных. Пожалуйста, вставьте диск "уточняю".
Poseidon
Народ помогите!!! Обажаю создавать карты,но одна проблема:не умею писать скрипты!!!! Пытался почитать предыдущие сообщения,но все равно не вникаю!!! banghead.gif Кто может помогите!!! Опешите поподробнее!!!! kap.gif
DracoLich
Цитата
Опешите
Уже опешил.
Где траблы?
Poseidon
На счет переменных!!! Не вникаю!!!
DracoLich
Русский хелп есть?
Poseidon
Нет.


Добавлено ([mergetime]1248893863[/mergetime]):
Где можно скачать?
sergroj
В подписи вышестоящего сообщения smile.gif
http://dracolich.narod.ru/
Shihad
Так, господа, как поставить всем существам активной стороны на поле боя сопротивление цепной молнии? Что-то не врубаюсь - просто на всех экспертную антимагию? Или есть какая-то точечная команда?
DracoLich
Надеваешь на героя-у-которого-должен-быть-иммунитет ожерелье антимолнии
Shihad
Тоже вариант. А это ожерелье флагами вообще можно заменить? Есть возможность поставить неуязвимость от определенного заклинания? Или проверять на применение и запрещать в момент применения?
feanor
Ну..можно попробовать всем существам на поле боя воткнуть линейку опыта с неуязвимостью (w) для молний (L)

"Дополнительный синтаксис: вы можете установить опыт, линию опыта и параметры опыта для любого существа в битве. Для этого используйте номер стека на поле боя с отрицательным знаком:
!!EA-1:… стек 0
!!EA-2:… стек 1

!!EA-42:… стек 41"
DracoLich
А если играем без опыта?
Ожерелье простейший выход, если герой не имеет на шее подобных ожерелью плюшек вроде антиберсерка и т.п. В таком случае придется перехватывать каст заклинания, и если молния, давать брелок, а после каста снимать.
Shihad
Смотри, есть такая ситуация - нужен юнит(А), который кастует на противника цепную молнию, причем красиво выглядело бы, чтоб молния начиналась от него. Соответственно, схема его работы представлялась так -
Проверка на дальность(есть противник не далее трех клеток)
При наведении на нашего А появляется курсор каста.
Всем нашим, кроме А, дается неуязвимость к молниям.
А кастует молнию на себя, при этом анимация повреждения заменяется анимацией атаки.
Здоровье А восстанавливается до первоначального.
Иммунитет от молний снимается.

Есть возможность сделать этакую пакость?
DracoLich
Вряд ли. Иммунитет к молниям просто перехватывает касты молний и выводит сообщение, а тут ты хочешь чтобы молния по твоим не прыгала. Где-то в UN:C было описание управления цепной молнией, мб через нее. Брелок не зашщитит от прыжков цепной молний. Алсо, даже не знаю, как ты будешь определеять дальность, бо геморра там.....
feanor
Для дальности major написал скрипт
Тамерлан
а можеш показать скрипт на дальность?
Shihad
А если !!MR:F использовать? Возможно его наложить на всех своих?
MasterOfPuppets
Цитата(feanor @ 05 Aug 2009, 16:30)
Для дальности major написал скрипт

Кстати, я об этом давно слышал, а вот найти этот скрипт major`а на форуме мне так и не удалось. Хотя, как пионер, просмотрел вроде ВСЕ его сообщения - за исключением тех, что в закрытых форумах.
Зато много других полезностей нашёл.

Скрипт нашёлся.
Phoenix - Mod
Я тут немного помозговал над алгоритмом:
Условие: дано две позиции клетки, найти расстояние.
1) Вычислим x и y клеток.
Код
x = Pos % 17;
y = Pos : 17;

2) Определяем кол-во шагов, необходимых, чтобы из точки (x1;y1) прибыть в (x2;y2)
На каждом шаге изменяем x1 и y1 в сторону x2 и y2 на 1, пока обе координаты не сравняются:

Код
dx:=x2-x1;
IF (dx > 0) THEN
 dx:=1;
ELSE dx:=-1;

dy:=y2-y1;
IF (dy > 0) THEN
 dy:=1;
ELSE dy:=-1;

Steps:=0; // кол-во шагов

WHILE (x1<>x2) OR (y1<>y2) DO
 IF (x1 <> x2) THEN
   x1:=x1+dx;
 IF (y1 <> y2) THEN
   y1:=y1+dy;
 Steps:=Steps+1;
END WHILE;
Phoenix - Mod
Альтернативный вариант:
Код
x1:=Pos1 % 17;
y1:=Pos1 : 17;
x2:=Pos2 % 17;
y2:=Pos2 : 17;
dx:=abs(x2-x1);
dy:=abs(y2-y1);
RETURN dx+dy;
sergroj
Альтернативный вариант неверный. Пример - dx=1, dy=2 => Result должен быть 2.
Я тоже делал:
Код
ZVSE
_WARNING_#1=IMPORTANT! This file is not in a plain text format. NEVER use any editor except ERM_S for making any kind of changes!
ERMS_PoweredBy=ERM Scripter v. 2004.8.11.911
ERMS_ScriptDate=31.8(August).2008

_DECLARATION_FU10: Battlefield position <—> Coordinates = (Position, X, Y)
* Converts battlefield position to (X = column, Y = row), and vice versa.
* The grid in Erm Help for BF receiver will help you understand how this works.
* X coordinate is multiplied by two. This is done because X positions may defer
* by 0.5, so if unit is placed at the beginning of the first line his X will be
* a half of hex greater than X coordinate of unit standing on the second line.
* Params:
* x1 = Battlefield position
* x2 = X coordinate
* x3 = Y coordinate
* Call in one of the following ways:
* ! !FU10:Pv1/?v2/?v3;  will give you coordinates of v1 position
* ! !FU10:P?v1/v2/v3;  will give you position with coordinates v2, v3
* Instaed of v1,v2,v3 there can be any variables
* If parameters are invalid, the result is -1
* Examples:
* ! !FU10:P18/?v1/?v2;  [v1 will be 2, v2 will be 1]
* ! !FU10:P35/?v1/?v2;  [v1 will be 3, v2 will be 2]
* ! !FU10:P?v1/2/1;  [v1 will be 18]
* ! !FU10:P?v1/2/2;  [v1 will be -1, because X is between two hexes ]
* By GrayFace aka sergroj

!?FU10;
* Get position from coordinates:
!!VRy1:Sx1; [save x1]
!!VRy2:Sx3;
!!VRy2|x3>10/x2<0/x2>33:S-1;
!!VRy3&y2>=0:Sx2 +x3 &1;
!!VRy2&y2>=0/y3=0:S-1;
!!VRy3&y2>=0:Sx2 :2;
!!VRx1&y2>=0:Sy2 *17 +y3;
!!VRx1&y2<0:S-1;

* Get coordinates of position:
!!VRy1&y1>186:S-1;
!!VRx2&y1<0:S-1;
!!FU&y1<0:E;
!!VRy2:Sy1 :17;
!!VRy3:Sy1 %17;
!!VRy4:Sy2 +1 &1;
!!VRx2:Sy3 *2 +y4;
!!VRx3:Sy2;


_DECLARATION_FU11: Get distance between battlefield positions = (P1, P2, Result)
* Returns the number of hexes a creature will have to pass to move from one
* position to another, obstacles are ignored.
* x1 = Position 1
* x2 = Position 2
* x3 = Result. -1 if positions are invalid.
* By GrayFace aka sergroj

!?FU11;
!!VRv1:S-1;
!!FU10:Px1/?y3/?y4;
!!FU10:Px2/?y5/?y6;
!!FU|y3<0/y5<0:E;
!!VRy1&y3>=y5:Sy3 -y5;
!!VRy1&y3<y5:Sy5 -y3;
!!VRy2&y4>=y6:Sy4 -y6;
!!VRy2&y4<y6:Sy6 -y4;
* [y1 = X distance, y2 = Y distance]
!!VRy1&y2>=y1:S0;
!!VRy1&y1<>0:-y2;
!!VRy1::2;
!!VRv1:Sy1 +y2;



Цитата(Shihad @ 05 Aug 2009, 19:03)
Есть возможность сделать этакую пакость?

Попробуй в MR2 всем юнитам поставить неуязвимость, а в MR убирать повреждения основному юниту.
Phoenix - Mod
Альтернативный вариант 3, рождённый через муки ))):
Код
y1:=Pos1 DIV 17 * 2;
ax:=((y1 DIV 2) AND 1) XOR 1;
x1:=(Pos1 MOD 17) * 2 + ax;
y2:=Pos2 DIV 17 * 2;
ax:=((y2 DIV 2) AND 1) XOR 1;
x2:=(Pos2 MOD 17) * 2 + ax;
dx:=abs(x2-x1);
dy:=abs(y2-y1) DIV 2;
RESULT:=(dx+dy) DIV 2;


ERM-код альтер.варианта 3:
Код
!?FU@CalculateHexDistance@;
; PARAMS (HexSource, HexDest, ?Res)
!!VRy1:Sx1:17*2;
!!VRy5:Sy1:2&1X1;
!!VRy2:Sx1%17*2+y5;
!!VRy3:Sx2:17*2;
!!VRy5:Sy3:2&1X1;
!!VRy4:Sx2%17*2+y5;
!!VRy6:Sy4-y2;
!!VRy6&y6<0:*-1;
!!VRy7:Sy3-y1:2;
!!VRy7&y7<0:*-1;
!!VRx3:Sy6+y7:2;
sergroj
Все-равно неверно smile.gif Пример - dx = 0, dy = 2.
Phoenix - Mod
sergroj, а ты не сможешь получить таких dx, dy. Кинь пример в хекс-позициях.
sergroj
а, да, тогда dx = 0, dy = 4
01, 35
Phoenix - Mod
Ты насилуешь мой маленький алгоритм
ОК, потом будет альтер вариант 4, подумаю как сократить также.
Phoenix - Mod
Альтернативный алгоритм 4, написанный подробно и рождённый быть верным.

Клетки гексагонального поля можно представить в виде квадратов. Само поле можно представить как таблицу (набор строк и столбцов), каждый элемент которой имеет координаты "x" и "y". Самый первый элемент имеет координаты (0;0). Отличие такого поля от строгой таблицы в том, что нечётные строки в нём смещены на пол клетки вправо:



Наша первая задача - определить координаты x/y элемента таблицы с указанным порядковым номером. Говоря проще - координаты нужного квадратика, в котором в игре будет стоять монстрик.
Для строгой таблицы формулы следующие:
Код
х = ОстатокОтДеления (НомерКлетки : ДлинаСтроки)
у = ЦелаяЧастьОт (НомерКлетки : ДлинаСтроки)

Вычислим, например, координаты клетки №5.

Код
х = ОстатокОтДеления (5 : 3) = 2 (напомню, координаты считаются от нуля: 0, 1, 2).
у = ЦелаяЧастьОт (5 : 3) = 1


Отличие нашей нестрогой таблицы от строгой в том, что элементы нечётных строк сдвинуты на 0.5 клетки по оси "х" вправо. Поэтому необходимо проверить, является ли строка нечётной, и если да, то прибавить к координате "х" 0.5.

Код
ЕСЛИ ОстатокОтДеления (у : 2) = 0 ТО х:=х+0.5


Теперь мы можем вычислить строгие координаты любой клетки. Осталось определиться с алгоритмом вычисления расстояния между ними. Чисто математически мы можем найти разницу по модулю координат обоих клеток. Теперь нужно решить, как монстр из точки А будет двигаться в точку Б, например из Клетки(8) в Клетку(0). Вполне логично предположить, что он будет двигаться по y-координате, пока не дойдёт до линии цели, а потом пойдёт прямо по "х". Маршрут для нашего примера: 8->5->1->0. Очень важно заметить, что за один шаг по "у" координате монстр пройдёт пол шага по "х", при условии, что ему нужно двигаться по х.

Пример: монстр (путь это будет гном) хочет попасть из Клетки(7) в Клетку(0)

Расчитаем координаты клеток и найдём разницу по модулю оных в обоих случаях.

Код
Маршрут №1: Клетка(7) в Клетку (0)
х1 = (7 % 3) = 1 + 0.5 (нечётная строка) = 1.5.
у1 = (7 : 3) = 2.

х2 = (0 % 3) = 0 + 0.5 (нечётная строка) = 0.5.
у2 = (0 : 3) = 0.

дх = |х2-х1| = 1.
ду = |у2-у1| = 2.

Итак, по "х" расстояние до цели - 1 клетка, по "у" - две. Помните, я говорил, что за один шаг по "у" монстр пройдёт пол клетки по "х"? В итоге события происходят так:

Код
дх = 1
ду = 2
шаги = 0
1) Монстр делает шаг из (7) в (4)
ду - 1 = 1
дх - 0.5 = 0.5
шаги = 1
2) Монстр делает шаг из (4) в (0)
ду - 1 = 0
дх - 0.5 = 0
шаги = 2


Как видите, по "х"-у отдельно даже не пришлось идти, а расстояние до цели - два шага. Поэтому нарисовывается следующий алгоритм:

Код
дх:=дх-(ду:2)
ЕСЛИ дх < 0 То дх = 0
Шаги = дх + ду


Первая строчка понятна, шаг по "у" даёт нам пол клетки по "х". А что за условие? Дело в том, что пол клетки по "х" нужно не всегда. Посмотрите на клетки (7) и (1). "х"-координаты у них одинаковые, поэтому то, что мы движемся по "у" никак не влияет на финальное кол-во шагов. Математически проще подсчитать эффект, а потом проверить, не ушли ли мы в глубокий нуль. Если ушли, то исправляемся, а если нет, то монстр прошёл несколько клеток по вертикали и будет ещё несколько клеток двигаться по горизонтали.

Реализация алгоритма на ЕРМ с оптимизацией.
Код
!?FU@CalculateHexDistance@;
; PARAMS (HexSource, HexDest, ?Res)
!!VRy1:Sx1:17*2;
!!VRy5:Sy1:2&1X1;
!!VRy2:Sx1%17*2+y5;
!!VRy3:Sx2:17*2;
!!VRy5:Sy3:2&1X1;
!!VRy4:Sx2%17*2+y5;
!!VRy6:Sy4-y2;
!!VRy6&y6<0:*-1;
!!VRy7:Sy3-y1:2;
!!VRy7&y7<0:*-1;
!!VRy8:Sy7:2;
!!VRy6:-y8;
!!VRy6&y6<0:S0;
!!VRx3:Sy6+y7:2;
lisblackdancer
Срочно нужно плиз хелп!!!!! Народ!!! Я новичок, вчера вечером приступил у изучению erm. Но т.к. я программист по характеру (знаю Delphi на 80% примерно) и C++ немного, быстро обучился, но этого нигде не нашол::: то что мне нада:::
КАК РАЗМЕСТИТЬ СОБСТВЕННЫЙ ОБЪЕКТ НА КАРТЕ?
Подробнее:
Я выхожу с деревни, наступаю на Event, мне говорят трали-вали завал, назад пути нет. Как сделать так, чтоб в выбранной мной клетке появился объект камушек с вкладки Травяной местности (камушек размером 1x1)или кусок горы размером больше 1x1. Оч надо помогите плиз...

Добавлено ([mergetime]1250630859[/mergetime]):
ещо флаг: (числа взял наугад)
!!IF&2:M^Входи. Я ждал тебя.^; - мне нужно, чтобы после : стояло не M а действие к примеру !!HE.....

Добавлено ([mergetime]1250630921[/mergetime]):
и ещо скажите плиз ето всё срочно оч надо, и ещё скажите как добавить герою (мне) денег и ресурсов или отнять с помощью erm...
GhostManSD
>>!!IF&2:M^Входи. Я ждал тебя.^; - мне нужно, чтобы после : стояло не M а действие к примеру !!HE.....

!!IF&2:M^Текст...^; При флаге 2=истина показать сообщение
!!HE-1&2:T1/1/0/168/999; При том же условии вступить в битву с 999 горынычами XD

Добавить 5000 золота текущему игроку:
!!HE-1:O?v2; Запомнить владельца
!!OW:Rv2/6/?v16; Запомнить текущее количество золота
!!VRv16:+5000; Добавить к текущему количеству 5000
!!OW:Rv2/6/v16; Установить новое значение переменной с золотом
MasterOfPuppets
Цитата(lisblackdancer @ 19 Aug 2009, 00:28)
Я выхожу с деревни, наступаю на Event, мне говорят трали-вали завал, назад пути нет. Как сделать так, чтоб в выбранной мной клетке появился объект камушек с вкладки Травяной местности (камушек размером 1x1)или кусок горы размером больше 1x1. Оч надо помогите плиз...

Примерно:
!!TRx/y/l:T?y1/d/d/d/d/d/d/d;
!!UN:Ix/y/l/147/0/147/0/y1;
lisblackdancer
Цитата(GhostManSD @ 19 Aug 2009, 00:55)
>>!!IF&2:M^Входи. Я ждал тебя.^; - мне нужно, чтобы после : стояло не M а действие к примеру !!HE.....

!!IF&2:M^Текст...^; При флаге 2=истина показать сообщение
!!HE-1&2:T1/1/0/168/999; При том же условии вступить в битву с 999 горынычами XD

Мне нужно, чтобы после условия на флаг стояло действие отнимания у игрока всего хода !!HE-1:W0; и ещё именно для этого флага (только если он 0) удаляется обект (!!UN:O35/20/0/0;). Но я уже сделал всё по другому. Идёт проверка переменноу !?LE34/20/0&v2=0; и если она 0 тогда всё вышеперечисленное + становится 1, а если 1 тогда просто выводится сообщение типо ты тут уже бывал...

Добавлено ([mergetime]1250669190[/mergetime]):
Цитата(Master Of Puppets @ 19 Aug 2009, 02:47)
Примерно:
!!TRx/y/l:T?y1/d/d/d/d/d/d/d;
!!UN:Ix/y/l/147/0/147/0/y1;

Ура!!! Получилось!!! smile.gif Только плиз объясни поподробней ато я ничё не понял)) И ещё эта функция использует номер объекта, где взять таблицу таких объектов (как этот камень)...

Добавлено ([mergetime]1250669674[/mergetime]):
Цитата(GhostManSD @ 19 Aug 2009, 00:55)
Добавить 5000 золота текущему игроку:
!!HE-1:O?v2; Запомнить владельца
!!OW:Rv2/6/?v16; Запомнить текущее количество золота
!!VRv16:+5000; Добавить к текущему количеству 5000
!!OW:Rv2/6/v16; Установить новое значение переменной с золотом

То что жирным, это переменные? Могу я заменить v2 и v16 на v5 и v6? У меня просто уже некоторые переменные заняты...

Добавлено ([mergetime]1250669906[/mergetime]):
О заменил, всё заработало... Ещё вопросик: как зделать, что к примеру золото не просто даётся, а выводится сообщение с картинкой золота и написано "Спасибо, вот тержи вознаграждение за труд". То есть если просто написать то что вы здесь написали, золото даётся "тайком", незаметно и не выводится сообщение с картинкой золота. Мне нужно, чтобы крестьянин благодарил за вырубку пня 20 золотыми (уже всё зделал, осталось только сообщение с золотом)...
GhostManSD
!!TRx/y/l:T?y1/d/d/d/d/d/d/d;
Здесь мы запоминаем тип почвы в переменной y1.
!!UN:Ix/y/l/147/0/147/0/y1;
Поместить в позицию x/y/l объект типа 147 и подитпа 0, который не изменит свой вид. Объект будет помещён на почве с типом y1.

Переменные можешь заменить.
ERM-Help тебе в помощь!
Dracolich
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.