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

[SoC] Ковыряемся в файлах


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

Перевел две группы НПС на созданные гулаги, но где-то накосячил, т.к. все они просто стоят на месте. Кто разбирается, посмотрите, может я чего и не увидел (мобы из гулагов временно вырезаны, работают нормально):

 

local t = {}



function load_job(sj, gname, type, squad, groups)

-- Группа Алекса

if type == "generators_alex_squad" then
t = { section = "logic@generators_alex_squad_alex",
idle = 0,
prior = 1, state = {0},
squad = squad,
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_alex"
end
}
table.insert(sj, t)
t = { section = "logic@generators_alex_squad_werewolf",
idle = 0,
prior = 1, state = {0},
squad = squad,
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_werewolf"
end
}
table.insert(sj, t)
t = { section = "logic@generators_alex_squad_taurus",
idle = 0,
prior = 2, state = {0},
squad = squad,
online = true,
in_rest = "", out_rest = "generators_monolith_base",
redicate = function(obj_info)
return obj_info.name == "generators_taurus"
end
}
table.insert(sj, t)
end

-- База "Монолита"

if type == "generators_monolith_base" then
t = { section = "logic@generators_monolith_base_commander",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_commander"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_door_guard",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_door_guard"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_barrikada_guard_1",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_barrikada_guard_1"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_barrikada_guard_2",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_barrikada_guard_2"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_perimetr_guard_1",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_perimetr_guard_1"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_perimetr_guard_2",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_perimetr_guard_2"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_prisoner_guard",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_prisoner_guard"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_sniper_1",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_sniper_1"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_sniper_2",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_sniper_2"
end
}
table.insert(sj, t)
t = { section = "logic@generators_monolith_base_sniper_3",
idle = 0,
prior = 1, state = {0},
online = true,
in_rest = "", out_rest = "",
redicate = function(obj_info)
return obj_info.name == "generators_monolith_base_sniper_3"
end
}
table.insert(sj, t)
end

end

function load_states(gname, type)

if type == "generators_alex_squad" then
return function(gulag)
if has_alife_info("back_to_alex_squad") then
return 0
end
end
end

if type == "generators_monolith_base" then
return function(gulag)
return 0
end
end

end


--------------------------------------------------------------------------
-- Dynamic ltx
--------------------------------------------------------------------------
function load_ltx(gname, type)
return nil
end

function checkStalker(npc_community, gulag_type, npc_rank, se_obj)

if gulag_type == "generators_alex_squad" then
return npc_community == "stalker"
end

if gulag_type == "generators_monolith_base" then
return npc_community == "monolith"
end

return false
end

function checkMonster(npc_community, gulag_type)
return false
end

 

 

[spoiler='gualg.ltx

;-- Группа Алекса:

 

; Алекс
[logic@generators_alex_squad_alex]
active = walker@alex_wait_actor
on_death = alex_squad_death

 

[walker@alex_wait_actor]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_1
invulnerable = true
meet = meet@alex_meet_1
danger = danger_condition@alex
on_info  = {+save_taurus} walker@alex_after_start_task
on_info2 = {+save_taurus_alternative} walker@alex_after_start_alternative_task
on_info3 = {+taurus_dead} walker@alex_after_taurus_dead

 

[meet@alex_meet_1]
meet_state = 30| hello@talk_hello| 8| wait@wait| 3| ward@wait
meet_state_wpn = 30| hello@talk_hello| 8| wait@wait| 3| ward@wait
victim = 30| actor
victim_wpn = 30| actor
use = true
use_wpn = true
meet_dialog = {-save_taurus} gen_alex_start_dialog

 

[walker@alex_after_start_task]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_2
invulnerable = true
meet = meet@alex_meet_2
danger = danger_condition@alex
on_info = {+back_to_alex_squad_complite} walker@alex_after_complite_task
on_info2 = {+taurus_dead} walker@alex_after_fail_task

 

[meet@alex_meet_2]
meet_state = 10| wait@wait| 3| ward@wait
meet_state_wpn = 10| wait@wait| 3| ward@wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+save_taurus -back_to_alex_squad_complite} gen_alex_taurus_save_in_progress_dialog

 

[walker@alex_after_start_alternative_task]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_1
invulnerable = true
meet = meet@alex_meet_3
danger = danger_condition@alex
on_info = {+back_to_alex_squad_complite} walker@alex_after_complite_task

 

[meet@alex_meet_3]
meet_state = 10| wait@wait| 3| ward@wait
meet_state_wpn = 10| wait@wait| 3| ward@wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+save_taurus_alternative -back_to_alex_squad_complite} gen_alex_taurus_dead_hello_dialog

 

[walker@alex_after_complite_task]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_2
invulnerable = true
meet = meet@alex_meet_4
danger = danger_condition@alex

 

[meet@alex_meet_4]
meet_state = 10| wait@wait| 3| ward@wait
meet_state_wpn = 10| wait@wait| 3| ward@wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+back_to_alex_squad_complite -save_taurus_task_talk_to_alex_complite} gen_alex_taurus_safety_dialog, {+save_taurus_task_talk_to_alex_complite} gen_alex_hello_dialog

 

[walker@alex_after_fail_task]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_2
invulnerable = true
meet = meet@alex_meet_5
danger = danger_condition@alex

 

[meet@alex_meet_5]
meet_state = 10| wait@wait| 3| ward@wait
meet_state_wpn = 10| wait@wait| 3| ward@wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+taurus_dead +save_taurus -taurus_dead_talk_to_alex_complite} gen_alex_taurus_dead_dialog, {+taurus_dead_talk_to_alex_complite} gen_alex_taurus_dead_hello_dialog

 

[walker@alex_after_taurus_dead]
path_walk = generators_alex_squad_alex_walk_1
path_look = generators_alex_squad_alex_look_1
invulnerable = true
meet = meet@alex_meet_6
danger = danger_condition@alex

 

[meet@alex_meet_6]
meet_state = 10| wait@wait| 3| ward@wait
meet_state_wpn = 10| wait@wait| 3| ward@wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+taurus_dead -save_taurus -taurus_dead_talk_to_alex_alternative_complite} gen_alex_taurus_dead_alternative_dialog, {+taurus_dead_talk_to_alex_alternative_complite} gen_alex_taurus_dead_hello_dialog

 

[danger_condition@alex]
ignore_distance            = 30
ignore_distance_grenade    = 30
ignore_distance_corpse     = 0
ignore_distance_sound      = 30
danger_inertion_time_hit   = 1

 

; Вервольф
[logic@generators_alex_squad_werewolf]
active = remark@werewolf_wounded
combat_ignore = combat_ignore@alex_squad
danger = danger_condition@werewolf
on_death = alex_squad_death

 

[remark@werewolf_wounded]
anim = wounded_heavy
combat_ignore_cond = always
meet = no_meet

 

[danger_condition@werewolf]
ignore_distance            = 30
ignore_distance_grenade    = 30
ignore_distance_corpse     = 0
ignore_distance_sound      = 30
danger_inertion_time_hit   = 1

 

; Таурус (пленный)
[logic@generators_alex_squad_taurus]
active = walker@monolith_base_taurus_prisoner
on_death = taurus_death
combat_ignore = combat_ignore@alex_squad

 

[walker@monolith_base_taurus_prisoner]
path_walk = generators_alex_squad_taurus_prisoner_walk
path_look = generators_alex_squad_taurus_prisoner_look
invulnerable = true
combat_ignore_cond = always
meet = no_meet
on_info = {+monolith_base_destroy} walker@monolith_base_taurus_need_help

 

[walker@monolith_base_taurus_need_help]
path_walk = generators_alex_squad_taurus_walk_1
path_look = generators_alex_squad_taurus_look_1
combat_ignore_cond = {!actor_enemy !fighting_actor}
meet = meet@taurus_meet_1
on_info = {+back_to_alex_squad} walker@taurus_back_to_alex_squad

 

