Posts: 1,042
Threads: 46
Joined: Jun 2013
Quote:
Originally Posted by Eims
Кто силён в тригонометрии?
Нужно написать функцию поворота одного игрока к другому, которая будет работать через GetPlayerFaceAngle. Может кто подсказать формулу вычисления угла поворота для второго игрока относительно угла первого игрока?
Вариант, работающий через координаты, не подходит, так как если оба игрока стоят рядом, функция начинает давать серьёзные погрешности (проверено даже на SetPlayerTargetPlayerAngle из библиотеки 3DTryg)
|
Это?
Code:
stock SetPlayerFacingPos(playerid, Float:x, Float:y) {
new Float:Pos[3];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
return SetPlayerFacingAngle(playerid, atan2(y-Pos[1], x-Pos[0])-90.0);
}
Posts: 475
Threads: 1
Joined: May 2013
Reputation:
0
Таки проблема была не в этом, а в том, что сервер как-то неохотно синхронизирует новые координаты, заданные через SetPlayerPos, если игроки стоят вплотную друг к другу. Это только у меня так или очередная фича сампа?
Posts: 1,659
Threads: 17
Joined: Sep 2008
Quote:
Originally Posted by Eims
Таки проблема была не в этом, а в том, что сервер как-то неохотно синхронизирует новые координаты, заданные через SetPlayerPos, если игроки стоят вплотную друг к другу. Это только у меня так или очередная фича сампа?
|
Фича сампа такая, сам с этим мучился.
Posts: 1,659
Threads: 17
Joined: Sep 2008
Quote:
Originally Posted by Eims
Решение не найдено?
|
Я немного принцип работы скрипта поменял, стал сразу телепортировать игрока в нужное место. Но если это невозможно, то ты можешь телепортировать игрока за зону стрима, и, после страбатывания OnPlayerStreamOut, телепортировать в нужную точку. Ещё можно попроботвать вместо телепортации менять игроку виртуальный мир.
Posts: 3,004
Threads: 12
Joined: May 2011
Quote:
Originally Posted by pawnoholic
Или эффективнее и лучше сделать так?
PHP Code:
public OnGameModeInit()
{
SetTimer("OnVehiclesTickRate", 500, true);
return 1;
}
forward OnVehiclesTickRate();
public OnVehiclesTickRate()
{
for (new i; i < MAX_VEHICLES; i++) if (Vehicle::Data[vehicle][vehicleExists])
{
CallLocalFunction("OnVehicleUpdate", "d", vehicle);
}
return 1;
}
|
да.
А если ты их будешь уничтожать то рекомендую использовать y_iterate
Posts: 637
Threads: 25
Joined: Dec 2010
Reputation:
0
1й вариант создаёт цикл в 2к каждый тик
это эквивалентно циклу до 200*2к=400к в секунду
Posts: 17
Threads: 0
Joined: Oct 2017
Reputation:
0
у меня в моде примерно 100 переменных. При входе и при выходе я их обнуляю.
Но есть же перменные которые всё равно перезапишутся после:
cache_get_value_int;
cache_get_value_name;
cache_get_value_float;
Вопрос: как лучше обнулять их?
Posts: 473
Threads: 8
Joined: May 2015
Reputation:
0
30.10.2017, 10:29
(
Last edited by Mcc; 30/10/2017 at 11:46 AM.
)
Давно использую инвентарь на MySQL. С повышением онлайна, задумался о том, чтобы перевести всё на SQL. Что будет быстрее? MYSQL или SQLite (встроенный в сервер) ? Записи инвентаря регулярно обрабатываются запросами UPDATE и SELECT.
На ру-хосте, с нагрузкой в 70-80% (200 игроков) запросы обрабатывались без ощутимых задержек, да и сервер не лагал.
В добавок к убогости - я с 2011 года использую однопоточный плагин MySQL от стрикленда, а не многопоточный от BlueG.
Сомневаюсь я что то насчет пригодности SQL. Те же файлы, только теперь под боком у сервера. По моему, MySQL установленный на машине где установлен сервер, будет все операции производить не оказывая влияния на игровой сервер, и конце выдавать просто готовый результат.
Может куда продуктивнее было бы заняться переводом всех скриптов на MySQL от BlueG?