Чего не хватает в SA:MP -
m1n1vv - 05.10.2017
В этой теме предложены наверно самые ожидаемы функции.
Все будет разделено на 5 групп:
- Объекты;
- Коллбэки;
- Функции;
- Предложения;
- Исправление ошибок.
Объекты:- Спец объекты с числами - объекты, на которых уже заранее нанесены числа [0..9] белого цвета (для удобного использования параметров materialcolor1 и materialcolor2 в дальнейшем). А нужны для различных реализаций с SetPlayerAttachedObject.
- Исправить коллизию объекта ID:16203 с зоны 69. Дело в том, что этот объект является и коллизией объекта ID:16323, ангары.
Коллбэки:- OnPlayerChangeWeapon - вызывается при любой смене оружия.
Code:
public OnPlayerChangeWeapon(playerid, newweapon, oldweapon) {}
• playerid - ID игрока
• newweapon - ID нового оружия
• oldweapon - ID старого оружия
Функции:- ShowVehicleMarkers - скрывает иконки всего транспорта. Параметр использовать как в ShowPlayerMarkers.
- IsPlayerAimed - определяет, прицелился ли игрок или нет.
Code:
IsPlayerAimed(playerid);
• playerid - ID игрока
- ToggleHUDComponnent - переключает компоненты худа. Можно будет скрыть.
Code:
ToggleHUDComponnent(playerid, componentid, bool:toggle);
• playerid - ID игрока
• componentid - ID компонента (0 - все, 1 - карта, 2 - худ)
• bool:toggle - переключатель (true - включить, false - выключить)
- SetPlayerFatigue - изменить усталость игрока. Эта функция может повлиять на скорость движения игрока и не только.
Code:
SetPlayerFatigue(playerid, Float:fatigue);
• playerid - ID игрока
• Float:fatigue - значение усталости [0..100]
- GetPlayerFatigue - узнать усталость игрока.
Code:
GetPlayerFatigue(playerid, &Float:fatigue);
• playerid - ID игрока
• &Float:fatigue - переменная, в которую будет записано значение усталости
- SetPlayerOxygen - изменить уровень кислорода игрока.
Code:
SetPlayerOxygen(playerid, Float:oxygen);
• playerid - ID игрока
• Float:oxygen - значение кислорода [0..100]
- GetPlayerOxygen - узнать уровень кислорода игрока.
Code:
GetPlayerOxygen(playerid, &Float:oxygen);
• playerid - ID игрока
• &Float:oxygen - переменная, в которую будет записано значение кислорода
- SetObjectSize - изменить размер объекта.
Code:
SetObjectSize(objectid, Float:size);
• objectid - ID объекта
• Float:size - размер объекта
- GetObjectSize - узнать размер объекта.
Code:
GetObjectSize(objectid, &Float:size);
• objectid - ID объекта
• &Float:size - переменная, в которую будет записан размер объекта
- SetPlayerPhysique - визуально растянуть модель игрока (0 - 1000). Пример
Code:
SetPlayerPhysique(playerid, integer);
• playerid - ID игрока
• integer - размер модели игрока
- GetPlayerPhysique - узнать размер модели игрока.
Code:
GetPlayerPhysique(playerid);
• playerid - ID игрока
- ToggleObjectCollisions - коллизия объекта.
Code:
ToggleObjectCollisions(objectid, bool:toggle);
• objectid - ID объекта
• bool:toggle - переключатель (true - включить, false - выключить)
- SetPlayerAttachedWeapon - автоматически крепит объект оружия с небольшим увеличением в руки игроку в правильной позиции.
Code:
SetPlayerAttachedWeapon(playerid, weaponid, materialcolor1, materialcolor2);
• playerid - ID игрока
• weaponid - ID оружия
• materialcolor1, materialcolor2 - окрас оружия
- SetVisualEffect - установка визуального эффекта очков ночного видения или тепловизора, эффект нахождения под водой или размытия в движении для игрока
Code:
SetVisualEffect(playerid, effectid);
• playerid - ID игрока
• effectid - ID визуального эффекта
0 - отключение эффекта
1 - эффект ночного видения
2 - эффект тепловизора
3 - эффект нахождения под водой
4 - эффект размытия в движении (как нитро)
- SetVisualEffectToAll - установка визуального эффекта для всех.
Code:
SetVisualEffectToAll(effectid);
• effectid - ID визуального эффекта
- GetVisualEffect - узнать ID визуального эффекта.
Code:
GetVisualEffect(playerid);
• playerid - ID игрока
- SightTextur - установить другую текстуру прицела для игрока.
Code:
SightTexture(playerid, sightid);
• playerid - ID игрока
• sightid - ID прицела (создать отдельную библиотеку на стороне клиента)
- SightTexturToAll - установить другую текстуру прицела для всех.
Code:
SightTextureToAll(sightid);
• sightid - ID прицела
- AttachSoundToVehicle - прикрепить ID звука к транспорту (чтобы звук следовал за тс).
Code:
AttachSoundToVehicle(vehicleid, soundid);
• vehicleid - ID транспорта
• soundid - ID звука
- AttachSoundToVehicleSrc - прикрепить ссылку на звук к транспорту.
Code:
AttachSoundToVehicleSrc(vehicleid, sound[]);
• vehicleid - ID транспорта
• sound - ссылка за запись
- CircleGangZoneCreate - создать круглую ганг зону.
Code:
CircleGangZoneCreate(Float:x, Float:y, Float:radius);
• Float:x, Float:y - центр ганг зоны
• Float:radius - радиус окружности зоны
Предложения:- В функцию Create3DTextLabel добавить параметры шрифта и размера текста.
- В функцию fopen добавить поддержку создания каталогов.
- В функцию MoveObject добавить компонент создания объекта после завершения движения.
- Добавить возможность восстановления объектов удаленных через RemoveBuildingForPlayer, RecoveryBuildingForPlayer.
- Тип диалога: DIALOG_STYLE_TABLIST_CATEGORIES. Сортирует список на подкатегории. Пример
- Тип диалога: DIALOG_STYLE_MSGBOX_HEADERS. Этот стиль похож на DIALOG_STYLE_MSGBOX, но может разделять контент в таблицу. Пример
- Встроить в SA:MP chromium. Заменить TD языками верстки. Подойдет для реализаций сайтов в стиле GTAV.
Исправление ошибок:- SetPlayerAmmo - если у игрока забрать оружие и снова выдать, то при стрельбе будет воспроизводиться только анимация.
- Исправление работу с упакованными строками в printf и format.
- Исправление обновления всех AttachObject. На данный момент они пару раз обновляются и больше не меняют значений.
Автор:
m1n1vv
Re: Чего не хватает в SA:MP -
Stepashka - 05.10.2017
И зачем это написано?
Re: Чего не хватает в SA:MP -
m1n1vv - 05.10.2017
Quote:
Originally Posted by Stepashka
И зачем это написано?
|
В первом сообщении написано
Re: Чего не хватает в SA:MP -
Eims - 05.10.2017
Quote:
Originally Posted by m1n1vv
В первом сообщении написано
|
От этого данная тема не приобрела какого-либо смысла. Таких тем в этом разделе можно с десяток найти точно. А ещё больше подобных обсуждений можно и в курилке найти, и в новостях о релизе новой версии. На деле же все эти темы - переливание воды из пустого в порожнее.
Ты думаешь, что Куй вдруг зайдёт в этот раздел и обратит внимание на твою тему? Или ты думаешь, что кто-то не знает написанного тобой? Пока что эта тема, как и другие подобные, не имеет никакого смысла, увы
Re: Чего не хватает в SA:MP -
m1n1vv - 05.10.2017
Quote:
Originally Posted by Eims
От этого данная тема не приобрела какого-либо смысла. Таких тем в этом разделе можно с десяток найти точно. А ещё больше подобных обсуждений можно и в курилке найти, и в новостях о релизе новой версии. На деле же все эти темы - переливание воды из пустого в порожнее.
Ты думаешь, что Куй вдруг зайдёт в этот раздел и обратит внимание на твою тему? Или ты думаешь, что кто-то не знает написанного тобой? Пока что эта тема, как и другие подобные, не имеет никакого смысла, увы
|
Английская версия в процессе
Re: Чего не хватает в SA:MP -
Stepashka - 05.10.2017
Quote:
Originally Posted by m1n1vv
В первом сообщении написано
|
Давайте вы будете честны со всеми, в первую очередь с собой.
В этой теме предложены функции которых не хватает исключительно ВАМ. Никакого отношения к "самым ожидаемым функциям" ни эта тема, ни другая похожая не имеет никакого отношения.
Сдерживайте свои влажные фантазии!
Re: Чего не хватает в SA:MP -
m1n1vv - 05.10.2017
Quote:
Originally Posted by Stepashka
Давайте вы будете честны со всеми, в первую очередь с собой.
В этой теме предложены функции которых не хватает исключительно ВАМ. Никакого отношения к "самым ожидаемым функциям" ни эта тема, ни другая похожая не имеет никакого отношения.
Сдерживайте свои влажные фантазии!
|
Но и ты не все
Re: Чего не хватает в SA:MP -
Kaperstone - 05.10.2017
ne super effectivna, nu, eta mozhna delat v pawn.
Ne zdelal eta 3D, ne hatel sdelat slishkom ``spaghetti``
(ne testiravana)
pawn Code:
stock isPlayerAimed2D(playerid) {
new FLOAT:x,FLOAT:y,FLOAT:z,Float:tx,Float:ty,Float:tz,Float:Pyt,Float:Fa,Float:dx,Float:dy,Float:nFa,Aimed=false;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
for(new j=0;j<MAX_PLAYERS;j++) {
GetPlayerPos(playerid, tx, ty, tz);
// Pythagoras
Pyt=floatsqroot(floatadd(floatadd(floatpower(floatsub(x,tx),2),floatpower(floatsub(y,ty),2))));
dx=floatsqroot(floatpower(x-tx)); // bez minusa
// Kakoi FacingAngle dolizhin bit shtob vnivo
nFa=floattan(floatdiv(dx,Pyt), degrees)+SubsetFacingAngle(playerid, x, y, tx, ty);
// yesli ani vmestimi i on precelivaytsa
if(nFa==a&&IsPlayerAiming(playerid)) {
Aimed=true;
// ne uveren yesli mogu delat "return" atsuda
break;
}
}
return Aimed;
}
// FacingAngle ne idot po chisavuyu
stock Float:SubsetFacingAngle(playerid, Float:x, Float:y, Float:tx, Float:ty) {
if(tx>=x&&ty>=y) {
return 0.0;
}else if(tx>=x&&ty<=y) {
return 270.0;
}else if(tx<=x&&ty<=y) {
return 180.0;
}else if(tx<=x&&ty>=y) {
return 90.0;
}
}
https://sampforum.blast.hk/showthread.php?tid=547324
pawn Code:
stock IsPlayerAiming(playerid)
{
new anim = GetPlayerAnimationIndex(playerid);
if (((anim >= 1160) && (anim <= 1163)) || (anim == 1167) || (anim == 1365) ||
(anim == 1643) || (anim == 1453) || (anim == 220)) return 1;
return 0;
}
public OnPlayerUpdate(playerid) // You can put under OnPlayerTakeDamage or others to detect players is aiming
{
if(IsPlayerAiming(playerid))
{
//Your some thing do here
}
return 1;
}
EDIT: akazivaytsa ktota uzhe eta probaval i protestiraval
dumayu shto lutshe chem moi cod
https://sampforum.blast.hk/showthread.php?tid=140765
pawn Code:
stock IsPlayerAimed(playerid) {
new FLOAT:x,FLOAT:y,FLOAT:z,Float:tx,Float:ty,Float:tz,Float:Pyt,Float:Fa,Float:dx,Float:dy,Float:nFa,Aimed=false;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
for(new j=0;j<MAX_PLAYERS;j++) {
GetPlayerPos(playerid, tx, ty, tz);
if(GetPointAngleToPoint(x, y, tx, ty) == a&&IsPlayerAiming(playerid)) {
Aimed=true;
break;
}
}
return Aimed;
}
stock Float:GetPointAngleToPoint(Float:x2, Float:y2, Float:X, Float:Y) {
new Float:DX, Float:DY;
new Float:angle;
DX = floatabs(floatsub(x2,X));
DY = floatabs(floatsub(y2,Y));
if (DY == 0.0 || DX == 0.0) {
if(DY == 0 && DX > 0) angle = 0.0;
else if(DY == 0 && DX < 0) angle = 180.0;
else if(DY > 0 && DX == 0) angle = 90.0;
else if(DY < 0 && DX == 0) angle = 270.0;
else if(DY == 0 && DX == 0) angle = 0.0;
}
else {
angle = atan(DX/DY);
if(X > x2 && Y <= y2) angle += 90.0;
else if(X <= x2 && Y < y2) angle = floatsub(90.0, angle);
else if(X < x2 && Y >= y2) angle -= 90.0;
else if(X >= x2 && Y > y2) angle = floatsub(270.0, angle);
}
return floatadd(angle, 90.0);
}
SetPlayerOxygen
Vi imeyte vidu ``Stamina``
Quote:
Originally Posted by m1n1vv
Английская версия в процессе
|
Yesli tak
https://sampforum.blast.hk/showthread.php?tid=302201
Re: Чего не хватает в SA:MP -
Stepashka - 05.10.2017
Quote:
Originally Posted by m1n1vv
Но и ты не все
|
А я то тут причём, я не своих желания, ни фантазий не высказывал.
Re: Чего не хватает в SA:MP -
Eims - 05.10.2017
Quote:
Originally Posted by m1n1vv
Английская версия в процессе
|
Да хоть лично Кую в личку отправляй это всё. Думаешь, ты такой единственный?
![Smiley](images/smilies/smile.png)
Многое из того, что ты описал в теме, ждут чуть ли не с самого появления сампа. Только вот суть в том, что у Куя есть свои представления о том, каким должен быть самп и чхать он хотел на все твои старания.
Ну разве что можешь открыть сервер, сделать его одним из крупнейших в сампе и может тогда Куй обратит внимание на твои хотелки. А до этого момента нет смысла даже пытаться просить хоть что-то, не говоря уже о функциях, а-ля SetPlayerPhysique или SightTextur, которые идут напрямую вразрез с идеями Куя о том, что самп должен оставаться GTA SA по сети, а не игровым движком, позволяющим делать подобные вещи.
Re: Чего не хватает в SA:MP -
m1n1vv - 06.10.2017
Quote:
Originally Posted by Kaperstone
ne super effectivna, nu, eta mozhna delat v pawn.
Ne zdelal eta 3D, ne hatel sdelat slishkom ``spaghetti``
(ne testiravana)
pawn Code:
stock isPlayerAimed2D(playerid) { new FLOAT:x,FLOAT:y,FLOAT:z,Float:tx,Float:ty,Float:tz,Float:Pyt,Float:Fa,Float:dx,Float:dy,Float:nFa,Aimed=false; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); for(new j=0;j<MAX_PLAYERS;j++) { GetPlayerPos(playerid, tx, ty, tz); // Pythagoras Pyt=floatsqroot(floatadd(floatadd(floatpower(floatsub(x,tx),2),floatpower(floatsub(y,ty),2)))); dx=floatsqroot(floatpower(x-tx)); // bez minusa // Kakoi FacingAngle dolizhin bit shtob vnivo nFa=floattan(floatdiv(dx,Pyt), degrees)+SubsetFacingAngle(playerid, x, y, tx, ty); // yesli ani vmestimi i on precelivaytsa if(nFa==a&&IsPlayerAiming(playerid)) { Aimed=true; // ne uveren yesli mogu delat "return" atsuda break; } } return Aimed; } // FacingAngle ne idot po chisavuyu stock Float:SubsetFacingAngle(playerid, Float:x, Float:y, Float:tx, Float:ty) { if(tx>=x&&ty>=y) { return 0.0; }else if(tx>=x&&ty<=y) { return 270.0; }else if(tx<=x&&ty<=y) { return 180.0; }else if(tx<=x&&ty>=y) { return 90.0; } }
https://sampforum.blast.hk/showthread.php?tid=547324
pawn Code:
stock IsPlayerAiming(playerid) { new anim = GetPlayerAnimationIndex(playerid); if (((anim >= 1160) && (anim <= 1163)) || (anim == 1167) || (anim == 1365) || (anim == 1643) || (anim == 1453) || (anim == 220)) return 1; return 0; }
public OnPlayerUpdate(playerid) // You can put under OnPlayerTakeDamage or others to detect players is aiming { if(IsPlayerAiming(playerid)) { //Your some thing do here } return 1; }
EDIT: akazivaytsa ktota uzhe eta probaval i protestiraval
dumayu shto lutshe chem moi cod
https://sampforum.blast.hk/showthread.php?tid=140765
pawn Code:
stock IsPlayerAimed(playerid) { new FLOAT:x,FLOAT:y,FLOAT:z,Float:tx,Float:ty,Float:tz,Float:Pyt,Float:Fa,Float:dx,Float:dy,Float:nFa,Aimed=false; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); for(new j=0;j<MAX_PLAYERS;j++) { GetPlayerPos(playerid, tx, ty, tz); if(GetPointAngleToPoint(x, y, tx, ty) == a&&IsPlayerAiming(playerid)) { Aimed=true; break; } } return Aimed; } stock Float:GetPointAngleToPoint(Float:x2, Float:y2, Float:X, Float:Y) {
new Float:DX, Float:DY; new Float:angle;
DX = floatabs(floatsub(x2,X)); DY = floatabs(floatsub(y2,Y));
if (DY == 0.0 || DX == 0.0) { if(DY == 0 && DX > 0) angle = 0.0; else if(DY == 0 && DX < 0) angle = 180.0; else if(DY > 0 && DX == 0) angle = 90.0; else if(DY < 0 && DX == 0) angle = 270.0; else if(DY == 0 && DX == 0) angle = 0.0; } else { angle = atan(DX/DY);
if(X > x2 && Y <= y2) angle += 90.0; else if(X <= x2 && Y < y2) angle = floatsub(90.0, angle); else if(X < x2 && Y >= y2) angle -= 90.0; else if(X >= x2 && Y > y2) angle = floatsub(270.0, angle); }
return floatadd(angle, 90.0); }
SetPlayerOxygen
Vi imeyte vidu ``Stamina``
Yesli tak
https://sampforum.blast.hk/showthread.php?tid=302201
|
Все конечно прекрасно, но согласись, что было бы намного лучше это со стороны клиента.
Re: Чего не хватает в SA:MP -
Kaperstone - 06.10.2017
Quote:
Originally Posted by m1n1vv
Все конечно прекрасно, но согласись, что было бы намного лучше это со стороны клиента.
|
была бы хорошо, ну шансы на это очень незки
https://www.youtube.com/watch?v=N55sNUv0grw
Re: Чего не хватает в SA:MP -
RickTaylor - 07.10.2017
Античит бы мощный запилить и встроить в самп-фикс мыши по вертикали.
Re: Чего не хватает в SA:MP -
Eims - 07.10.2017
Quote:
Originally Posted by RickTaylor
Античит бы мощный запилить
|
Мощным античитом не может похвастаться даже Rockstar в своей GTA 5, а ты хочешь этого от пиратского мультиплеера, который раз в сто лет обновляется.
Re: Чего не хватает в SA:MP -
][Noname][ - 08.10.2017
его через 2дн ломанут