Случайная подборка модов
Sleep Of Reason - Zulus Story 0.5
2.4
Old Good Stalker Mod v2.4 Gold
4.2
Winter Mod
3.9
Камень Преткновения. Пролог
4.1
Погоня за Праздником
3.8
Dream Reader - Dangerous Area
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Скрипты (Небольшие уроки для новичков, но с углубленным объяснением.)
Скрипты
Украина  FantomICW
Воскресенье, 04.01.2015, 00:44 | Сообщение # 61
Проект Смерти Вопреки
Статус:
Опытный:
Сообщений: 2259
Награды: 8
Регистрация: 06.01.2013

DukeKAn, всячески поддерживаю касательно стрима. Пожалуй, понять основы для новичков - крайне важно. Даже если они не станут скриптерами, "для общего развития" было бы полезно.
Цитата ScriptMaker ()
в таком случае не вижу смысла вообще человеку лезть в скрипты.

Максималистично звучит :)
  Злобная реклама
Воскресенье, 04.01.2015, 00:44
Статус:
Сообщений: 666
Регистрация: 06.01.2013
Российская Федерация  DukeKAn
Воскресенье, 04.01.2015, 14:27 | Сообщение # 62
Статус:
Неопытный:
Сообщений: 491
Награды: 8
Регистрация: 25.11.2012

Цитата ScriptMaker ()
я в таком случае не вижу смысла вообще человеку лезть в скрипты. Метод тыка - плохой метод.

Не совсем понял, где я говорил про метод тыка. Я говорил о том, что С и С++ - вовсе не обязательны для скриптера под сталкер.
Цитата BozKurt ()
Метод create возвращает серверный объект, а клиентский становится доступен только на следующем апдейте. Колбек client_spawn_manager срабатывает как раз тогда, когда клиентский объект становится доступен.

Вот, это ответ по делу. Я это упустил, и был не прав. Собственно, для того и нужен стрим, а не просто видео - чтобы было обсуждение, и найден правильный подход.
А 52 пост - не мой, я пока стараюсь не писать статьи в таком стиле.
6poHR777,
Если нужно конкретно под сталкер проверить скрипты - Яндекс Диск

FantomICW,
Буду рад видеть. Хотя народ пока собирается посильнее меня :-)
  Злобная реклама
Воскресенье, 04.01.2015, 14:27
Статус:
Сообщений: 666
Регистрация: 25.11.2012
Украина  BozKurt
Воскресенье, 04.01.2015, 19:45 | Сообщение # 63
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

DukeKAn, поправочка про "конкретно под сталкер проверить скрипты" - там проверяется только синтаксис, как дебаг-программа она не подходит.
Если так дело пошло, то я рекомендую вот этот плагин для Notepad++: https://yadi.sk/d/Y9QrLgdLayqPD (в архиве есть небольшая документация по плагину).
  Злобная реклама
Воскресенье, 04.01.2015, 19:45
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Молдова  6poHR777
Понедельник, 05.01.2015, 13:45 | Сообщение # 64
Статус:
Опытный:
Сообщений: 1480
Награды: 0
Регистрация: 05.01.2012

