Перейти к содержимому



Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8386

#8381   HellRatz

HellRatz
  • Группа:  Глобальные модераторы
  • Сообщений: 1 705
  • Регистрация: 19.03.2010
  • Пользователь: 17387

Отправлено 21 03 2017 - 00:23

Такой немного странный вопрос: можно ли обнулять/отнимать деньги у ГГ (можно и НПС) после купли/продажи? Или без правки движка никак?

Нашел что-то типа db.actor:money, может с этим можно работать.


Сообщение отредактировал HellRatz: 21 03 2017 - 00:28


#8382   dsh

dsh
  • Группа: Кураторы тем
  • Сообщений: 2 001
  • Регистрация: 03.12.2012
  • Пользователь: 31740
     

Отправлено 21 03 2017 - 00:38

HellRatz, коллбек есть, callback.trade_sell_buy_item. Может это то, что тебе нужно?



#8383   HellRatz

HellRatz
  • Группа:  Глобальные модераторы
  • Сообщений: 1 705
  • Регистрация: 19.03.2010
  • Пользователь: 17387

Отправлено 21 03 2017 - 01:02

dsh, да, действительно, сей коллбек перехватывает торговлю по нажатию на кнопку. То, что нужно, спасибо!

UPD: А обнулить деньги у ГГ можно? К сожалению в оригинальной игре не нашел методов, лишь give_money, но это не то, либо деньги уходят в минус, (да, и такое возможно) либо в плюс, а просто задать 0 никак. Никакого тебе set_money ПЫСы не предусмотрели к сожалению.


Сообщение отредактировал HellRatz: 21 03 2017 - 01:35


#8384   dsh

dsh
  • Группа: Кураторы тем
  • Сообщений: 2 001
  • Регистрация: 03.12.2012
  • Пользователь: 31740
     

Отправлено 21 03 2017 - 01:43

HellRatz, я сейчас вот такое выполнил

db.actor:give_money( -db.actor:money() )

и денег стало ровно 0.



#8385   HellRatz

HellRatz
  • Группа:  Глобальные модераторы
  • Сообщений: 1 705
  • Регистрация: 19.03.2010
  • Пользователь: 17387

Отправлено 21 03 2017 - 02:22

dsh, все бы вроде ничего, но. Если ГГ продает НПСу или покупает у НПСа 1 предмет (то есть мы предлагаем НПСу предмет, но у него ничего не покупаем, или наоборот только покупаем и не продаем), то деньги обнуляются, но если в торговлю добавляется второй предмет (Первый из рюкзака ГГ, второй из рюкзака НПС, короче взаимная торговля в обе стороны) то у ГГ образуется сумма в что-то вроде 245036573. В общем в огромную цифру. Обнуляется если опять купить что-то или продать в одно лицо.


Сообщение отредактировал HellRatz: 21 03 2017 - 02:24


#8386   vampirnik77

vampirnik77
  • ZNL Team

  • Группа: Кураторы тем
  • Сообщений: 311
  • Регистрация: 24.04.2012
  • Пользователь: 28077
  

Отправлено 21 03 2017 - 10:00

Здравствуйте. Совместил фриплейный мод( sza, просто вырезает сюжет) с модулями тов. Артоса и теперь получаю такой вылет, как исправить? Заранее спасибо. 

Лог



#8387   Kirgudu

Kirgudu
  • Группа:  Глобальные модераторы
  • Сообщений: 1 267
  • Регистрация: 01.09.2011
  • Пользователь: 23618

Отправлено 21 03 2017 - 10:34

HellRatz, коллбек "trade_sell_buy_item" срабатывает для каждого предмета, участвующего в акте торговли. Не исключено, что сразу для нескольких предметов текущее кол-во денег отлично от нуля, таким образом после обработки всех предметов ты получаешь неверную итоговую сумму. Чтобы обнуление работало правильно, необходимо делать его после окончания обработки всех предметов, например на первом апдейте после торговли. Примерно так:
local set_money_zero = false
--/ коллбек на торговлю
function on_trade(item, sell_buy, cost)
  if set_money_zero == false then
    set_money_zero = true
    level.add_call(
      function() return set_money_zero end,
      function()
        db.actor:give_money(-db.actor:money())
        set_money_zero = false
      end
    )
  end
end
Кроме того, не забудь, что на момент срабатывания коллбека деньги за продажу/покупку уже засчитаны актору и НПС и, если мне не изменяет память, учтены в статистике. То есть тебе не только надо обнулить деньги у игрока, но и, возможно, вызвать соотв. функцию в xr_statistics для коррекции потраченных средств в КПК.

Также стоит иметь в виду, что аргумент sell_buy при коллбеке на продаваемый героем предмет имеет значение "true", а при коллбеке на покупаемый - "false". При этом сначала срабатывают все коллбеки на продажу, потом все коллбеки на покупку (если обмениваемых предметов много с той и другой стороны). Это тоже можно использовать для реализации расширенной логики, например отказа от предметов, имеющих плохую кондицию и возврата денег за них.
Впрочем, это уже за рамками первоначального вопроса.
 
 
vampirnik77, модули брал отсюда? Точно следовал инструкции по подключению? Она довольно таки исчерпывающая, ошибиться сложно, если следовать всем пунктам согласно нужной платформе.
Почитай ещё этот пост и дальше пару страниц, возможно наткнёшься на полезную информацию.
Судя по всему, твой мод на платформе ЗП. Если он согласится помочь, рекомендую попросить совета у Romz - насколько мне известно, он активно использует модули Артоса в своём моде на той же платформе. Я же не заходил дальше базовой проверки подключения, и вряд ли смогу помочь в данном конкретном случае.

Сообщение отредактировал Kirgudu: 21 03 2017 - 11:56



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей

2007-2017 © AMK TEAM