Skocz do zawartości
  • 0

Spacja co trzy zera w liczbie


Sledziu

Pytanie

Witam, chciałbym aby ktoś przedstawił mi sposób na to jak rozdzielić wpisaną liczbę tak, aby co trzy cyfry występowała spacja.
Przykładowo:
- Mam komendę /wpisz (liczba)
- Wpisuję: /wpisz 1000000 
- Komenda /wypisz
- Wypisuje nam 1 000 000 (lub 1.000.000) zamiast 1000000

Edytowane przez Sledziu
Odnośnik do komentarza
Udostępnij na innych stronach

8 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
46 minut temu, Sledziu napisał:

Witam, chciałbym aby ktoś przedstawił mi sposób na to jak rozdzielić wpisaną liczbę tak, aby co trzy cyfry występowała spacja.
Przykładowo:
- Mam komendę /wpisz (liczba)
- Wpisuję: /wpisz 1000000 
- Komenda /wypisz
- Wypisuje nam 1 000 000 (lub 1.000.000) zamiast 1000000

Proszę.

function spacedNumber(n: number) :: string:
	set {_num::*} to ("%{_n}%") split at "."
	set {_l::*} to ("%{_num::1}%") split at ""
	set {_t} to ""
	set {_c} to 0
	set {_i} to (size of {_l::*} - 1)
	while {_i} >= 1:
		if {_c} < 3:
			set {_t} to "%{_l::%{_i}%}%%{_t}%"
			add 1 to {_c}
		else:
			set {_t} to " %{_t}%"
			set {_c} to 0
			add 1 to {_i}
		remove 1 from {_i}	
	return "%{_t}%.%{_num::2}%"
	
command /wpisz [<number=100>]:
	trigger:
		set {spacedNumber} to arg 1
		send "&aUstawiono liczbę na &6%arg 1%&a." to sender
		
command /wypisz:
	trigger:
		send "&aTwoja liczba to &6%spacedNumber({spacedNumber})%&a." to sender

 

Edytowane przez Kormic
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
40 minut temu, Kormic napisał:

Proszę.


function spacedNumber(n: number) :: string:
	set {_num::*} to ("%{_n}%") split at "."
	set {_l::*} to ("%{_num::1}%") split at ""
	set {_t} to ""
	set {_c} to 0
	set {_i} to (size of {_l::*} - 1)
	while {_i} >= 1:
		if {_c} < 3:
			set {_t} to "%{_l::%{_i}%}%%{_t}%"
			add 1 to {_c}
		else:
			set {_t} to " %{_t}%"
			set {_c} to 0
			add 1 to {_i}
		remove 1 from {_i}	
	return "%{_t}%.%{_num::2}%"
	
command /wpisz [<number=100>]:
	trigger:
		set {spacedNumber} to arg 1
		send "&aUstawiono liczbę na &6%arg 1%&a." to sender
		
command /wypisz:
	trigger:
		send "&aTwoja liczba to &6%spacedNumber({spacedNumber})%&a." to sender

 

Okej funkcja fajnie działa. Chciałbym jeszcze tylko wiedzieć czy można zrobić jakoś, żeby działał mi ten kod:

		loop 27 times:
				set {_zmienna::*} to lore of {targ.itemy.%{name.%player%}%::%loop-number%}
				if {_zmienna::*} contains "&4&lCena:&6 %spacedNumber({targ.koszty.%{name.%player%}%::%loop-number%})%":
					set player's current inventory's slot loop-number -1 to {targ.itemy.%{name.%player%}%::%loop-number%} with lore {_zmienna::*}
				else:
					add "&4&lCena:&6 %spacedNumber({targ.koszty.%{name.%player%}%::%loop-number%})%" to {_zmienna::*}
					set player's current inventory's slot loop-number -1 to {targ.itemy.%{name.%player%}%::%loop-number%} with lore {_zmienna::*}

Gdy używam Twojej funkcji w tym kodzie to w GUI zamiast Cena: (liczba) pojawia mi się Cena: <none>

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
2 minuty temu, Sledziu napisał:

Gdy używam Twojej funkcji w tym kodzie to w GUI zamiast Cena: (liczba) pojawia mi się Cena: <none>

Jeżeli skrypt działa poprawnie bez funkcji, a z nią już źle, zmień w funkcji w 1. linijce typ argumentu 'number' na 'integer'.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
loop 27 times:
				set {_zmienna::*} to lore of {targ.itemy.%{name.%player%}%::%loop-number%}
				set {p} to {targ.koszty.%{name.%player%}%::%loop-number%}
				broadcast "%{p}%"
				set {o} to spacedNumber({p})
				broadcast "%{o}%"
				if {_zmienna::*} contains "&4&lCena:&6 %spacedNumber({targ.koszty.%{name.%player%}%::%loop-number%})%":
					set player's current inventory's slot loop-number -1 to {targ.itemy.%{name.%player%}%::%loop-number%} with lore {_zmienna::*}
				else:
					add "&4&lCena:&6 %spacedNumber({targ.koszty.%{name.%player%}%::%loop-number%})%" to {_zmienna::*}
					set player's current inventory's slot loop-number -1 to {targ.itemy.%{name.%player%}%::%loop-number%} with lore {_zmienna::*}

Zrobiłem takie coś i wysyła na czacie normalnie zmienną {p} jako liczbę, a zmienną {o} wysyła jako <none>

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

 

function spacedNumber(n: integer) :: string:
	set {_num::*} to ("%{_n}%") split at "."
	set {_l::*} to ("%{_num::1}%") split at ""
	set {_t} to ""
	set {_c} to 0
	set {_i} to (size of {_l::*} - 1)
	while {_i} >= 1:
		if {_c} < 3:
			set {_t} to "%{_l::%{_i}%}%%{_t}%"
			add 1 to {_c}
		else:
			set {_t} to " %{_t}%"
			set {_c} to 0
			add 1 to {_i}
		remove 1 from {_i}	
	return "%{_t}%"

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Dobra znalazłem na necie jakieś rozwiązanie. 

function numFormat(integer: text) :: text:
      return regex replace "(?<=\d)(?=(\d\d\d)+(?!\d))" with " " in {_integer}

i wtedy: set {o} to numFormat("%{p}%")
Myślę, że Twoja funkcja również mogłaby działać gdyby integer zamienic na text

Dzięki za pomoc!

Edytowane przez Sledziu
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...