PDA

Просмотр полной версии : [Info] SA:MP 0.3.7



Daniel_Cortez
01.05.2015, 11:51
http://forum.sa-mp.com/images/samp/logo_forum.gif


SA:MP 0.3.7


Скачать:

Клиент: http://files.sa-mp.com/sa-mp-0.3.7-R3-1-install.exe
Сервер (Linux x86): http://files.sa-mp.com/samp037svr_R2-2-1.tar.gz
Сервер (Windows): http://files.sa-mp.com/samp037_svr_R2-2-1_win32.zip



Нововведения:
Добавлено более 500 новых объектов, включая приспособления для трюков и объекты земли, предоставленных пользователем Matite с сервера GamerX.

Добавлены скрипты с маппингом, демонстрирующие использование новых объектов: stunt_island.pwn, modular_island.pwn, ls_beachside.pwn и пр.

12 новых скинов - 11 для полицейских (вариации без оружия, без шляпы, в гражданской одежде и женские скины) и 1 женский скин для медиков.
Новые скины можно увидеть в конце списка на SA:MP wiki (http://wiki.sa-mp.com/wiki/Skins:All).

Добавлена возможность устанавливать спецсигналы на любые машины.
Теперь для этого есть новый необязательный параметр в функциях CreateVehicle и AddStaticVehicleEx.
Также добавлена функция OnVehicleSirenStateChange, вызываемая сервером при включении/выключении спецсигнала.


native CreateVehicle(vehicletype, Float:x, Float:y, Float:z, Float:rotation, color1, color2, respawndelay, addsiren=0);
native AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2, respawn_delay, addsiren=0);
native GetVehicleParamsSirenState(vehicleid);
forward OnVehicleSirenStateChange(playerid, vehicleid, newstate);

Внимание: Не забудьте перекомпилировать свои скрипты с инклудами из SA:MP 0.3.7, иначе функции CreateVehicle и AddStaticVehicleEx не будут правильно работать на новой версии SA:MP (из-за нового доп. параметра).

Добавлены функции для открытия/закрытия дверей и поднимания/опускания стёкол в машинах:


native SetVehicleParamsCarDoors(vehicleid, driver, passenger, backleft, backright);
native GetVehicleParamsCarDoors(vehicleid, &driver, &passenger, &backleft, &backright);
native SetVehicleParamsCarWindows(vehicleid, driver, passenger, backleft, backright);
native GetVehicleParamsCarWindows(vehicleid, &driver, &passenger, &backleft, &backright);

Примечание (DC): передние двери и стёкла обрабатываются в GTA:SA по-другому, поэтому их состояние нельзя изменить.

Новая функция DisableRemoteVehicleCollisions(), с помощью которой можно отключить коллизии у машин, контролируемых другими игроками.
При отключении машины будут проходить друг сквозь друга, не сталкиваясь, что может быть полезно для гонок.

Релизована система статических актёров. Основное применение: боты в магазинах/казино.
Статические актёры проще в использовании, чем обычные NPC, и не занимают слотов на сервере.
Новые функции для работы с актёрами можно найти в инклуде a_actor.inc.

Добавлена система куки-файлов при подключении, чтобы предотвратить флуд коннектами.
Также можно установить срок действия куки-файла в server.cfg (строка "connseedtime").

В server.cfg можно указать язык или страну, в которой располагается сервер.
Для этого в server.cfg нужно добавить строку "language <название>".
Кроме того, столбец "Map" в браузере серверов заменён столбцом "Language".
Переменная mapname оставлена для совместимости (но теперь не имеет никакого практического применения).

Возможность изменить шрифт интерфейса (на стороне клиента).
Для этого в sa-mp.cfg можно добавить (или изменить) строки "fontface" и "fontweight" с названием и толщиной шрифта соответственно.
Пример:


fontface="Comic Sans MS"
fontweight=1

Доступны 2 режима толщины шрифта: 0 - жирный (по умолчанию) и 1 - обычный.
Также можно изменить размер шрифта, но только из игры (чтобы у игрока была возможность настроить его в зависимости от разрешения экрана, установленного в настройках GTA:SA), с помощью команды /fontsize <размер>.

Новые функции: GetObjectModel(), GetPlayerObjectModel().

Новая функция: EnablePlayerCameraTarget(playerid, true/false) - позволяет отключить передачу данных о цели камеры игроков, чтобы уменьшить кол-во сетевого трафика на сервере.
По умолчанию передача данных выключена.

Новые функции: GetPlayerCameraTargetObject(playerid), GetPlayerCameraTargetVehicle(playerid) и GetPlayerCameraTargetPlayer(playerid), с помощью которых можно узнать ID объекта/машины/игрока, на которые смотрит игрок.
Возаращают INVALID_OBJECT_ID/INVALID_VEHICLE_ID/INVALID_PLAYER_ID, если передача данных о камере игрока выключена (см. выше).

Добавлена клиентская команда /ctd для вывода на экран координат цели камеры.

Новые функции: SetObjectNoCameraCol(true/false) и SetPlayerObjectNoCameraCol(true/false) - позволяют выключить коллизию камеры на объектах.
Также с помощью функции SetObjectsDefaultCameraCol(true/false) можно указать значение по умолчанию для всех объектов SA:MP.
На данный момент функции работают только на объектах, находящихся за пределами обычной карты.

