Перейти к содержанию

Сообщения от Скрипты

Аватар пользователя
13 лет назад
ну, я немного неправильно написал. Я имел ввиду, что всех построек. Т.е 1 уровня вообще. Хотя, собственно говоря, вышеуказанная функция все-равно пригодилась бы, и пришлось бы спрашивать отдельно. Так что, все отлично =)
Аватар пользователя
13 лет назад
давно интересно было:
-А как поведет себя ИИ, если он наткнется на объект/триггер с message/question боксами и выбором ответа, например, после которого будет наступать схватка? Я все время делаю в данном случае проверку на текущего игрока, но вообще...?
В ответ пользователю Heroist
Аватар пользователя
13 лет назад
Какой бы месадж бокс не появлялся, всё равно он будет показан игроку-человеку. Ну, а бой будет запускаться по-обычному.
Аватар пользователя
13 лет назад
т.е все эти боксы будут адресованы человеку? А если игроков несколько, то всем? Хм...печально. Я думал, можно обойтись без проверки...
Аватар пользователя
13 лет назад
Есть ли возможность вырезать элементы массива с уменьшением длины массива на количество вырезанных элементов?
В ответ пользователю Dyrman
Аватар пользователя
13 лет назад
Можно так
function cut(array, index)
local ar
for i, e in array do
if i ~= index then
ar= e
end
end
return ar
end
например, операция mass=cut(mass, 0) удалит элемент с индексом 0 и функция length для этого массива даст число на 1 меньше.
В ответ пользователю RedHeavenHero
Аватар пользователя
13 лет назад
RedHeavenHero
Можно так
function cut(array, index)
local ar
for i, e in array do
if i ~= index then
ar= e
end
end
return ar
end

Это же не то: из старого элемент не удаляется .
В ответ пользователю Dyrman
Аватар пользователя
13 лет назад
Вот такая прокатит
function cut(array, index)
local ar = {}
for i, e in array do
if i ~= index then
ar= e
end
end
return ar
end
mass=cut(mass, 0)
В ответ пользователю RedHeavenHero
Аватар пользователя
13 лет назад
RedHeavenHero
Вот такая прокатит
function cut(array, index)
local ar = {}
for i, e in array do
if i ~= index then
ar= e
end
end
return ar
end
mass=cut(mass, 0)
То есть стандартной нет? Перебор массива само по себе жрущее действо.
А если потом добавить элемент массива? Ручками писать сдвиг? )))
В ответ пользователю Dyrman
Аватар пользователя
13 лет назад
Стандартной нет.
length кстати тоже нестандартная
function length(array)
local count = 0
for index, element in array do
count = count + 1
end
return count
end
так она определена в common.lua
А если потом добавить элемент массива? Ручками писать сдвиг? )))
Зачем?
В ответ пользователю RedHeavenHero
Аватар пользователя
13 лет назад
RedHeavenHero

Зачем?
Ну тип такого:
function add(array, index, change)
local ar = {}
local f = 0;
for i, e in array do
if i == index then
ar= change;
f = 1;
end
if f == 1 then
ar[i+1]= e;
else
ar= e;
end;
end
return ar
end


Добавлено через 4 минуты
RedHeavenHero
Стандартной нет.
Печально :( Ручками то написать можно что угодно, но это уже не то...
В ответ пользователю Dyrman
Аватар пользователя
13 лет назад
Dyrman
Ну тип такого:
function add(array, index, change)
local ar = {}
local f = 0;
for i, e in array do
if i == index then
ar= change;
f = 1;
end
if f == 1 then
ar[i+1]= e;
else
ar= e;
end;
end
return ar
end
То есть нужен массив, в котором все индексы - целые числа, отличающиеся друг от друга на 1, и можно было вставлять новые элементы между другими и удалять старые со сдвигом?
В ответ пользователю RedHeavenHero
Аватар пользователя
13 лет назад
RedHeavenHero
То есть нужен массив, в котором все индексы - целые числа, отличающиеся друг от друга на 1, и можно было вставлять новые элементы между другими и удалять старые со сдвигом?
Верно. Но это и самому несложно написать, а вот была бы возможность использования мач\тэйбл или чего тама библиотеки бы .... :rolleyes:

Добавлено через 5 минут
А индекс можно задавать строковым?
Типа:
array = {"Chupa" = 0, "Lapa" = 2,"Nuba" = 0, "Roma" = 2}
В ответ пользователю Dyrman
Аватар пользователя
13 лет назад
Dyrman
Верно. Но это и самому несложно написать, а вот была бы возможность использования мач\тэйбл или чего тама библиотеки бы .... :rolleyes:

Добавлено через 5 минут
А индекс можно задавать строковым?
Можно, но только крайне нежелательно путать строки с числами, совать значения с индексами "0" и 0 в один массив. Строковый индекс можно задать двумя способами:
array["string"] = element
array.string = element
но во втором случае string должен соответствовать стандартам имён обычных переменных.

array = {["Chupa"] = 0, ["Lapa"] = 2, ["Nuba"] = 0, ["Roma"] = 2}
или
array = {Chupa = 0, Lapa = 2, Nuba = 0, Roma = 2}

Статистика

Приветствуем новейшего участника: recijeb