Jump to content
  • 0

pomoc SetPlayerColor...


snake3321

Dotaz

Zdravím,

dělal jsem si dialog input kam si hráč napíše HEX číslo a to se mu nastaví, ale je tu problém... Tak trochu to nefunguje :d

 

v OnDialogResponse

 

 

if(dialogid == DIALOG_Barvanicku && response)
{
   SetPlayerColor(playerid, strval(inputtext));
}

 

 

 

v OnPlayerText:

 

 

public OnPlayerText(playerid, text[])
{
new pText[144];
format(pText, sizeof(pText), "{%06x}%s (%d): %s", GetPlayerColor(playerid) >>> 8, PlayerName(playerid), playerid, text);
SCMTA(playerid, pText);
return 0;
}

 

 

 

barva se normálně načítá, například když se hráč připojí tak mu to hodí random barvu které jsem si našel a zkopíroval z wiki konkrétně ColorFix. Ale pokud si dá nějákej hex kód do toho dialogu, barva se mu změní na černou, napíši tam například: FF0000 nebo jsem zkoušel FF0000FF nebo FF0000AA atp...

PS: Předem děkuji.

Link to comment
Share on other sites

13 odpovědí na tuto otázku

Recommended Posts

  • 0

~> Text začínáš barvou, jakou má barva nicku hráče, takže stačí:

 

format(pText, sizeof(pText), "%s (%d): %s", PlayerName(playerid), playerid, text);
SCMTA(GetPlayerColor(playerid), pText);
~> btw 1. parametr u SCMTA je hex barvy, ne id hráče.
Link to comment
Share on other sites

  • 0
  • Hlavní moderátor

strval je úplna kravina, môžeš tam dať

SetPlayerColor(playerid, inputtext);

 

ale potom musíš zadať celý formát, teda 0xFFFFFFFF

To, co jsi napsal, je úplná kravina. Nemůžeš tam dosadit řetězec.

  • Líbí se mi to! (+1) 2
Link to comment
Share on other sites

  • 0

To, co jsi napsal, je úplná kravina. Nemůžeš tam dosadit řetězec.

Teď nevím, zda je to určené na mě, nebo na něho, ale já pokud bych tam nedal strval, psalo by mi to error

 

error 035: argument type mismatch (argument 2)

Každopádně něják moc jsem nepokročil, je to stejné, barva se načítá vždy jen když se hráč připojí (barva je náhodná). Ovšem když použiju do toho dialogu od 0xFF0000FF k FF0000FF až po FF0000 prakticky se nic neděje, hráčovi se jen nastaví nick na černou bravu která je prakticky nečitelná...

Link to comment
Share on other sites

  • 0
  • Hlavní moderátor

Teď nevím, zda je to určené na mě, nebo na něho, ale já pokud bych tam nedal strval, psalo by mi to error

error 035: argument type mismatch (argument 2)

Každopádně něják moc jsem nepokročil, je to stejné, barva se načítá vždy jen když se hráč připojí (barva je náhodná). Ovšem když použiju do toho dialogu od 0xFF0000FF k FF0000FF až po FF0000 prakticky se nic neděje, hráčovi se jen nastaví nick na černou bravu která je prakticky nečitelná...

Bylo to mířeno na bigw3ba.

Edited by vEnd
Link to comment
Share on other sites

  • 0

Tady jsem našel na sa-mp fóru, zkus to (předělej si to do toho svýho):

	if(dialogid == NAME_COLOR3)
	{
		if(response == 1)
		{
			if(inputtext[0] == EOS)
			{
				SendClientMessage(playerid, COLOR_RED, "You left the input field blank.");
				return ShowPlayerDialog(playerid, NAME_COLOR3, DIALOG_STYLE_INPUT, "Write color", " Write a color in hex notation format:", "Apply", "Cancel");
			}
			new c;
			for( ; inputtext[c]; c++)
				if(('A' <= inputtext[c] && inputtext[c] <= 'F' && '0' <= inputtext[c] && inputtext[c] <= '9') == false)
					break;
			if(inputtext[c] != EOS)
				return SendClientMessage(playerid, COLOR_RED, "Invalid character (Hex notation 0 - 9, A - F)");
			if(c != 9)
				return SendClientMessage(playerid, COLOR_RED, "Invalid format (Example: CCAA8866 [Red/Green/Blue/Visibility])");
			new color, Float:h;
			for(c--; c != -1; c--, h++)
				if(inputtext[c] >= 'A')
					color += ((inputtext[c] - 'A' + 10) * floatpower(16.0, h));
				else	color += ((inputtext[c] - '0') * floatpower(16.0, h));
			return SetPlayerColor(playerid, color);
		}
	}
Link to comment
Share on other sites

  • 0
SetPlayerColor(playerid, strval(inputtext));

tohle ti bude fungovat jen pokud tu barvu budes zadavat v desitkove soustave.

 

V takovém případě to funguje, děkuji. Ovšem jak docílím toho, abych tam mohl psát i například FF0000 nebo 00FF00 nebo 00FFFF atp...?

Link to comment
Share on other sites

  • 0
  • Hlavní moderátor

Klik

 

Hodnoty zadávat ve tvaru RRGGBBAA. Btw, Vince to vzal ze samp wiki (je tam i odkaz), takže za nic neručím. ^^

Link to comment
Share on other sites

  • 0

Dobře děkuji, jen poprosím, dnes jsem úplně vypatlanej nějákej, netvrdím, že normálně nejsem, ale dnes až moc :d, takže se zeptám, kde mám načítat ten stock? Předem děkuji.

Link to comment
Share on other sites

  • 0
  • Hlavní moderátor

Předělám ten tvůj kód, co máš nahoře:

if(dialogid == DIALOG_Barvanicku)
{
   if(!response) return 1;
   SetPlayerColor(playerid, HexToInt(inputtext));
}

Hlavně si dej pozor, že to musí být ve formátu RRGGBBAA (např. FF0000FF), jiné formáty jako FF0000 nebo 0xFF0000FF ti pravděpodobně nebudou fungovat správně!

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...