Правка скрипта

В общем, есть скрипт в диалоге на выдачу денег ГГ азоту, меняю сумму и происходит вылет без лога. Подозреваю, что помимо суммы нужно было редактировать что-то еще, только вот что ? Поможет кто на примере оригинального скрипта ?

Вот оригинальный

Спойлер

function jup_azot_by_sborka1 (first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor (first_speaker, second_speaker, "grenade_rgd5", 2)
end

function jup_azot_by_sborka11 (first_speaker, second_speaker)
local amount = 2000
dialogs.relocate_money_from_actor (first_speaker, second_speaker, amount)
dialogs.relocate_item_section_to_actor (first_speaker, second_speaker, "grenade_rgd5_double")
end
function jup_forazot_actor_has_2000(first_speaker, second_speaker)
return db.actor:money() >= 2000
end

function jup_forazot_actor_hasnt_2000(first_speaker, second_speaker)
return db.actor:money() < 2000
end
function jup_forazot_actor_has_grsborkatype1 (first_speaker, second_speaker)
local cnt = 0
local function zat_b30_count(npc, item)
--printf("item:section: %s", item:section())
if item:section() == "grenade_rgd5" then
cnt = cnt + 1
end
end

db.actor:iterate_inventory(zat_b30_count, nil)
if cnt > 1 then
return true
end

return false
end

function jup_forazot_actor_hasnt_ grsborkatype1(first_speaker, second_speaker)
local cnt = 0
local function zat_b30_count(npc, item)
--printf("item:section: %s", item:section())
if item:section() == "grenade_rgd5" then
cnt = cnt + 1
end
end

db.actor:iterate_inventory(zat_b30_count, nil)
if cnt > 1 then
return false
end

return true
end

А вот что я наисправлял

Спойлер

function jup_azot_by_sborka1 (first_speaker, second_speaker)
dialogs.relocate_item_section_from_actor (first_speaker, second_speaker, "grenade_rgd5", 2)
end

function jup_azot_by_sborka11 (first_speaker, second_speaker)
local amount = 300
dialogs.relocate_money_from_actor (first_speaker, second_speaker, amount)
dialogs.relocate_item_section_to_actor (first_speaker, second_speaker, "grenade_rgd5_double")
end
function jup_forazot_actor_has_300 (first_speaker, second_speaker)
return db.actor:money() >= 300
end

function jup_forazot_actor_hasnt_300 (first_speaker, second_speaker)
return db.actor:money() < 300
end

function jup_forazot_actor_has_grsborkatype1 (first_speaker, second_speaker)
local cnt = 0
local function zat_b30_count(npc, item)
--printf("item:section: %s", item:section())
if item:section() == "grenade_rgd5" then
cnt = cnt + 1
end
end

db.actor:iterate_inventory(zat_b30_count, nil)
if cnt > 1 then
return true
end

return false
end

function jup_forazot_actor_hasnt_grsborkatype1 (first_speaker, second_speaker)
local cnt = 0
local function zat_b30_count(npc, item)
--printf("item:section: %s", item:section())
if item:section() == "grenade_rgd5" then
cnt = cnt + 1
end
end

db.actor:iterate_inventory(zat_b30_count, nil)
if cnt > 1 then
return false
end

return true
end

Заранее спасибо.

Комментарии: 9
Ваш комментарий

вот полные скрипты, потому как я хз, может упустил что
Оригинал

Спойлер

https://yadi.sk/d/IZXLV_bK3ZEVzT

Мои исправления

Спойлер

https://yadi.sk/d/j6lFgDqa3ZEWBo

2

Cheeki_Breeki
Лучше имена функций
jup_forazot_actor_has_2000
и
jup_forazot_actor_hasnt_2000
не менять, может они еще где используются.

2

KPOT1987
да вроде не должны. попробую потом не менять.

1

Cheeki_Breeki
Предоставленные файлы очень сильно различаются.

Пример 1

dialogs_jupiter.script
function jup_b32_give_reward_to_actor (first_speaker, second_speaker)
local amount = 5000
dialogs.relocate_money_to_actor (first_speaker, second_speaker, amount)
dialogs.relocate_item_section_to_actor (first_speaker, second_speaker, "skill_book_usp")
give_mp3_bonus ([[Бонусы\Бонус_10]], "mp3_club_bonus_10")
give_secret (1)
end
_jupiter.script
function jup_b32_give_reward_to_actor (first_speaker, second_speaker)
local amount = 5000
dialogs.relocate_money_to_actor (first_speaker, second_speaker, amount)
give_skill_book ()
give_mp3_bonus ()
give_secret (1)
end

Пример 2

dialogs_jupiter.script
if not has_alife_info ("jup_b1_squad_is_dead") and squad_name == "jup_b1_stalker_squad" then
_jupiter.script
if dont_has_alife_info ("jup_b1_squad_is_dead") and squad_name == "jup_b1_stalker_squad" then

Что-то где-то ты с файлами напутал, из-за этого и ошибки.

1

KPOT1987
хмм, возможно с разных версий мода скинул... вылет происходит же именно при разговоре, а точнее, на ветке диалога с функцией передачи денег.

1

Cheeki_Breeki
не в той кодировке сохранял, либо сумма энная

1