BozKurt, а так же все остальные.
Тут возник вопрос. А скрипты на ТЧ-06 могут не срабатывать, именно из-за бинов или их правки?
Просто столкнулся со своей старой проблематикой, то, что на 04 работало, на 06 никак не работает. wacko
Прошу тапками не закидывать, если я что-то пропустил.
Суть проблемы такая:
Есть предмет, при его использовании должен сработать скрипт, коллбэки и функция в бинд_сталкер.скрипт есть, но, но при использовании предмета он просто съедается, при этом ничего не происходит.
Сама та функция, которую вызываю, она работает, через диалог проверил.
В чем может быть загвоздка? :(
Сообщение отредактировал 6poHR777 - Понедельник, 05.01.2015, 14:01
  Злобная реклама
Понедельник, 05.01.2015, 13:45
Статус:
Сообщений: 666
Регистрация: 05.01.2012
Украина  BozKurt
Понедельник, 05.01.2015, 14:02 | Сообщение # 65
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

6poHR777, к сожалению, я не обладаю экстрасенсорными способностями, подозреваю, что и остальные форумчане тоже. Поэтому без кода, что и где прописывал, решить проблему будет маловероятным.
  Злобная реклама
Понедельник, 05.01.2015, 14:02
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Молдова  6poHR777
Понедельник, 05.01.2015, 14:13 | Сообщение # 66
Статус:
Опытный:
Сообщений: 1480
Награды: 0
Регистрация: 05.01.2012

BozKurt, да, понимаю.
Вот:
function actor_binder:net_destroy()
Добавил данный коллбек:
Код
self.object:set_callback(callback.use_object, nil)


function actor_binder:reinit()
Добавил:
Код
self.object:set_callback(callback.use_object, self.shompol_start, self)


В самом низу написал следующее:
Код
function actor_binder:shompol_start(obj, who)
     if obj then  
         if obj:section() == "shompol" then
                 wp_items.action_shompol()  
         end
     end
end
  Злобная реклама
Понедельник, 05.01.2015, 14:13
Статус:
Сообщений: 666
Регистрация: 05.01.2012
Украина  BozKurt
Понедельник, 05.01.2015, 14:39 | Сообщение # 67
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

6poHR777, у тебя в reinit'е часом не два колбека на юз подключено?
  Злобная реклама
Понедельник, 05.01.2015, 14:39
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Молдова  6poHR777
Понедельник, 05.01.2015, 14:47 | Сообщение # 68
Статус:
Опытный:
Сообщений: 1480
Награды: 0
Регистрация: 05.01.2012

BozKurt, вот что у меня там:
Код
function actor_binder:reinit()
   object_binder.reinit(self)
     
   local npc_id = self.object:id()

   db.storage[npc_id] = { }

   self.st = db.storage[npc_id]
   self.st.pstor = nil

   self.next_restrictors_update_time = -10000

   self.object:set_callback(callback.inventory_info, self.info_callback, self)
   self.object:set_callback(callback.article_info, self.article_callback, self)
   self.object:set_callback(callback.on_item_take, self.on_item_take, self)
   self.object:set_callback(callback.on_item_drop, self.on_item_drop, self)
   self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self) -- for game stats
   --self.object:set_callback(callback.actor_sleep, self.sleep_callback, self)
   self.object:set_callback(callback.task_state, self.task_callback, self)
   --self.object:set_callback(callback.map_location_added, self.map_location_added_callback, self)
   self.object:set_callback(callback.level_border_enter, self.level_border_enter, self)
   self.object:set_callback(callback.level_border_exit, self.level_border_exit, self)
   self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)
   self.object:set_callback(callback.use_object, self.shompol_start, self)
end
Сообщение отредактировал 6poHR777 - Понедельник, 05.01.2015, 14:53
  Злобная реклама
Понедельник, 05.01.2015, 14:47
Статус:
Сообщений: 666
Регистрация: 05.01.2012
Украина  BozKurt
Понедельник, 05.01.2015, 15:27 | Сообщение # 69
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

6poHR777, тогда две возможные причины:
1. Имя секции используемого предмета не "shompol";
2. Функция wp_items.action_shompol() всё же работает не так как нужно.
С колбеком всё в порядке, т.к. я его же использовал в моде Medicine на шестом патче и проблем не было.
  Злобная реклама
Понедельник, 05.01.2015, 15:27
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Молдова  6poHR777
Понедельник, 05.01.2015, 16:00 | Сообщение # 70
Статус:
Опытный:
Сообщений: 1480
Награды: 0
Регистрация: 05.01.2012

BozKurt, смотрите.
Код

function action_shompol
     
   alife():create("shompol", vector(),0,0,0)

local apos = db.actor:position()
   for obj_id,_ in pairs (db.storage)do
    local obj = level.object_by_id(obj_id)
    if obj and (IsStalker(obj) or IsMonster(obj)) and obj:alive()   
    and obj:relation(db.actor) == game_object.enemy and obj:position():distance_to(apos)<30 then
     send_tip("Нельзя использовать шомпол, когда опасность слишком близко.")
     return
    end
   end
     
     
   repair_item_in_slot(1)   
   repair_item_in_slot(2)   
end
     
