09.11.2009, 16:13
Вы спрашиваете - а мы стараемся помочь. Все просто.
|
Originally Posted by [JIeXa
]
дано две точки между ними линия ещё точка, не лежащая на прямой нужно найти проекцию точки на прямую. по формулам: x = y = z = координаты точек известны это вот для сампа %) помогите пожалуйста. |
Proection(Float:x1, Float:y1, Float:z1, Float:x2, Flaot:y2, Float:z2, Float:x3, Float:y3, Float:z3)
{
new
Float:d12,
Float:d13,
Float:d23,
Float:k,
Float:result[3];
d12 = (x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2) + (z1 - z2)*(z1 - z2);
d13 = (x1 - x3)*(x1 - x3) + (y1 - y3)*(y1 - y3) + (z1 - z3)*(z1 - z3);
d23 = (x2 - x3)*(x2 - x3) + (y2 - y3)*(y2 - y3) + (z2 - z3)*(z2 - z3);
k = (d12 + d13 - d23) / (2 * d12);
result[0] = x1 + k*(x2 - x1);
result[1] = y1 + k*(y2 - y1);
result[2] = z1 + k*(z2 - z1);
return result;
}
|
Originally Posted by Jeka91
Как сделать так чтобы когда врезался на машине ты вылетал из неё или срабатывала какаянибудь анимация и конечно убовлялось хп!
|
|
Originally Posted by Jeka91
Как сделать так чтобы когда врезался на машине ты вылетал из неё или срабатывала какаянибудь анимация и конечно убовлялось хп!
|
|
Originally Posted by ZeeX
Попробуй вот это:
pawn Code:
|
|
Originally Posted by Rihiy
Quote:
|
|
Originally Posted by [JIeXa
]
почему невозможно? При резкой остановке машины делаем анимацию вылета и убавляем хп т.е. делать сравнение по скорости / проеденному расстоянию, времени... сопоставляя эти факты делать вылет или не вылет. |
|
Originally Posted by [JIeXa
]
там просто анимацию применять а не двигать игрока блин... он за стеной никак не окажется |
|
Originally Posted by Serafim_sd
Quote:
|
if(strcmp(cmd, "/pm", true) == 0)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5) {
SendClientMessage(playerid,COLOR_WHITE,"* Синтаксис: /pm [ID] [Сообщение]");
return 1;
}
giveplayerid = strval(tmp);
tmp2 = strrest(cmdtext,idx);
if(!strlen(tmp2)) {
SendClientMessage(playerid,COLOR_WHITE,"* Синтаксис: /pm [ID] [Сообщение]");
return 1;
}
if(!IsPlayerConnected(giveplayerid)) {
SendClientMessage(playerid,COLOR_ORANGE,"* Этот игрок не подключен.");
return 1;
}
if(playerid != giveplayerid) {
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
format(string,sizeof(string),"PM для %s[%d]: %s",giveplayer,giveplayerid,tmp2);
SendClientMessage(playerid,COLOR_YELLOW,string);
format(string,sizeof(string),"PM от %s[%d]: %s",sendername,playerid,tmp2);
SendClientMessage(giveplayerid,COLOR_YELLOW,string);
else {SendClientMessage(playerid,COLOR_ORANGE,"* Нельзя отсылать PM самому себе.");}
return 1;}
public OnPlayerCommandText(playerid, cmdtext[])
{
static
playerTick[MAX_PLAYERS];
new
tick = GetTickCount();
if (abs(playerTick[playerid] - tick) < 1000)
{
SendClientMessage(playerid, 0xFF0000FF, "Флудераст!");
Kick(playerid);
return 1;
}
else
{
playerTick[playerid] = tick;
}
// далее команды
}
#define abs(%1) \
((%1 < 0) ? (-(%1)) : (%1))