Cài đặt Steam
Đăng nhập
|
Ngôn ngữ
简体中文 (Hán giản thể)
繁體中文 (Hán phồn thể)
日本語 (Nhật)
한국어 (Hàn Quốc)
ไทย (Thái)
Български (Bungari)
Čeština (CH Séc)
Dansk (Đan Mạch)
Deutsch (Đức)
English (Anh)
Español - España (Tây Ban Nha - TBN)
Español - Latinoamérica (Tây Ban Nha cho Mỹ Latin)
Ελληνικά (Hy Lạp)
Français (Pháp)
Italiano (Ý)
Bahasa Indonesia (tiếng Indonesia)
Magyar (Hungary)
Nederlands (Hà Lan)
Norsk (Na Uy)
Polski (Ba Lan)
Português (Tiếng Bồ Đào Nha - BĐN)
Português - Brasil (Bồ Đào Nha - Brazil)
Română (Rumani)
Русский (Nga)
Suomi (Phần Lan)
Svenska (Thụy Điển)
Türkçe (Thổ Nhĩ Kỳ)
Українська (Ukraine)
Báo cáo lỗi dịch thuật
Não tem alguma maneira de você identificar o horário atual no relógio interno do jogo, através de um valor double, String, int, ou algum outro formato exclusivo do framework de programação? O framework deve ter alguma função pra isso.
Se tiver como você obter essa info, creio que é mais fácil de fazer o que você quer do que checar a cada segundo se os painéis estão ativados ou não.
Also, lembre-se que uma instrução de loop precisa de uma condição de parada, se não ficará eternamente rodando.
Vou Pesquisar @Mr.Dawn e trago a resposta aqui, logo.
Mas realmente nessa parte do loop, me perdi um pouco porque quero que as luzes desligassem quando os painéis solares (que já são blocos que identificam a luz do sol no planeta) estivessem funcionando no caso gerando energia e depois ligassem quando não estivessem.
Beleza.
Algo, porém, me deixou curioso: esse script roda em que momento, exatamente? Quando a tua base é renderizada, ou você precisa iniciá-lo manualmente, ou automaticamente via alguma funcionalidade do jogo?
Porque dependendo de como você faz isso, essa instrução while seria redundante.
Então a minha ideia inicial é quando a base for renderizada e ele estaria funcionando toda hora, enquanto jogo, mas agora pensando, seria mais prudente se eu ativasse por um botão (que tem no jogo) para quando eu quisesse ativar essa função. Pois se casso precisasse reformar os painéis ou a base não quebrasse o código ou desse muito lag, por estar rodando o código sempre. Então eu ativaria o botão para essa função rodar e quando ativado ele identificaria o sol pelos painéis solares.
Só Lembrando, a língua do Bloco de Programação é em C# e existe outro bloco com Temporizador, que é o que gera o tempo do script rodar, ele que faria esse loop de 1 segundo.
Saquei. É que dependendo do overhead produzido dentro da instrução de loop, pode reamente gerar lag.
Veja se é possível de alguma maneira você obter o horário interno do jogo, aí você implementa o while com a condição de execução sendo o range do horário em que é escuro, o bloco de execução a função que liga as luzes, e a condição de parada o range do horário em que é claro, aí acho que rola fazer o que você quer.
Ótimo, Pesquisei aqui e nas configurações iniciais nós que coordenamos quanto tempo de duração do dia, posso calcular ingame quanto tempo do sol e quanto tempo da noite (me parece ser desbalanceado dependendo do planeta que você estiver) e daí configurar o timer para esse range o problema é que seria interessante se fosse funcional em todos os planetas, por isso pensei em usar o Painel Solar.
É, nesse caso acho que tem mais lógica, se não o range terá de mudar o tempo todo. Faz sentido usar os painéis solares como referência.
Então faça desta maneira: a condição de execução do while está correta no script-exemplo, já no bloco de execução você implementa a rotina que ativa as luzes, e a condição e parada você define quando panel.IsWorking retornar falso.
Acho que isso resolve o teu problema.
Nele se você der Ctrl+F e buscar, MySolarPanel e também ZACommons você encontra esses parâmetros, eu não entendi a ligação desse ZACommons com o bloco temporizador que é usado para rodar o script porque ele identifica como comentário uma constante string como eu fiz ali acima, ainda não compreendo em que momento ZACommons recebe esse loop de 1 segundo, consegue me ajudar nisso?
ZACommons é tipo uma library com funções pra acessar módulos ou algo do gênero? Não entendi muito bem, mas pelo que notei, essa classe/objecto ZACommons contém coleções de blocos, e na linha 296 fica o acesso os blocos do tipo específico que te interessam.
Não achei nada que fizesse referência a um temporizador aí.
Edit:
Ah, encontrei lá, é essa String STANDARD_LOOP_TIMER_BLOCK_NAME. Mas é...eu não sei exatamente como isso funciona. Acho que essa String está em um formato interpretado por alguma parte dessa API.
Relaxe, se você quis discutir sobre em Português, então é este o local correto. Ainda assim seria bom perguntar isso na hub do jogo, talvez lá tenha gente mais acostumada com essa API e que possa te oferecer uma ajuda melhor do que a minha.
Eu não entendo nada dessa API e nem do framework de programação pro Space Engineers, mas se precisar tirar dúvidas sobre lógica, algoritmos ou algo do gênero, let me know.