В теме 22 сообщения

Данная система подойдет как для Дрифт так и РП модов. Так как возгорание машины для РП модов как-то не очень :(

В конец мода:

forward autochinilka();
public autochinilka()
{
        for(new playerid=0; playerid<MAX_PLAYERS; playerid++)
        {
            if (!IsPlayerInAnyVehicle(playerid) || GetPlayerState(playerid) != PLAYER_STATE_DRIVER) continue;
            new Float:HPMASHINI;
            GetVehicleHealth(GetPlayerVehicleID(playerid), HPMASHINI);
            if (HPMASHINI < 300) SetVehicleHealth(GetPlayerVehicleID(playerid), 350);
        }
        return 1;
}

В паблик OnVehicleDamageStatusUpdate:

autochinilka();

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня нету OnVehicleDamageStatusUpdate:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я правильно понимаю, что данная штука не даёт машине возгораться, но и двигаться? 

Типо просто дым, а чтобы машина ехала её следует починить уже другой кмд?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 02.09.2017 в 19:54, DEST сказал:

Данная система подойдет как для Дрифт так и РП модов. Так как возгорание машины для РП модов как-то не очень :(

В конец мода:


forward autochinilka();
public autochinilka()
{
        for(new playerid=0; playerid<MAX_PLAYERS; playerid++)
        {
            if (!IsPlayerInAnyVehicle(playerid) || GetPlayerState(playerid) != PLAYER_STATE_DRIVER) continue;
            new Float:HPMASHINI;
            GetVehicleHealth(GetPlayerVehicleID(playerid), HPMASHINI);
            if (HPMASHINI < 300) SetVehicleHealth(GetPlayerVehicleID(playerid), 350);
        }
        return 1;
}

В паблик OnVehicleDamageStatusUpdate:


autochinilka();

 

Не фурычит,всё как надо стоит,скомпилировалось без проблем - но на сервере не пашет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Lelouch посмотрите в моде, есть ли античит на ХП машины, возможно он меняет его обратно, поищите по 

В 02.09.2017 в 19:54, DEST сказал:

SetVehicleHealth

в моде

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
26 минут назад, DEST сказал:

@Lelouch посмотрите в моде, есть ли античит на ХП машины, возможно он меняет его обратно, поищите по 

в моде

Есть такое:

		if(IsPlayerInAnyVehicle(i))
		{
		    GetVehicleHealth(GetPlayerVehicleID(i), hp);
		    if(VEHICLE[GetPlayerVehicleID(i)][vHealth] < hp) {
			    if(GetPVarInt(i,"playerUsePaynSpray") == 0) SetVehicleHealth(GetPlayerVehicleID(i),VEHICLE[GetPlayerVehicleID(i)][vHealth]);
				if(GetPVarInt(i,"playerUsePaynSpray") != 0 && GetPlayerState(i) == PLAYER_STATE_DRIVER) {
				    setVehicleHealth(GetPlayerVehicleID(i),1000.0);
				    SetPVarInt(i,"playerUsePaynSpray",0);
				}
			}
			else VEHICLE[GetPlayerVehicleID(i)][vHealth] = hp;
			if(hp < 100)
			{
				zavodis[i] = 0;
				GetVehicleParamsEx(GetPlayerVehicleID(i),engine,lights,alarm,doors,bonnet,boot,objective);
				SetVehicleParamsEx(GetPlayerVehicleID(i),0,0,alarm,doors,bonnet,boot,objective);
			}
		}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Lelouch тогда после вызова SetVehicleHealth нужно еще менять и внутреннюю переменную ХП машины 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, DEST сказал:

@Lelouch тогда после вызова SetVehicleHealth нужно еще менять и внутреннюю переменную ХП машины 

К примеру как? Можешь переделать код ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
if (HPMASHINI < 300) SetVehicleHealth(GetPlayerVehicleID(playerid), 350);

заменить на 

 

if (HPMASHINI < 300) 
{
    SetVehicleHealth(GetPlayerVehicleID(playerid), 350);  
    VEHICLE[GetPlayerVehicleID(i)][vHealth] = 350;

}

А вообще, лучше это объединить в функцию, и в дальнейшем, в любых частях мода, где нужно менять ХП транспорту использовать ее, чтобы не нарваться на проблемы с античитом снова: 

 

Спойлер

stock SetVehicleHeatlhAndStore(vehicleid, Float: health) // над названием можно еще подумать :)
{
  if (vehicleid > MAX_VEHICLES || vehicleid < 0) // валидируем аргументы перед доступом к массиву, т.к. в случае невалидного индекса произойдет краш
  {
    printf("Неверный аргумент для SetVehicleHealthAndStore: vehicleid (=%d)", vehicleid);
    return 1;
  }

  SetVehicleHealth(vehicleid, health);  
  VEHICLE[vehicleid][vHealth] = health;
  return 0;
}

 

И тогда вместо самого первого указанного кода, можно будет просто вызвать: 

if (HPMASHINI < 300SetVehicleHealthAndStore(GetPlayerVehicleID(playerid), 350);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
22 минуты назад, DEST сказал:

if (HPMASHINI < 300) SetVehicleHealth(GetPlayerVehicleID(playerid), 350);

заменить на 

 


if (HPMASHINI < 300) 
{
    SetVehicleHealth(GetPlayerVehicleID(playerid), 350);  

    VEHICLE[GetPlayerVehicleID(i)][vHealth] = 350;

}

А вообще, лучше это объединить в функцию, и в дальнейшем, в любых частях мода, где нужно менять ХП транспорту использовать ее, чтобы не нарваться на проблемы с античитом снова: 

 

  закрыть спойлер


stock SetVehicleHeatlhAndStore(vehicleid, Float: health) // над названием можно еще подумать :)
{
  if (vehicleid > MAX_VEHICLES || vehicleid < 0) // валидируем аргументы перед доступом к массиву, т.к. в случае невалидного индекса произойдет краш
  {
    printf("Неверный аргумент для SetVehicleHealthAndStore: vehicleid (=%d)", vehicleid);
    return 1;
  }

  SetVehicleHealth(vehicleid, health);  
  VEHICLE[vehicleid][vHealth] = health;
  return 0;
}

 

И тогда вместо самого первого указанного кода, можно будет просто вызвать: 

if (HPMASHINI < 300SetVehicleHealthAndStore(GetPlayerVehicleID(playerid), 350);

Чёт я не понял ничего почти,Можешь по понятней чуток сделать что бы не загаралась тачка,что бы уровень её HP не падал меньше ну 300,тип что бы при ХП 300 она проста заглушилась без возможности завестись.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
47 минут назад, Lelouch сказал:

Чёт я не понял ничего почти,Можешь по понятней чуток сделать что бы не загаралась тачка,что бы уровень её HP не падал меньше ну 300,тип что бы при ХП 300 она проста заглушилась без возможности завестись.

Покажите enum (VEHICLE).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В Плане ? У меня нету enum Vehicle

3 минуты назад, LoX_1337 сказал:

Покажите enum (VEHICLE).

 

Я чёт там сам подшаманил,и терь если хп ниже 300 то он ставит 300 хп + глушит авто, НО,что-то пытается и чинит его на 1000 потом обратно сбрасывает на 300 и опять касарь и опять трактористы,хз че делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Lelouch Суть системы в том, что когда срабатывает коллбэк OnVehicleDamageStatusUpdate вызывается функция autochinilka(), в которой у каждого игрока проверяется ХП машины (если он в машине) и если оно меньше 300 (именно с этого уровня начинается возгорание ТС), то система назад ставит на 300 и оно будет просто дымить.

В принципе, из того что я описал, становится понятно что система реализована не совсем корректно. Если в коллбэк OnVehicleDamageStatusUpdate итак приходит vehicleid, то незачем проверять ХП машины у всех игроков. С учетом этого, можно немного переделать и упростить систему. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16 часов назад, DEST сказал:

@Lelouch Суть системы в том, что когда срабатывает коллбэк OnVehicleDamageStatusUpdate вызывается функция autochinilka(), в которой у каждого игрока проверяется ХП машины (если он в машине) и если оно меньше 300 (именно с этого уровня начинается возгорание ТС), то система назад ставит на 300 и оно будет просто дымить.

В принципе, из того что я описал, становится понятно что система реализована не совсем корректно. Если в коллбэк OnVehicleDamageStatusUpdate итак приходит vehicleid, то незачем проверять ХП машины у всех игроков. С учетом этого, можно немного переделать и упростить систему. 

Ваще не шарю если честно. Спасибо за помощь. Надо найти человека по опытнее что согласится бесплатно исправить эту проблему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Lelouch, а почему бы не попробовать разобраться бесплатно вместе со участниками портала? Правда желательно создать новую тему, дабы не забивать уже текущую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
18 минут назад, Снеговик сказал:

@Lelouch, а почему бы не попробовать разобраться бесплатно вместе со участниками портала? Правда желательно создать новую тему, дабы не забивать уже текущую.

Ну не знаю,я могу чёт накосачить или ещё что,если честно я не давно скажем так опять начал скриптить,после перерыва в год с чем-то,сижу скажем так реабилитируюсь по не многу.
Насчёт темы - окей. Создам новую с просьбой о помощи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
autochinilka();

вставляю и просто прекращается работа павно комплитер...

Может нужны какие-то скобки по типу "}" перед ним?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Admin666, покажите всю функцию, в которую вы добавили эту строку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребят какой это язык?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • gooding
      От gooding


      Скачать файл PAR RP | Доработанный мод Cruela RP | Без багов
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
      Основа данного мода: Cruela RP
       
       

      Добавил gooding Добавлено 20.11.2024 Категория Моды Автор GOODING (Я)  
    • gooding
      От gooding
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
      Основа данного мода: Cruela RP
       
       

    • Max Luilchack
      От Max Luilchack
      Нужен человек который сможет сделать примерную карту Украины для сервера crmp mobile. Если есть желающие пишите в дс: lamarlml
    • Yashich
      От Yashich
      Возникла проблема, не работает команда /giverank Что здесь может работать не так? Заранее спасибо за ответ)
      Вот строки кода связанные с этой командой (мод Аризона)
       
      CMD:giverank(playerid, params[]) {     if(PI[playerid][pMember]<=0)return 0;     if(PI[playerid][pRank] < 9 && PI[playerid][pLeader] == 0) return SCM(playerid, COLOR_RED, !"Отказано в доступе!");     if(sscanf(params,"ud",params[0],params[1])) return SCM(playerid, COLOR_RED, !"Используйте: /giverank [id] [rank]");     if(!ProxDetectorS(8.0, playerid, params[0])) return SCM(playerid, COLOR_GREY, !"Вы должны находиться рядом с игроком!");     if(PI[params[0]][pLeader] > 0 ) return SCM(playerid, COLOR_RED, !"Вы не можете изменять ранг лидеру");     if(params[1] < 1) return SCM(playerid, COLOR_GREY, !"Нельзя повысить до этого ранга");     if(Clother[params[0]]!=-1)return 0;     if(GetPlayerVirtualWorld(playerid)!=GetPlayerVirtualWorld(params[0]))return 0;     if(!IsPlayerConnected(params[0])) return SCM(playerid, COLOR_GREY, !"Игрок не найден");     if(PI[playerid][pRank] <= PI[params[0]][pRank]) return SCM(playerid, COLOR_GREY, !"Вы не можете повысить/понизить этого игрока");     if(PI[playerid][pRank] == 9 && params[1] > 8) return SCM(playerid, COLOR_RED, !"Нельзя выдать ранг больше 8");     if(params[1] > 9) return SCM(playerid, COLOR_GREY, !"Нельзя повысить до этого ранга");     if(PI[params[0]][pMember] != PI[playerid][pMember]) return SCM(playerid, COLOR_GREY, !"Игрок находиться в другой организации!");     str_1[0] = EOS;     f(str_1,100,"Лидер %s %s до %i ранга",PN(playerid),PI[params[0]][pRank] > params[1] ? ("понизил"):("повысил"),params[1]);     SCM(params[0],COLOR_LIGHTBLUE,str_1);     f(str_1,100,"Вы %sи игрока %s до %i ранга",PI[params[0]][pRank] > params[1] ? ("понизил"):("повысил"),PN(params[0]),params[1]);     SCM(playerid,COLOR_LIGHTBLUE,str_1);     PI[params[0]][pRank] = params[1];     UpdatePlayerDataInt(params[0], "Rank", params[1]);     if(PI[params[0]][pSex] == 2) if(TeamDuty{params[0]}) SetPlayerSkinEx(params[0],GOrgSkins[GetTeamID(params[0])][params[1]]), TogglePlayerControllable(params[0],true);     else if(TeamDuty{params[0]}) SetPlayerSkinEx(params[0],MOrgSkins[GetTeamID(params[0])][params[1]]), TogglePlayerControllable(params[0],true);     return 1; }