function repair_item_in_slot(num)
   local item = db.actor:item_in_slot(num)
   if item then
    local cond = item:condition()
    if cond < 0.4 then
     send_tip("%c[255,255,0,0]Чистка невозможна: оружие "..num.. " сильно повреждено.")
    elseif cond > 0.90 then
     send_tip("%c[255,255,0,0]Чистка невозможна: %c[255,0,255,0]оружие в слоте "..num.. " в отличном состоянии.")
    else
     item:set_condition(1)
     send_tip("%c[255,0,255,0]Чистка оружия в слоте "..num.. " завершена.")
    end
   else
    send_tip("%c[255,255,0,0]В слоте "..num.." нет предмета для чистки.")
   end
end
     
function send_tip(news_text)
   db.actor:give_game_news(news_text, "ui\\ui_iconsTotal", Frect():set(0,517,83,47), 1000, 5000)
end


Код

[shompol]:identity_immunities
GroupControlSection    = spawn_group
discovery_dependency    =
$spawn    = "food and drugs\shompol"
$prefetch   = 32
class   = II_ANTIR   
cform                   = skeleton
visual                  = equipments\shompol.ogf   
description  = enc_equipment_shompol
     
inv_name  = shompol
inv_name_short  = shompol
inv_weight  = 0.05
     
inv_grid_width  = 2   
inv_grid_height  = 1
inv_grid_x  = 8   
inv_grid_y  = 18   
cost   = 200   

eat_health = 0
eat_satiety = 0
eat_power = 0
eat_radiation = 0
wounds_heal_perc = 0
eat_portions_num = 1
animation_slot = 4
hud = wpn_vodka_hud


В конце концов, могу папку бинов дать. 12
Сообщение отредактировал 6poHR777 - Понедельник, 05.01.2015, 16:00
  Злобная реклама
Понедельник, 05.01.2015, 16:00
Статус:
Сообщений: 666
Регистрация: 05.01.2012
Украина  BozKurt
Понедельник, 05.01.2015, 17:01 | Сообщение # 71
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

6poHR777, извини, но здесь для меня тупик. Либо я чего-то не замечаю, либо проблема глобальнее, например завис биндер.
Если "папка бинов" - это скомпилированные библиотеки из исходников, то проблем быть не должно, если сам чего не напортачил.
  Злобная реклама
Понедельник, 05.01.2015, 17:01
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Молдова  6poHR777
Понедельник, 05.01.2015, 17:04 | Сообщение # 72
Статус:
Опытный:
Сообщений: 1480
Награды: 0
Регистрация: 05.01.2012

BozKurt, юзал кат-икс-рей, может служить причиной?
  Злобная реклама
Понедельник, 05.01.2015, 17:04
Статус:
Сообщений: 666
Регистрация: 05.01.2012
Украина  BozKurt
Понедельник, 05.01.2015, 17:09 | Сообщение # 73
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

6poHR777, не знаю, т.к. никогда не пользовался, но и подобных проблем в его адрес не видел.
  Злобная реклама
Понедельник, 05.01.2015, 17:09
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Молдова  6poHR777
Среда, 14.01.2015, 20:48 | Сообщение # 74
Статус:
Опытный:
Сообщений: 1480
Награды: 0
Регистрация: 05.01.2012

Всем доброго времени суток, в общем, по своей проблеме, описанной выше.
Зависает коллбэк, в чем может быть причина? :(
  Злобная реклама
Среда, 14.01.2015, 20:48
Статус:
Сообщений: 666
Регистрация: 05.01.2012
Российская Федерация  DukeKAn
Среда, 04.02.2015, 17:11 | Сообщение # 75
Статус:
Неопытный:
Сообщений: 491
Награды: 8
Регистрация: 25.11.2012

Сегодня разберём вертолёт. Отличие от предыдущих уроков - этот писался под ЗП.

Скачать прокомментированные скрипты вертолёта от ЗП можно здесь: Яндекс Диск

Общее представление:


В большей части случаев этого достаточно, и править скрипты не приходится. Для тех, кому интересны сами скрипты - добро пожаловать под кат:
Сообщение отредактировал DukeKAn - Пятница, 06.02.2015, 12:27
  Злобная реклама
Среда, 04.02.2015, 17:11
Статус:
Сообщений: 666
Регистрация: 25.11.2012
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Скрипты (Небольшие уроки для новичков, но с углубленным объяснением.)
Поиск: