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

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


Svoboда

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

@Simonov50, следует проверять наличие самого модуля в глобальной таблице, без этой проверки он сразу будет искать поле в твоем модуле, которого не существует в принципе, поэтому и происходит вылет.

 

Например можно вот так:

if module and module.func and type(module.func) == 'function' then

Или лучше:

if _G[module] and _G[module].func and type(_G[module].func) == 'function' then

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


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

@Zander_driver, тем не менее ты спавнишь все равно по секции, а не модель напрямую. А уже с одной секцией можно сделать технический объект практически на любом классе "для посмотреть" на котором будешь визуал объекта менять по щелчку. Так же можно создать список таких объектов на разных классах, что бы смотреть поведение разных моделей с разной логикой например, которые ты делал под разные нужды (читай - классы).

 

Так что ответ все же - нельзя.

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


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

@AndrewMor, как-то так лучше сделать:

function take_money(obj)
if obj:section() == 'money_500' then
alife():release(alife:object(obj.fov and obj:id() or obj.id))
db.actor:give_money(500)
news_manager.send_tip(db.actor, "Получено 500 рублей.", nil, nil, 10000)
end
end

При желании рандомизировать, циклы тут точно не нужны, лишняя нагрузка.

  • Спасибо 1
  • Согласен 1

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


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

@Dennis_Chikin, лучше на обретение. Какая разница откуда ты их получил если алгоритм для всего один и тот же? Будь-то труп, тайник или любой другой способ.

  • Согласен 1

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


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

@AndrewMor, зачем ты спрашиваешь? Я тебе сказал как нужно сделать, но ты упорно продолжаешь делать по своему. Ты понимаешь как работает коллбек? В общем, как говорится, "если не можешь - значит не нужно"(с).

  • Согласен 1

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


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

, @Zander_driver, мне одному кажется что ему просто хит коллбек нужен?

 

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

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

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


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

 

 

оказывается я не умею пользоваться string.find

Дык матчасть жи, gmatch тут самое оно, да, если-бы тебе просто поиск был нужен то gfind, а у find (string,pattern,index) входные.

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


Ссылка на сообщение
       if gluk_object ~= nil

then забыл. и вообще функция довольно странная, что хочешь от нее?

 

 

 

проверка программой на эту строку показывает ещё. 

Ну дык этож очевидно-невероятное, я и не стал указывать, макрон же не новичок.

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

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


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

@macron, да ниче страшного, гляди, есть такая функция distance_to (и еще distance_to_sqr, думаю чем отличаются ясно), и вот сравниваешь где-то так:

local changer = vector():set(x,y,z) --// тут позишн ченджера
local actor, lev_name, dist = db.actor, level.name()

if actor and lev_name == lname then
for i=1,65535 do
local gluk_object = level.object_by_id(i)
if gluk_object then
dist = changer:distance_to(gluk_object:position())
if dist < 5 then --// 'радиус ченджера' ставишь свой
amk.remove_item(gluk_object)
end
end
end
end

Вызывай только не на апдейте ;).

 

  • Спасибо 1

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


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

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

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


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

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

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

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


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

@Forser, когда в слоте ничего не будет, то будет вылет. Ну и конструкция вообще весьма подозрительная.

 

Попробуй:

function check_slot(n)
if db.actor and db.actor:item_in_slot(n) then
local sect = db.actor:item_in_slot(n):section()
if sect and sect..'' and sect == 'item_section' then
--// action
end
end
end
Изменено пользователем Карлан

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


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

Мне всегда нравились такие вопросы. Бамбарбия - твой выход, у меня фатал эррор :(. "На сегодня дров достаточно, учите матчасть."(с)

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

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


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

@macron, от парентов вообще бывает трип, лично мне так и не удалось, делал задержку аж до 5 секунд. Реквестирую знатоков. "Обнуленный" парент это кстати 65534 (показатель бесхозности), 0 - это актор.

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


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

@macron, бесхозность = валяние на земле. Не сработает, вот я к чему. Попробуй добавь проверку на серверный объект, удаляем то как никак его. 

local obj=level.object_by_id(i)
local sobj=alife():object(i)
if sobj then
--//...
end
  • Спасибо 1

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


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

@makdm, какая разница он ro, то что делал макрон это бесполезно. Спасибо за заметку, я сам не помню уже точно эти цифры.

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


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

@makdm, удаляешь сталкера, вместе с ним и инвентарь удаляется, зачем дропать?

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


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

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