АнархОПанк
По ошибке pure virtual function call.
Вот перевод описания данной ошибки от Microsoft - сам текст взят на сайте GSC. Переводчик - Prompt :-)
"Эта ошибка происходит, когда Ваше приложение косвенно вызывает чистую виртуальную членскую функцию в контексте, где вызов функции не действителен. В большинстве случаев компилятор обнаруживает это и сообщает об ошибке, когда создает приложение. Но в зависимости от того, как Ваш код написан, иногда проблема обнаруживается только во времени выполнения.
Ошибка происходит, когда Вы косвенно вызываете чистую виртуальную функцию в пределах контекста вызова конструктора или деструктора абстрактного базового класса.
Вызов чистой виртуальной функции является программной ошибкой, таким образом, Вы должны найти вызов чистой виртуальной функции и переписать код, таким образом, чтобы она не вызывалась."
То есть по сути получается, что ошибка может исходить как из кода разработчиков сталкера, так и из кода модмейкера, который вызвал функцию которую нельзя вызывать.
добавлено спустя 23 минут
------------------------------------------------------------------------------------------------- KontrolЛер
"Чуваки" - это у тебя во дворе. Здесь тебе не чат, а сообщество людей, занимающихся общим и довольно серьезным делом. И обращаться к ним стоит в более уважительном ключе.
Прежде чем задать вопрос потрудись попробовать найти ответ на него хотя бы обычным поиском. 99.9% вопросов такого характера как у тебя решаются за минуту поиска по файлам или запросом в гугле\яндексе.
По вопросу:
1) Как поменять? Ручками.
2)Где? В ui_credits.xml
отредактировал(а) erlik: 29-03-2011 12:07 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik Хм.. Спасибо. Довольно таки интересно.
Интересно в том. Что диалог вызывает (пока) всего лишь 2 функции - выдача поршня complete, и функцию в 3 фразе, но не в 1. Попробую еще изменить поршень, или вообще без него. Если вылетит, попробую убрать функцию. Если что, отпишусь.
Хм.. Оказывается дело было в неправильном поршне. Не совсем неправильным, просто поршень такой же структуры у сахарова рабоатет без вылета.
msg_i_porsh_dzot
Значит, впреть для "выполнения" миссии буду юзать такой:
отредактировал(а) АнархОПанк: 29-03-2011 12:56 GMT3 час.
1.Обязательно ли нужен ли рестриктор при создании смарт террейна?
2.Я присоединил к новичкам атакующим АТП ещё одного чела,и начались проблемы.Попала анимация Петрухи(он встаёт с пола и говорит ГГ мол спасибо и т.д). Щас стоит как истукан и ничего не делает.Как и что поправить?
3. Сделал гулаг из 4 новичков на Кордоне.Прописал логику 2 волкера и 2 кампера в файлах gulag_escape.ltx gulag_escape.script. После запуска игры началась полная ерунда,ВСЕ одиночки на локе разбрелись кто куда и мои из гулага ушли черте куда.Кто может подсказать где я ошибся?:-)
Большая Земля - это часть Зоны Отчуждения и наоборот.
karavan
Ну так в диалоге естественно работает. А я говорил про инфопоршен.
Вот ТУТMa$ter имел ввиду про тег action в теле инфопоршена, а не в теле диалога. Выдать, ты подумал, что он говорил про диалоги.
У меня есть одна проблемка я в общем сделал модель Ковальского на основе модели Дегтерёва из зп удалил его голову поставил зарание сделаную Ковальского всё ипртировал игру запускаю всё работае но голова как бы сама по себе тоесть персонаж садится а голова ложится получается что он безголовый кто знает помогите я понял что нужно ето связать со скелетом кстати полузуюсь milkshape 3 d лутьше опишите способ в нём
Vich2010
1)Рестриктор не обязателен,не помню,зачем он?
2)Полгода назад пытался присоединить к рейнджерам четвёртого,он у меня вытеснил одного из НПСей.
Там четыре схемы поведения по-моему.В WAY тоже четыре пути прописывать.Нужно быть очень внимательным - я не смог.
3)По локе тоже часто разбредаются, ошибка в гулаг_скрипт.
fan fan
Дублирование НПСя и симуляция - это есть НПС,предположим на Кордоне.Тебе надо,чтобы он появился на другой локации,а с Кордона исчез?Если я правильно понял,то я делаю так:
function perehod_sacrit()
local objt = alife():story_object(91)
if objt then
alife():release(objt)
end
end
Функция возвращения объекта в игру
function perehod_otcrit()
local objt = alife():story_object(91)
if not objt then
alife():create(285) ;--номер в all.spawne
end
Можно удалить ещё так, не пользовался. И заспавнить нового:
function dell_kluk_final()
local se_obj = alife():object("esc_wolf")
if se_obj then
alife():release(se_obj, true)
end
end
Удаляем предмет(2):
function dell()
for a = 1,65534 do
local se_obj = alife():object(a)
if se_obj and se_obj:section_name() == "esc_wolf" then
alife():release(se_obj, true)
end
end
end
Но может я, как часто бывает, неправильно понял твой вопрос.
Уважаемые господа моддеры, есть к вам серьёзный вопрос - как сделать респавн? К примеру, поставил я 7-8 бандитов на какой-нибудь базе, и чтобы после их убийства они респились вновь. Я пользуюсь SDK, но принцип тот же - можно делать и в геймдате, прописывая скрипты и меняя файлы в Геймдате, а можно всё то же сделать в SDK. В общем, кто как умеет - подскажите, пожалуйста, а там я уж разберусь)
fan fan
Нужно использовать второй вариант создания секции NPC в npc_profile.xml, который используется для ГГ и квестовых персонажей:
val_bandit_borov val_bandit_borov
Выделенная строка будет указывать на specific characters profile - уникальный профиль из файла character_desc_локация:
Тогда как вариант
agr_bandit_general
будут использоваться для выбора одного из многих возможных профилей, используя параметры class, rank и reputation. В справочнике malandrinus'а об этом подробно расписано.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Mehanik Yar
Как это не происходит?
Там один исполняемый экзешник script Syntax Checker.exe - с иконкой окошка без картинки.
Все остальное - вспомогательные dll и собственно сам скомпилированный скрипт Main.gun12 - их трогать не нужно. Никаких батников для запуска не требуется - так как script Syntax Checker.exe это и есть скомпилированный в exe батник. Запускается двойным кликом.
Ты качал по официальной ссылке от Gun12 (которая выложена здесь на форуме) или откуда то еще?
----------------------------------------
Ну тогда спроси у Gun12 ....Я понятия не имею почему на твоем компе не пашет.:-G
отредактировал(а) erlik: 30-03-2011 18:41 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Mehanik Yar
Пока жалоб на "нерабочесть" не слышал. Ты отсюда качал?
_http://letitbit.net/download/61145.6715d38cc7c88ea37c9edb00918b/script_Syntax_Checker.7z.html
Народ, помогите плз. Я хочу заспаунить турель из огсе, но она не спаунится,**5002001a66cf24ce67c0**ret_nato", "l06_rostok", vector():set(-84.12,0.9,140.35), "killer", "", 90, 90)[/code]
Текст скрипта turret_mgun.script
[code]function bind(obj)
-- printf("turret_mgun.bind")
local ini = obj:spawn_ini()
if ini == nil or not ini:section_exist("logic") then
abort("turret '%s' must have logic", obj:name())
end
obj:bind_object(turret_binder(obj, ini))
end
class "turret_binder" (object_binder)
function turret_binder:__init(obj, ini) super(obj)
self.ini = ini
self.initialized = false
self.loaded = false
end
function turret_binder:reinit()
object_binder.reinit(self)
db.storage[self.object:id()] = {}
self.st = db.storage[self.object:id()]
self.heli = self.object:get_helicopter()
self.object:set_callback(callback.helicopter_on_hit, self.on_hit, self)
end
function turret_binder:update(delta)
object_binder.update(self, delta)
if not self.initialized and db.actor ~= nil then
xr_logic.initialize_obj(self.object, self.st, self.loaded, db.actor, modules.stype_heli)
self.initialized = true
end
if self.st.active_section ~= nil then
xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "update", delta)
end
self:check_health()
end
function turret_binder:net_spawn(data)
if not object_binder.net_spawn(self, data) then
return false
end
self.se_obj = alife():object(self.object:id())
self.heli:SetfHealth(self.se_obj.health)
self.st.alive = self.se_obj.health > 0.005
db.add_turret(self.object)
return true
end
function turret_binder:net_destroy()
db.del_turret(self.object)
object_binder.net_destroy(self)
end
function turret_binder:net_save_relevant()
return true
end
function turret_binder:save(packet)
object_binder.save(self, packet)
xr_logic.save_obj(self.object, packet)
end
function turret_binder:load(packet)
object_binder.load(self, packet)
xr_logic.load_obj(self.object, packet)
end
function turret_binder:on_hit(power, impulse, hit_type, enemy_id)
dbglog("hit: power=%f impulse=%f hit_type=%d enemy_id=%d health=%f",
power, impulse, hit_type, enemy_id, self.heli:GetfHealth())
self.se_obj.health = self.heli:GetfHealth()
local enemy = level.object_by_id(enemy_id)
if enemy ~= nil and self.st.active_section ~= nil then
xr_logic.issue_event(self.object, self.st[self.st.active_scheme],
"hit_callback", self.object, power, nil, enemy, nil)
end
end
function turret_binder:check_health()
if self.st.alive and self.heli:GetfHealth() <= 0.005 then
explode_turret(self.object)
end
end
function explode_turret(turret)
local heli = turret:get_helicopter()
heli:ClearEnemy()
heli:Die()
local se_obj = alife():object(turret:id())
se_obj.health = 0
db.storage[turret:id()].alive = false
utils2.deferred_release(turret:id(), 5)
end
function is_friendly_turret(npc, turret, position)
-- сначала выясним, турель ли это вообще.
local k,v
if turret == nil then
-- ссылки на объект нет. что ж, бывает, попробуем
-- определить по месту расположения.
for k,v in pairs(db.turret) do
local test_position = v:position()
if test_position.x == position.x and
test_position.z == position.z then
turret = v
break
end
end
if turret == nil then
return false
end
elseif (turret:section() ~= "turret_mgun") and (turret:section() ~= "turret_army") and (turret:section() ~= "turret_nato") then
return false
end
local community = db.storage[turret:id()].community
if community == nil then
return false
end
if utils2.community_relation(community, npc) > -400 then
return true
end
return false
end
function create_turret(turret_section_name, level_name, position, community, owner_gulag, search_dist, hunt_actor_prob, explode_dist, spawner)
local packet1 = utils2.packet_pool_get()
local packet2 = utils2.packet_pool_get()
local level_vertex_id, game_vertex_id = utils2.get_top_graph_ids(level_name)
local se_obj = alife():create(turret_section_name, position, level_vertex_id, game_vertex_id)
if se_obj == nil then
abort("can't create '%s' at (%f,%f,%f)")
end
-- лучше через table.concat()
local custom_data = "[logic]\nactive = turret\n[turret]\n"
if community ~= nil then
custom_data = custom_data.."community = "..community.."\n"
end
if owner_gulag ~= nil then
custom_data = custom_data.."owner_gulag = "..owner_gulag.."\n"
end
if hunt_actor_prob ~= nil then
custom_data = custom_data.."hunt_actor_prob = "..tostring(hunt_actor_prob).."\n"
else
custom_data = custom_data.."hunt_actor_prob = 50\n"
end
if search_dist ~= nil then
custom_data = custom_data.."search_dist = "..tostring(search_dist).."\n"
else
custom_data = custom_data.."search_dist = 90\n"
end
if explode_dist ~= nil then
custom_data = custom_data.."explode_dist = "..tostring(explode_dist).."\n"
else
custom_data = custom_data.."explode_dist = 1\n"
end
if spawner ~= nil then
custom_data = custom_data.."[spawner]\ncond = "..spawner.."\n"
end
se_obj:STATE_Write(packet1)
local dead_space = packet2:w_tell()
utils2.packet_pool_put(packet1)
utils2.packet_pool_put(packet2)
end
function create_dir_turret(turret_section_name, level_name, position, community, owner_gulag, search_dist, hunt_actor_prob, explode_dist, spawner)
local packet1 = utils2.packet_pool_get()
local packet2 = utils2.packet_pool_get()
local level_vertex_id, game_vertex_id = utils2.get_top_graph_ids(level_name)
local se_obj = alife():create(turret_section_name, position, level_vertex_id, game_vertex_id)
if se_obj == nil then
abort("can't create '%s' at (%f,%f,%f)")
end
-- лучше через table.concat()
local custom_data = "[logic]\nactive = turret\n[turret]\n"
if community ~= nil then
custom_data = custom_data.."community = "..community.."\n"
end
if owner_gulag ~= nil then
custom_data = custom_data.."owner_gulag = "..owner_gulag.."\n"
end
if hunt_actor_prob ~= nil then
custom_data = custom_data.."hunt_actor_prob = "..tostring(hunt_actor_prob).."\n"
else
custom_data = custom_data.."hunt_actor_prob = 50\n"
end
if search_dist ~= nil then
custom_data = custom_data.."search_dist = "..tostring(search_dist).."\n"
else
custom_data = custom_data.."search_dist = 90\n"
end
if explode_dist ~= nil then
custom_data = custom_data.."explode_dist = "..tostring(explode_dist).."\n"
else
custom_data = custom_data.."explode_dist = 3\n"
end
if spawner ~= nil then
custom_data = custom_data.."[spawner]\ncond = "..spawner.."\n"
end
function se_turret_mgun:__init(section) super(section)
self.spawner_present = false
self.health = 1.0
self.direction = vector():set(0, 0, 0)
end
function se_turret_mgun:can_switch_offline()
return cse_alife_helicopter.can_switch_offline(self)
end
function se_turret_mgun:can_switch_online()
if self.health <= 0.005 then
return false
end
if self.spawner_present == nil then
local ini = self:spawn_ini()
self.spawner_present = ini:section_exist("spawner")
end
if self.spawner_present == true then
return cse_alife_helicopter.can_switch_online(self)
end
return xr_spawner.check_spawn(self)
end
function se_turret_mgun:STATE_Read(packet, size)
cse_alife_helicopter.STATE_Read(self, packet, size)
self.health = packet:r_float()
self.direction = packet:r_vec3()
end
function se_turret_mgun:STATE_Write(packet)
cse_alife_helicopter.STATE_Write(self, packet)
packet:w_float(self.health)
packet:w_vec3(self.direction)
end[/code]
Так вот у меня возник вопрос: Что такое tips = st_search_treasure и куда ссылается st_search_treasure?
Помогите пожалуйста, не могу найти. Это скрипт или фаил логики?
nonscript_usable = true - эта строка отвечает за то, можно ли юзнуть объект или нет
tips = st_search_treasure - это строка, которая высвечивается, когда наводишь прицел на объект.
karavan
Идентификатор строки\подсказки st_search_treasure поиском в Notepad++ легко находится в config\text\rus\string_table_general.xml
Кстати подсказку можно не указывать в виде идентификатора, а сразу написать
tips = "это подсказка..."
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Gun12 Да именно от туда скачал, несколько раз пробовал скачать. запускаю - ничего не происходит, не появляется никаких окошек и вообще как будто бы ничего и не было даже через пару часов
Может эта программа без чего-то работать не может?
Итак у меня результат такой в плане игры:
То что я сделал - работает как надо, правда рекристор что звук проигрывает его проигрывается не останавливаясь, но только когда в нем находишся.
Вылет игры происходит при переходе на другую локацию с этой локации, либо при выходе из игры.
На других локациях использующие функции спавна в файле xr_effects подобного не наблюдается, все работает нормально без вылетов при переходе и выходе.
Сами функции в файле xr_effects которые используются на той локации, где вылет.
-------------------------------------------------------------------------------------
-- Функции для PREDBANA
----------------------------------------------------------------------------------
function spawn_predban_zamanuha_12_aaa()
local obj = alife():create("ammo_og-7b",vector():set(-85.468276977539,5.5943512916565,325.48202514648),812059,3976)
local obj = alife():create("wpn_rg6_m1",vector():set(-29.593883514404,3.9966613197327,362.55456542969),897665,3988)
local obj = alife():create("conserva",vector():set(-91.669204711914,-3.2547651767731,317.68402099609),802261,3976)
local obj = alife():create("conserva",vector():set(-40.222801208496,-0.327996301651,333.35202026367),880847,3985)
local obj = alife():create("ammo_7.62x54_ap",vector():set(-22.169546127319,-3.2483690261841,328.3356628418),907728,3989)
local obj = alife():create("ammo_5.56x45_ap",vector():set(-19.976657867432,2.2931165218353,353.14791870117),912189,3988)
local obj = alife():create("wpn_svu",vector():set(-25.313737869263,-3.2108093738556,328.80474853516),905484,3989)
local obj = alife():create("af_gravi",vector():set(-40.222801208496,-0.527996301651,333.35202026367),880847,3985)
local obj = alife():create("predban_documents_1",vector():set(-40.163581848145,-0.5422027015686,332.13955688477),880843,3985)
end
function respawn_predban_dark_stalker_aa1()
local obj = alife():create("dark_stalker_1_predban_koster_1",vector():set(-34.636524200439,1.3530706167221,346.13079833984),889608,3985)
local obj = alife():create("dark_stalker_2_predban_koster_1",vector():set(-34.636524200439,1.3530706167221,346.13079833984),889608,3985)
local obj = alife():create("dark_stalker_3_predban_koster_1",vector():set(-34.636524200439,1.3530706167221,346.13079833984),889608,3985)
end
function respawn_predban_dark_stalker_aa2()
local obj = alife():create("dark_stalker_1_predban_koster_2",vector():set(-63.431900024414,1.6162606477737,338.19659423828),844728,3976)
local obj = alife():create("dark_stalker_2_predban_koster_2",vector():set(-63.431900024414,1.6162606477737,338.19659423828),844728,3976)
local obj = alife():create("dark_stalker_3_predban_koster_2",vector():set(-63.431900024414,1.6162606477737,338.19659423828),844728,3976)
end
function respawn_predban_dark_stalker_aa3()
local obj = alife():create("dark_stalker_1_predban_koster_3",vector():set(-219.1611328125,30.648775100708,273.16778564453),603033,3951)
local obj = alife():create("dark_stalker_2_predban_koster_3",vector():set(-219.1611328125,30.648775100708,273.16778564453),603033,3951)
local obj = alife():create("dark_stalker_3_predban_koster_3",vector():set(-219.1611328125,30.648775100708,273.16778564453),603033,3951)
end
function respawn_predban_dark_stalker_aa4()
local obj = alife():create("dark_stalker_1_predban_patrol_1",vector():set(-2.4329123497009,0.61954188346863,353.92846679688),940204,3997)
local obj = alife():create("dark_stalker_1_predban_oh_1",vector():set(-47.942741394043,1.670184969902,328.65567016602),867833,3985)
local obj = alife():create("dark_stalker_2_predban_oh_1",vector():set(-77.650512695313,1.4945989847183,335.69219970703),823968,3976)
end
Mehanik Yar, а переменные в функциях же можно и не объявлять, они же нигде не используются, или я не правильно читаю код?
А функцию respawn_predban_dark_stalker_aa1() можно переписать более компактно:
function respawn_predban_dark_stalker_aa1()
for i = 1, 3 do
alife():create("dark_stalker_" .. i .. "_predban_koster_1",vector():set(-34.636524200439, 1.3530706167221, 346.13079833984), 889608, 3985)
end
end
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.