Вопрос / ответ
#1

Вы спрашиваете - а мы стараемся помочь. Все просто.
Reply
#2

дано две точки между ними линия
ещё точка, не лежащая на прямой
нужно найти проекцию точки на прямую.
по формулам:
x =
y =
z =
координаты точек известны
это вот для сампа %)
помогите пожалуйста.
Reply
#3

Ребят, есть возможность ускорить процесс уменьшения воздуха под водой?
К примеру, в МТА, под водой воздух уходит реалистично
Reply
#4

Как сделать так чтобы когда врезался на машине ты вылетал из неё или срабатывала какаянибудь анимация и конечно убовлялось хп!
Reply
#5

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
Как сделать так чтобы когда врезался на машине ты вылетал из неё или срабатывала какаянибудь анимация и конечно убовлялось хп!
Никак
Reply
#6

Quote:
Originally Posted by Jeka91
Как сделать так чтобы когда врезался на машине ты вылетал из неё или срабатывала какаянибудь анимация и конечно убовлялось хп!
Есть такой скрипт в cleo, но в сампе это невозможно.
Reply
#7

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, но в сампе это невозможно.
почему невозможно? При резкой остановке машины делаем анимацию вылета и убавляем хп
т.е. делать сравнение по скорости / проеденному расстоянию, времени...
сопоставляя эти факты делать вылет или не вылет.
Reply
#8

Quote:
Originally Posted by [JIeXa
]
почему невозможно? При резкой остановке машины делаем анимацию вылета и убавляем хп
т.е. делать сравнение по скорости / проеденному расстоянию, времени...
сопоставляя эти факты делать вылет или не вылет.
да, но надо учесть что у всех машин высота посадки водителя разные, а у некоторых вылет будет сообще проблематичен, например у бульозера или автопогрузчика xD и еще следует учитывать угол под которым двигается машина, чтобы определить направление полета, также могут быть проблемы при врезании в стену, игрок может оказаться либо пролетевшим сквозь стену либо придавленным своим собственным автО)
Reply
#9

там просто анимацию применять а не двигать игрока блин...
он за стеной никак не окажется
Reply
#10

Quote:
Originally Posted by [JIeXa
]
там просто анимацию применять а не двигать игрока блин...
он за стеной никак не окажется
дык он о вылете через лобовое стекло,такой анимации в сампе нет, если я не прав- прошу поправить...
Reply
#11

ну чтото я тоже не видел такой анимации) наверно придется двигать)
Reply
#12

Подскажите плз как сделать запрет на символы в нике? Т.е. раньше самп не пускал ники со знаками ")", "(" "=" и т.д., а пускал токо [a-z] [A-Z] [0-9]. Кто знает как сделать такое, плз напишите.
Reply
#13

Quote:
Originally Posted by Serafim_sd
Quote:
Originally Posted by [JIeXa
]
почему невозможно? При резкой остановке машины делаем анимацию вылета и убавляем хп
т.е. делать сравнение по скорости / проеденному расстоянию, времени...
сопоставляя эти факты делать вылет или не вылет.
да, но надо учесть что у всех машин высота посадки водителя разные, а у некоторых вылет будет сообще проблематичен, например у бульозера или автопогрузчика xD и еще следует учитывать угол под которым двигается машина, чтобы определить направление полета, также могут быть проблемы при врезании в стену, игрок может оказаться либо пролетевшим сквозь стену либо придавленным своим собственным автО)
на валакасе видел это
Reply
#14

Хм, вот что я хочу у вас спросить, ув. профессиональные скриптеры. Вот у меня команда 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'ками, чаще всего с рекламой. Чего я прошу? Элементарного кика за флуд, и думаю мне этого будет достаточно.
Reply
#15

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 сакс.
Reply
#16

Спасибо) Где-то кстати слышал, что GetTickCount работает только на Windows. Это действительно так?
Reply
#17

Не правда
Reply
#18

Не.. tickcount(); - не работает на Linux
Reply
#19

Аа.. Вот оно как)
Reply
#20

gettickcount функция павно...
и я уверен на 55%, что кай прописал в коде, что если линукс то делать так то, если нет то делать такто...
Reply


Forum Jump:


Users browsing this thread: 8 Guest(s)