Перейти к содержанию
Авторизация  
Denis_Filimonov

/rescar без ремонта т/с

Рекомендуемые сообщения

Denis_Filimonov

Доброго времени суток! Недавно поймал себя на мысли, что команда /rescar, выполняемая раз в 60 минут, респавнит все т/с с VehicleHeal = 100%, независимо от их состояния до респавна. Хочу сделать так, чтобы при респавне авто уровень повреждений сохранялся на одном и том же значении у т/с, дабы был востребованным ремонт на СТО и продажа битых автомобилей. Примерно представляю, как это будет выглядеть в коде, но не представляю, где всё это должно находиться. Буду благодарен за любую помощь!

if(strcmp(cmd, "/rescar", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(PlayerInfo[playerid][pAdmin] < 7)
            {
                SendClientMessage(playerid, COLOR_GRAD1, "Чтобы ты ********, скотина");
                return 1;
            }
            for(new c=0; c<MAX_VEHICLES; c++)
            {
                if(!IsVehicleOccupied(c))
                {
                    SetVehicleToRespawn(c);
                }
            }
            GetPlayerName(playerid,sendername,sizeof(sendername));
            format(string,sizeof(string),"* [%s]: {FFFFFF}Зареспавнил незанятый игроками транспорт",sendername);
            SendClientMessageToAll(COLOR_LIGHTBLUE,string);
        }
        return 1;
    }
public OnVehicleSpawn(vehicleid)
{
DestroyObject(Blink[vehicleid][0]);
DestroyObject(Blink[vehicleid][1]);
VehInfo[vehicleid][vRightBlink] = 0;
DestroyObject(Blink[vehicleid][2]);
DestroyObject(Blink[vehicleid][3]);
VehInfo[vehicleid][vLeftBlink] = 0;
DestroyVehicle(CarInfo[GetRealID(vehicleid)][cID]);//Удаляем авто
if(!strcmp(CarInfo[GetRealID(vehicleid)][cOwner],"Nones",false))
{
CarInfo[GetRealID(vehicleid)][cID] = CreateVehicle(CarInfo[GetRealID(vehicleid)][cMod],CarInfo[GetRealID(vehicleid)][cAx],CarInfo[GetRealID(vehicleid)][cAy],CarInfo[GetRealID(vehicleid)][cAz],CarInfo[GetRealID(vehicleid)][cAa],CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2],60000*4);
}
else
{
CarInfo[GetRealID(vehicleid)][cID] = CreateVehicle(CarInfo[GetRealID(vehicleid)][cMod],CarInfo[GetRealID(vehicleid)][cPx],CarInfo[GetRealID(vehicleid)][cPy],CarInfo[GetRealID(vehicleid)][cPz],CarInfo[GetRealID(vehicleid)][cPa],CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2],60000*4);
}
ChangeVehicleColor(vehicleid,CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2]);
SetTuneCar(vehicleid);
ChangeVehiclePaintjob(vehicleid,CarInfo[GetRealID(vehicleid)][cPaintJob]);
SetTuneCar(vehicleid);
return 1;
}
//==============================================================================
SetPosInFrontOfPlayer(playerid,giveplayerid,Float:distance)
{
    new Float:x,Float:y,Float:z,Float:a;
    GetPlayerPos(playerid, x, y,z);GetPlayerFacingAngle(playerid, a);
    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));
    SetPlayerPos(giveplayerid,x,y,z);SetPlayerFacingAngle(giveplayerid,a);
}
Изменено пользователем Denis_Filimonov
заключено в код.

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


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

UP!!! Help me please :-)

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


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

Как вариант, сохраняй состояние авто в переменную, а при спавне загружай ее.

 

 

Сохранение

new Float: carhp;
GetVehicleHealth(car, carhp);
CarInfo[car][cheal] = carhp;

Загрузка\спавн

SetVehicleHealth(car, CarInfo[car][cheal]);
Изменено пользователем Ryslik42
  • Like 1

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


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

 

Как вариант, сохраняй состояние авто в переменную, а при спавне загружай ее.

 

 

Сохранение

new Float: carhp;
GetVehicleHealth(car, carhp);
CarInfo[car][cheal] = carhp;

Загрузка\спавн

SetVehicleHealth(car, CarInfo[car][cheal]);

Неплохой вариант, попробую применить. Спасибо!

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


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

Тему не закрываю на случай дальнейших проблем...

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


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

А вот и первый трабл. Паблик:

public OnVehicleSpawn(vehicleid)
{
DestroyObject(Blink[vehicleid][0]);
DestroyObject(Blink[vehicleid][1]);
VehInfo[vehicleid][vRightBlink] = 0;
DestroyObject(Blink[vehicleid][2]);
DestroyObject(Blink[vehicleid][3]);
VehInfo[vehicleid][vLeftBlink] = 0;
DestroyVehicle(CarInfo[GetRealID(vehicleid)][cID]);//Удаляем авто
if(!strcmp(CarInfo[GetRealID(vehicleid)][cOwner],"Nones",false))
{
CarInfo[GetRealID(vehicleid)][cID] = CreateVehicle(CarInfo[GetRealID(vehicleid)][cMod],CarInfo[GetRealID(vehicleid)][cAx],CarInfo[GetRealID(vehicleid)][cAy],CarInfo[GetRealID(vehicleid)][cAz],CarInfo[GetRealID(vehicleid)][cAa],CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2],60000*4);
}
else
{
CarInfo[GetRealID(vehicleid)][cID] = CreateVehicle(CarInfo[GetRealID(vehicleid)][cMod],CarInfo[GetRealID(vehicleid)][cPx],CarInfo[GetRealID(vehicleid)][cPy],CarInfo[GetRealID(vehicleid)][cPz],CarInfo[GetRealID(vehicleid)][cPa],CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2],60000*4);
}
ChangeVehicleColor(vehicleid,CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2]);
SetTuneCar(vehicleid);
ChangeVehiclePaintjob(vehicleid,CarInfo[GetRealID(vehicleid)][cPaintJob]);
SetTuneCar(vehicleid);
SetVehicleHealth(car, CarInfo[car][cheal]);//новый эл-т кода
return 1;
}

