Перейти к контенту

Скриптование


Svoboда

Рекомендуемые сообщения

Мне нужно написать таймер, и сохранить его в pstor или пакет, пока не выходит, не подскажете рациональный способ?

 

 

local time = time_global()
function my_timer()
local delay = 300
if time_global()>time+delay*1000 then
 time=time_global()
 return true
   end
end
packet:w_u32(delay)
delay = reader:r_u32()

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Условно говоря таймер мне нужен для, ну допустим, "умер один сталкер, запустили таймер на час игрового времени, и через час умер второй". Соответственно в этот час мы можем сохраниться/загрузиться.

 

Спасибо за пояснения, но(!) ранее в соседней теме критиковали game.time(), и высказывались в пользу game.get_game_time(). Как перевести таймер на метод game.get_game_time()? Просто хотелось бы сразу сделать как надо.

Изменено пользователем Карлан

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

ув. @Artos, использую Ваши таймеры сейчас, и ловлю небольшую проблему, а именно - действие происходит очень быстро, мне нужно что-бы действие воспроизводилось циклично пока не выполнятся мои условия, и в начало функции ставлю:

if start_real_timer(3) then

Условия выполняются явно быстрее, чем 3 секунды.

Судя по мануалу я возможно не правильно делаю, возможно нужно вот так:
 

start_real_timer(3):set_name("my_timer_name")
if not timer_exists("my_timer_name") then
Изменено пользователем Карлан

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@Artos, а как им воспользоватся при таком запросе:

Если прошло 3 секунды то
 выполняем функцию
завершить

Я понимаю, что при таком запросе ему надо выписать экшн вторым аргументом, но мне в данном случае не подходит, т.к. функции срабатывают по свои флагам, и их удобнее загнать именно под вышеприведенное условие... Если никак не получится, то тогда уже перепишу код под твои таймеры, это тоже не сложно, просто хотел узнать :)

 

Еще вопрос, таймер по умолчанию цикличен? Т.е. мне для своих нужд делать как-то так?

start_multi_timer(2*60, "my_file.my_func") --/ я так понял, что цикличны только мульти-таймеры

И что-то я не совсем понял, после выполнения всех моих условий таймер отключится, или так и будет крутится вечно?

 

А, по моему до меня дошло...сейчас проверю и отпишусь, чето туплю под вечер :)



start_real_timer(2, "my_file.my_func")

Мне нужно чтобы моя функция выполнялась каждые две секунды, взвожу такой таймер. Ничего почему-то не происходит. Тестировал свои функции на обычном time_global(), все как часы. Походу неправильно все таки как-то я их, таймеры, применяю... 

 

Можно конечно все на нем и оставить(time_global())... но не хочется.

Изменено пользователем Карлан

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Если твои функции требуют указания неких своих аргументов со своим порядком следования, то не сложно написать функцию отрабатываемую таймеров, в которой вызывается твоя с необходимым набором аргументов.

Именно так и сделал, даже вот код:

 

function my_update() --/ update
start_real_timer(2, "my_file.my_func1")
start_real_timer(2, "my_file.my_func2")
start_multi_timer(2, "my_file.my_func3", nil, true)
end

И ни одна из моих функций не выполняется, причем(еще раз укажу) с time_global() у меня все работает(все условия моих функций выполняются).

Изменено пользователем Карлан

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@*Shoker*, разумеется, я это все понимаю :) Твой флаг бесполезен, т.к. таймеру дается каждый раз новое имя.

 

@Artos, таймеры у меня работают(тестовый из bind_stalker по крайней мере), так что проблема явно не в модуле, и явно не в моих функциях. Пока я считаю, что проблема в моих руках, т.к. они модуль не так как-то используют... Ладно, пойду поковыряюсь, больше не буду засорять топик. 

 

Upd:

 

Да, да, сейчас дошло. Только все равно у меня мои функции не работают, чорт с ним, что-нибудь другое напишу.

Изменено пользователем Карлан

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Так, стоп, давайте по порядку. А то я запутался, если я и сейчас тупану, то хоть баньте(и посты потрите, если нужно).

 

1 Я установил таймеры и все работает нормально:

--/ Пример запуска таймера:
start_real_timer(15, nil, {tip = {self.object, "Text test_RT"}}, "RT_test") --/ 15 real-seconds + set name
--/<