[meet@taurus_meet_1]
meet_state = 10| hello@talk_hello| 8|wait
meet_state_wpn = 10| hello@talk_hello| 8|wait
victim = 10| actor
victim_wpn = 10| actor
use = true
use_wpn = true
meet_dialog = {+save_taurus} gen_taurus_save_dialog, {-save_taurus} gen_taurus_save_alternative_dialog

 

[walker@taurus_back_to_alex_squad]
path_walk = generators_alex_squad_taurus_walk_2
path_look = generators_alex_squad_taurus_look_2
combat_ignore_cond = {!actor_enemy !fighting_actor}
meet = no_meet
on_signal = arrive | walker@alex_squad_taurus_after_safety

 

[walker@alex_squad_taurus_after_safety]
path_walk = generators_alex_squad_taurus_walk_3
path_look = generators_alex_squad_taurus_look_2
meet = meet@taurus_meet_2
on_info = {+save_taurus_task_talk_to_taurus_complite} walker@alex_squad_taurus_after_complite_task

 

[meet@taurus_meet_2]
use = true
use_wpn = true
meet_dialog = {+back_to_alex_squad_complite +save_taurus} gen_taurus_after_save_dialog, {+back_to_alex_squad_complite +save_taurus_alternative} gen_taurus_after_save_alternative_dialog

 

[walker@alex_squad_taurus_after_complite_task]
path_walk = generators_alex_squad_taurus_walk_3
path_look = generators_alex_squad_taurus_look_2
meet = meet@taurus_meet_3

 

[meet@taurus_meet_3]
use = true
use_wpn = true
meet_dialog = {+save_taurus_task_talk_to_taurus_complite} gen_taurus_hello_dialog

[taurus_death]
on_info = %+taurus_dead +take_taurus_pda%

;--------------------------------------------
[combat_ignore@alex_squad]

 

[alex_squad_death]
on_info = %+alex_squad_dead%
;--------------------------------------------

 

;-- База "Монолита":

 

;-- Командир базы
[logic@generators_monolith_base_commander]
active = walker@generators_monolith_base_commader
on_death = death@generators_monolith_base_commader
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_commader]
path_walk = generators_monolith_base_commander_walk
path_look = generators_monolith_base_commander_look
no_retreat = true

 

[death@generators_monolith_base_commader]
on_info = %+monolith_base_commander_dead%

 

;-- Охранник у двери в лабораторию Х-8
[logic@generators_monolith_base_door_guard]
active = walker@generators_monolith_base_door_guard
on_death = death@generators_monolith_base_door_guard
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_door_guard]
path_walk = generators_monolith_base_door_guard_walk
path_look = generators_monolith_base_door_guard_look

 

[death@generators_monolith_base_door_guard]
on_info = %+monolith_base_door_guard_dead%

 

;-- Снайпер-1
[logic@generators_monolith_base_sniper_1]
active = camper@generators_monolith_base_sniper_1
on_combat = combat@generators_monolith_base_snipers
on_death = death@generators_monolith_base_sniper_1
combat_ignore = combat_ignore@generators_monolith_base

 

[camper@generators_monolith_base_sniper_1]
path_walk = generators_monolith_base_sniper_1_walk
path_look = generators_monolith_base_sniper_1_look
sniper = true

danger = danger_condition@generators_monolith_base_snipers

 

[death@generators_monolith_base_sniper_1]
on_info = %+monolith_base_sniper_1_dead%

 

;-- Снайпер-2
[logic@generators_monolith_base_sniper_2]
active = camper@generators_monolith_base_sniper_2
on_combat = combat@generators_monolith_base_snipers
on_death = death@generators_monolith_base_sniper_2
combat_ignore = combat_ignore@generators_monolith_base

 

[camper@generators_monolith_base_sniper_2]
path_walk = generators_monolith_base_sniper_2_walk
path_look = generators_monolith_base_sniper_2_look
sniper = true
danger = danger_condition@generators_monolith_base_snipers

 

