 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Таймеры
| |
| pawman | Дата: Воскресенье, 17.04.2011, 19:43 | Сообщение # 31 |
|
Уверенный в себе
Группа:
Пользователи
Сообщений: 188
Награды: 12
Город: Новороссийск
Репутация: 38
Замечания: 0%
Статус: 
| А у тебя интернет нормальный? Есть вариант, что задержки будут, но правда, не такие большие...
Разрабатываю карты для сервера. Обращайтесь, качество гарантирую. Мои работы: [MAP+FS]Особняк [MAP+FS]Пляж [MAP+FS]sa_city_bilding Сайт: фаникс.рф
|
| |
|
|
| SanSay | Дата: Воскресенье, 17.04.2011, 22:05 | Сообщение # 32 |
|
Долгожитель
Группа:
Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус: 
| Quote (AirKite) SanSay, какое решение принял? пока никакого, но еси ниче путного не предложат, значит на важные таймеры типо тюрьмы, муте и т.п. придется делать как писал Quote (SanSay) типо не раз в 1000 мс, а раз в 1150 мс... или четам ускорить наоборот нужно (не охота ща думать) Quote (pawman) А у тебя интернет нормальный? Есть вариант, что задержки будут, но правда, не такие большие... это ты мне? если да, то какой нафик интернет... у меня на компе серв был при проверке.
simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
|
| |
|
|
| stepmex | Дата: Понедельник, 18.04.2011, 17:41 | Сообщение # 33 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Если вы пишите систему которая должна срабатывать черезз опредеенное время, подход таймера изначально неверен. А если время срабатываение исчесляется днями, или неделями, а то и более?!
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Сообщение отредактировал stepmex - Понедельник, 18.04.2011, 17:42 |
| |
|
|
| SanSay | Дата: Понедельник, 18.04.2011, 22:12 | Сообщение # 34 |
|
Долгожитель
Группа:
Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус: 
| stepmex, в данном случае я имею ввиду время тюрьмы например... т.е. как везде делается игроку присваивается 500 секунд тюрьмы и таймер раз в секунду уменьшает время на 1 секунду как это реализовать кроме таймера? при этом нужно учесть, что игрок заходит/перезаходит и серв может рестартится... т.е. время сохраняется в акке.
simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
|
| |
|
|
| stepmex | Дата: Вторник, 19.04.2011, 19:39 | Сообщение # 35 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Присваивай игроку new jailTime = gettime() + 500; и кождую секунду проверяй if(jailTime && gettime() > jailTime){освободить;jailTime = 0;}.
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| SanSay | Дата: Среда, 20.04.2011, 10:45 | Сообщение # 36 |
|
Долгожитель
Группа:
Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус: 
| stepmex, не канает, т.к. jailTime сохраняется в акке и если игрок выходит, то оно останавливается, а твое случае получается будет дальше тикать.
simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
|
| |
|
|
| stepmex | Дата: Среда, 20.04.2011, 18:47 | Сообщение # 37 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Госпади какая проблема. Записывай при выходе игрока в jailTime разницу jailTime = jailTime - gettime(), время которе осталось просидеть, а при заходе считывай и прописывай jailTime = jailTime + gettime().
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| SanSay | Дата: Среда, 20.04.2011, 23:12 | Сообщение # 38 |
|
Долгожитель
Группа:
Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус: 
| мда, чет не допер ) спс, хотя... stepmex, только я тогда не вижу принципиальной разницы между, старой системой, в которой только время таймера нужно подкорректировать и твоей... старая: public SetPlayerUnjail() { for(new i = 0; i <= MAXPLAYERS; i++) { if(IsPlayerConnected(i) == 1 && JailTime[i] > 0) { JailTime[i]--; } if(IsPlayerConnected(i) == 1 && JailTime[i] == 10) { выпускаем } SetTimer("SetPlayerUnjail", 1150, 1); - это примерно уже с подкорректированным временем сработки и твой вариант public SetPlayerUnjail() { for(new i = 0; i <= MAXPLAYERS; i++) { if(jailTime && gettime() > jailTime) { выпускаем } SetTimer("SetPlayerUnjail", 1000, 1); по моему ниче не изменилось, кроме того, что раньше серв брал для сравнения данные из памяти, а сейчас обращается хз куда, но думаю кудато дальше т.е. по операциям даже более сложно для серва получается... или я не прав?
simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
Сообщение отредактировал SanSay - Среда, 20.04.2011, 23:12 |
| |
|
|
| Ghost-X | Дата: Среда, 20.04.2011, 23:57 | Сообщение # 39 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 3548
Награды: 36
Город: Наб. Челны
Репутация: 856
Замечания: 40%
Статус: 
| Quote (SanSay) public SetPlayerUnjail() { for(new i = 0; i <= MAXPLAYERS; i++) { if(jailTime && gettime() > jailTime) { выпускаем } SetTimer("SetPlayerUnjail", 1000, 1); Вроде так должно быть: Code public SetPlayerUnjail() { for(new i = 0; i <= MAXPLAYERS; i++) { if(jailTime[i] && gettime() > jailTime[i]) { выпускаем } } }
Спор на форуме, все равно что олимпиада среди умственно отсталых: даже если ты победил, ты все равно гермофродит. Хочешь остаться при своем мнении - держи его при себе.
|
| |
|
|
| AirKite | Дата: Четверг, 21.04.2011, 00:34 | Сообщение # 40 |
|
Долгожитель
Группа:
I'm V.I.P.
Сообщений: 1671
Награды: 21
Город: Новосибирск
Репутация: 2070
Замечания: 0%
Статус: 
| Quote (toneysix) также return совершенно не нужен для таймера, потому что он ему ничего не возвращает Таймер считается выполненным только после того как вызываемая функция вернёт значение. Разве нет? Quote (SanSay) только я тогда не вижу принципиальной разницы между, старой системой, в которой только время таймера нужно подкорректировать Если была фиксированная задержка, то таймеры просто можно было бы корректировать. А так, она просто зависит от вычислений сервера. Её нельзя компенсировать статически. Время таймера искажается в зависимости от нагрузки сервера, а она не может быть постоянно одинаковой. Quote (SanSay) т.е. по операциям даже более сложно для серва получается... или я не прав? 1 раз в секунду сервер сверяет данные, через if или постоянно изменяет значение JailTime[i] на -1. Нагрузка что там что там ничтожна. Нормальный вариант в принципе... Code public SetPlayerUnjail() { for(new i = 0; i <= MAXPLAYERS; i++) { if(jailTime && gettime() > jailTime) { выпускаем } SetTimer("SetPlayerUnjail", 1000, 1);
[1337GAMES] Easy RP (SAMP SERVER, DEVELOPMENT, NOT SAMP-RP, SMART LIFE)
Jabber: airkite@qip.ru [Addon] QuickBinder [FS] Online Players Record
|
| |
|
|
| SanSay | Дата: Четверг, 21.04.2011, 08:53 | Сообщение # 41 |
|
Долгожитель
Группа:
Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус: 
| Quote (Ghost-X) Вроде так должно быть: Ghost-X, я просто вставил, то что написал стермекс, не вдаваясь во всякие ньюансы и валидность кода ) Quote (AirKite) Если была фиксированная задержка, то таймеры просто можно было бы корректировать. А так, она просто зависит от вычислений сервера. Её нельзя компенсировать статически. Время таймера искажается в зависимости от нагрузки сервера, а она не может быть постоянно одинаковой. ого, т.е. задержка которую я указал в 130 секунд на ГОЛОМ серве, получается самая минимальная, т.е. при серве в 30-50 игроков это значение еще и увеличится жесть. лан, уговорили ) попробую сделать с gettime()
simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
|
| |
|
|
| toneysix | Дата: Четверг, 21.04.2011, 12:07 | Сообщение # 42 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| Quote Таймер считается выполненным только после того как вызываемая функция вернёт значение. Разве нет? Нет.
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
|
| |
|
|
| AirKite | Дата: Четверг, 21.04.2011, 19:25 | Сообщение # 43 |
|
Долгожитель
Группа:
I'm V.I.P.
Сообщений: 1671
Награды: 21
Город: Новосибирск
Репутация: 2070
Замечания: 0%
Статус: 
| Quote (SanSay) ого, т.е. задержка которую я указал в 130 секунд на ГОЛОМ серве, получается самая минимальная, т.е. при серве в 30-50 игроков это значение еще и увеличится жесть. Ну я же писал пример отсчёта таймера. То что всё работает в одном потоке, и не только с модом но и вычислениям сервера.
[1337GAMES] Easy RP (SAMP SERVER, DEVELOPMENT, NOT SAMP-RP, SMART LIFE)
Jabber: airkite@qip.ru [Addon] QuickBinder [FS] Online Players Record
|
| |
|
|
| stepmex | Дата: Четверг, 21.04.2011, 20:01 | Сообщение # 44 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Только вот так: Code public SetPlayerUnjail() { for(new i, currentTime = gettime(); i < MAXPLAYERS; i++) { if(jailTime[i] && currentTime > jailTime[i]) { выпускаем } } } 1) не надо присваивать i нулевое значение, оно там по умолчанию, лишняя операция. 2) gettime() выполняем 1 раз, нет лишних процедур, да и сравнивать пару значений из памяти гораздо быстреенежели с функцией. 3) никаких равно в цикле, 500ой ячейки не существует! Наслаждайтесь  Добавлено (21.04.2011, 20:01) --------------------------------------------- А, и про отличия: в твоем случае мы целиком и полностью зависим от точности таймера, в моем только от заданного времени.
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| AirKite | Дата: Четверг, 21.04.2011, 20:38 | Сообщение # 45 |
|
Долгожитель
Группа:
I'm V.I.P.
Сообщений: 1671
Награды: 21
Город: Новосибирск
Репутация: 2070
Замечания: 0%
Статус: 
| Quote (stepmex) в моем только от заданного времени. +\- отклонения таймера за 1 оборот Quote (stepmex) currentTime = gettime(); Quote (stepmex) сравнивать пару значений из памяти гораздо быстреенежели с функцией Хм... по моему gettime() просто возвращает значение из памяти, которое обновляется не зависимо от вызова функции. Если это так, то и нагрузка должна быть одинаковой.
[1337GAMES] Easy RP (SAMP SERVER, DEVELOPMENT, NOT SAMP-RP, SMART LIFE)
Jabber: airkite@qip.ru [Addon] QuickBinder [FS] Online Players Record
|
| |
|
|
|
 |
|
 | |
| |
|