это отрабатывается.

 

2 Я создал свой скрипт my_file. Написал туда следующее:

 

function t1()
news_manager.send_tip(db.actor, text, 0, "Hello", 10000)
end
local bStarted = false
function update() --/ update
if not bStarted then
start_multi_timer(1, "my_file.t1", nil, true)
 bStarted = true
 end
end

3 В update биндера актора написал следующее:

...
function actor_binder:update(delta)
object_binder.update(self, delta)

my_file.update()
-- DEBUG slowdown
...

И у меня нихрена не работает. По идее, как я понял, должен вылетать типс с текстом "Hello" каждую секунду, но у меня ничего не происходит.

 

 

 

 

Изменено пользователем Карлан

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Такой вопрос, есть строка вида(в конфиге):

items = medkit, 2, antirad, 3, kolbasa, 2

Как из нее получить строку вида:

string = "medkit(2),antirad(3),kolbasa(2)"

Доколе работал с таблицами, там делал так: формировал строку с рандомнымиитемами, потом формировал из строки таблицу,сохранял таблицу, потом загружал таблицу и разделял таблицу по сепаратору обратно в строку.Тут вроде операций поменьше должно быть... По сути я так думаю надо написать функцию с циклом и туда передавать нашу строку, т.е. перебирать строку с шагом в "1", проверять следующий итем строки, если это слово, то продолжаем, если цифра то ставим сепаратор и продолжаем... как-то вот так. Пока смутно представляю как сделать. Как вариант пробовать как обычно, получаем строку в виде массива и разбираем его с помощью explode по нужному сепаратору, меняя позиции для цифр с помощью string.sub.

Изменено пользователем Карлан

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Есть таблица вида:

local t = {{key = value}} --/ где value - boolean

Далее идет формирование строки

if t[i].key then
string = "1" --/ true
else
string = "2" --/ false
end

Так вот, при загрузке игры у меня происходит сброс этих value, и у меня все строки становятся равными "2".

 

Вопрос: как правильно сохранить/прочесть мое значение и подставить загруженное значение в мое условие при загрузке игры?

 

Разумеется всячески мусолил w_bool/r_bool, но за неимением навыков у меня что-то не получилось подставить значения в условия(но они сохранялись/загружались).

Изменено пользователем Карлан

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@sapsan, у меня таблица с подтаблицами, вроде:
 
 


local t = {
{key1=string, key2=number, key3=boolean, key4=boolean},
{key1=string, key2=number, key3=boolean, key4=boolean}
...
}

И вот из этой таблицы мне и надо сохранить ключи с булевыми значениями. Простая, как видишь, не подойдет.

 

Что-то не понял я твоего объяснения, можешь наглядно? Допустим функции сохранения/загрузки таблицы возьмем готовые из амк. (load_table/save_table)(только они вложенные массивы вроде не сохраняют, так что я совсем в ступоре :)). Мне бы только примерный алгоритм дальше сам допилю, я не понял по какому принципу должно идти сохранение. 

 

Как вариант в цикле брать ключи string и number каждой строки, в зависимости от этого формировать новый одномерный(!) массив из булевых значений, и с ним уже делать вышеописанные операции. Хреновый ход, может что попроще кто предложит.
 

Изменено пользователем Карлан

Поделиться этим сообщением


Ссылка на сообщение

@sapsan, извиняй, тупанул я, я же на модулях от Artos'а сижу. Если их видел, то вот мои функции:

 

function load_table(name)
local var = GetVar(name)
return table.decompress(var) 
end


function save_table(name, tbl)
SetVar(name, table.compress(tbl))
end

Я только смысла в таком сохранении не вижу, у меня строка строится динамически, а таблица у меня - константа, поэтому оперировать тут с таблицой глупо и бессмысленно. Значения видно сбрасываются при загрузке строки. Что-то я сам запутался.

Поделиться этим сообщением


Ссылка на сообщение

@*Shoker*, так я делал еще часа три назад, и результата нужного мне это не принесло :) К слову, это первое, что я пытался сделать. stringZ все хавал, сохранял и загружал. Пробовал сохранять и распарсенную таблицу, и ключи таблицы в цикле(как у тебя) и свою готовую строку...все эти потуги мне результата никакого не принесли.

 

