|
|
| |
Автор |
Сообщение |
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 16:57 GMT3 час. #1277534 |
Mehanik Yar
Или формулируй вопрос 'что нужно конкретно' или 'почему не получается' при выбранном способе.
Ты думаешь, что все что ты написал многим, кто может ответить, не известно? И не думаешь, что твои предполагалки, далеко НЕ описывают все возможные способы?
Правильно заданный вопрос экономит в первую очередь твое время!
ИМХО, ты задаешь вопрос:
"Как проверить в диалоге с НПС наличие у него некоторого предмета?"
Если так, то банальные (не раз тут мусолившиеся) коды тебе дадут желаемое:
my_script.Has_NPC_MyItem
function Has_NPC_MyItem(first_speaker,second_speaker)
return first_speaker:object("my_item") ~= nil --/ "my_item" - секция предмета
end
Остается подобрать нужную фазу диалога или заменить first_speaker =>second_speaker (при необходимости), иначе будет проверяться актор. |
отредактировал(а) Artos: 24-06-2010 17:28 GMT3 час.
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
| 24-06-2010 17:27 GMT3 час. #1277551 |
Спасиб! Все понял, дык и пример под носом валялся это сидору флешку принести. |
|
|
| 24-06-2010 17:29 GMT3 час. #1277552 |
|
|
|
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 17:31 GMT3 час. #1277554 |
Mehanik Yar
Вот поэтому и повторяю постоянно, что вначале нужно определиться ЧТО тебе требуется, затем 'сделать' алгоритм (блок-схема последовательности действий/проверок), после чего выбрать способ реализации и ... только потом писать/подбирать коды (которые могут быть и уже готовые)!
При подобном подходе вероятность 'попасть' с первого раза - велика.
Если же идти с конца - долбиться/тыкаться/переделывать можно ... о-о-очень долго.
Внимание!, в примере с Сидорычем и принесенной флешкой проверка идет актора, а не собеседника по диалогу! Но использовать можно, поменяв их местами (как уже пиал выше). |
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
Stalk15
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
| 24-06-2010 17:35 GMT3 час. #1277558 |
Что, ни кто не знает что ли, как спавнить в инвентарь НПС без определенного Id'а?:-G...
Вот, что у**5001c54314580bda8be6** end
end
end
end
end
end
[/code]
И "вызывная" есть(только работает, когда Id определен):
Нужно преобразовать 2 функцию, чтоб спавнила "Без Id'ному НПС", я подумал, но ни чего толкового не пришло в голову...Зная, что не смогу, все равно попробовал.:-).Вот, что получилось(не полностью - как дальше - не знаю):
Незнаю куда деть local tab_where = 006 - может просто стереть и аргумент tab_wherе убрать...Да и ваще, в правильную "сторону" я копаю...
Дальще не знаю, как делать.Знаю, что написал полную лажу, но старался:-)...Не подскажете, как дельше правильно сделать?Или вариант спавна неписю без определенного Id'а ни кому не известен? |
отредактировал(а) Stalk15: 24-06-2010 17:43 GMT3 час.
Новые фишки для сталкера(см. журнал) |
|
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 17:42 GMT3 час. #1277561 |
Stalk15: Да и ваще, в правильную "сторону" я копаю...
'Копать' нужно туда, куда ТЕБЕ нужно, а не пытаться 'подкапывать' нечто уже готовое, в надежде ... мож туда куда нужно выведет!
Нередко, вноь сделать - проще, чем перекапывать готовое, но мало подходящее.
Сфрмулируешь что же тебе нужно вообще, а не от конкретной функции - проще будет кому-то ответить.
( Может и я в очередной раз потрачу время ..., не все ж erlik'у париться с тобою. Уже жаль его. :-) ) |
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
| 24-06-2010 17:44 GMT3 час. #1277563 |
Stalk15
Не может НПС быть без id. Ты можешь не знать его, но он есть в любом случае :-). Для начала стоило сказать, НПС оффлайн или онлайн. |
|
|
Stalk15
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
| 24-06-2010 17:49 GMT3 час. #1277566 |
Artos
Сфрмулируешь что же тебе нужно вообще
Ну, вот я заспавнил НПС - создал его секцию, новый профиль, ну, и логику ...Мне пригодилось этому НПС заспавнить в инвентарь, например, пушку rg7(мне для квеста нужно, то есть я его убиваю и в его инвентарь спавнится rg7, следовательно при обыске я у него возьму rg7...Ну вот, сформулировал:-)
добавлено спустя 32 секунд
Darien Fx
Онлайн. |
отредактировал(а) Stalk15: 24-06-2010 17:49 GMT3 час.
Новые фишки для сталкера(см. журнал) |
|
| 24-06-2010 17:51 GMT3 час. #1277568 |
Люди, как узнать ид непися? |
Очень обидно, когда у тебя Stayr Aug A2 и Нано-костюм, а какой-то драный бандит снял тебя с ПМ в голову!!! |
|
Gun12
Посты: 773
Откуда: СССР
Возраст: 52
| 24-06-2010 17:55 GMT3 час. #1277571 |
Artos
Вариант :
[s**5001c54314580bda8be6**[/code] |
Не стань номинантом премии Дарвина. |
|
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 17:59 GMT3 час. #1277573 |
Stalk15
Да-а-а, с формулировкой у тебя ну оч.большие проблемы. Как ты себы сам то понимаешь?
Подсказки, которые могут навести на 'шальные' мысли:
1. При спавне непися ты уже можешь получить его ID.
Далеко искать не нужно, Взгляни на предыдущую страничку:
local soObj = alife():create("musnuk",vector():set(-220.73,-18.87,-151.811),34237,66)
Соответственно сразу же запомнив его ID = soObj.id - тебе не нужно будет его разыскивать ...
2. Если ты ищешь конкретного НПС, то всегда есть его отличительные признаки от других: имя, секция, визуал, ранг, ... сид, ...
Используй это, для определения его ID, если забыл запомнить или действительно не знаешь.
Gun12 |
отредактировал(а) Artos: 24-06-2010 18:21 GMT3 час.
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
| 24-06-2010 18:10 GMT3 час. #1277581 |
Всё правильно или**5001c54314580bda8be6**se)
end
end
end[/code] |
|
|
Gun12
Посты: 773
Откуда: СССР
Возраст: 52
| 24-06-2010 18:21 GMT3 час. #1277589 |
Artos
Забыл сказать, что, по моей задумке, первая функция напрямую не используется (несмотря на наш разговор). Ну вот захотелось мне так - и не могу с собой ничего поделать. Нравиться именно так, несмотря на тайминги и Ко...
Всё определяется и защищается во второй функции.
Ещё насчёт защиты. От дураков :
после
for i = 1, arg.n do
добавить
if type(arg[i+1]) ~= 'string' and type(arg[i+1]) ~= 'number' and type(arg[i+1]) ~= 'table' then return false end
и после
for k,v in pairs(arg) do
добавить
if type(k) ~= 'string' and type(k) ~= 'number' and type(v) ~= 'string' and type(v) ~= 'number' then return false end
---------------------------------------------------------------
Теперь наконец-то до конца понятна Ваша позиция. Чего-то сегодня туго доходит.
Надёжность - это без комментариев, но я согласен немного рискнуть ею ради эстетики.
------------------------------------------------------------------
Можно и вложить. Это ведь только сырой вариант.
А в общем - согласен. Не годится. Будем искать. |
отредактировал(а) Gun12: 24-06-2010 18:40 GMT3 час.
Не стань номинантом премии Дарвина. |
|
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 18:23 GMT3 час. #1277591 |
Gun12
Это тоже понятно и не требует оправданий/пояснений. :-)
Я же высказываю свою точку зрения и предложенная связка из трех/двух функций мною позиционируется как 'набор' кирпичиков, каждый из которых безопасен, автономен в использовании, и относительно оптимизирован.
У тебя же (ИМХО) получается и ограничение в применении и заточенность под некое конкретное/частно применение.
Тогда уже может уже иметь смысл вложить 1-ю функцию в качестве локальной во вторую, чтобы исключить некорректность ее автономного вызова ... :-) |
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
Stalk15
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
| 24-06-2010 18:33 GMT3 час. #1277595 |
Artos
Это вот так что ли спавнить м |
Новые фишки для сталкера(см. журнал) |
|
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 18:35 GMT3 час. #1277596 |
Николай ФеНиКс
А отформатировать скр |
отредактировал(а) Artos: 24-06-2010 18:52 GMT3 час.
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
| 24-06-2010 18:42 GMT3 час. #1277599 |
Artos
Разжевывать не надо, я сам понял к чему и поч |
отредактировал(а) Николай ФеНиКс: 24-06-2010 18:54 GMT3 час.
|
|
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 18:45 GMT3 час. #1277602 |
Николай ФеНиКс Artos: и объяснишь скрипту/иль нам, где ему 'npc' брать ...
еже как-то разжевать нужно?
И со |
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
Stalk15
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
| 24-06-2010 18:54 GMT3 час. #1277607 |
Artos
В твоем же приведенном куске - ID уже глобальной переменной становится. Тебе это нужно?
Нет.А как же тогда будет првильно? |
Новые фишки для сталкера(см. журнал) |
|
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 19:00 GMT3 час. #1277614 |
Stalk15
Эх ..., уже и смеяться/ругат |
отредактировал(а) Artos: 24-06-2010 19:09 GMT3 час.
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
| 24-06-2010 19:01 GMT3 час. #1277615 |
Artos
Ой ссори я не то скопипастил!
ща исправлю!
___________
а что ещё? я больше и не знаю зачем писать это...
хотя... |
отредактировал(а) Николай ФеНиКс: 24-06-2010 19:11 GMT3 час.
|
|
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 19:04 GMT3 час. #1277618 |
Николай ФеНиКс
Если ты еще десяток раз скопипастишь одно и тоже, даже не потрудившись дважды повторенное понять и исправить - 'вернее' твой "код" НЕ будет! 8-( |
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
| 24-06-2010 19:13 GMT3 час. #1277621 |
Вот теперь вроде всё но**5001c54314580bda8be6**nd
end
end
[/code] |
отредактировал(а) Николай ФеНиКс: 24-06-2010 19:40 GMT3 час.
|
|
Stalk15
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
| 24-06-2010 19:19 GMT3 час. #1277626 |
А что тогда в самой функции спавна вместо числа указыв**5001c54314580bda8be6**s.uni_spawn_mnogo_itemsov(tab_items,tab_where)
end[/code] |
Новые фишки для сталкера(см. журнал) |
|
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 19:30 GMT3 час. #1277633 |
Николай ФеНиКс
Прекрати гадать и выкладывая - проверь и подумай!
Во второй же строке 'local ipos = actor:position()' - откуда скрипт узнает про переменную 'actor' ???
Или ты уже где то в ко**5007c54314580bda8be6**"af_cristall_flower"},
{[1]="wpn_fn2000"},{[5]="ammo_5.56x45_ss190"},{[3]="bread"},
{[5]="medkit_army"}}
this.uni_spawn_mnogo_itemsov(tab_items,idMyNPC)
end[/code] |
отредактировал(а) Artos: 24-06-2010 20:00 GMT3 час.
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
| 24-06-2010 19:37 GMT3 час. #1277640 |
Artos
всё исправлено же Q8-| |
|
|
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 19:48 GMT3 час. #1277652 |
Николай ФеНиКс
Работат будет, но:
- см. мое замечание выше 'по сути'
- определив переменную 'actor' - продолжаешь использовать 'db.actor' - лень и спешка, батенька!
- насчет этого условия 'if not (item and item:section() == "fak") then' непонятно - но это тебе разбираться. что ты там и когда хочешь получить - нам неведомо.
- и я бы 'db.storage' насиловал, чем весь диапазон IDs |
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
| 24-06-2010 19:56 GMT3 час. #1277663 |
Artos
т.е.
вот так:
local actor = db.actor
local ipos = db.actor:position()
будет разумнее?;-)
_______________
Ясно=)
_______________
и я бы 'db.storage' насиловал, чем весь диапазон IDs
ссори но не знаком а чем лучше-то? |
отредактировал(а) Николай ФеНиКс: 24-06-2010 20:06 GMT3 час.
|
|
Artos
Посты: 4176
Откуда:
Возраст: 65
| 24-06-2010 20:04 GMT3 час. #1277675 |
Николай ФеНиКс
Погадальщик ты наш ... :-)
Если один раз используешь db.actor - то можно и так.
Если больше - то проще же один раз определить 'actor = db.actor' и далее использовать 'actor'.
Ты же тратишься и на новую переменную и продолжаешь мусолить массив 'db'.
Разумнее или так или иначе, но не вместе!
Что быстрее и проще перепроверить: диапазон ids = 1...65535 или массив (db.storage) из кол-ва реально имеющихся объектов на одной текущей локации (что на порядок и более меньше)? |
"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени |
|
| 24-06-2010 20:11 GMT3 час. #1277679 |
Ясно=), но не совсем... а как использовать в дальнейшем actor?
и как использовать db.storage?
так:
for i= db.storage do
В db storage функцией не является... вроде.
___ убей если я туплю:-G
или так:
for k,v in pairs(db.storage) do
local obj = level.object_by_id( k )
?? |
|
|
Эта тема закрыта, публикация новых сообщений недоступна.
| | |
|
| |