Цвета ников
#1

Проблема такая.
При подключении к серверу меняю цвет ника (случайный из массива).
Во время игры когда подключается новый игрок, он видит цвета ников игроков совсем другие, не которые у них. И выходит так что никто не может определиться с цветом
Reply
#2

Код в студию. Я так думаю, нужно менять цвет игроку не когда игрок подключается, а когда спавниться.
Reply
#3

А смысл какой? Каждый раз спавниться новый цвет
Reply
#4

При заходе на сервер, ставишь игроку в переменную какой-то цвет, а при спавне, берешь значение этой переменной, и ставишь цвет игроку из этой переменной.
pawn Code:
new array[3] = { 0xFF0000FF, 0x00FF00FF, 0x0000FFFF };
new mycolor[MAX_PLAYERS];
public OnPlayerConnect(...)
{
    mycolor[playerid] = random(sizeof(array));
    SetPlayerColor(playerid, array[ mycolor[playerid] ]);
}

public OnPlayerSpawn(...)
{
    SetPlayerColor(playerid, array[ mycolor[playerid] ]);
}
Что то на подобие этого...
Reply
#5

Спасибо, решилась только половины проблемы. Когда игрок меняет цвет ника на другой, то новый игрок, который подключается к серверу, видит только старый цвет того игрока, а не новый на который он сменил
Reply
#6

Когда игрок меняет цвет ника на другой - так же записывай в переменную новый цвет. Еще как вариант хранить в переменной сам цвет. Только я забыл как... по идее mycolor[playerid] = 0xFF0000FF;
И потом уже SetPlayerColor(playerid, mycolor[playerid]);
Еще можно когда кто-то заходит на сервер, что бы у всех менялся цвет, на цвет из переменной игрока (типо обновление).
Reply
#7

а при спавне разве нельзя генерировать и задавать цвет? А при коннекте ставить серый, типа еще не заспавнен...
Reply
#8

Quote:
Originally Posted by iEnemY
View Post
Когда игрок меняет цвет ника на другой - так же записывай в переменную новый цвет. Еще как вариант хранить в переменной сам цвет. Только я забыл как... по идее mycolor[playerid] = 0xFF0000FF;
И потом уже SetPlayerColor(playerid, mycolor[playerid]);
Еще можно когда кто-то заходит на сервер, что бы у всех менялся цвет, на цвет из переменной игрока (типо обновление).
А смысл записывать? Это только для того чтобы он не менялся на старый при спавне.

Сама проблема вся в том, что админы имеют невидимый цвет ника. Включают его когда - это нужно. При подключении к серверу игроки палят всех админов на карте, т.к они имеют старые цвета
Reply
#9

смотри:

Мы будем задавать прозрачность цвету:

PHP Code:
stock togglePlayerInvisible(playeridbool:on_off)
{
    new 
color GetPlayerColor(playerid);
    if(
on_off)
        
color color 0xFFFFFF00;
    else
        
color color 0x000000FF;
    
SetPlayerColor(playeridcolor);

и никаких танцев с бубном (http://megabuben.to.kg)
Reply
#10

Там же вроде в цвете за прозрачность отвечают последние две цифры
Reply
#11

а ты попробуй, и отпишись (:
Reply
#12

Вообще сработало, с черным цветом не хочет
Reply
#13

все ок, тока что на кулькуляторе тестил...
Reply
#14

Романиус, объясни как нубу, что означает
color & 0xFFFFFF00;
и
color | 0x000000FF;
А точнее | и & =)
Reply
#15

Я не объяснялка, и если я объясняю, то сам не понимаю, что я объясняю.

Ну & это бинарное и
А | это бинарное или

Reply
#16

переменная = переменная и 0x000000FF... хм. ну впринцепи понял) а еще такой вопрос, где то видел что то типо while(variable > 0x21) - что такое 0x21?))
Reply
#17

Ытьь моя защита против нубов сработала!
Reply
#18

Quote:
Originally Posted by iEnemY
Посмотреть сообщение
где то видел что то типо while(variable > 0x21) - что такое 0x21?))
число.
Reply
#19

неееее, оказзыца эта защита не тока от нубов (ну мб ты понел если бы увидел весь код)

чот меня понесло, эт проверка на то, что если игрок невидим

PHP код:
stock bool:IsPlayerInvisible(playerid)
{
    new 
color  GetPlayerColor(playerid);
    
    if((
color 0x000000FF) == 0) return true;
    
    return 
false;

Иль макросом

PHP код:
#define IsPlayerInvisible(%0) ((GetPlayerColor(%0) & 0x000000FF) == 0) 
Reply
#20

Quote:
Originally Posted by Romanius
Посмотреть сообщение
неееее, оказзыца эта защита не тока от нубов (ну мб ты понел если бы увидел весь код)

чот меня понесло, эт проверка на то, что если игрок невидим

PHP код:
stock bool:IsPlayerInvisible(playerid)
{
    new 
color  GetPlayerColor(playerid);
    
    if((
color 0x000000FF) == 0) return true;
    
    return 
false;

Иль макросом

PHP код:
#define IsPlayerInvisible(%0) ((GetPlayerColor(%0) & 0x000000FF) == 0) 
такие примеры привидены на вики в функциях где задается цвет игрока по отношению к другим ирокам.
Я написал про 0х21, это число 33.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)