Короче я сейчас понял, что я ничего не понял :) Я не понимаю как формируется моя строка при загрузке, не получается отловить это, видать умений у меня мало, и из этого, как следствие, не те методы применяю к перезаписи, то ли не так перезаписываю, то ли не то перезаписываю... сложно как-то все, придется немного ампутировать свой код, иного варианта пока не вижу.

  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение

@*Shoker*, вопрос задан некорректно и совершенно не ясно что нужно автору вопроса. То-ли он не управится с аргументом complex_mode, то-ли ему надо составить листинг/текст скриптом со скроллом, лично я вопроса не понял. Приведу свой пример для листинга составляемого скриптом(здесь у меня именно список, а не абзационный текст):

 

--/ расположение листинга
local list_wnd = CUIListWnd()
list_wnd:SetAutoDelete(true)
list_wnd:SetWindowName("list_window")
list_wnd:SetItemHeight(20)
list_wnd:Init(130, 230, 430, 400)
list_wnd:EnableScrollBar(true) --// показывать скролл-бар или нет
list_wnd:ShowSelectedItem(true)
self:Register(list_wnd)
self:AttachChild(list_wnd)

 

 

  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@Dennis_Chikin, ну очевидно же, что вот так:


local pObj =  particles_object(string*)
if pObj then
...
end

====================================================
Итак, не претендуя на гениальность представляю набросок функции получения различных конфиговых параметров предметов, функция полностью не дописана, пока работаю над этим, как допишу выложу полную версию:
 


 
--/ -----------------------------------------------------------------
--/ by Карлан
--/ Получение параметров объекта-итема
--// oObj - юзердата, секция или номер слота итема | ini - путь до конфига через двойной сплеш(\\)
--/ -----------------------------------------------------------------
function fGetItemParameters(oObj, ini) --/< параметр ini входит как заглушка багам несовпадения названий секций, иначе я не могу выпрямить руки пользователям данной функции 
	if ini then
		sini = ini_file(ini)
	end
	local gTbl = {} --// таблица с ключами-параметрами итема
	local oSection
	if oObj then
		--// на передачу таблицы с итемами ума не хватило сделать, т.к. в итоговую таблицу будут писаться значения последнего итема, а не всех
		if type(oObj) == 'userdata' then
		printf('userdata')
			gTbl.userdata = oObj --// только в этом случае есть юзердата #!#
			oSection = oObj:section()
		elseif type(oObj) == 'string' then
			printf('string')
			oSection = oObj
		
		elseif (type(oObj) == 'number' and (oObl > 0 and oObj <= 10)) then
			printf('number')
			oSection = db.actor:item_in_slot(oObj):section()
		end
	end
	if oSection and sini:section_exist(oSection) then --// на всякий случай
		--// Базовые параметры для всех типов итемов
		gTbl.section 			= oSection 
		gTbl.class 				= sini:r_string(oSection, "class") or ""
		gTbl.clsid 				= sini:r_clsid(oSection, "class") or nil
		gTbl.visual 			= sini:r_string(oSection, "visual") or ""
		gTbl.inv_name 			= sini:r_string(oSection, "inv_name") or ""
		gTbl.real_name 			= game.translate_string(sini:r_string(oSection, "inv_name")) or ""
		gTbl.inv_name_short 	= sini:r_string(oSection, "inv_name_short") or ""
		gTbl.real_name_short 	= game.translate_string(sini:r_string(oSection, "inv_name_short")) or ""
		gTbl.description 		= sini:r_string(oSection, "description") or ""
		gTbl.real_description 	= game.translate_string(sini:r_string(oSection, "description")) or ""
		gTbl.weight 			= sini:r_float(oSection, "inv_weight") or 0
		gTbl.cost 				= sini:r_u32(oSection, "cost") or 0 --/ (cost > 0 or 4294967296)
		gTbl.icon_width 		= sini:r_u32(oSection, "inv_grid_width") or 0 
		gTbl.icon_height 		= sini:r_u32(oSection, "inv_grid_height") or 0 
		gTbl.icon_x 			= sini:r_u32(oSection, "inv_grid_x") or 0 
		gTbl.icon_y 			= sini:r_u32(oSection, "inv_grid_y") or 0 
		--// Индивидуальные параметры
		if string.find(oSection,"ammo_") then --// вот для таких случаев и нужна заглушка
			gTbl.box_size 				= sini:r_u32(oSection, "box_size") or 0
			gTbl.explosive 				= sini:r_string(oSection, "explosive") or ""
			gTbl.tracer 				= sini:r_string(oSection, "tracer") or ""
			if gTbl.explosive == "on" then
				local explode_particles = string.split(sini:r_string(oSection, "explode_particles"), ",", false)
				for i=1, #explode_particles do
					gTbl["explode_particles"..i] = explode_particles[i]
				end
			end
			if gTbl.tracer == "on" then
				gTbl.tracers_color_id 	= sini:r_u32(oSection, "tracers_color_ID") or 0 
			end
		end
		if string.find(oSection,"outfit") then
			gTbl.actor_visual 			= sini:r_string(oSection, "actor_visual") or ""
			gTbl.full_icon_name 		= sini:r_string(oSection, "full_icon_name") or ""
			local full_scale_icon 		= string.split(sini:r_string(oSection, "full_scale_icon"), ",", false) --// вот этот параметр нахер нужен я не знаю, но сделаю на всякий случай
			gTbl.full_icon_name_x 		= tonumber(full_scale_icon[1]) or 0	
			gTbl.full_icon_name_y 		= tonumber(full_scale_icon[2]) or 0
			gTbl.nightvision_sect 		= sini:r_string(oSection, "nightvision_sect") or "" 
			gTbl.bones_protection 		= sini:r_string(oSection, "bones_koeff_protection") or "" 
			--// protection and immunity
			local pai = {"burn", "strike", "shock", "wound", "radiation", "telepatic", "chemical_burn", "explosion", "fire_wound"}
			for i=1,#pai do
				gTbl[i.."_protection"] 	= sini:r_float(oSection, i.."_protection") or 0
				gTbl[i.."_immunity"] 	= sini:r_float(oSection, i.."_immunity") or 0
			end
		end
		if string.find(oSection,"wpn_") then
		end
	end
	return gTbl
