Эта функция возвращает INVALID_VEHICLE_ID, если в транспорте нет водителя
Вид для печати
Эта функция возвращает INVALID_VEHICLE_ID, если в транспорте нет водителя
Всем привет х2. Имеются 4 точки и их координаты (высоту пока не беру в расчёт) образующие прямоугольник. Как узнать стоит ли игрок в этом прямоугольнике?
Если проверка нужна на постоянной основе (та же GreenZone, где нельзя драться), то подойдёт вариант, что предоставили выше.
А вообще вычислить можно по формуле:
Где:PHP код:
(p_x <= max_x && p_x >= min_x) && (p_y <= max_y && p_y >= min_y)
p_x - Позиция игрока относительно X координаты
p_y - Позиция игрока относительно Y координаты
Ну а "max_x/min_x" и прочее и так понятно. Можно сделать как-то так:
Собственно, если игрок внутри квадрата - вернёт 1. Иначе 0PHP код:
stock IsPlayerInRectangle(playerid, Float:min_x, Float:min_y, Float:max_x, Float:max_y)
{
new Float: p_x,
Float: p_y,
Float: p_z;
GetPlayerPos(playerid, p_x, p_y, p_z);
return (p_x <= max_x && p_x >= min_x) && (p_y <= max_y && p_y >= min_y);
}
Как я понял, это для красивого, аккуратного квадрата? А если прямоугольник повёрнут и т.д.? Зоны не вариант ибо для машин запиливаю, их края и есть прямоугольник (хотя можно подумать про AttachDynamicAreaToVehicle).
Добавлено: А не.. Там вообще всё плохо..
Код:*** Streamer Plugin: AttachDynamicAreaToVehicle: Only circles and spheres may be attached to vehicles
Допустим есть отрезок чисел 0..100
1) Нужно загадать число в этом отрезке
2) Нужно найти минимальное и максимальное число для проверки на интервал в этом же отрезке
Как грамотно такой рандом можно оформить? Подскажет кто?):popcorn:
Скорее всего имеется ввиду что-то вроде этого:
PHP код:
new array[] = {44, 51, 22, 53};
printf("random: %d", GetArrayRandom(array));
printf(" min: %d", GetArrayMin(array));
printf(" max: %d", GetArrayMax(array));
PHP код:
stock GetArrayRandom(array[], const size = sizeof(array))
{
return array[ random(size) ];
}
stock GetArrayMax(array[], const size = sizeof(array))
{
new
max = array[0],
i = 1;
while (i < size) {
if (max < array[i]) {
max = array[i];
}
i++;
}
return max;
}
stock GetArrayMin(array[], const size = sizeof(array))
{
new
min = array[0],
i = 1;
while (i < size) {
if (min > array[i]) {
min = array[i];
}
i++;
}
return min;
}
UPD: только сейчас понял это не то что мне нужно,
ziggi, мне надо чтобы минимальное и максимальное число находили рандомы,
а находили так чтобы первое число было минимальным, а второе максимальным,
а третье число для проверки попало ли оно в этот отрезок =)
То есть что то вроде
Минимальное число из рандома
Максимальное число из рандома
Простое любое число находящееся на отрезке
Допустим запустил функцию она сгенерировала 2 числа мин, макс, далее генерирует любое число от 0-100
В итоге такую проверку хочу:
PHP код:
//Отрезок 0..100
//Пусть randmin будет определено из отрезка как 12
//Пусть randmax будет определено из отрезка как 35
//Пусть randnumber будет определено из отрезка как 30
switch(randnumber)
{
case randmin..randmax: //Ура рандомное число попало в рандом =)
}
//Пусть randmin будет определено из отрезка как 52
//Пусть randmax будет определено из отрезка как 66
//Пусть randnumber будет определено из отрезка как 77
switch(randnumber)
{
case randmin..randmax: //Увы рандомное число НЕ попало в рандом =(
}
//P.S. Длину между минимальным и максимальным рандомом тоже хотелось бы видеть в настройках
vovandolg, типа, этого?
PHP код:
main()
{
new min_ = random(50),
max_ = min_ + 5 + random(45),
number_ = random(100);
GetRandom(min_, max_, number_);
}
stock GetRandom(min_, max_, number_)
{
if(min_ <= number_ <= max_)
printf("Ты угадал min %d - max %d = number %d", min_, max_, number_);
else
printf("Ты не угадал min %d - max %d = number %d", min_, max_, number_);
}
Друзья, на несколько лет отходил от сампа, да и ранее таким не занимался - возможно ли отследить дамаг (сколько и от кого), который наносится транспорту с помощью оружия другого транспорта? Я про пушки у Rustler, Hydra, RC Baron и т. д.
Да, должно. Правда проверь на всякий. Сам выстрел обрабатывается через OnPlayerWeaponShot. Чтобы узнать, во что попал игрок - параметры hittype и hitid
Ну почти в точку, у тебя числа минимальные не будут более 50, вот подкорректировал код под себя:
Унылый одноциферный рандом надоел, хочется экзотики:awesome:PHP код:
const linerand = 100;
new number_r = random(linerand + 1),
min_r = random(linerand),
max_r = random(linerand - min_r) + min_r;
if(min_r <= number_r <= max_r)
printf("min %d / max %d / number %d", min_r, max_r, number_r);
else
printf("min %d / max %d / number %d", min_r, max_r, number_r);
Ну так там и можно отловить именно транспорт, а не игрока. На что есть hittype. Хотя если с транспорта не вызывается - это уже большой роли не играет. Можно разве что как-то отлавливать нажатие клавиш во время такой стрельбы, хотя как по мне это костыли.
Кажется, в 0.3z OnPlayerWeaponShot для пулемётов в транспорте вызывался. Странно, что выпилили.
Если прикрепить объект к автомобилю (AttachObjectToVehicle), то после респавна автомобиля этот объект остаётся на автомобиле. Это можно как то исправить?
Можно ещё вот такой велосипед без переменной, но с циклом, придумать :spiteful:
Хотя это не самый удачный вариант, если честно :to_take_umbrage:PHP код:
for(new i; i < MAX_OBJECTS; i++)
{
if(Streamer_GetIntData(STREAMER_TYPE_OBJECT, i, E_STREAMER_ATTACHED_VEHICLE) == vehicleid)
{
DestroyDynamicObject(i);
return 1;
}
}
Он хорош будет, если ты респавнишь определённый автомобиль специальной командой и респавнишь не особо часто. Если же имеются ввиду массовые респавны, то лучше массив
Такой вопрос - есть смысл хранить соль (уникальную для каждого игрока) в таблице рядом с хэшем? Просто не приходит в голову сделать годный единый алгоритм генерации соли в моде
Конечно. Генерировать соль можешь с помощью этой функции.
PHP код:
new salt[10];
GenerateRandomString(salt, sizeof(salt) - 1);
printf(salt); // случайно сгенерированная строка на 9 символов
Немного поможет, но ему придётся заново генерировать все хэши для одного пользователя, что займёт огромное количество времени. Более того, он же не будет знать как именно ты используешь эту соль при генерации хэша пароля. Ты можешь делать двойной хеш соли алгоритмом Whirpool, прикреплять получившийся результат к тройному хешу пароля алгоритмом sha256 в начало, конец и после третьего символа с конца, а потом всё это трижды хэшировать sha512. Тогда твои пароли вряд-ли кто-то сможет подобрать.
P.S. Естественно именно так делать не нужно, я лишь привёл пример того, на сколько сильно можно запутать следы.
Подробно можно почитать на хабре (комменты лучше тоже почитать).
Может ли один 3д текст у разных игроков отображаться по разному? Из-за условия.
На стримере да, на статике нет...Код:native Text3D:CreateDynamic3DTextLabel(const text[], color, Float:x, Float:y, Float:z,
Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID,
testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);
Но как тут вызывать изменение текста по команде?
Нужно создать индивидуально для каждого игрока этот 3D-text. Затем менять его с помощью UpdateDynamic3DTextLabelText.
Всем привет. Существую какие-либо ограничения по виртуальным мирам (по их кол-ву)?
Всем привет. Раньше как-то не задумывался, посылал запросы в базу через циклы по отдельности, но вот случилась штука..
Допустим мне нужно добавить в базу 1_000_000_000 записей:
И как это сделать по-правильному?PHP код:
format(i_string, sizeof i_string, "INSERT INTO `ug_part` (`ID`, `uPart`) VALUE ('%i', '%i')", i, p);
При большом количестве запросов база выдаёт:
Знаю, что вопрос нубский, строго не судите, с базами не дружу.Код:[11:41:03] [MySQL] Error (0): Failed to exeute query. User '***' has exceeded the 'max_questions' resource (current value: 1000).
PHP код:
strcat(i_string, "INSERT INTO `ug_part` (`ID`, `uPart`) VALUE ");
// for
format(temp, sizeof temp, "('%i', '%i'),", i, p);
strcat(i_string, temp);
//
i_string[strlen(i_string) - 1] = ';';