Новые функции: GetPlayerPoolSize() (http://pro-pawn.ru/showthread.php?12762-GetPlayerPoolSize) и GetVehiclePoolSize() (http://pro-pawn.ru/showthread.php?12761-GetVehiclePoolSize) - возвращают самый большой ID игрока/транспорта.
Примечание (DC): всё равно для перебора всех игроков лучше использовать foreach.
Для перебора транспорта также есть эффективное решение (http://pro-pawn.ru/showthread.php?8834).

Начиная с этой версии, сервер будет поставляться только в варианте 1000p, т.к. теперь не должно быть разницы в нагрузке на вариантах 500p и 1000p.

Новые стили диалогов DIALOG_STYLE_TABLIST и DIALOG_STYLE_TABLIST_HEADERS, которые являются расширенными версиями DIALOG_STYLE_LIST с поддержкой столбцов.
Пример использования этих стилей показан в test_cmds.pwn (см. команды /testtablist и /testtablistheaders).
В новых стилях поддерживается добавление до 4 столбцов. В каждом столбце может быть до 128 символов (но не более 256 символов на всю строку).



Исправления/улучшения:
Исправлена утечка памяти в SetObjectMaterialText, SetPlayerObjectMaterialText, SetObjectMaterial и SetPlayerObjectMaterial.

Исправлена проблема с анимацией в SPECIAL_ACTION_CUFFED - у некоторых скинов руки проходили сквозь спину.
Возможно, вам придётся обновить в своём моде координаты наручников на этих скинах.
Также добавлена новая модель наручников (ID 11749).

Добавлены проверки для выявления некорректных значений/векторов в направлении двухколёсного транспорта, скорости поезда, направлении камеры игрока и пуль.

Исправлено отсутствие коллизии камеры с объектами, находящимися за пределами карты.

Птицы больше не будут летать сквозь объекты SA:MP.

Здание возле пляжа LS заменено на новую версию из SA:MP.
Это сделано потому, что новая модель лучше работает с уже существующими LOD'ами и имеет меньше проблем с коллизиями камеры.

Исправлена проблема в RakNet, из-за которой нельзя было использовать функции NetStats_*, если игрок ещё не полностью подключился к серверу.

Более плавная синхронизация поворотов транспорта.

Синхронизирован ID оружия в информации о выстрелах - теперь не будет рассинхронизаций оружия в OnPlayerWeaponShot.

Курсор мыши будет отключен при выборе окна GTA:SA (например, при возврате через Alt+Tab).

Устранён баг с заморозкой игрока при вызове SelectObject() из диалога.

Исправлена проблема в браузере серверов, при которой один сервер мог подделать ответ от другого сервера.


Недокументированные изменения:

Со скинов 165 и 166 удалены солнцезащитные очки.

Функция GetWeaponName вместо пустой строки возвращает правильные названия для оружий 18, 44 и 45 ("Molotov Cocktail", "Night Vision", "Thermal Goggles") (отдельное спасибо ziggi за обнаружение исправления).

Если в RemoveBuildingForPlayer передать вместо ID модели число -1, будут удалены все объекты в указанном радиусе.


Обновление 0.3.7 R2

Добавлена защита от хакеров, спамящих сообщениями о подключении (раньше это могло приводить к повторным вызовам OnPlayerConnect без парных вызовов OnPlayerDisconnect).

Добавлена проверка ID оружия в случае, если оружие не было проверено скриптом в OnPlayerWeaponShot.
Раньше читеры могли отсылать фейковые данные о выстрелах с неправильным ID оружия, вызывая зависания и краши клиентов у других игроков.

Теперь актёры по умолчанию неуязвимы (это может понадобиться позже, чтобы исправить баг с неправильным углом поворота актёров в клиенте).

В server.cfg добавлена переменная conncookies (число) для отключения системы куки-файлов при подключении, добавленной в 0.3.7.

Также добавлена переменная cookielogging, с помощью которой можно отключить логирование выдачи куки-файлов, запрошенных только что подключившимися игроками.

Добавлена функция SHA256_PassHash (http://pro-pawn.ru/showthread.php?12486-SHA256_PassHash) для хеширования паролей в аккаунтах.

Реализована система серверных переменных (SVar). Новый вид переменных аналогичен PVar'ам (похожие названия функций и констант типов данных), но не закреплены за определёнными игроками и существуют в течение всего периода работы сервера, в т.ч. и после рестарта/смены мода.


native SetSVarInt(varname[], int_value);
native GetSVarInt(varname[]);
native SetSVarString(varname[], string_value[]);
native GetSVarString(varname[], string_return[], len);
native SetSVarFloat(varname[], Float:float_value);
native Float:GetSVarFloat(varname[]);
native DeleteSVar(varname[]);
native GetSVarsUpperIndex();
native GetSVarNameAtIndex(index, ret_varname[], ret_len);
native GetSVarType(varname[]);

Имейте в виду, можно создавать до 2000 SVar'ов. Если вам нужно неограниченное количество переменных - лучше продолжайте пользоваться плагином GVar от Incognito.

Функции db_open и db_query теперь возвращают индексы подключений к БД SQLite вместо хендлов. Это значит, что сервер берёт на себя хранение хендлов, обеспечивая безопасность при указании неправильных индексов. Тем самым исправлены краши из-за неправильных хендлов.

Добавлено несколько новых функций для работы с SQLite:


native db_get_field_assoc_int(DBResult:result, const field[]);
native Float:db_get_field_assoc_float(DBResult:result, const field[]);
native db_get_mem_handle(DB:db);
native db_get_result_mem_handle(DBResult:result);
native db_debug_openfiles();
native db_debug_openresults();


Добавлен спецификатор "%q" в функции format. Он предназначен для форматирования строковых значений, как и "%s", но дополнительно пропускает форматируемое значение через экранирующую функцию в SQLite. Нововведение может быть полезно для защиты от SQL-инъекций.

Добавлена консольная переменная db_logging для логирования ошибок в функциях SQLite.

Добавлена переменная db_log_queries, предназначенная для логирования всех запросов в функции db_query.



Обновление 0.3.7 R2-1
Добавлены проверки на нулевые значения в функциях db_get_*. Раньше эти функции крашили из-за неправильных номеров строк и названий полей.

Исправлен баг в реализации хеширования SHA256 (функция SHA256_PassHash).

Исправлен баг в функциях GetPVarsUpperIndex и GetSVarsUpperIndex, из-за которого функции возвращали 1 даже после того, как все PVar'ы/SVar'ы на сервере были удалены.



Обновление 0.3.7 R2-2 (сервер, предварительная версия)
Теперь код контроля за флудом запросами обрабатывает каждый вид запроса отдельно.

Значение переменной cookielogging по умолчанию изменено на 0.



Обновление 0.3.7 R2-2-1 (сервер, предварительная версия)
Слишком короткий промежуток времени между пакетами "c" и "r" со стороны клиента означает, что пакеты Rules List неправильно фильтровались от флуда.
(Примечание: Rules List - список правил сервера, таких как название, игровое время, ID погоды, сайт и т.д.)



Обновление 0.3.7 R2-2 (клиент, предварительная версия)
Устранена уязвимость в браузере, позволявшая отправлять поддельные ответы на запросы от имени других серверов.

Внесены изменения в работу функции PlayerPlaySound. Теперь ID 0 может использоваться для отключения фонового звука в интерьере 0 (шум ветра), а ID 1 - для остановки текущего звука и/или возвращения фонового звука. Кроме того, теперь работает множество других звуков, чей ID меньше 1000.
Пример использования новых возможностей PlayerPlaySound: http://forum.sa-mp.com/files/testing/psTest1a.mp4



Обновление 0.3.7 R3 (клиент)
Устранена проблема с масштабированием радара на широкооэкранных разрешениях, теперь радар не должен отрисовываться в форме овала.
Исправление можно отключить с помощью опции nohudscale=1 в sa-mp.cfg или клиентской команды /hudscalefix
Исправлен баг со звуком ID 0 в PlayerPlaySound, появившийся в 0.3.7-R2.
Теперь актёры снова могут поворачиваться.
В таких функциях, как InterpolateCameraPos, исправлена проблема, возникавшая из-за переполнения игрового таймера.
Больше проверок на неправильные данные на стороне клиента (обновление незанятого транспорта, прицеливание персонажа вверх/вниз).
(Не указано на оф. форуме) Исправлен баг с прозрачностью (https://forum.sa-mp.com/showthread.php?p=3954804) при использовании TextDrawBoxColor.



Обновление 0.3.7 R3-1 (клиент)
Исправлен баг с кривым отображением шкалы брони на широкоэкранных разрешениях после использования /hudscalefix.



Источник: forum.sa-mp.com (http://forum.sa-mp.com)
Перевод и дополнение: Daniel_Cortez (http://pro-pawn.ru/member.php?u=100)

Специально для Pro-Pawn.ru (http://www.pro-pawn.ru)
Копирование данной статьи на других ресурсах без разрешения авторов запрещено!

Iron
02.05.2015, 16:29
Отлично!

Avertus
05.05.2015, 14:34
Реализована система статических актёров. Основное применение: боты в магазинах/казино.
Статические актёры проще в использовании, чем обычные NPC, и не занимают слотов на сервере.
Новые функции для работы с актёрами можно найти в инклуде a_actor.inc.

Озвучен ли где нибудь лимит этих "статических актёров?"

Kegamand
05.05.2015, 15:28
Озвучен ли где нибудь лимит этих "статических актёров?"

Не помню где,но видел что писали про то,что их может быть не больше 1000.

Desulaid
05.05.2015, 16:13
Озвучен ли где нибудь лимит этих "статических актёров?"

https://pp.vk.me/c624616/v624616894/36835/CcwjJDthyQY.jpg

Avertus
05.05.2015, 17:19
Опытным путём определил что стримится у одного игрока могут одновременно только 51 "статический актёр".

Desulaid
05.05.2015, 18:13
Опытным путём определил что стримится у одного игрока могут одновременно только 51 "статический актёр".

:i-m_so_happy: впринципе мне достаточно. Хотя в больше 10 не создавал

Daniel_Cortez
16.07.2015, 23:51
Slowpoke Mode: ON.

Добавил в 1-й пост изменения из 0.3.7 R2 и R2-1. Также есть одно недокументированное изменение ещё из R1.



Недокументированные изменения:

Со скинов 165 и 166 удалены солнцезащитные очки.


Обновление 0.3.7 R2

Добавлена защита от хакеров, спамящих сообщениями о подключении.

Добавлена проверка ID оружия в случае, если оружие не было проверено скриптом в OnPlayerWeaponShot.
Раньше читеры могли отсылать фейковые данные о выстрелах с неправильным ID оружия, вызывая зависания и краши клиентов у других игроков.

Теперь актёры по умолчанию неуязвимы (это может понадобиться позже, чтобы исправить баг с неправильным углом поворота актёров в клиенте).

В server.cfg добавлена переменная conncookies (число) для отключения системы куки-файлов при подключении, добавленной в 0.3.7.

Также добавлена переменная cookielogging, с помощью которой можно отключить логирование выдачи куки-файлов, запрошенных только что подключившимися игроками.

Добавлена функция SHA256_PassHash для хеширования паролей в аккаунтах.

native SHA256_PassHash(password[], salt[], ret_hash[], ret_hash_len);

Реализована система серверных переменных (SVar). Новый вид переменных аналогичен PVar'ам (похожие названия функций и констант типов данных), но не закреплены за определёнными игроками и существуют в течение всего периода работы сервера, в т.ч. и после рестарта/смены мода.


native SetSVarInt(varname[], int_value);
native GetSVarInt(varname[]);
native SetSVarString(varname[], string_value[]);
native GetSVarString(varname[], string_return[], len);
native SetSVarFloat(varname[], Float:float_value);
native Float:GetSVarFloat(varname[]);
native DeleteSVar(varname[]);
native GetSVarsUpperIndex();
native GetSVarNameAtIndex(index, ret_varname[], ret_len);
native GetSVarType(varname[]);

Имейте в виду, можно создавать до 2000 SVar'ов. Если вам нужно неограниченное количество переменных - лучше продолжайте пользоваться плагином GVar от Incognito.

Функции db_open и db_query теперь возвращают индексы подключений к БД SQLite вместо хендлов. Это значит, что сервер берёт на себя хранение хендлов, обеспечивая безопасность при указании неправильных индексов. Тем самым исправлены краши из-за неправильных хендлов.

Добавлено несколько новых функций для работы с SQLite:


native db_get_field_assoc_int(DBResult:result, const field[]);
native Float:db_get_field_assoc_float(DBResult:result, const field[]);
native db_get_mem_handle(DB:db);
native db_get_result_mem_handle(DBResult:result);
native db_debug_openfiles();
native db_debug_openresults();


Добавлен спецификатор "%q" в функции format. Он предназначен для форматирования строковых значений, как и "%s", но дополнительно пропускает форматируемое значение через экранирующую функцию в SQLite. Нововведение может быть полезно для защиты от SQL-инъекций.

Добавлена консольная переменная db_logging для логирования ошибок в функциях SQLite.

Добавлена переменная db_log_queries, предназначенная для логирования всех запросов в функции db_query.



Обновление 0.3.7 R2-1

Добавлены проверки на нулевые значения в функциях db_get_*. Раньше эти функции крашили из-за неправильных номеров строк и названий полей.

Исправлен баг в реализации хеширования SHA256 (функция SHA256_PassHash).

Исправлен баг в функциях GetPVarsUpperIndex и GetSVarsUpperIndex, из-за которого функции возвращали 1 даже после того, как все PVar'ы/SVar'ы на сервере были удалены.



По поводу новых SVar'ов: нельзя сказать, что это такая уж нужная фича. Похожий функционал уже давно реализован в плагине GVar от Incognito.
Если верить результатам теста в теме с релизом плагина GVar на sa-mp.com, скорость доступа к SVar'ам не намного быстрее, чем к GVar'ам, но чем больше создавать SVar'ов, тем меньше будет скорость доступа к ним, поэтому GVar'ы в определённых ситуациях могут оказаться эффективнее.
К тому же, в SVar'ах нет возможности задания ID серверной переменной. Для сравнения, в GVar есть возможность создания переменных с одинаковыми именами и разными ID - таким образом в GVar'ах можно хранить, например, свойства игроков (по аналогии с PVar), домов, бизнесов, etc.
Кроме того, в SA:MP лимиты установлены практически на всё - это, скорее, закономерность, чем случайность. Да-да, SVar'ы не исключение, под них память выделена статически, как и для PVar'ов. Для сравнения, количество GVar'ов не ограничено - память для них выделяется динамически.
В оригинальной теме с релизом и на SA:MP wiki ещё нет никакой информации об ограничениях, но опытным путём я выяснил, что можно создать до 2000 SVar'ов.
Вот код, который я использовал, можете проверить:


#include <a_samp>

main()
{
new svar_name[4+11+1] = "svar";
for (new i = 0; ;++i)
{
valstr(svar_name[4], i);
if(0 == SetSVarInt(svar_name, i))
{
printf("Maximum number of server variables: %d", i);
break;
}
}
}


Что касается функции SHA256_PassHash: тоже не самое нужное нововведение.
Опять же, существует уже предостаточно плагинов, созданных специально для хеширования.
С другой стороны, это лучше, чем ничего. Многие владельцы серверов хранят пароли в незашифрованном виде (или легко расшифровываемом, если кто-то "додумается" сделать "мего-секьюрное" шифрование методом Цезаря (https://ru.wikipedia.org/wiki/Шифр_Цезаря), например). Теперь таким нубам больше не будет оправдания - отныне SA:MP поддерживает хеширование "из коробки", безо всяких плагинов.

Более-менее полезны нововведения в функциях для работы с SQLite. Тем не менее, остаётся спорным вопрос по поводу того, нужны ли вообще в SA:MP эти функции. Запросы к SQLite выполняются в одном потоке со скриптами, останавливая их выполнение - это может оказаться неприемлимым на серверах с большим количеством игроков. Для сравнения, в плагине MySQL от BlueG предусмотрено создание неблокирующих запросов, выполняющихся в отдельном потоке.
Отдельного внимания заслуживает спецификатор "%q" в format. Интересно, если такую меру защиты от SQL-инъекций добавили только сейчас, как от инъекций защищались раньше? Лично мне приходит в голову только костыль с использованием плагина MySQL: юзать mysql_format с предварительным подключением к пустой базе данных (т.к. в mysql_format зачем-то нужен хендл подключения).

В итоге остаются только две новые консольные переменные и багфиксы. На этом список полезных нововведений 0.3.7 R2 исчерпан.

$continue$
17.07.2015, 00:38
Насчёт ограничение на SVar, не думаю, что кто использует такое ограничение, круг применение SVar, как по мне ограничен. (Интеграция работы FS > mod. Может, конечно, что то ещё, но я вижу только такое применение им.).
SQLite добавили, довольно давно, но обновление так называемой "безопасности", от SQL Injection внедрили только, что. Да и вправду, стоит ли использовать SQLite, если он обновляться раз в "пятилетку". Когда BlueG выпускает довольно часто, багофиксы плагина. Ну и однопоточность SA-MP и SQLite, конечно же губительна для серверов "тысячников", хотя я даже не уверен что и пятьсот то выдержит.
Конечно, может один плюс, что SQLite из "коробки", хотя больше плюсов я не вижу. Давно бы пора, внедрить API от MySQL, хотя бы тот же сурс код от BlueG. Но опять же встает вопрос, что будет при нахождении "дыры" в безопасности? Как это заметно у Куя, очень плохо в сфере информационной безопасности.
На счет, хеша: Я например, использую MySQL и там есть запросы на хеширование в разных кодировках, можно почитать не много книжок по данной сфере, и придумать так называемую "соль".
Почитав посты в update sa-mp, на sa-mp.com, улыбнуло то, что люди пишут "Good Job, KyeMan".
А тем временем, MTA релизит 1.5 версию :crazy::lol:

Daniel_Cortez
17.07.2015, 23:53
Как это заметно у Куя, очень плохо в сфере информационной безопасности.
http://forum.sa-mp.com/showpost.php?p=3520390&postcount=102
Tl;dr: куй сам сказал, что он отдаёт приоритет только тем багам, которые крашат сервер.


Давно бы пора, внедрить API от MySQL, хотя бы тот же сурс код от BlueG.
Нет пути.
Компания Oracle выпустила MySQL под двумя лицензиями: коммерческой и GPL.
Лицензия GPL виральная, т.е. если хочешь использовать код под GPL в своём проекте, тебе придётся раскрыть исходники своего проекта под GPL.
Не хочешь раскрывать исходники - покупай коммерческую лицензию у Oracle.
Сомневаюсь, что кую понравится хотя бы один из этих вариантов. Для сторонних же плагинов это не такая уж и проблема - плагин MySQL от BlueG как раз выпущен под GPL.
Мало того, у MySQL довольно сложный API - вон Maddinator как работал над плагином BlueG, так до сих пор в нём баги и фиксит.
Будь на его месте куй, апдейты за него релизили бы его правнуки - и то лишь с исправлениями крашей, под остальные баги писал бы костыли какой-нибудь правнук Y_Less'a (сам Y_Less уже сделал fixes.inc с костылями под баги SA:MP).


Почитав посты в update sa-mp, на sa-mp.com, улыбнуло то, что люди пишут "Good Job, KyeMan".
Пипл хавает.

P.S.: Добавил в 1-й пост ссылку на статью по функции SHA256_PassHash (http://pro-pawn.ru/showthread.php?12486-SHA256_PassHash).

$continue$
18.07.2015, 00:28
Нет пути.
Компания Oracle выпустила MySQL под двумя лицензиями: коммерческой и GPL.
Лицензия GPL виральная, т.е. если хочешь использовать код под GPL в своём проекте, тебе придётся раскрыть исходники своего проекта под GPL.
Не хочешь раскрывать исходники - покупай коммерческую лицензию у Oracle.
Сомневаюсь, что кую понравится хотя бы один из этих вариантов. Для сторонних же плагинов это не такая уж и проблема - плагин MySQL от BlueG как раз выпущен под GPL.
Мало того, у MySQL довольно сложный API - вон Maddinator как работал над плагином BlueG, так до сих пор в нём баги и фиксит.
Будь на его месте куй, апдейты за него релизили бы его правнуки - и то лишь с исправлениями крашей, под остальные баги писал бы костыли какой-нибудь правнук Y_Less'а (сам Y_Less уже сделал fixes.inc с костылями под баги SA:MP)
:lol::grin:

$continue$
19.07.2015, 04:28
Хотел, кстати ещё вчера это сказать, зачем что - то покупать?
Если в интернете есть API, видь как то же надо учиться работать с базой данных из программ, не вариант новичку в программировании покупать Это так к слову, к Кую оно не относиться :declare:
Например, как по мне это нормальный API.
(http://www.mysql.ru/webboard/index.html?n1=1151&n2=2&page=)

Daniel_Cortez
19.07.2015, 17:49
Хотел, кстати ещё вчера это сказать, зачем что - то покупать?
Если в интернете есть API, видь как то же надо учиться работать с базой данных из программ, не вариант новичку в программировании покупать Это так к слову, к Кую оно не относиться :declare:
Например, как по мне это нормальный API.
(http://www.mysql.ru/webboard/index.html?n1=1151&n2=2&page=)
Т.е. вы предлагаете пиратство? -_-

Ну для обычного скриптера и правда нет нужды что-либо покупать, и даже не в пиратстве дело.
Плагин от BlueG уже лицензирован под GPL, в том числе и файл a_mysql.inc, так что исходники своего мода тоже придётся лицензировать под GPL.
Но это не значит, что вам нужно выкладывать эти исходники.
GPL обязывает предоставлять исходный код тем, кому вы передаёте скомпилированные файлы - но ведь вы же никому не передаёте файл ".amx", а значит никому ничем не обязаны (разве что владельцы хостинга могут потребовать исходники, но они вряд ли будут в этом заинтересованы, ведь этим они могут распугать многих других клиентов, пользующихся MySQL).
Так что ничего страшного в использовании MySQL в SA:MP нет.

В крайнем случае, можно сделать дополнительную прослойку в виде фильтрскрипта, через которую будут вызываться функции MySQL (через CallRemoteFunction).
В результате под влияние GPL будет попадать только та прослойка, в моде a_mysql.inc использоваться не будет.
Если кто-то потребует исходники, вы сможете открыть код прослойки, а исходники мода со всеми его секретами - хрен.
Если у меня будет свободное время и желание разобраться в работе с MySQL, я могу сделать такую прослойку и выложить её здесь. Когда-нибудь...

$continue$
19.07.2015, 17:54
Я вряд ли я имел ввиду Pawn. И в чем проблема, использовать тот API? Функций там предостаточно...

Daniel_Cortez
19.07.2015, 19:39
Я вряд ли я имел ввиду Pawn. И в чем проблема, использовать тот API? Функций там предостаточно...
Это и есть API от Oracle.

Desulaid
19.08.2015, 19:06
Обновленные ссылки.
Сервер (Windows): http://files.sa-mp.com/samp037_svr_R2-1-1_win32.zip
Сервер (Linux x86): http://files.sa-mp.com/samp037svr_R2-1.tar.gz

Daniel_Cortez
19.08.2015, 23:26
Обновленные ссылки.
Сервер (Windows): http://files.sa-mp.com/samp037_svr_R2-1-1_win32.zip
Сервер (Linux x86): http://files.sa-mp.com/samp037svr_R2-1.tar.gz
Ок, обновил ссылки. Заодно переименовал тему, чтобы всякие беженцы с г-и не создавали ненужных тем с релизом 0.3.7 R2, не проверив эту.

Что интересно, со времени выпуска R2-1 (14 июля) куй втихаря обновил версию для Windows, заменив 1 августа архив "samp037_svr_R2-1_win32.zip" на files.sa-mp.com.
Все файлы в новом архиве были те же самые, за исключением "announce.exe" и "samp-server.exe".
15 августа этот архив был переименован в "samp037_svr_R2-1-1_win32.zip" (добавлено "-1" в конце).
Разумеется, на sa-mp.com никаких комментариев об обнове до сих пор нет. Только упоминание под первым постом в теме с релизом R2-1 о том, что этот пост редактировался 15 числа (видимо, просто была обновлена ссылка на переименованный архив).

Я сравнил версии R2-1 и R2-1-1. Как я уже сказал, в архивах отличаются только файлы "announce.exe" и "samp-server.exe".
В сервере никаких отличий нет, новая версия совпадает со старой байт-в-байт, отличается только дата создания файла. Зачем нужно было обновлять его в архиве - понятия не имею. ¯\_(ツ)_/¯

Что касается announce.exe, есть отличия в коде функции main(). Я не смог разобрать, что именно было исправлено, но это явно что-то, связанное с отправкой запроса о регистрации в списке на мастер-сервере. В общем, если вы не хостите свой проект на Windows, вам это обновление вряд ли пригодится, продолжайте пользоваться версией R2-1.

Desulaid
19.08.2015, 23:39
Ок, обновил ссылки. Заодно переименовал тему, чтобы всякие беженцы с г-и не создавали ненужных тем с релизом 0.3.7 R2, не проверив эту.

Что интересно, со времени выпуска R2-1 (14 июля) куй втихаря обновил версию для Windows, заменив 1 августа архив "samp037_svr_R2-1_win32.zip" на files.sa-mp.com.
Все файлы в новом архиве были те же самые, за исключением "announce.exe" и "samp-server.exe".
15 августа этот архив был переименован в "samp037_svr_R2-1-1_win32.zip" (добавлено "-1" в конце).
Разумеется, на sa-mp.com никаких комментариев об обнове до сих пор нет. Только упоминание под первым постом в теме с релизом R2-1 о том, что этот пост редактировался 15 числа (видимо, просто была обновлена ссылка на переименованный архив).

Я сравнил версии R2-1 и R2-1-1. Как я уже сказал, в архивах отличаются только файлы "announce.exe" и "samp-server.exe".
В сервере никаких отличий нет, новая версия совпадает со старой байт-в-байт, отличается только дата создания файла. Зачем нужно было обновлять его в архиве - понятия не имею. ¯\_(ツ)_/¯

Что касается announce.exe, есть отличия в коде функции main(). Я не смог разобрать, что именно было исправлено, но это явно что-то, связанное с отправкой запроса о регистрации в списке на мастер-сервере. В общем, если вы не хостите свой проект на Windows, вам это обновление вряд ли пригодится, продолжайте пользоваться версией R2-1.

Докопался до announce.exe :D Кстати, для чего этот файл нужен, он данные обновляет о сервер в клиенте?

Daniel_Cortez
19.08.2015, 23:43
Докопался до announce.exe :D Кстати, для чего этот файл нужен, он данные обновляет о сервер в клиенте?
Он регистрирует сервер на мастер-сервере куя, а с него уже берут инфу браузеры серверов в клиентах.

ziggi
08.04.2016, 14:15
Я не ожидал, но, оказывается, в SA-MP 0.3.7 была исправлена функция GetWeaponName (для оружий 18, 44, 45 ранее она возвращала пустой результат). Может быть в новой версии ещё какие-нибудь баги закроют?

char *__cdecl sub_80AFEE0(int a1, int a2)
{
char *result; // eax@2

switch ( a2 )
{
default:
result = &delim;
break;
case 12:
case 13:
result = "Vibrator";
break;
case 10:
case 11:
result = "Dildo";
break;
case 42:
result = "Fire Extinguisher";
break;
case 41:
result = "Spray Can";
break;
case 40:
result = "Bomb";
break;
case 39:
result = "Satchel Explosives";
break;
case 38:
result = "Minigun";
break;
case 37:
result = "Flamethrower";
break;
case 36:
result = "Heat Seaker";
break;
case 35:
result = "Rocket Launcher";
break;
case 34:
result = "Sniper Rifle";
break;
case 33:
result = "Sniper Rifle" + 7;
break;
case 43:
result = "Camera";
break;
case 15:
result = "Cane";
break;
case 17:
result = "Teargas";
break;
case 16:
result = "Grenade";
break;
case 24:
result = "Desert Eagle";
break;
case 23:
result = "Silenced Pistol";
break;
case 22:
result = "Colt 45";
break;
case 18:
result = "Molotov Cocktail";
break;
case 3:
result = "Nite Stick";
break;
case 8:
result = "Katana";
break;
case 7:
result = "Pool Cue";
break;
case 9:
result = "Chainsaw";
break;
case 14:
result = "Flowers";
break;
case 27:
result = "Combat Shotgun";
break;
case 26:
result = "Sawn-off Shotgun";
break;
case 25:
result = "Sawn-off Shotgun" + 9;
break;
case 32:
result = "TEC9";
break;
case 31:
result = "M4";
break;
case 30:
result = "AK47";
break;
case 29:
result = "MP5";
break;
case 28:
result = "UZI";
break;
case 2:
result = "Golf Club";
break;
case 1:
result = "Brass Knuckles";
break;
case 54:
result = "Splat";
break;
case 53:
result = "Drowned";
break;
case 49:
result = "Vehicle";
break;
case 46:
result = "Parachute";
break;
case 45:
result = "Thermal Goggles";
break;
case 44:
result = "Night Vision";
break;
case 6:
result = "Shovel";
break;
case 5:
result = "Baseball Bat";
break;
case 4:
result = "Knife";
break;
}
return result;
}

Daniel_Cortez
08.04.2016, 14:40
Я не ожидал, но, оказывается, в SA-MP 0.3.7 была исправлена функция GetWeaponName (для оружий 18, 44, 45 ранее она возвращала пустой результат). Может быть в новой версии ещё какие-нибудь баги закроют?

char *__cdecl sub_80AFEE0(int a1, int a2)
{
char *result; // eax@2

switch ( a2 )
{
default:
result = &delim;
break;
case 12:
case 13:
result = "Vibrator";
break;
case 10:
case 11:
result = "Dildo";
break;
case 42:
result = "Fire Extinguisher";
break;
case 41:
result = "Spray Can";
break;
case 40:
result = "Bomb";
break;
case 39:
result = "Satchel Explosives";
break;
case 38:
result = "Minigun";
break;
case 37:
result = "Flamethrower";
break;
case 36:
result = "Heat Seaker";
break;
case 35:
result = "Rocket Launcher";
break;
case 34:
result = "Sniper Rifle";
break;
case 33:
result = "Sniper Rifle" + 7;
break;
case 43:
result = "Camera";
break;
case 15:
result = "Cane";
break;
case 17:
result = "Teargas";
break;
case 16:
result = "Grenade";
break;
case 24:
result = "Desert Eagle";
break;
case 23:
result = "Silenced Pistol";
break;
case 22:
result = "Colt 45";
break;
case 18:
result = "Molotov Cocktail";
break;
case 3:
result = "Nite Stick";
break;
case 8:
result = "Katana";
break;
case 7:
result = "Pool Cue";
break;
case 9:
result = "Chainsaw";
break;
case 14:
result = "Flowers";
break;
case 27:
result = "Combat Shotgun";
break;
case 26:
result = "Sawn-off Shotgun";
break;
case 25:
result = "Sawn-off Shotgun" + 9;
break;
case 32:
result = "TEC9";
break;
case 31:
result = "M4";
break;
case 30:
result = "AK47";
break;
case 29:
result = "MP5";
break;
case 28:
result = "UZI";
break;
case 2:
result = "Golf Club";
break;
case 1:
result = "Brass Knuckles";
break;
case 54:
result = "Splat";
break;
case 53:
result = "Drowned";
break;
case 49:
result = "Vehicle";
break;
case 46:
result = "Parachute";
break;
case 45:
result = "Thermal Goggles";
break;
case 44:
result = "Night Vision";
break;
case 6:
result = "Shovel";
break;
case 5:
result = "Baseball Bat";
break;
case 4:
result = "Knife";
break;
}
return result;
}
Переместил пост в тему с релизом, добавил инфу в начало темы.


UPD: https://github.com/ziggi/sa-mp-fixes/commit/0d261f35c9edbeddcb84796c70979ce28766104b
Оперативно...

ziggi
08.04.2016, 14:56
Переместил пост в тему с релизом, добавил инфу в начало темы.
Сам думал сюда написать, да что-то передумал. И да, опечатка: GetPlayerName -> GetWeaponName


UPD: https://github.com/ziggi/sa-mp-fixes/commit/0d261f35c9edbeddcb84796c70979ce28766104b
Оперативно...
Да уж, жаль что о подобных изменениях не сообщают. Как знать, может ещё чего исправили...

Daniel_Cortez
08.04.2016, 15:53
Да уж, жаль что о подобных изменениях не сообщают. Как знать, может ещё чего исправили...
ИМХО, пока что этот случай больше похож на исключение из правил, чем на растущую тенденцию в плане исправления багов.
Но печально ещё и то, что некоторые наотрез отказываются верить, что факт таких незадокументированных изменений вообще возможен. ("Это же влияет на логику игры, как он может такое упустить?", "Может он ещё и SA:MP 0.4 забыл?")
А мораль, на самом деле, простая: нельзя полагаться на закрытое ПО.

DeimoS
08.04.2016, 16:28
ИМХО, пока что этот случай больше похож на исключение из правил, чем на растущую тенденцию в плане исправления багов.
Но печально ещё и то, что некоторые наотрез отказываются верить, что факт таких незадокументированных изменений вообще возможен. ("Это же влияет на логику игры, как он может такое упустить?", "Может он ещё и SA:MP 0.4 забыл?")
А мораль, на самом деле, простая: нельзя полагаться на закрытое ПО.

Где отрицал то, что он может не сообщить о каких-то изменениях? Не нужно придумывать.
Просто подобное изменение с правкой MAX_PLAYER_NAME сравнимо, как если бы ты забыл стереть чёрточку с ладони, которую ты случайно нарисовал ручкой, и забыл полностью помыться.
Да и как данный фикс меняет логику скрипта? Фикс этого бага как работал, так и будет продолжать работать. Он же не изменил, например, порядок ID оружия или же не поменял параметры местами, а потом забыл сообщить.

Daniel_Cortez
08.04.2016, 16:53
Где отрицал то, что он может не сообщить о каких-то изменениях? Не нужно придумывать.
А где я сказал, что речь конкретно о тебе? Мне это ещё в том году кто-то высказывал в ЛС, даже не один раз. Сейчас уже лень обыскивать все логи.



Просто подобное изменение с правкой MAX_PLAYER_NAME сравнимо, как если бы ты забыл стереть чёрточку с ладони, которую ты случайно нарисовал ручкой, и забыл полностью помыться.
Да и как данный фикс меняет логику скрипта? Фикс этого бага как работал, так и будет продолжать работать. Он же не изменил, например, порядок ID оружия или же не поменял параметры местами, а потом забыл сообщить.
Прежнее самое длинное название оружия "Satchel Explosives" занимает 19 ячеек, а новое "Night Vision Goggles" - 21. Отсюда имеем несовместимость с прошлыми версиями, т.к. размеры массивов под название оружия теперь нужно увеличивать.

UPD: Только сейчас заметил, что "Night Vision Goggles" было в fixes.inc, а в SA:MP сделано только "Night Vision". Неполное и, ИМХО, немного нелепое название ("ночное зрение" вместо "прибор ночного видения"), но хотя бы без багов (если само неполное название не считать за новый баг, лоль).

Daniel_Cortez
31.08.2017, 12:17
Вышла предварительная версия очередного обновления сервера, которая должна помочь справиться с атакой, связанной с ложными подключениями и запросами к серверу.
Вот что об этом сказал (http://forum.sa-mp.com/showthread.php?t=639868&page=32#311) сам Kalcor:


Я работал над временным исправлением. Любое другое исправление лучше этого потребует обновление сервера/клиента, которое займёт куда больше времени, чтобы разойтись ко всем игрокам. Хочу ещё раз сказать, что нет такого исправления для кода SA-MP, которое остановило бы сетевые атаки. Ваш хост в любом случае может быть перегружен от слишком большого количества пакетов, независимо от того, что вы на нём хостите: сервер SA-MP, IRC-сервер, MUD, linx, зеркало usenet'а и т.д.

Просьба сообщать обо всех неполадках.

Список изменений:
Теперь код контроля за флудом запросами обрабатывает каждый вид запроса отдельно.
Значение переменной cookielogging по умолчанию изменено на 0.


Сервер (Linux x86): http://files.sa-mp.com/samp037svr_R2-2-1.tar.gz
Сервер (Windows): http://files.sa-mp.com/samp037_svr_R2-2-1_win32.zip

Также добавил информацию об обновлениях и ссылки на скачивание в 1-й пост.

Daniel_Cortez
01.09.2017, 18:40
Ещё одно временное обновление вместо вчерашнего.
Непосредственная близость клиентов, отправляющих запросы "c" и "r", означала, что пакеты Rules List неправильно фильтровались от флуда.
(Примечание: Rules List - список правил сервера, таких как название, игровое время, ID погоды, сайт и т.д.)

Ссылки в 1-м посте.

Daniel_Cortez
21.09.2017, 11:47
Вышло опциональное клиентское обновление SA-MP 0.3.7 R2, в котором устранена уязвимость спуфинга IP в браузере. Сервера могли отправлять ложную информацию от имени других серверов, если могли догадаться, когда клиент запросит эту информацию. Данная уязвимость не могла привести к удалённому выполнению кода.

Примечание для владельцев серверов.

Протокол запросов к серверам SA-MP был изменён. Если вы фильтруете секцию 'Port' в пакетах запроса с помощью фаервола, вам следует удалить этот фильтр.


Изменения в PlayerPlaySound.

Внесены изменения в работу PlayerPlaySound на стороне клиента. Звук под ID 1 теперь может быть использован для отключения фонового звука в интерьере 0 (шум ветра) для создания псевдо-интерьеров. Система фоновых звуков в игре используется для всех звуков, чей ID меньше 1000, благодаря чему теперь должны работать многие фоновые звуки, которые раньше не работали. Звук под ID 0 можно использовать для остановки текущего звука или возвращения фонового звука.

Пример использования новых возможностей PlayerPlaySound: http://forum.sa-mp.com/files/testing/psTest1a.mp4


Ссылки в 1-м посте (раздел "Предварительная версия").

ziggi
22.09.2017, 08:49
Новые ID звуков, которые работают на новом клиенте: http://wiki.sa-mp.com/wiki/SoundID

$continue$
22.09.2017, 20:31
Так понимаю отключает только ветер? В интерьере Andromada (http://weedarr.wdfiles.com/local--files/interior/Andromada.jpg) не отключит звук от самолета?


Изменения в PlayerPlaySound.
[indent]Внесены изменения в работу PlayerPlaySound на стороне клиента. Звук под ID 1 теперь может быть использован для отключения фонового звука в интерьере 0 (шум ветра) для создания псевдо-интерьеров. Система фоновых звуков в игре используется для всех звуков, чей ID меньше 1000, благодаря чему теперь должны работать многие фоновые звуки, которые раньше не работали. Звук под ID 0 можно использовать для остановки текущего звука или возвращения фонового звука.

Пример использования новых возможностей PlayerPlaySound: http://forum.sa-mp.com/files/testing/psTest1a.mp4

vovandolg
23.09.2017, 12:59
Я правильно понял, что если EnablePlayerCameraTarget отключить, то не будут работать следущии функции:


GetPlayerCameraTargetVehicle : получите идентификатор автомобиля, на который смотрит игрок.
GetPlayerCameraTargetPlayer : получить идентификатор игрока, на который смотрит игрок.
GetPlayerCameraFrontVector : получить вектор переднего фронта игрока

Так?

DeimoS
23.09.2017, 14:43
Я правильно понял, что если EnablePlayerCameraTarget отключить, то не будут работать следущии функции:


GetPlayerCameraTargetVehicle : получите идентификатор автомобиля, на который смотрит игрок.
GetPlayerCameraTargetPlayer : получить идентификатор игрока, на который смотрит игрок.
GetPlayerCameraFrontVector : получить вектор переднего фронта игрока

Так?

Yep

Salik_Davince
26.09.2017, 18:19
Вектор должен работать.

ziggi
26.09.2017, 18:52
Вектор должен работать.

Вместо вектора, он, видимо, хотел написать GetPlayerCameraTargetObject.

vovandolg
27.09.2017, 12:02
Вместо вектора, он, видимо, хотел написать GetPlayerCameraTargetObject.

мм нет, эти функции мне на вики выбило как связанные между собой, вот и спросил)

Daniel_Cortez
06.12.2018, 20:26
Обновление 0.3.7 R3 (клиент)
Устранена проблема с масштабированием радара на широкооэкранных разрешениях, теперь радар не должен отрисовываться в форме овала.
Исправление можно отключить с помощью опции nohudscale=1 в sa-mp.cfg или клиентской команды /hudscalefix
Исправлен баг со звуком ID 0 в PlayerPlaySound, появившийся в 0.3.7-R2.
Теперь актёры снова могут поворачиваться.
В таких функциях, как InterpolateCameraPos, исправлена проблема, возникавшая из-за переполнения игрового таймера.
Больше проверок на неправильные данные на стороне клиента (обновление незанятого транспорта, прицеливание персонажа вверх/вниз).
(Не указано на оф. форуме) Исправлен баг с прозрачностью (https://forum.sa-mp.com/showthread.php?p=3954804) при использовании TextDrawBoxColor.


Ссылки на скачивание в начале 1-го поста.

ziggi
06.12.2018, 21:36
Обновление 0.3.7 R2-3 (клиент)
Устранена проблема с масштабированием радара на широкооэкранных разрешениях, теперь радар не должен отрисовываться в форме овала.
Исправление можно отключить с помощью опции nohudscale=1 в sa-mp.cfg или клиентской команды /hudscalefix
Исправлен баг со звуком ID 0 в PlayerPlaySound, появившийся в 0.3.7-R2.
Теперь актёры снова могут поворачиваться.
В таких функциях, как InterpolateCameraPos, исправлена проблема, возникавшая из-за переполнения игрового таймера.
Больше проверок на неправильные данные на стороне клиента (обновление незанятого транспорта, прицеливание персонажа вверх/вниз).
(Не указано на оф. форуме) Исправлен баг с прозрачностью (https://forum.sa-mp.com/showthread.php?p=3954804) при использовании TextDrawBoxColor.


Ссылки на скачивание в начале 1-го поста.

Только не R2-3, а R3.
Клиент представляет из себя DL версию с вырезанными функциями добавления моделей. Часть кода из DL версии присутствует, например, есть команда /logurls.

Daniel_Cortez
08.12.2018, 15:50
Похоже, релиз клиента 0.3.7-R3 был отозван, скачивание по ссылке недоступно. Вместо него подготовлен релиз 0.3.7-R3-1, в котором исправлен баг с кривым расположением шкалы брони после применения фикса для масштабирования радара (/hudscalefix).

Ссылка на скачивание в 1-м посте обновлена.

bullplex
03.02.2019, 12:14
Возможность изменить шрифт интерфейса.
Для этого в server.cfg можно найти (или добавить) строки "fontface" и "fontweight" с названием и толщиной шрифта соответственно.

sa-mp.cfg

Daniel_Cortez
03.02.2019, 15:47
sa-mp.cfg
Да, действительно, это настройки на стороне клиента. Исправил.

Salik_Davince
13.04.2019, 11:37
Хотелось бы узнать от Ziggi что там происходит) Что за форум новый Burgershot, вроде писали о скринал TommyB и Y_Less'a с Kye, пойдет ли разработка нового SA:MP'a?))

ziggi
15.04.2019, 18:01
Там R3 сервер вышел (ничего интересного): https://forum.sa-mp.com/showpost.php?p=4094602&postcount=58