end

 


Внимание! Для работы функции требуется lua_extension.script.

Не знаю кому как, но мне гораздо удобнее получать параметры вот так:

local ItemParams = GetItemParameters(obj)
local cost = ItemParams.cost

,нежели вот так:

local cost = system_ini():r_u32(obj:section(), "cost")

====================================================
Критика и предложения приветствуются! Я просто не знаю, может так и вовсе неэффективно/медленно работает, или еще что, я пока не замерял.

Изменено пользователем Карлан
  • Нравится 2

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@*Shoker*, да да, я чето блин загрузился под ночь, тоже думал написать функцию как ты предложил, только не знал как передавать тип параметра, точно, можно же так как у тебя, тогда да, мой вариант хромает. Но все же я его оставлю, иногда бывает нужно несколько параметров скопом получить, тут писать кучу строк лень. Завтра я тогда доделаю и свой вариант и немного под себя подправлю твой, и выложу два кода, для получения всех параметров - мой, и для получения одного-двух параметров - твой. :) Кстати я сейчас понял как в свой вариант засунуть на место oObj таблицу с итемами, завтра все реализую, и выложу, спасибо за альтернативные варианты. 

 

Из соображений оптимизации кода лучше все параметры считывать единожды когда нужно, разумеется не сохраняя в сейв :)

Изменено пользователем Карлан
  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

@*Shoker*, как заказывал, теперь можно получать все параметры скопом, можно получить один параметр, и есть флаг получения спецпараметров(например box_size  и иже с ним для патронов). Парсинг таблицы с итемами я не сделал, т.к. мне лень переписывать всю функцию :)




