Буду пополнять эту тему функциями которые написал сам и которые мне пригодились...
- - - - -
[1] Функция для перевода int в HEX-строку
Начнем с функции которая переводит цвет игрока (да и любой цвет и вообще любое число :be
в RGB код для Colour Embedding:
PHP код:
stock HEX2STR(hex) { // by OFFREAL
new str[8] = {48,48,48,48,48,48,0,0}, tmp[8], idx;
if(hex == 0){return str;}
format(tmp,8,"%x",( (hex >> 8) | 0xFF000000 ) - 0xFF000000 );
idx = strlen(tmp);
for(new i = 0;i < idx;i++)
{str[5-i] = tmp[idx-1-i];}
return str; }
Пример:
PHP код:
new string[128];
new color = GetPlayerColor(playerid);
format(string, sizeof(string),"Проверка функции:{%s} Этот текст такого же цвета как мой ник!!!", HEX2STR(color));
SendClientMessage(playerid, 0xFFFFFFFF, string);
- - - - -
А вот более правильная функция, которая также переводит цвет игрока в RGB код для Colour Embedding. Написана с помощью OKStyle
PHP код:
stock OKS_HEX2STR(color) { // by OKStyle
new str[8];
format(str,8,"%06x",color >>> 8);
return str; }
- - - - -
[2] Функция для присоединения прицепа
Пригодится для RP модов где надо эвакуатором отбуксировать машину на штраф-стоянку
В качестве playerid указываем ИД игрока, в качестве vehicleid - ИД машины в которой он сидит
PHP код:
stock EvacuateVehicle(vehicleid, playerid)
{
if(!vehicleid){return 0;}
if(GetVehicleTrailer(vehicleid) != 0){return 0;}
new Float:EvaCoord[4];
new Float:MCoord[4];
new Float:ATemp;
GetVehiclePos(vehicleid, EvaCoord[0], EvaCoord[1], EvaCoord[2]);
GetVehicleZAngle(vehicleid, EvaCoord[3]);
EvaCoord[0] -= 4.00*floatsin(EvaCoord[3]-180, degrees);
EvaCoord[1] += 4.00*floatcos(EvaCoord[3]-180, degrees);
for(new i=0;i<MAX_VEHICLES;i++)
{
if(i == vehicleid){continue;}
if(!IsVehicleStreamedIn(i, playerid)){continue;}
GetVehicleZAngle(i, MCoord[3]);
ATemp = floatabs(MCoord[3] - EvaCoord[3]);
ATemp += ( (ATemp < 180.00) ? 0.00 : -360.00 );
if( floatabs(ATemp) > 50.0 ){continue;}
GetVehiclePos(i, MCoord[0], MCoord[1], MCoord[2]);
if( floatabs(MCoord[2] - EvaCoord[2]) > 2.00) {continue;}
if ( (floatabs(MCoord[0] - EvaCoord[0]) < 4.00) && (floatabs(MCoord[1] - EvaCoord[1]) < 4.00) )
{
AttachTrailerToVehicle(i, vehicleid);
break;
}
}
return 1;
}
- - - - -
[3] Узнать день недели
Иногда бывает полезно
В качестве UTC указываем часовой пояс в котором определяется время
Например для Москвы постоянно 4
PHP код:
stock DayOfWeakName(UTC) //by OFFREAL
{
new dayname[32];
switch(((gettime()+UTC*3600)/86400)%7)
{
case 0: strcat(dayname, "Четверг");
case 1: strcat(dayname, "Пятница");
case 2: strcat(dayname, "Суббота");
case 3: strcat(dayname, "Воскресенье");
case 4: strcat(dayname, "Понедельник");
case 5: strcat(dayname, "Вторник");
case 6: strcat(dayname, "Среда");
}
return dayname;
}