Здесь будут выложены множества полезных функций/макросов.
Список таких работ:
PHP код:
#define FlipVehicle(%0) new Float:A; GetVehicleZAngle(%0, A); SetVehicleZAngle(%0, A);
Переворачивает машину обратно на колеса (изменение угла поворота транспорта ставит транспорт на колеса).
Пример использования:
PHP код:
CMD:flip(playerid, params[])
{
if(GetPlayerState(playerid) == 2)
FlipVehicle(GetPlayerVehicleID(playerid));
return 1;
}
многие сталкивались с проблемой когда при спавне игрок проваливался сквозь пол, из за того что не прогрузились объекты. Можно сделать обычный фриз, но не всем игрокам с хорошим интернетом нравится ждать 2 -3 секунды когда все сразу прогружается.В секундный таймер:PHP код:
#define spawnFreezeTime(%0); SetPVarInt(%0,"spawnFreezeTime", gettime()+(GetPlayerPing(%0) < 101) ? (1) : ((GetPlayerPing(%0) > 100 && GetPlayerPing(%0) < 201) ? (2) : (3))), TogglePlayerControllable(%0,false);
Автор: Шуруп (LC)PHP код:
if(GetPVarInt(playerid, "spawnFreezeTime") >= gettime()) ClearAnimations(playerid), TogglePlayerControllable(playerid, true), DeletePVar(playerid, "spawnFreezeTime");
Узнаем никнейм игрока через символ @[ид игрока]
Пример использования:PHP код:
ParseReferences(const text[], output[], size = sizeof(output))
{ // by Daniel_Cortez \\pro-pawn.ru
static size_m_1, nickname_pos1, nickname_pos2, ref_id, pos1, pos2, c;
size_m_1 = size - 1;
pos1 = 0, pos2 = strlen(output);
for(;;)
{
if(text[pos1] == '@')
{
nickname_pos1 = pos1, nickname_pos2 = pos2;
ref_id = 0;
while('0' <= (c = text[++pos1]) <= '9')
ref_id = ref_id * 10 + (c - '0');
if ((pos1 == nickname_pos1+1) || (0 == IsPlayerConnected(ref_id)))
output[pos2++] = '@', pos1 = nickname_pos1 + 1;
else
pos2 += GetPlayerName(
ref_id,
output[nickname_pos2],
size - nickname_pos2
);
}
else if((output[pos2++] = text[pos1++]) == '\0')
break;
if(pos2 == size_m_1)
{
output[pos2] = '\0';
break;
}
}
}
PHP код:
public OnPlayerText(playerid, text[])
{
new PlayerName[MAX_PLAYER_NAME];
for(new i = strfind(text, "@", true), a = 0, tmp[4]; i != -1; i = strfind(text, "@", true, i))
{
++i, a = 0;
while(48 <= text[i] <= 57 && a != 4) tmp[a++] = text[i++];
if(tmp[0] == EOS) continue;
GetPlayerName(strval(tmp), PlayerName, sizeof(PlayerName));
strdel(text, i - a - 1, i);
strins(text, PlayerName, i - a - 1, 128);
}
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
format(text, 128, "%s: {FFFFF}%s", PlayerName, text);
SendClientMessageToAll(GetPlayerColor(playerid), text);
return 0;
}
PHP код:
#define IsVehicleInRangeOfPoint(%0,%1,%2,%3,%4) %1 >= GetVehicleDistanceFromPoint(%0,%2,%3,%4) ? true : false
PHP код:
stock IsPlayerInWater(playerid)
{ //Узнает в воде ли человек //by Sd
new anim = GetPlayerAnimationIndex(playerid);
if (((anim >= 1538) && (anim <= 1542)) || (anim == 1544) || (anim == 1250)) return 1;
return 0;
}
PHP код:
stock SetVehicleSpeed(vehicleid, Float:speed)
{//by HoRRoR
new Float:cr[4];
GetVehicleZAngle(vehicleid, cr[0]);
GetVehicleVelocity(vehicleid, cr[1], cr[2], cr[3]); //чтобы сохранить Z велосити.
SetVehicleVelocity(vehicleid, floatsin(-cr[0],degrees)*(speed/99), floatcos(-cr[0],degrees)*(speed/99), cr[3]);
return 1;
}
PHP код:
bool:fwriterus(File:wr, string[])
{//by Владокс
if(!wr) return false; //если файл не открыт возвращаем ложь
for(new i; string[i]; i++)
{
fputchar(wr, string[i], false); //кладем в файл с выключенным utf8
}
return 1; //успешно записали, возвращаем правду
}
PHP код:
stock GetMaxPassengers(vModel)
{//by Владокс
if(0 <= (vModel -= 400) <= 211)
{
static seekBlock_vSeats[27] =
{
0x10331113, 0x11311131, 0x11331313, 0x80133301, 0x1381F110, 0x10311103,
0x10001F10, 0x11113311, 0x13113311, 0x31101100, 0x30001301, 0x11031311,
0x11111331, 0x10013111, 0x01131100, 0x11111110, 0x11100031, 0x11130221,
0x33113311, 0x11111101, 0x33101133, 0x101001F0, 0x03133111, 0xFF11113F,
0x13330111, 0xFF131111, 0x0000FF3F
};
return ((seekBlock_vSeats[vModel >>> 3] >>> ((vModel & 7) << 2)) & 15);
}
return 15;
}
Если ваш код содержит не более чем 20-и строк, то Welcome!
Тема находится под властью правил форума и правил этого раздела!