Aller au contenu

Pluie d'acide


Messages recommandés

Posté(e)

Bonjour j'aimerais un skript pour mon serveur , ou toutes les 10 minutes une pluie acide tombe sur la map qui enleve 1 coeur aux joueurs par secondes.

 

J'aimerais que quand les joueurs soit au contact avec cette pluie ils prennent des degats. J'aimerais que dans le chat il y est marquer : &c&lAttention ! &cPluie acide dans 30 secondes !

Et a la fin &cLa plus acide se dissipe !

 

Voila voila merci d'avance :)

Posté(e)
Il y a 8 heures, Trifcan54 a dit :

Salut, juste pour t'annoncer que je suis pas sur que c'est possible pour ta pluie acide. Mais je ferrait des recherche pour savoir un peut plus pour le systeme de pluie.

Ce seras de la pluie, et tout est possible ^^'

Faut juste vérifie si la pluie touche le joueur pour lui infliger les damages.

Posté(e)
Le 17/02/2019 à 07:48, > NoaGamingFR a dit :

Ce seras de la pluie, et tout est possible ^^'

Faut juste vérifie si la pluie touche le joueur pour lui infliger les damages.

Tu peux m'aider alors ? 🙂

Posté(e)
Il y a 2 heures, > NoaGamingFR a dit :

J'avais déjà fait ça il me semble, mais je n'ai plus la solution en tête pour vérifier si un joueur se fait toucher par la pluie :x

Ha.....

Posté(e)

Je pense qu'il suffit de détecter si il n'y a aucun bloc au dessus du joueur. (vue sur le ciel). Je peux regarder si je vois comment faire.

 

Alors, j'ai fait un skript qui fonctionne... pas toujours.

on va dire que si tu te cache en mine, ça marche bien, mais si tu mets juste un block au dessus de toi, bah ça marche pas toujours. je suppose qu'il a pas le temps de calculer tous les blocs, mais je suis tout seul sur serveur, alors j'espère qu'en multi ça sera pas trop dégeu.

J'ai pas trouvé d'autre solution donc si quelqu'un veut tenter de résoudre, ça serait pas de refus.

Ah et aussi, il n'y avait pas marqué combien de temps il fallait que le pluie dure, donc j'ai mis 30 secondes au pif, tu peux changer.
 

every 10 minutes:
    pluieaccide()

command /pluieaccidestart:
    permission: pluieaccide.start
    trigger:
        pluieaccide2()

function pluieaccide():
    broadcast "&c&lAttention ! &cPluie acide dans 30 secondes !"
    wait 30 seconds
    pluieaccide2()

function pluieaccide2():
    broadcast "&c&lAttention ! &cLa pluie acide commence !"
    set the weather of all the worlds to rain
    loop 30 times:   # durée de la pluie en secondes
        wait 1 second
        loop all players:    
            if loop-player's gamemode is survival:
                set {_x} to x-coordinate of loop-player
                set {_z} to z-coordinate of loop-player
                set {_pos} to location at ({_x}, 255, {_z}) in world of loop-player
                
                loop blocks within position of loop-player and {_pos}:
                    if loop-block is not air:
                        set {pluie.safe.%loop-player-1%} to true
                        broadcast "Vous êtes protégés."
                        stop loop
                if {pluie.safe.%loop-player%} = true:
                    delete {pluie.safe.%loop-player%}
                else:
                    damage loop-player by 1 heart
    set the weather of all the worlds to sun
    broadcast "&cLa plus acide se dissipe !"

 

Posté(e) (modifié)

Holà, je n'ai pas codé depuis longtemps et je ne peux pas tester avant très longtemps mais :

Si on utilise la technique de niveau de luminosité du soleil sur un bloc à la place de loop tous les blocs au dessus de la tête du joueur ?

( énorme gain de ressource processeur ! )

https://minecraft.gamepedia.com/Light#Other

https://skripthub.net/docs/?id=970

 

Modifié par Anarchick
Posté(e) (modifié)
Le 22/02/2019 à 23:20, Rhevel a dit :

