Система лута.
#1

Привет всем. Делаю систему лута и хочу совместить её с системой дропа. Нужно выделить 10.000 ячеек. Епить, у меня даже Pawno зависло... Есть другие варианты, как можно реализовать это?
Reply
#2

А с чего у вас с буффера на каких-то 10 тысяч "ячеек" что-то зависло? Или привыкли компилить мелкие говномоды за пару секунд?
Reply
#3

Ты "типа" выпендреться решил, да?
Мод компилируется сам по себе ~6 минут. Но вот незадача.. прошло уже 10 минут...
Т.е. ничего такого не должно быть?
Просто есть вариант проверять ближайший лут - стримером.
Или это лучше делать через IsPlayerInRangeOfPoint?
Reply
#4

new DObjects[10000][d_Info]
Reply
#5

Зачем столько ячеек?
Сделай 500 ячеек и обновляй их.
К примеру: записал ID лута, количество, дату в unixtime. Потом если все 500 ячеек заняты, то ищешь ячейку с самым мелким unixtime и меняешь лут. И оптимизация, и никто из игроков не будет бомбить типа "куда мой лут пропал, только скинул". Кстати, хорошо я придумал. Нужно себе такую же систему сделать.

P.S. Делал давно на 10000 ячеек и система работала плюсом со SQLITE. Может ты просто криво что-то написал. У меня всё работало отлично и компилировалось быстро.
Reply
#6

Хорошо, спасибо большое. Нет, ничего кривого. Только-только начал surv писать. Просто 3 города и 500 лута маловато.
Хм. А как Вашим способом можно будет определить ближайший лут?
Вот, например, как я подберу вещь, которая уже давно там лежит.
Reply
#7

Проблема кривых рук.
Reply
#8

Quote:
Originally Posted by Daea
Посмотреть сообщение
Хорошо, спасибо большое. Нет, ничего кривого. Только-только начал surv писать. Просто 3 города и 500 лута маловато.
Хм. А как Вашим способом можно будет определить ближайший лут?
Вот, например, как я подберу вещь, которая уже давно там лежит.
Я использую динамические зоны.
Хотя раньше использовал IsPlayerRangeOfPoint и делал игроку 10 слотов, которые выводил в диалог.
Пример: если около игрока к примеру 20 объектов, то он будет выдавать в диалог только 10.
Ну это пять же мой нубо-способ. Попробуй сам что-то придумать. А на счёт 500 слотов — ну сделай 1000 или 2000. Ну 10000 это слишком много, как по мне.
Reply
#9

invalid array size (negative, zero or out of bounds)
Reply
#10

CreateDynamicSphere + Streamer_SetArrayData + E_STREAMER_EXTRA_ID - создаем лут и записываем о нём данные в стример
GetPlayerNumberDynamicAreas + GetPlayerDynamicAreas + Streamer_GetArrayData - чекаем зоны в которых находится игрок и достаем данные из них

В итоге никакие массивы тебе не нужны, загружай при старте, сохраняй/добавляй/удаляй сразу как изменили/скинули/взяли
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)