Скриптинг курилка

%{чем заполнить}{до какого порядка заполнять}d
Reply

Подскажите, как можно использовать GetPlayerColor() для изменения цвета текста, в примере ниже:
Code:
format(string,64,"Рас два {%h}три",GetPlayerColor(p));
Нужно как-то преобразовать для того, чтобы это заработало.
Reply

Code:
SendClientMessage(playerid, GetPlayerColor(p), "Welcome to my server!");
Reply

GetPlayerColor(p) >> 8

Поищи по форуму, я решал эту проблему уже.
Reply

Тут вы путаете некоторые понятия. GetPlayerColor возвращает HEX значение цвета, а в текстах для цветов используется просто буквенный код цвета. И для того чтобы использовать GetPlayerColor так как ты задумал тебе нужно преобразовать возвращаемый результат в текст и при этом отсечь альфа канал и префикс 0x.
Reply

Никто не сталкивался с проблемой, связанной с Set/GetPlayerScore? Судя по отзывам, есть некоторый софт, который позволяет установить себе определенное кол-во фрагов и они еще сохраняться в аккаунт...

У меня используется Set/GetPlayerScore только в паблике отображения фрагов в ТАБ, все остальное через PlayerInfo[playerid][Kills] += 1;

Однако "нехорошие люди" могут контролировать и изменять свою и чужие статистики аккаунтов по своему желанию... Есть ли способы как с этим бороться?
Reply

Quote:
Originally Posted by Baks
View Post
Никто не сталкивался с проблемой, связанной с Set/GetPlayerScore? Судя по отзывам, есть некоторый софт, который позволяет установить себе определенное кол-во фрагов и они еще сохраняться в аккаунт...

У меня используется Set/GetPlayerScore только в паблике отображения фрагов в ТАБ, все остальное через PlayerInfo[playerid][Kills] += 1;

Однако "нехорошие люди" могут контролировать и изменять свою и чужие статистики аккаунтов по своему желанию... Есть ли способы как с этим бороться?
храни данные на серверной стороне.
Reply

Quote:
Originally Posted by RingoRus
View Post
Подскажите, как можно использовать GetPlayerColor() для изменения цвета текста, в примере ниже:
Code:
format(string,64,"Рас два {%h}три",GetPlayerColor(p));
Нужно как-то преобразовать для того, чтобы это заработало.
Code:
format(string,64,"Рас два {%s}три",hexstr(GetPlayerColor(playerid)));

/**********/

stock hexstr(hex){
new str[8]={48,48,48,48,48,48,0,0},tmp[8],idx;
if(!hex)return str;
format(tmp,sizeof(tmp),"%x",((hex>>8)|0xFF000000)-0xFF000000);
idx=strlen(tmp);
for(new i;i<idx;i++)str[5-i]=tmp[idx-1-i];
return str;}
Reply

PHP Code:
new tmp[256], Index;
tmp strtok(paramsIndex), 
Давно задавался вопросом, как узнать сколько памяти надо выделять в tmp, например, для смены цвета транспорта? (/carcolour цвет 1 цвет 2)
Reply

Лол... Я же говорил:
Code:
new string[128];
format(string, sizeof(string), "{%06x}%s", GetPlayerColor(playerid) >>> 8, text);
SendClientMessageToAll(-1, string);
Reply

Quote:
Originally Posted by Baks
View Post
PHP Code:
new tmp[256], Index;
tmp strtok(paramsIndex), 
Давно задавался вопросом, как узнать сколько памяти надо выделять в tmp, например, для смены цвета транспорта? (/carcolour цвет 1 цвет 2)
7 байт - 7 символов(если будем считать цвета машин от 0 до 126), по 3 на два цвета, один на пробел между. Хотя по моему проще использовать sscanf, и задействовать всего 2 байта.
Reply

Что-то на 7 байт не тянет, компилирует исключительно с 256 или выше, иначе выскакивает ошибка:

PHP Code:
error 047: array sizes do not match, or destination array is too small 
PHP Code:
dcmd_carcolour(playeridparams[]){
//#pragma unused params
new tmp[256], tmp2[256], Index;
tmp strtok(paramsIndex), tmp2 strtok(paramsIndex);
if (
IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playeridCOLOUR_PURPLE"Только с водительского места.");
if (!
strlen(tmp)){
SendClientMessage(playeridCOLOUR_PURPLE"/carcolor (id 1) (id 2).");}
else if (!
strlen(tmp2)){
ChangeVehicleColor(GetPlayerVehicleID(playerid), strval(tmp), strval(tmp));}
else if (!
IsPlayerInAnyVehicle(playerid)){
SendClientMessage(playeridCOLOUR_PURPLE"Только с водительского места.");}
else{
ChangeVehicleColor(GetPlayerVehicleID(playerid), strval(tmp), strval(tmp2));}
return 
1;} 
Reply

Quote:
Originally Posted by Baks
View Post
Что-то на 7 байт не тянет, компилирует исключительно с 256 или выше, иначе выскакивает ошибка:

PHP Code:
error 047: array sizes do not match, or destination array is too small 
PHP Code:
dcmd_carcolour(playeridparams[]){
//#pragma unused params
new tmp[256], tmp2[256], Index;
tmp strtok(paramsIndex), tmp2 strtok(paramsIndex);
if (
IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playeridCOLOUR_PURPLE"Только с водительского места.");
if (!
strlen(tmp)){
SendClientMessage(playeridCOLOUR_PURPLE"/carcolor (id 1) (id 2).");}
else if (!
strlen(tmp2)){
ChangeVehicleColor(GetPlayerVehicleID(playerid), strval(tmp), strval(tmp));}
else if (!
IsPlayerInAnyVehicle(playerid)){
SendClientMessage(playeridCOLOUR_PURPLE"Только с водительского места.");}
else{
ChangeVehicleColor(GetPlayerVehicleID(playerid), strval(tmp), strval(tmp2));}
return 
1;} 
Это уже проблема strtok. Сколько реально нужно, и сколько требует функция 5 летней давности несколько несоразмерные вещи.
Reply

Quote:
Originally Posted by eakwarp
View Post
7 байт - 7 символов(если будем считать цвета машин от 0 до 126), по 3 на два цвета, один на пробел между. Хотя по моему проще использовать sscanf, и задействовать всего 2 байта.
в pawn ячейки, одна ячейка 4 байта, итого 4*7=28 байт
Но я соглашусь используйте sscanf.
Reply

Ок, спасибо, переделаю под sscanf.
Посмотрел примеры, как люди используют, возник вопрос:

PHP Code:
if(sscanf(params"ri"idreason)) return SendClientMessage(playeridCOLOR_DRED,"Usage: /Ban [playerid] [reason]"); 
Что такое "ri" и другие подобные комбинации букв, как узнать какую комбинацию писать?
Reply

sscanf 2.6 раздел Specifiers.
Reply

Quote:
Originally Posted by Stepashka
View Post
в pawn ячейки, одна ячейка 4 байта, итого 4*7=28 байт
Что-то да, тут я забыл, каюсь.
Reply

Спасибо, разобрался как работает sscanf, действительно, очень удобно. =)
Reply

Пробую сделать объекты SA-MP 0.3d / 0.3e для MTA...
Reply

Давно есть такой софт.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)