--/ -----------------------------------------------------------------
--// by Карлан
--/ Получение параметров объекта-итема
--// oObj - юзердата, секция или номер слота итема | ini - путь до конфига через двойной сплеш(\\)
--/ -----------------------------------------------------------------
function fGetItemParameters(oObj, sValue, sValue_param, bSpecParam, ini) --/< параметр ini входит как заглушка багам несовпадения названий секций, иначе я не могу выпрямить руки пользователям данной функции 
	if ini then
		sini = ini_file(ini)
	end
	if not bSpecParam then
		bSpecParam = false
	end
	local gTbl = {} --// таблица с ключами-параметрами итема
	local gTbl_value = {} --// таблица с параметрами ключа строки нескольких параметров
	local oSection
	if oObj then
		--// на передачу таблицы с итемами ума не хватило сделать, т.к. в итоговую таблицу будут писаться значения последнего итема, а не всех
		if type(oObj) == 'userdata' then
			if not sValue then gTbl.userdata = oObj end--// только в этом случае есть юзердата #!#
			oSection = oObj:section()
		elseif type(oObj) == 'string' then
			oSection = oObj
		elseif (type(oObj) == 'number' and (oObl > 0 and oObj <= 10)) then
			oSection = db.actor:item_in_slot(oObj):section()
		end
	end

	if oSection and sini:section_exist(oSection) and not(sValue and sValue_param) then --// на всякий случай
		--// Базовые параметры для всех типов итемов
		gTbl.section 			= oSection 
		gTbl.class 				= sini:r_string(oSection, "class") or ""
		gTbl.clsid 				= sini:r_clsid(oSection, "class") or nil
		gTbl.visual 			= sini:r_string(oSection, "visual") or ""
		gTbl.inv_name 			= sini:r_string(oSection, "inv_name") or ""
		gTbl.real_name 			= game.translate_string(sini:r_string(oSection, "inv_name")) or ""
		gTbl.inv_name_short 	= sini:r_string(oSection, "inv_name_short") or ""
		gTbl.real_name_short 	= game.translate_string(sini:r_string(oSection, "inv_name_short")) or ""
		gTbl.description 		= sini:r_string(oSection, "description") or ""
		gTbl.real_description 	= game.translate_string(sini:r_string(oSection, "description")) or ""
		gTbl.weight 			= sini:r_float(oSection, "inv_weight") or 0
		gTbl.cost 				= sini:r_u32(oSection, "cost") or 0 --/ (cost > 0 or 4294967296)
		gTbl.icon_width 		= sini:r_u32(oSection, "inv_grid_width") or 0 
		gTbl.icon_height 		= sini:r_u32(oSection, "inv_grid_height") or 0 
		gTbl.icon_x 			= sini:r_u32(oSection, "inv_grid_x") or 0 
		gTbl.icon_y 			= sini:r_u32(oSection, "inv_grid_y") or 0 
		--// Индивидуальные параметры
		if bSpecParam then
			if string.find(oSection,"ammo_") then --// вот для таких случаев и нужна заглушка
				gTbl.box_size 				= sini:r_u32(oSection, "box_size") or 0
				gTbl.explosive 				= sini:r_string(oSection, "explosive") or ""
				gTbl.tracer 				= sini:r_string(oSection, "tracer") or ""
				if gTbl.explosive == "on" then
					local explode_particles = string.split(sini:r_string(oSection, "explode_particles"), ",", false)
					for i=1, #explode_particles do
						gTbl["explode_particles"..i] = explode_particles[i]
					end
				end
				if gTbl.tracer == "on" then
					gTbl.tracers_color_id 	= sini:r_u32(oSection, "tracers_color_ID") or 0 
				end
			end
			if string.find(oSection,"outfit") then
				gTbl.actor_visual 			= sini:r_string(oSection, "actor_visual") or ""
				gTbl.full_icon_name 		= sini:r_string(oSection, "full_icon_name") or ""
				local full_scale_icon 		= string.split(sini:r_string(oSection, "full_scale_icon"), ",", false) --// вот этот параметр нахер нужен я не знаю, но сделаю на всякий случай
				gTbl.full_icon_name_x 		= tonumber(full_scale_icon[1]) or 0	
				gTbl.full_icon_name_y 		= tonumber(full_scale_icon[2]) or 0
				gTbl.nightvision_sect 		= sini:r_string(oSection, "nightvision_sect") or "" 
				gTbl.bones_protection 		= sini:r_string(oSection, "bones_koeff_protection") or "" 
				--// protection and immunity
				local pai = {"burn", "strike", "shock", "wound", "radiation", "telepatic", "chemical_burn", "explosion", "fire_wound"}
				for i=1,#pai do
					gTbl[i.."_protection"] 	= sini:r_float(oSection, i.."_protection") or 0
					gTbl[i.."_immunity"] 	= sini:r_float(oSection, i.."_immunity") or 0
				end
			end
			if string.find(oSection,"wpn_") then
			end
		end
	return gTbl
	--// Все не нужны
	elseif (oSection and sini:section_exist(oSection)) and (sValue and sValue_param and type(sValue) == 'string' and type(sValue_param) == 'string') then
		if sValue_param ~= "table" then
			if sValue_param == "float" then  
				sValue = sini:r_float(oSection, sValue)
			end			
			if sValue_param == "string" then  
				sValue = sini:r_string(oSection, sValue)
			end			
			if sValue_param == "string_wq" then  
				sValue = sini:r_string_wq(oSection, sValue)
			end	 
			if sValue_param == "num" then  
				sValue = sini:r_s32(oSection, sValue)
			end	
			if sValue_param == "pnum" then  
				sValue = sini:r_u32(oSection, sValue)
			end	
			if sValue_param == "bool" then  
				sValue = sini:r_bool(oSection, sValue)
			end	
			if sValue_param == "vector" then  
				sValue = sini:r_vector(oSection, sValue)
			end
			return sValue
		else 
			sValue = string.split(sini:r_string(oSection, sValue), ",", false)
				for i=1, #sValue do
					gTbl_value["sValue_"..i] = sValue[i]
				end
			return gTbl_value
		end
	end
