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

Как дополнить работу лесопилки обработкой дерева. ( Gamenix RP )

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

mikilov

Приветствую всех!

Я задался вопросом, как можно сделать что после рубки дерева, чтобы была еще обработка на станке.
То есть, игрок подходит рубит дерево, затем ему выдается объект рубленного дерева и он идет на станок, там, он обрабатывает их и получает дрова, затем несет на склад.

Игровой мод в котором хочу сделать такую систему - Gamenix RP.

[spoiler=public OnPlayerEnterCheckpoint(playerid)]

if(GetPVarInt(playerid, "WoodWork") == 2 && PlayerToPoint(5, playerid, RandomWood[5][0], RandomWood[5][1], RandomWood[5][2]))
{
if(IsPlayerInAnyVehicle(playerid)) return true;
DisablePlayerCheckpoint(playerid);
RemovePlayerAttachedObject(playerid,0);
RemovePlayerAttachedObject(playerid,1);
RemovePlayerAttachedObject(playerid,2);
SetPlayerAttachedObject(playerid,0,341,6);
ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 1, 0);
new drova = 8+random(21);
AllPlayerDrova[playerid] += drova;
SendMes(playerid, COLOR_WHITE, "Вы принесли {F4A460}%i{ffffff} дров. Всего принесено дров: {CD5C5C}%i{ffffff} шт.", drova, AllPlayerDrova[playerid]);
drova = 0;
SetPVarInt(playerid, "WoodWork", 1);
new workjob = random(4);
SetPlayerCheckpoint(playerid, RandomWood[workjob][0], RandomWood[workjob][1], RandomWood[workjob][2],1.0);
return true;
}
if(GetPVarInt(playerid, "WoodWork") == 1)
{
if(IsPlayerInAnyVehicle(playerid)) return true;
DisablePlayerCheckpoint(playerid);
SetPlayerAttachedObject(playerid,0,341,6);
ApplyAnimation(playerid,"CHAINSAW","WEAPON_csaw",1.0,1,0,0,0,6200,0);
SetTimerEx("WoodLoaded",6000,false,"i",playerid);
return true;
}

 

 

[spoiler=case D_GUNJOB]

case D_GUNJOB+2:
{
if(!response) return 1;
if(GetPVarInt(playerid, "WoodWork") == 0)
{
SetPVarInt(playerid, "SkinWood",GetPlayerSkin(playerid));
SetPVarInt(playerid, "WoodWork", 1);
if(PlayerInfo[playerid][pSex] == 1) SetPlayerSkin(playerid,16);
else SetPlayerSkin(playerid, 201);
SendClientMessage(playerid,COLOR_WHITE,"Поздравляем. Теперь идите на {0bda51}чекпоинт{FFFFFF}, чтобы срубить дерево.");
new workjob = random(4);
SetPlayerCheckpoint(playerid, RandomWood[workjob][0], RandomWood[workjob][1], RandomWood[workjob][2], 1.0);
SetPlayerAttachedObject(playerid, 0, 341, 6);
}
else
{
DeletePVar(playerid, "WoodWork");
SetPlayerSkin(playerid, GetPVarInt(playerid, "SkinWood"));
GiveMoney(playerid, AllPlayerDrova[playerid]*14);
format(string, sizeof(string), "Вы закончили работу. Ваш заработок: {00FF00}%d руб.", AllPlayerDrova[playerid]*7);
SendClientMessage(playerid, -1, string);
format(string, sizeof(string), "~b~+%d", AllPlayerDrova[playerid]*7);
GameTextForPlayer(playerid, string, 3000, 1);
if(IsPlayerAttachedObjectSlotUsed(playerid,0)) RemovePlayerAttachedObject(playerid,0);
if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
if(IsPlayerAttachedObjectSlotUsed(playerid,2)) RemovePlayerAttachedObject(playerid,2);
DisablePlayerCheckpoint(playerid);
AllPlayerDrova[playerid] = 0;
SetPlayerSpecialAction(playerid, 0);
DeletePVar(playerid, "WoodSkin");
return true;
}
}

 


[spoiler=public WoodLoaded(playerid)]

public WoodLoaded(playerid)
{
ApplyAnimation(playerid,"CARRY","crry_prtial",4.1,0,1,1,1,1);
RemovePlayerAttachedObject(playerid,0);
SetPlayerAttachedObject(playerid, 0, 1463, 1, 0.184699, 0.426247, 0.000000, 259.531341, 80.949592, 0.000000, 0.476124, 0.468181, 0.470769); // дрова в руках
SetPlayerCheckpoint(playerid,RandomWood[5][0],RandomWood[5][1],RandomWood[5][2],1.0);
SetPVarInt(playerid, "WoodWork", 2);
}

 



Буду очень благодарен, кто поможет решить эту проблему. С меня - спасибо!

Изменено пользователем juelz
Чуть подправил красоты в спойлер <3

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


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