[death@generators_monolith_base_sniper_2]
on_info = %+monolith_base_sniper_2_dead%

 

;-- Снайпер-3
[logic@generators_monolith_base_sniper_3]
active = camper@generators_monolith_base_sniper_3
on_combat = combat@generators_monolith_base_snipers
on_death = death@generators_monolith_base_sniper_3
combat_ignore = combat_ignore@generators_monolith_base

 

[camper@generators_monolith_base_sniper_3]
path_walk = generators_monolith_base_sniper_3_walk
path_look = generators_monolith_base_sniper_3_look
sniper = true
danger = danger_condition@generators_monolith_base_snipers

 

[death@generators_monolith_base_sniper_3]
on_info = %+monolith_base_sniper_3_dead%

 

;-- Охранник-1 у баррикад
[logic@generators_monolith_base_barrikada_guard_1]
active = walker@generators_monolith_base_barrikada_guard_1
on_death = death@generators_monolith_base_barrikada_guard_1
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_barrikada_guard_1]
path_walk = generators_monolith_base_barrikada_guard_1_walk
path_look = generators_monolith_base_barrikada_guard_1_look

 

[death@generators_monolith_base_barrikada_guard_1]
on_info = %+monolith_base_barrikada_guard_1_dead%

 

;-- Охранник-2 у баррикад
[logic@generators_monolith_base_barrikada_guard_2]
active = walker@generators_monolith_base_barrikada_guard_2
on_death = death@generators_monolith_base_barrikada_guard_2
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_barrikada_guard_2]
path_walk = generators_monolith_base_barrikada_guard_2_walk
path_look = generators_monolith_base_barrikada_guard_2_look

 

[death@generators_monolith_base_barrikada_guard_2]
on_info = %+monolith_base_barrikada_guard_2_dead%

 

;-- Охранник-1 внутреннего периметра базы
[logic@generators_monolith_base_perimetr_guard_1]
active = walker@generators_monolith_base_perimetr_guard_1
on_death = death@generators_monolith_base_perimetr_guard_1
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_perimetr_guard_1]
path_walk = generators_monolith_base_perimetr_guard_1_walk
path_look = generators_monolith_base_perimetr_guard_1_look

 

[death@generators_monolith_base_perimetr_guard_1]
on_info = %+monolith_base_perimetr_guard_1_dead%

 

;-- Охранник-2 внутреннего периметра базы
[logic@generators_monolith_base_perimetr_guard_2]
active = walker@generators_monolith_base_perimetr_guard_2
on_death = death@generators_monolith_base_perimetr_guard_2
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_perimetr_guard_2]
path_walk = generators_monolith_base_perimetr_guard_2_walk
path_look = generators_monolith_base_perimetr_guard_2_look

 

[death@generators_monolith_base_perimetr_guard_2]
on_info = %+monolith_base_perimetr_guard_2_dead%

 

;-- Охранник пленника
[logic@generators_monolith_base_prisoner_guard]
active = walker@generators_monolith_base_prisoner_guard
on_death = death@generators_monolith_base_prisoner_guard
combat_ignore = combat_ignore@generators_monolith_base

 

[walker@generators_monolith_base_prisoner_guard]
path_walk = generators_monolith_base_prisoner_guard_walk
path_look = generators_monolith_base_prisoner_guard_look

 

[death@generators_monolith_base_prisoner_guard]
on_info = %+monolith_base_prisoner_guard_dead%

;--------------------------------------------
[combat@generators_monolith_base_snipers]
combat_type = monolith

 

[danger_condition@generators_monolith_base_snipers]
danger_expiration_time = 60000
danger_inertion_time =  90000

 

[combat_ignore@generators_monolith_base]
combat_ignore_cond = {=check_fighting(10010)}

;--------------------------------------------

 

 

З.Ы. Если 1 НПС относящийся к одному гулагу принудительно должен находиться некоторое время на территории другого (играет роль пленного), ему нужно создавать отдельное место в этом гулаге, или он никуда не уйдет? При необходимости добавлю секции из all.spawn.

