SA-MP Forums Archive
Скриптинг курилка - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Скриптинг курилка (/showthread.php?tid=111279)



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
View Post
Никто не сталкивался с проблемой, связанной с Set/GetPlayerScore? Судя по отзывам, есть некоторый софт, который позволяет установить себе определенное кол-во фрагов и они еще сохраняться в аккаунт...

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

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


Re: Скриптинг курилка - raider19rus - 29.04.2012

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;}



Re: Скриптинг курилка - Baks - 29.04.2012

PHP Code:
new tmp[256], Index;
tmp strtok(paramsIndex), 
Давно задавался вопросом, как узнать сколько памяти надо выделять в 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
View Post
PHP Code:
new tmp[256], Index;
tmp strtok(paramsIndex), 
Давно задавался вопросом, как узнать сколько памяти надо выделять в 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(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;} 



Re: Скриптинг курилка - eakwarp - 29.04.2012

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 летней давности несколько несоразмерные вещи.


Re: Скриптинг курилка - Stepashka - 29.04.2012

Quote:
Originally Posted by eakwarp
View Post
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"idreason)) return SendClientMessage(playeridCOLOR_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
View Post
в 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

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