Alors, j'ai fait un skript qui fonctionne... pas toujours.

on va dire que si tu te cache en mine, ça marche bien, mais si tu mets juste un block au dessus de toi, bah ça marche pas toujours. je suppose qu'il a pas le temps de calculer tous les blocs, mais je suis tout seul sur serveur, alors j'espère qu'en multi ça sera pas trop dégeu.

J'ai pas trouvé d'autre solution donc si quelqu'un veut tenter de résoudre, ça serait pas de refus.

Ah et aussi, il n'y avait pas marqué combien de temps il fallait que le pluie dure, donc j'ai mis 30 secondes au pif, tu peux changer.
 


every 10 minutes:
    pluieaccide()

command /pluieaccidestart:
    permission: pluieaccide.start
    trigger:
        pluieaccide2()

function pluieaccide():
    broadcast "&c&lAttention ! &cPluie acide dans 30 secondes !"
    wait 30 seconds
    pluieaccide2()

function pluieaccide2():
    broadcast "&c&lAttention ! &cLa pluie acide commence !"
    set the weather of all the worlds to rain
    loop 30 times:   # durée de la pluie en secondes
        wait 1 second
        loop all players:    
            if loop-player's gamemode is survival:
                set {_x} to x-coordinate of loop-player
                set {_z} to z-coordinate of loop-player
                set {_pos} to location at ({_x}, 255, {_z}) in world of loop-player
                
                loop blocks within position of loop-player and {_pos}:
                    if loop-block is not air:
                        set {pluie.safe.%loop-player-1%} to true
                        broadcast "Vous êtes protégés."
                        stop loop
                if {pluie.safe.%loop-player%} = true:
                    delete {pluie.safe.%loop-player%}
                else:
                    damage loop-player by 1 heart
    set the weather of all the worlds to sun
    broadcast "&cLa plus acide se dissipe !"

 

Je me suis permis de modifier ton code, pour le rendre plus compact et plus opti, et en enlevant les bugs (tu avais mis un "stop loop", donc si un joueur était protégé, la loop s'arrêtait et la pluie se dissipait. Ce que tu voulais c'était un "continue", qui sert a passer a la prochaine valeur dans une loop).

every 10 minutes:
	pluieacide()

command /pluieacidestart:
	permission: pluieacide.start
	trigger:
		pluieacide(true)


function pluieacide(wait: boolean=false):
	if {_wait}:
		broadcast "&c&lAttention ! &cPluie acide dans 30 secondes !"
		wait 30 seconds
	broadcast "&c&lAttention ! &cLa pluie acide commence !"
	set the weather of all the worlds to rain
	loop 30 times:   # durée de la pluie en secondes
		wait 1 second
		loop all players where input's gamemode is survival:
			set {_x} to x-coordinate of loop-player
			set {_z} to z-coordinate of loop-player
			set {_pos} to location at ({_x}, 255, {_z}) in world of loop-player
			
			loop blocks within position of loop-player and {_pos}:
				if loop-block is not air:
					broadcast "Vous êtes protégés."
					continue
			damage loop-player by 1 heart
	set the weather of all the worlds to sun
	broadcast "&cLa pluie acide se dissipe !"

si tu veux lancer la pluie sans compte a rebours de 30s, alors c'est pluiacide(). Sinon c'est pluisacide(true)

 

Le 26/02/2019 à 11:12, Anarchick a dit :

Holà, je n'ai pas codé depuis longtemps et je ne peux pas tester avant très longtemps mais :

Si on utilise la technique de niveau de luminosité du soleil sur un bloc à la place de loop tous les blocs au dessus de la tête du joueur ?

( énorme gain de ressource processeur ! )

https://minecraft.gamepedia.com/Light#Other

https://skripthub.net/docs/?id=970

 

Pas bête ca pourrait fonctionner !

edit : dsl double post j'ai pas fait gaffe 😂

Modifié par noftaly
  • J'aime 1
  • Rémi a verrouillé ce sujet
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.