Изменено пользователем Stalker_AleX333
Ссылка на комментарий

 

 

Пиши так: use_sound = interface\inv_detach_addon

эффект тот-же - не воспроизводится звук. Похоже Вы напутали с use_sound, видимо в ТЧ этот параметр конфига не работает.


 

 

ему нужно создавать отдельное место в этом гулаге, или он никуда не уйдет?

Если в логике прописано сидеть и не рыпаться - не уйдет. И пофиг в каком гулаге ему это прописано...

Посмотри пример с Шустрым на АТП на Кордоне(оригинал).

Ссылка на комментарий
Похоже Вы напутали с use_sound, видимо в ТЧ этот параметр конфига не работает.

Уверен? Если я так говорю, значит я сам проверял.

 

Может путь надо указывать с папки sounds: sounds\use_item\antirad_pills. Просто делал давно, и точно не помню как надо писать путь до звука.

 

Вспомнил, видел такое в Хабар моде, давно было, сам пользовался, потом забыл со временем.

Изменено пользователем Anonim
Ссылка на комментарий

Ахмед, AndreySol

Я вопрос с привязкой звуков к использованию предметов решала так:

 

1. В папке gamedata\scripts создаешь новый скриптовый файл zvuki_items.script

local snd_obj

function use_sound_itemz(obj)

local sound_table = {

['bread'] = [[inventory\inv_food]],

['kolbasa'] = [[inventory\inv_food]],

['medkit'] = [[inventory\inv_medic]],

['energy_drink'] = [[inventory\inv_drinking]],

['bandage'] = [[inventory\inv_bandage]],

['matras'] = [[inventory\inv_sleeping]]}

local snd = sound_table[obj:section()]

if snd then

if snd_obj and snd_obj:playing() then snd_obj:stop() end

snd_obj = xr_sound.get_safe_sound_object(snd)

snd_obj:play_at_pos(db.actor, vector(), 0, sound_object.s2d)

end

 

Это основной скрипт, сюда можно по анологии добавлять любые предметы

2. В gamedata\scripts\bind_stalker дописываем

function actor_binder:use_object(obj)

zvuki_items.use_sound_itemz(obj)

end

3. Проверяем, чтобы в указанной папке звуков (gamedata\sounds\inventory) были нужные нам звуки.

 

Все, при неоднократном съедании предмета старый звук глушится и отыгрывается новый.

 

Кто автор метода, простите, не знаю.

Ссылка на комментарий

Lanta87. там ещё нужно дописать :

в функцию function actor_binder:net_destroy() :

self.object:set_callback(callback.use_object, nil)

в функцию actor_binder:reinit():

self.object:set_callback(callback.use_object, self.use_object, self)
Ссылка на комментарий

