Перейти к содержанию

ac97

Пользователь
  • Постов

    44
  • Зарегистрирован

  • Посещение

Информация о ac97

  • День рождения 21 марта

Информация

  • Имя
    Даниил
  • Пол
    Мужчина
  • Откуда
    Волгоград =)

Посетители профиля

325 просмотров профиля

Достижения ac97

10

Репутация

  1. Всем привет. Кто-то делал свой UI swf-файл, а затем погружал его? Есть какая-либо инструкция? SkyUI не предлагать, там нет нужного для меня модуля. Необходимо выводить информацию, например из stdout в это окно через cpp skse.
  2. Ребят, у всех в последней версии CK, компилятор Papyrus криво работает?   Пример скрипта: Scriptname aaa000MainQuestTriggerInGrave extends ObjectReference Quest Property MyQuest Auto Int Property StageToSet Auto Event OnTriggerEnter(ObjectReference akActionRef) If akActionRef == Game.GetPlayer() eff.play(akalits, 1.2) akalits.disable(true) eff.play(akalits2, 1.2) akalits2.disable(true) eff.play(akalits3, 1.2) akalits3.disable(true) eff.play(akalits4, 1.2) akalits4.disable(true) MyQuest.SetObjectiveCompleted(0) MyQuest.SetObjectiveCompleted(10) MyQuest.SetObjectiveCompleted(20) MyQuest.SetObjectiveCompleted(30) MyQuest.SetCurrentStageID(40) EndIf EndEvent ObjectReference Property akalits Auto ObjectReference Property akalits2 Auto ObjectReference Property akalits3 Auto ObjectReference Property akalits4 Auto VisualEffect Property eff Auto Нигде, все, что связано с Quest, не работает. не setstage, не getstage, ничего. Хотя компилится, ошибок никаких нет.   P.S. в Property всё подключено.   Более того, он даже не начинается при чтении книги: Scriptname aaa000MainQuestStart extends ObjectReference Quest Property MyQuest Auto Int Property StageToSet Auto Event OnRead() MyQuest.SetStage(0) EndEvent upd. Проверил все то же самое на CK для LE издания, там всё работает =(.
  3. Есть вариант, но тут нужен c++ и skse.   Подключаешь: #include <windows.h> #include <mmsystem.h>   И в нужном месте: PlaySound("audio.wav", NULL, SND_FILENAME | SND_ASYNC);
  4. Попытка реализации классов прям как в cpp, но только в Papyrus   Пример Класса: Scriptname PlayerClass ; Свойства String Property Name Auto Int Property Level Auto Float Property Health Auto ; Конструктороподобная функция Function Init(String name, Int level, Float health) Name = name Level = level Health = health EndFunction ; Метод класса Function PrintPlayerInfo() Debug.Notification("Player Name: " + Name) Debug.Notification("Player Level: " + Level) Debug.Notification("Player Health: " + Health) EndFunction Пример использования класса:  Scriptname tClass extends Quest ; Свойство для хранения экземпляра класса Player PlayerClass Property PlayerInstance Auto Event OnInit() ; Создание экземпляра класса Player PlayerInstance.Init("Dragonborn", 10, 100.0) ; Вызов метода класса PlayerInstance.PrintPlayerInfo() EndEvent Function CleanupPlayerInstance() ; аналог delete из cpp PlayerInstance = None EndFunction
  5. Как лучше повесить скрипт, который будет каждые полчаса дергать функцию? Сделать квестом невидимым и вешать при начале новой игры или невидимым бафом/заклинанием?
  6. Scriptname SangTimeScr hidden Function timerFinish(int time) Utility.WaitGameTime(time) ;Ждём n часов EndFunction сохраняешь скрипт отдельно. Потом, в нужной стадии любого квеста, вызываешь функцию timerFinish(). ну и переключаешь дальше на стадию, если надо.   К примеру, у тебя текущая стадия квеста 35, где надо подождать. Открываешь скрипт текущей стадии и пишешь туда timerFinish(24), а потом, переход на следующую стадию
  7. Ребят, а while (true) нельзя в папирусе, да? Прост, надо каждые полчаса запускать определенную функцию. Ругается на aaaCheckUpdateScript.psc(5,0): missing EOF at 'While'   Код прилагаю: Scriptname aaaCheckUpdateScript extends Quest int i = 0 While i < 10 checkUpd() Utility.Wait(1800.0) endWhile Function checkUpd() string cppResult = aaaCheckUpdateFunctions.checkUpdate() If (cppResult == "true") Debug.MessageBox("Доступно новое обновление!") else endIf endFunction Всё, разобрался. while и подобные штуки должны быть внутри событий и функций   Исправленная версия, если кому-то надо: Scriptname aaaCheckUpdateScript extends Quest event OnInit() While(true) checkUpd() Utility.Wait(1800.0) endWhile endEvent Function checkUpd() string cppResult = aaaCheckUpdateFunctions.checkUpdate() If (cppResult == "true") Debug.MessageBox("Доступно новое обновление!") else endIf endFunction
  8. Скачивание файла в игре в папку мода. Необходимо SKSE и Address Library. По желанию, можно вообще QtFramework подключить pch.h #pragma once // This file is required. #include "RE/Skyrim.h" #include "SKSE/SKSE.h" using namespace std::literals; plugin.cpp #include <Urlmon.h> #include <iostream> #include <filesystem> #pragma comment (lib, "urlmon.lib") void downloader(std::string url, std::string filename) { std::wstring urlstr = std::wstring(url.begin(), url.end()); const wchar_t* urlcstr = urlstr.c_str(); std::wstring fnamestr = std::wstring(filename.begin(), filename.end()); const wchar_t* fnamecstr = fnamestr.c_str(); URLDownloadToFile(0, urlcstr, fnamecstr, 0, 0); } SKSEPluginLoad(const SKSE::LoadInterface *skse) { SKSE::Init(skse); std::string url = "https://site.ru/file.txt"; if(std::filesystem::exists("Data\\SKSE\\Plugins\\Plottering")) { SKSE::GetMessagingInterface()->RegisterListener([](SKSE::MessagingInterface::Message *message) { if (message->type == SKSE::MessagingInterface::kDataLoaded) RE::ConsoleLog::GetSingleton()->Print("Download File"); }); downloader(url, "Data\\SKSE\\Plugins\\Plottering\\file.txt"); } else { SKSE::GetMessagingInterface()->RegisterListener([](SKSE::MessagingInterface::Message *message) { if (message->type == SKSE::MessagingInterface::kDataLoaded) RE::ConsoleLog::GetSingleton()->Print("Create dir"); }); std::filesystem::create_directory("Data\\SKSE\\Plugins\\Plottering"); SKSE::GetMessagingInterface()->RegisterListener([](SKSE::MessagingInterface::Message *message) { if (message->type == SKSE::MessagingInterface::kDataLoaded) RE::ConsoleLog::GetSingleton()->Print("Download File"); }); downloader(url, "Data\\SKSE\\Plugins\\Plottering\\file.txt"); } return true; }
  9. Вешаешь два скрипта. На оружие счетчик. А на броне скрипт с проверкой счётчика  повышением хп. Либо создаешь квест, который запускается при загрузке игры(ну, как обычное событие) и туда кидаешь счетчик убийств тобой с проверкой, что это вампиры, а на броньку скрипт с проверкой счетчика и повышением хп
  10. Вот что не так с Papyrus? SKSE стоит. Всё есть. Другие скрипты компилятся норм. Отбой. Скобки не поставил у функции =)
  11. Создаешь GlobalVarior, на главный предмет вешаем скрипт, который будет писать "1" - если предмет надет и "0" при снятии. Ну и на остальные вещи скрипт, который проверяет, надет или нет. Если не надет, то так же, скриптом снимаешь.
  12. Теперь осталось реализовать структуры, классы, шаблоны да и полностью библиотеку STL =)
  13. Вот код для получения текущего времени в часа float Function getCurrentHour() global float Hour = Utility.GetCurrentGameTime() Hour -= Math.Floor(Hour) Hour *= 24 Return Hour EndFunction
  14. Получаем текущее время, а потом юзаем disable/enable?
  15. Здравствуйте. Есть такой вопрос, допустим, есть три разных зелья, которые повышают уровень здоровья, так вот, как сделать, чтоб они суммировались по увеличению уровня здоровья, а не по таймингу? Получается, что надо для каждого зелья делать свой эффект? Нельзя ли сделать одним?
×
×
  • Создать...