"Буду очень благодарен, кто поможет решить эту проблему. С меня - спасибо!"

 

Спасибо, посмеялся.

За бесплатно никто не будет дописывать ничего.

А так, стучи в ЛС, за оплату всё сделаю.

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


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

 

 

Буду очень благодарен, кто поможет решить эту проблему. С меня - спасибо!

За "Спасибо" можно только сказать "Писать систему надо". А так пиши в личные сообщения форума или же в Вконтакте.

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


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

Мод не качал, время сильно не тратил, так что извините, если что-то не так.

 

Для того, чтобы это сделать, для начала нужно: 

  • Создать объекты для обработки на станке;
  • Координаты куда игрок будет сдавать дерево и где получать дрова;
  • Сделать какую-то систему работы станка, чтобы он обрабатывал этого дерево по очереди (если конечно это нужно);
  • Найти идентификаторы объектов и координаты куда крепить объект.

После чего нужно разобрать код работы и придумать изменения:

GetPVarInt(playerid, "WoodWork")

Как понимаю, это отвечает за статус работы, можно его продлить и усложнять свою работу до бесконечности. Продлеваем просто с помощью нового значения между рубкой дерева и его сдачей. В итоге получится для "WoodWork":

  1. Игрок рубит дерево;
  2. Игрок сдает дерево на обработку;
  3. Игрок получается дерева с обработки;
  4. Игрок сдает переработанное дерево.

Теперь можно приступить к написанию/изменению кода:

if(GetPVarInt(playerid, "WoodWork") == 2 && PlayerToPoint(5, playerid, RandomWood[5][0], RandomWood[5][1], RandomWood[5][2]))

За сдачу переработанного дерева взяли значение "4", поэтому изменяем на:

if(GetPVarInt(playerid, "WoodWork") == 4 && PlayerToPoint(5, playerid, RandomWood[5][0], RandomWood[5][1], RandomWood[5][2]))

Далее нужно изменить удаления объектов на игрке:

RemovePlayerAttachedObject(playerid,0);
RemovePlayerAttachedObject(playerid,1);
RemovePlayerAttachedObject(playerid,2); 

на свои:

SetPlayerAttachedObject(/* свои параметры */); 

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

public WoodLoaded(playerid)

Здесь нужно изменить:

RandomWood[5][0],RandomWood[5][1],RandomWood[5][2]

на свои координаты сдачи дерева на обработку, которые уже должны быть заготовлены.

 

Теперь нужно добавить обработку двух новых событий:

  1. Игрок сдает дерево на обработку;
  2. Игрок получается дерева с обработки.

Значит добавляем новые условия при входе на чекпоинт, за это у нас отвечает:

public OnPlayerEnterCheckpoint(playerid)

Добавляем наши скрипты на сдачу дерева и получения дров:

if(GetPVarInt(playerid, "WoodWork") == 2 && PlayerToPoint(5, playerid, /* координаты сдачи дерева */)) {
    /* Код для сдачи дерева на обработку... */
}
if(GetPVarInt(playerid, "WoodWork") == 3 && PlayerToPoint(5, playerid, /* координаты получения дров */)) {
    /* Код для получения дров... */
}
 

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

 

  • Like 3

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


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

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

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

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

    • Eduard Vestornович
      От Eduard Vestornович
      Где сохраняются ники  мп 0.3е?
    • MakiCortes
      От MakiCortes
      Что нужно сделать чтоб на ДМ серве был всегда день?
    • Mail
      От Mail
      if(strcmp("/job", cmdtext, true, 10) == 0)
      {
      new carid = GetPlayerVehicleID(playerid);
      if(GetVehicleModel(carid) == 448 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
      {
      SendClientMessage(playerid, COLOR_LIGHTBLUE, "Доставьте пиццу по указанным точкам!");
      SetPlayerCheckpoint(playerid, PizzaCheckpoint[1][0], PizzaCheckpoint[1][1], PizzaCheckpoint[1][2], 2.0);
      SetPVarInt(playerid, "GetPlayerSkin", GetPlayerSkin(playerid));
      SetPlayerSkin(playerid, 155);
      SetPVarInt(playerid, "PizzaTime", gettime() + PizzaTime);
      SetPVarInt(playerid, "PizzaCheck", 1);
      return 1;
      }
      return 1;
      }
    • krabik-1337@mail.ru
      От krabik-1337@mail.ru
      Всем привет. Кто знает зачем нужен инклуд jit ? у меня он стоит в //  нужен ли он?
    • Morion
      От Morion
      Доброго времени суток.
      Появился вопрос.
      Как я знаю в SAMP можно изменить хандлинг (настройки) автомобиля.
      Возможно ли изменить хандлинг в CRMP? Если да, то как?
      На некоторых серверах вроде-бы я видел, изменения в управляемости автомобиля.
      Заранее спасибо за помощь.
×

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

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