Привет всем,_у меня случился стопор на последних парах выхода мода._Не могу решить проблемку(((_Суть заключается в том, что я добавил в игру много артов,_и решил прописать их в аномалии,_получилось по 12 артов на аномалию,_ну получается, что я прописал их, чтобы выпадали из аномалии, но выпадают только первые 3 арта и все,_остальные ни в какую,_если убрать первые три и прописать другие, то появляются те, которыми заменил.роблема в том, что мне надо, чтобы выпадали все 12 в случайном порядке, а не только первые 3.

Изменено пользователем Kirgudu
Ссылка на комментарий

 

 

что мне надо чтобы выпадали все 12 в случайном порядке а не только первые 3

Нужно всем 12 артам выставить равные шансы. Только нужно помнить, что сумма всех шансов, не должна превышать единицу.

Тогда арты будут спавниться в случайном порядке, а не только те, у которых шанс выше.

Ссылка на комментарий

Привет всем!

Столкнулся с проблемкой. Нужно сделать так, что при использовании предмета в инвентори он не пропадал сразу, а пропадал, скажем, после трех использований. Я так понял, что нужно организовать счетчик, и при каждом использовании увеличивать значение переменной на единицу, а потом спавнить предмет в рюкзак по новой, пока значение счетчика не станет равным трем. А вот как сохранить эту переменную, чтобы при сейв-лоаде ее значение не потерялось?

Ссылка на комментарий

Способов куча на самом деле. Просто смотреть эту тему + скриптование и справочник по функциям и классам. И выбирать, какой подходит.

Ссылка на комментарий

 

 

Нормальный способ один, написать в конфиге предмета

Этот способ не подходит, потому что использовав предмет один раз и сохранившись, при загрузке сейва он будет использоваться опять три раза, а не два.


А как отловить появление предмета в инвентаре?

 

Dennis_Chikin

А можно примерчик, самый простенький, для ознакомления?

Ссылка на комментарий

Например, xr_logic.pstor_store(). Или в нетпакет. Или создать специальное хранилище через factory. Или, если предмет уникален - через infoportion.

Ссылка на комментарий

Появление предмета в инвентаре - это случаем не "function actor_binder:on_item_take (obj)" из bind_stalker.script?


 

 

Например, xr_logic.pstor_store(). Или в нетпакет.

То есть АМК-шные функции get_invbox_data и set_invbox_data надо пользовать? Или они работают только для инв. ящика?

Ссылка на комментарий

1. Да.

2. Формат нетпакета для каждого класса свой. Но это не значит, что данные нужно хранить именно в этом предмете.

 

И, да, pstor - это для онлайна. Нетпакет - преимущественно для офлайна (хотя можно и в онлайне).

Ссылка на комментарий

Повесил в бинд_сталкер вызов функции

function take_sigaret(pid)


if obj:section() = "имя_секции_предмета" then
-- что-то делаем
end
end

 

 

ловлю вылет. Наверно неправильно синтаксис пишу, но не знаю как правильно.

 

Ну и откуда здесь должен взяться obj ? А во-вторых, таки да, синтаксис. Идем на lua.org, берем компилятор, и проверяем им. Документация лежит там же. dc


Ну хоть вызов функции-то правильный?

ogsm_quests.take_sigaret(obj)

 


Вроде разобрался, но вот вопрос, правильно ли я сохраняю свою переменную?

function is_sigaret(npc, item)
local kolvo
local section = item:section()
if section == "sigaret" then
kolvo = 20
xr_logic.pstor_store(db.actor, kolvo, 20)
end
end

 

 

Просто с pstor ни разу не разбирался. Вылета нет, но как-то не по себе, не знаю, работает она или нет?

 

"но как-то не по себе" - и это - правильное ощущение. Разбираемся дальше. dc

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

NiKi BoY,

в папке gamedata\config\text\rus выбираешь нужный файл с описаниями и непосредственно перед текстом вставляешь %c[нужный цвет]:

Медицинский набор, которым можно осуществлять лечение раненых товарищей. Может использоваться до трех раз.\n%c[255,0,255,0]Комплектация:\n%c[default]Набор "Юный портной"\nНабор "Пилим и строгаем"\nОбезболивающее (крепость не ниже 54 град.)\nБиблия.

 

 

Вот варианты цветов

%c[255,0,255,0] - зеленый шрифт

 

%c[255,255,128,128] - розовый

 

%c[255,227,114,12] - оранжевый

 

%c[255,255,1,1] - красный

 

%c[255,243,174,29] - желтый

 

%c[255,1,255,255] - бирюзово-голубой

 

%c[default] - основной белый, если дописываешь после опр. цвета

 

С цифрами в квадратных скобках можно экспериментировать, для получения желаемого оттенка

 

А конкретно по строке "потерян предмет", сейчас порылась поисковиком Notepad++  в папке с текстами, ничего подобного не нашла. Забавно, в игре-то используется.. Если найду, отпишусь))

Ссылка на комментарий
ничего подобного не нашла. Забавно, в игре-то используется..

 

 

string id="general_out_item", string id="general_in_item" в файле string_table_level_tips.xml
Там же и про деньги и прочее.
Изменено пользователем Korpus
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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