Ко всем new (может не туда вставил? О_о)

new Float: carhp;
GetVehicleHealth(car, carhp);
CarInfo[car][cheal] = carhp;

Ошибки:

E:\components\Сервера\Gamer Rebuild\gamemodes\Gamer24.pwn(56462) : error 017: undefined symbol "car"
E:\components\Сервера\Gamer Rebuild\gamemodes\Gamer24.pwn(57742) : warning 203: symbol is never used: "carhp"
Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.

Все символы указаны, повторяющихся нет

Изменено пользователем Denis_Filimonov

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


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

new car = GetPlayerVehicleID(playerid);
  • Like 1

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


Ссылка на сообщение
Поделиться на другие сайты
Denis_Filimonov
new car = GetPlayerVehicleID(playerid);

Может я вообще глубокий нуб, но: вставляю к new - Pawno закрывается, вставляю в паблик - ещё больше ошибок:

E:\components\Сервера\Gamer Rebuild\gamemodes\Gamer24.pwn(56455) : error 003: declaration of a local variable must appear in a compound block
E:\components\Сервера\Gamer Rebuild\gamemodes\Gamer24.pwn(56455) : error 017: undefined symbol "car"
E:\components\Сервера\Gamer Rebuild\gamemodes\Gamer24.pwn(56455) : error 017: undefined symbol "playerid"
E:\components\Сервера\Gamer Rebuild\gamemodes\Gamer24.pwn(56455) : fatal error 107: too many error messages on one line

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


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

нужно вставлять в код где сохраняешь, в твоем случае в паблик 

OnVehicleSpawn
  • Like 1

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


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

 

нужно вставлять в код где сохраняешь, в твоем случае в паблик 

OnVehicleSpawn

Всё больше убеждаюсь, что я профессиональный нуб:

E:\components\Сервера\Gamer Rebuild\gamemodes\Gamer24.pwn(56629) : error 017: undefined symbol "playerid"
E:\components\Сервера\Gamer Rebuild\gamemodes\Gamer24.pwn(56649) : error 017: undefined symbol "cheal"
E:\components\Сервера\Gamer Rebuild\gamemodes\Gamer24.pwn(57929) : warning 203: symbol is never used: "carhp"
Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase

Все new:

//Сохранение состояния т/с
new Float: carhp;
GetVehicleHealth(car, carhp);//новый эл-т кода
CarInfo[car][cheal] = carhp;//новый эл-т кода

Паблик:

public OnVehicleSpawn(vehicleid)
{
new car = GetPlayerVehicleID(playerid);//новый эл-т кода
DestroyObject(Blink[vehicleid][0]);
DestroyObject(Blink[vehicleid][1]);
VehInfo[vehicleid][vRightBlink] = 0;
DestroyObject(Blink[vehicleid][2]);
DestroyObject(Blink[vehicleid][3]);
VehInfo[vehicleid][vLeftBlink] = 0;
DestroyVehicle(CarInfo[GetRealID(vehicleid)][cID]);//Удаляем авто
if(!strcmp(CarInfo[GetRealID(vehicleid)][cOwner],"Nones",false))
{
CarInfo[GetRealID(vehicleid)][cID] = CreateVehicle(CarInfo[GetRealID(vehicleid)][cMod],CarInfo[GetRealID(vehicleid)][cAx],CarInfo[GetRealID(vehicleid)][cAy],CarInfo[GetRealID(vehicleid)][cAz],CarInfo[GetRealID(vehicleid)][cAa],CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2],60000*4);
}
else
{
CarInfo[GetRealID(vehicleid)][cID] = CreateVehicle(CarInfo[GetRealID(vehicleid)][cMod],CarInfo[GetRealID(vehicleid)][cPx],CarInfo[GetRealID(vehicleid)][cPy],CarInfo[GetRealID(vehicleid)][cPz],CarInfo[GetRealID(vehicleid)][cPa],CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2],60000*4);
}
ChangeVehicleColor(vehicleid,CarInfo[GetRealID(vehicleid)][cCol1],CarInfo[GetRealID(vehicleid)][cCol2]);
SetTuneCar(vehicleid);
ChangeVehiclePaintjob(vehicleid,CarInfo[GetRealID(vehicleid)][cPaintJob]);
SetTuneCar(vehicleid);
SetVehicleHealth(car, CarInfo[car][cheal]);//новый эл-т кода
return 1;
}
Изменено пользователем Denis_Filimonov

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


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

Вы так и не поняли, что я написал...

Лучше наймите скриптера который будет вам все делать.

  • Like 1

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


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

Вы так и не поняли, что я написал...

Лучше наймите скриптера который будет вам все делать.

Эхх... Наверное, это лучший вариант... Спасибо за помощь!

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


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

Модераторы, пожалуйста, закройте тему...

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

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

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

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.