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))