Re: Скриптинг курилка -
Stepashka - 28.04.2012
%{чем заполнить}{до какого порядка заполнять}d
Re: Скриптинг курилка -
RingoRus - 29.04.2012
Подскажите, как можно использовать GetPlayerColor() для изменения цвета текста, в примере ниже:
Code:
format(string,64,"Рас два {%h}три",GetPlayerColor(p));
Нужно как-то преобразовать для того, чтобы это заработало.
Re: Скриптинг курилка -
Stepashka - 29.04.2012
Code:
SendClientMessage(playerid, GetPlayerColor(p), "Welcome to my server!");
Re: Скриптинг курилка -
OKStyle - 29.04.2012
GetPlayerColor(p) >> 8
Поищи по форуму, я решал эту проблему уже.
Re: Скриптинг курилка -
Stepashka - 29.04.2012
Тут вы путаете некоторые понятия.
GetPlayerColor возвращает HEX значение цвета, а в текстах для цветов используется просто буквенный код цвета. И для того чтобы использовать
GetPlayerColor так как ты задумал тебе нужно преобразовать возвращаемый результат в текст и при этом отсечь альфа канал и префикс
0x.
Re: Скриптинг курилка -
Baks - 29.04.2012
Никто не сталкивался с проблемой, связанной с Set/GetPlayerScore? Судя по отзывам, есть некоторый софт, который позволяет установить себе определенное кол-во фрагов и они еще сохраняться в аккаунт...
У меня используется Set/GetPlayerScore только в паблике отображения фрагов в ТАБ, все остальное через PlayerInfo[playerid][Kills] += 1;
Однако "нехорошие люди" могут контролировать и изменять свою и чужие статистики аккаунтов по своему желанию... Есть ли способы как с этим бороться?
Re: Скриптинг курилка -
Stepashka - 29.04.2012
Quote:
Originally Posted by Baks
Никто не сталкивался с проблемой, связанной с Set/GetPlayerScore? Судя по отзывам, есть некоторый софт, который позволяет установить себе определенное кол-во фрагов и они еще сохраняться в аккаунт...
У меня используется Set/GetPlayerScore только в паблике отображения фрагов в ТАБ, все остальное через PlayerInfo[playerid][Kills] += 1;
Однако "нехорошие люди" могут контролировать и изменять свою и чужие статистики аккаунтов по своему желанию... Есть ли способы как с этим бороться?
|
храни данные на серверной стороне.
Re: Скриптинг курилка -
raider19rus - 29.04.2012
Quote:
Originally Posted by RingoRus
Подскажите, как можно использовать 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;}
Re: Скриптинг курилка -
Baks - 29.04.2012
PHP Code:
new tmp[256], Index;
tmp = strtok(params, Index),
Давно задавался вопросом, как узнать сколько памяти надо выделять в tmp, например, для смены цвета транспорта? (/carcolour цвет 1 цвет 2)
Re: Скриптинг курилка -
OKStyle - 29.04.2012
Лол... Я же говорил:
Code:
new string[128];
format(string, sizeof(string), "{%06x}%s", GetPlayerColor(playerid) >>> 8, text);
SendClientMessageToAll(-1, string);
Re: Скриптинг курилка -
eakwarp - 29.04.2012
Quote:
Originally Posted by Baks
PHP Code:
new tmp[256], Index;
tmp = strtok(params, Index),
Давно задавался вопросом, как узнать сколько памяти надо выделять в tmp, например, для смены цвета транспорта? (/carcolour цвет 1 цвет 2)
|
7 байт - 7 символов(если будем считать цвета машин от 0 до 126), по 3 на два цвета, один на пробел между. Хотя по моему проще использовать sscanf, и задействовать всего 2 байта.
Re: Скриптинг курилка -
Baks - 29.04.2012
Что-то на 7 байт не тянет, компилирует исключительно с 256 или выше, иначе выскакивает ошибка:
PHP Code:
error 047: array sizes do not match, or destination array is too small
PHP Code:
dcmd_carcolour(playerid, params[]){
//#pragma unused params
new tmp[256], tmp2[256], Index;
tmp = strtok(params, Index), tmp2 = strtok(params, Index);
if (IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOUR_PURPLE, "Только с водительского места.");
if (!strlen(tmp)){
SendClientMessage(playerid, COLOUR_PURPLE, "/carcolor (id 1) (id 2).");}
else if (!strlen(tmp2)){
ChangeVehicleColor(GetPlayerVehicleID(playerid), strval(tmp), strval(tmp));}
else if (!IsPlayerInAnyVehicle(playerid)){
SendClientMessage(playerid, COLOUR_PURPLE, "Только с водительского места.");}
else{
ChangeVehicleColor(GetPlayerVehicleID(playerid), strval(tmp), strval(tmp2));}
return 1;}
Re: Скриптинг курилка -
eakwarp - 29.04.2012
Quote:
Originally Posted by Baks
Что-то на 7 байт не тянет, компилирует исключительно с 256 или выше, иначе выскакивает ошибка:
PHP Code:
error 047: array sizes do not match, or destination array is too small
PHP Code:
dcmd_carcolour(playerid, params[]){
//#pragma unused params
new tmp[256], tmp2[256], Index;
tmp = strtok(params, Index), tmp2 = strtok(params, Index);
if (IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOUR_PURPLE, "Только с водительского места.");
if (!strlen(tmp)){
SendClientMessage(playerid, COLOUR_PURPLE, "/carcolor (id 1) (id 2).");}
else if (!strlen(tmp2)){
ChangeVehicleColor(GetPlayerVehicleID(playerid), strval(tmp), strval(tmp));}
else if (!IsPlayerInAnyVehicle(playerid)){
SendClientMessage(playerid, COLOUR_PURPLE, "Только с водительского места.");}
else{
ChangeVehicleColor(GetPlayerVehicleID(playerid), strval(tmp), strval(tmp2));}
return 1;}
|
Это уже проблема strtok. Сколько реально нужно, и сколько требует функция 5 летней давности несколько несоразмерные вещи.
Re: Скриптинг курилка -
Stepashka - 29.04.2012
Quote:
Originally Posted by eakwarp
7 байт - 7 символов(если будем считать цвета машин от 0 до 126), по 3 на два цвета, один на пробел между. Хотя по моему проще использовать sscanf, и задействовать всего 2 байта.
|
в pawn ячейки, одна ячейка 4 байта, итого 4*7=28 байт

Но я соглашусь используйте
sscanf.
Re: Скриптинг курилка -
Baks - 29.04.2012
Ок, спасибо, переделаю под sscanf.
Посмотрел примеры, как люди используют, возник вопрос:
PHP Code:
if(sscanf(params, "ri", id, reason)) return SendClientMessage(playerid, COLOR_DRED,"Usage: /Ban [playerid] [reason]");
Что такое "ri" и другие подобные комбинации букв, как узнать какую комбинацию писать?
Re: Скриптинг курилка -
Stepashka - 29.04.2012
sscanf 2.6 раздел
Specifiers.
Re: Скриптинг курилка -
eakwarp - 29.04.2012
Quote:
Originally Posted by Stepashka
в pawn ячейки, одна ячейка 4 байта, итого 4*7=28 байт 
|
Что-то да, тут я забыл, каюсь.
Re: Скриптинг курилка -
Baks - 29.04.2012
Спасибо, разобрался как работает sscanf, действительно, очень удобно. =)
Re: Скриптинг курилка -
raider19rus - 30.04.2012
Пробую сделать объекты
SA-MP 0.3d /
0.3e для
MTA...
Re: Скриптинг курилка -
OKStyle - 30.04.2012
Давно есть такой софт.