end
 

 


 
Примеры вызовов:
 

GetItemParameters("novice_outfit") --// получить базовые параметры 
GetItemParameters("novice_outfit", nil, nil, true) --// получить все параметры
GetItemParameters("novice_outfit", nil, nil, true, "misc\\outfit.ltx") --// получить все параметры из указанного файла
GetItemParameters("novice_outfit", "cost", "pnum", false, "misc\\outfit.ltx") --// получить указанный параметр из нужной секции определенного файла

 


Как дойдут руки, перепишу функцию, чтобы можно было таблицей итемы загонять и получать для них скопом все секции, так же есть в планах сделать вызов типа:

local ItemParams = GetItemParameters({["bandage"] = "cost, weight", ["medkit"] = "inv_name, real_name" })

Просто, но надо все переписывать :(

P.S. для считывания всех параметров, разумеется, можно было использовать r_line, но он считывает все в алфавитном порядке, и не удобно будет далее работать с параметрами, или я чего-то не понял и нагородил индусский код.

Изменено пользователем Карлан

Поделиться этим сообщением


Ссылка на сообщение

 

 


конечно, если по этому параметру на самом деле лежит число, то надо будет дополнительно перевести его в числовой тип.

 

Это мне и не давало написать нормальную функцию, сейчас тоже до этого додумался и переделал функцию по другому, получилось нечто подобие твоей, гораздо экономичнее(по строкам) и удобнее. И да, в строке у loadstring скобки писать не нужно, и используется она вместе с assert, что у тебя тоже не указано. Свои коды более не выкладываю :) За сим предлагаю закрыть данный вопрос.

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

 

P.S. И где сейчас можно найти актуальную версию m_netpk?

 

 

 

У меня от 9 октября, вроде последнее.

 

obj = level.object_by_id(k)

Хрен ты угадал, в момент спавна нельзя его так получить. obj в твоем случае серверный - да, и править его тока нет пакетами, есть еще одна функция, с которой можно работать, глянь в справочнике.

 

Если ты говоришь что дофига таких модов, то че тебе мешает их использовать в своих целях? У меня скриптом проваливаются тоже(книги всякие спавнил), в результате забил, спавнил через acdc. Тебе религия что-ли не позволяет ей пользоваться, или че, я не понимаю вас... Спавн скриптом хорош, но не в этих случаях.

Изменено пользователем Карлан
  • Не нравится 1

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Нифига у меня нвоый гулаг создать не получается, 4 раза пересоздавал, вылетал все с той же ошибкой. Кому не лень сделайте гулаг на эскейпе для людей и поделитесь. Для монстров у меня все гулаги работают, как ни странно.

Изменено пользователем Карлан
  • Не нравится 1

Поделиться этим сообщением


Ссылка на сообщение

 

например, ковырнув нет-пакет исходной пачки.

 

 

Весьма изощренный метод, достаточно бокс сайз прочесть из секции конфига патронов.

 

@AndreySol, а чем должен объект каунт оправдываться? Мне просто интересно.  :) Другой базар, что итерация работает быстрее, и все нормальные люди всегда ее юзают.

@Dennis_Chikin, используя объект каунт нужно перебирать от нуля, а не от единицы. ;)

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

AMK-Team.ru

×
×
  • Создать...