Вопрос / ответ -
[SFD]Jertux - 09.11.2009
Вы спрашиваете - а мы стараемся помочь. Все просто.
Re: Вопрос / ответ -
[JIeXa] - 09.11.2009
дано две точки между ними линия
ещё точка, не лежащая на прямой
нужно найти проекцию точки на прямую.
по формулам:
x =
y =
z =
координаты точек известны
это вот для сампа %)
помогите пожалуйста.
Re: Вопрос / ответ -
ZabarXD - 09.11.2009
Ребят, есть возможность ускорить процесс уменьшения воздуха под водой?
К примеру, в МТА, под водой воздух уходит реалистично
Re: Вопрос / ответ -
Jeka91 - 09.11.2009
Как сделать так чтобы когда врезался на машине ты вылетал из неё или срабатывала какаянибудь анимация и конечно убовлялось хп!
Re: Вопрос / ответ - Zeex - 10.11.2009
Quote:
Originally Posted by [JIeXa
]
дано две точки между ними линия
ещё точка, не лежащая на прямой
нужно найти проекцию точки на прямую.
по формулам:
x =
y =
z =
координаты точек известны
это вот для сампа %)
помогите пожалуйста.
|
Попробуй вот это:
pawn Code:
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;
}
(x1,y1,z1) и (x2,y2,z2) - точки, между которыми прямая
Quote:
Originally Posted by Jeka91
Как сделать так чтобы когда врезался на машине ты вылетал из неё или срабатывала какаянибудь анимация и конечно убовлялось хп!
|
Никак
Re: Вопрос / ответ -
Rihiy - 10.11.2009
Quote:
Originally Posted by Jeka91
Как сделать так чтобы когда врезался на машине ты вылетал из неё или срабатывала какаянибудь анимация и конечно убовлялось хп!
|
Есть такой скрипт в cleo, но в сампе это невозможно.
Re: Вопрос / ответ -
[JIeXa] - 10.11.2009
Quote:
Originally Posted by ZeeX
Попробуй вот это:
pawn Code:
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; }
(x1,y1,z1) и (x2,y2,z2) - точки, между которыми прямая
|
тыкс...
проблема с возвращаемым значением. куда его засовывать?
и скажи пожалуйста аську в пм
Quote:
Originally Posted by Rihiy
Quote:
Originally Posted by Jeka91
Как сделать так чтобы когда врезался на машине ты вылетал из неё или срабатывала какаянибудь анимация и конечно убовлялось хп!
|
Есть такой скрипт в cleo, но в сампе это невозможно.
|
почему невозможно? При резкой остановке машины делаем анимацию вылета и убавляем хп
т.е. делать сравнение по скорости / проеденному расстоянию, времени...
сопоставляя эти факты делать вылет или не вылет.
Re: Вопрос / ответ -
Serafim_sd - 10.11.2009
Quote:
Originally Posted by [JIeXa
]
почему невозможно? При резкой остановке машины делаем анимацию вылета и убавляем хп
т.е. делать сравнение по скорости / проеденному расстоянию, времени...
сопоставляя эти факты делать вылет или не вылет.
|
да, но надо учесть что у всех машин высота посадки водителя разные, а у некоторых вылет будет сообще проблематичен, например у бульозера или автопогрузчика xD и еще следует учитывать угол под которым двигается машина, чтобы определить направление полета, также могут быть проблемы при врезании в стену, игрок может оказаться либо пролетевшим сквозь стену либо придавленным своим собственным автО)
Re: Вопрос / ответ -
[JIeXa] - 10.11.2009
там просто анимацию применять а не двигать игрока блин...
он за стеной никак не окажется
Re: Вопрос / ответ -
Rihiy - 10.11.2009
Quote:
Originally Posted by [JIeXa
]
там просто анимацию применять а не двигать игрока блин...
он за стеной никак не окажется
|
дык он о вылете через лобовое стекло,такой анимации в сампе нет, если я не прав- прошу поправить...
Re: Вопрос / ответ -
Serafim_sd - 10.11.2009
ну чтото я тоже не видел такой анимации) наверно придется двигать)
Re: Вопрос / ответ -
Vampirenok - 10.11.2009
Подскажите плз как сделать запрет на символы в нике? Т.е. раньше самп не пускал ники со знаками ")", "(" "=" и т.д., а пускал токо [a-z] [A-Z] [0-9]. Кто знает как сделать такое, плз напишите.
Re: Вопрос / ответ -
noobik - 10.11.2009
Quote:
Originally Posted by Serafim_sd
Quote:
Originally Posted by [JIeXa
]
почему невозможно? При резкой остановке машины делаем анимацию вылета и убавляем хп
т.е. делать сравнение по скорости / проеденному расстоянию, времени...
сопоставляя эти факты делать вылет или не вылет.
|
да, но надо учесть что у всех машин высота посадки водителя разные, а у некоторых вылет будет сообще проблематичен, например у бульозера или автопогрузчика xD и еще следует учитывать угол под которым двигается машина, чтобы определить направление полета, также могут быть проблемы при врезании в стену, игрок может оказаться либо пролетевшим сквозь стену либо придавленным своим собственным автО)
|
на валакасе видел это
Re: Вопрос / ответ -
[SFD]Jertux - 12.11.2009
Хм, вот что я хочу у вас спросить, ув. профессиональные скриптеры. Вот у меня команда PM:
Code:
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;}
Не хватает лишь знаний на то, чтобы написать анти-флуд защиту. Пару раз мне приходилось видеть такую картину: заходит какой-нибудь игрок и запускает Flooder в PM. Весь чат по очереди у каждого игрока засирается PM'ками, чаще всего с рекламой. Чего я прошу? Элементарного кика за флуд, и думаю мне этого будет достаточно.
Re: Вопрос / ответ - Zeex - 12.11.2009
pawn Code:
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;
}
// далее команды
}
Правда так они не смогут спамить ни одной командой. Если надо именно для пм, то засунь внутри нее.
Если нету abs:
pawn Code:
#define abs(%1) \
((%1 < 0) ? (-(%1)) : (%1))
PS
strtok сакс.
Re: Вопрос / ответ -
[SFD]Jertux - 12.11.2009
Спасибо) Где-то кстати слышал, что GetTickCount работает только на Windows. Это действительно так?
Re: Вопрос / ответ - Zeex - 12.11.2009
Не правда
Re: Вопрос / ответ -
Lex128 - 14.11.2009
Не.. tickcount(); - не работает на Linux
Re: Вопрос / ответ -
[SFD]Jertux - 15.11.2009
Аа.. Вот оно как)
Re: Вопрос / ответ -
[JIeXa] - 15.11.2009
gettickcount функция павно...
и я уверен на 55%, что кай прописал в коде, что если линукс то делать так то, если нет то делать такто...