Форум

Страница 1 из 11
Форум | www.SAMP-TEAM.com » Wiki SA-MP » Уроки скриптинга в Pawno » Обновленная работа Дальнобойшика
Обновленная работа Дальнобойшика
Давайте сразу начнем
ко всем new добавим
Код
new CP[MAX_PLAYERS];

далие у кого не pLevel
в enum pInfo дабавим
Код
pLevel,

в регистрацию вставим
Код

ini_setInteger(iniFile, "pLevel", 0);

в авторигистрацию
Код

ini_getInteger(iniFile, "pLevel", PlayerInfo[playerid][pLevel]);

в сохронения акаунтов
Код

ini_setInteger(iniFile, "pLevel", PlayerInfo[playerid][pLevel]);

все приступем к созданию команды
в public OnPlayerCommandText(playerid, cmdtext[])
Код

if(strcmp(cmd, "/work", true) == 0)
   {
   if(IsPlayerConnected(playerid))
   {
   if(PlayerInfo[playerid][pJob] != 0) return SendClientMessage(playerid, COLOR_GREY, "{FF0000}[Недоступно]{ffffff} Вы не дальнобойщик.");
   {
   if(CP[playerid]) return SendClientMessage(playerid, COLOR_GREY, "{FF0000}[Недоступно]{ffffff} Вы уже взяли задание.");
   new tmpcar;
   tmpcar = GetPlayerVehicleID(playerid);
   if(IsATruckerCar(tmpcar))
   {
   if (GetVehicleTrailer(tmpcar))
   {
   if(!PlayerToPoint(100,playerid,276.7208, 1988.6398, 16.8692)) return SendClientMessage(playerid, COLOR_GREY, "Вы не набазе!!");//Тут у нас координаты,на которых будет действовать данная команда.
   ShowPlayerDialog(playerid,102,DIALOG_STYLE_LIST,"Выбор груза","{ffffff}Песок 10500$\n{FF0000}Оружие 50000$\n{0xFFFF00AA}Метал 31000$\n{0xAAAAAAAA}Боеприпасы 24900$\n","Выбрать","Отмена");
   }
   else
   {
   SendClientMessage(playerid, COLOR_GREY, " У вас нету прицепа!");
   return 1;
   }
   }
   else
   {
   SendClientMessage(playerid, COLOR_GREY, " Вы не в грузовике !");
   return 1;
   }
   }
   }
   return 1;
   }

в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Код

if(dialogid == 102)
{
if(response)
{
if(listitem == 0)
{
   moneydb[playerid] = 0;
   SetPlayerCheckpoint(playerid, 276.7208, 1988.6398, 16.8692, 8.0);//координат
   SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Следуйте к красому маячку на радаре для загрузки машины!");
   CP[playerid] = 1;
}
else if(listitem == 1)
{
   moneydb[playerid] = 0;
   SetPlayerCheckpoint(playerid, 2781.5938,-2494.3748,13.4599, 8.0);
   SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Следуйте к красому маячку на радаре для загрузки машины!");
   CP[playerid] = 3;
}
else if(listitem == 2)
{
   moneydb[playerid] = 0;
   SetPlayerCheckpoint(playerid, 64.7506,-278.8061,1.5781, 8.0);
   SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Следуйте к красому маячку на радаре для загрузки машины!");
   CP[playerid] = 5;
}
else if(listitem == 3)
{
   moneydb[playerid] = 0;
   SetPlayerCheckpoint(playerid, 2523.4004,2814.2786,10.8203, 8.0);
   SendClientMessage(playerid, COLOR_LIGHTBLUE, "*Следуйте к красому маячку на радаре для загрузки машины!");
   CP[playerid] = 7;
}
}
}

в public OnPlayerEnterCheckpoint(playerid)
Код

new string[256];
   new tmpcar;
   tmpcar = GetPlayerVehicleID(playerid);
   if(CP[playerid]==1)
   {
   if(IsATruckerCar(tmpcar))
   {
   if (GetVehicleTrailer(tmpcar))
   {
   CP[playerid] = 2;//Переход на новый пикап
   DisablePlayerCheckpoint(playerid);
   SetPlayerCheckpoint(playerid, 324.4989, 856.7709, 19.7881, 8.0);
   TogglePlayerControllable(playerid,0);
   SendClientMessage(playerid, RED,"Подождите какое-то време пока загрузят груз!");
   SetTimerEx("zgruzFurui",25000,false,"i",playerid);
   }
else
{
SendClientMessage(playerid, COLOR_GREY, " У вас нету прицепа!");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Вы не в грузовике !");
return 1;
}
}
   else if(CP[playerid]==2)
   {
   if(IsATruckerCar(tmpcar))
   {
   if (GetVehicleTrailer(tmpcar))
   {
   CP[playerid] = 0;
   TogglePlayerControllable(playerid,0);
   SendClientMessage(playerid, RED,"Подождите какое-то време пока разгрузят фуру!");
   SetTimerEx("RazgruzFurui",25000,false,"i",playerid);
   DisablePlayerCheckpoint(playerid);
   new zarplata = 10500;//отвечает за зарплату
   format(string, sizeof(string), "вам вышла полько зарплота зарплата $%d", zarplata);
   SendClientMessage(playerid, COLOR_GREY,string);
   GivePlayerMoney(playerid, zarplata);
   PlayerInfo[playerid][pLevel]++;
   }
   else
   {
   SendClientMessage(playerid, COLOR_GREY, " У вас нету прицепа!");
   return 1;
   }
   }
   else
   {
   SendClientMessage(playerid, COLOR_GREY, " Вы не в грузовике !");
   return 1;
   }
   }
   else if(CP[playerid]==3)
   {
   if(IsATruckerCar(tmpcar))
   {
   if (GetVehicleTrailer(tmpcar))
   {
   CP[playerid] = 4;//Переход на новый пикап
   DisablePlayerCheckpoint(playerid);
   SetPlayerCheckpoint(playerid, 281.0313,1952.6752,17.6406, 8.0);
   TogglePlayerControllable(playerid,0);
   SendClientMessage(playerid, RED,"Подождите какое-то време пока загрузят груз!");
   SetTimerEx("zgruzFurui",25000,false,"i",playerid);
   }
else
{
SendClientMessage(playerid, COLOR_GREY, " У вас нету прицепа!");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Вы не в грузовике !");
return 1;
}
}
else if(CP[playerid]==4)
{
if(IsATruckerCar(tmpcar))
   {
   if (GetVehicleTrailer(tmpcar))
   {
   CP[playerid] = 0;
   TogglePlayerControllable(playerid,0);
   SendClientMessage(playerid, RED,"Подождите какое-то време пока разгрузят фуру!");
   SetTimerEx("RazgruzFurui",25000,false,"i",playerid);
   DisablePlayerCheckpoint(playerid);
   new zarplata = 50000;
   format(string, sizeof(string), "вам вышла полько зарплота зарплата $%d", zarplata);
   SendClientMessage(playerid, COLOR_GREY,string);
   GivePlayerMoney(playerid, zarplata);
   PlayerInfo[playerid][pLevel]++;
   }
   else
   {
   SendClientMessage(playerid, COLOR_GREY, " У вас нету прицепа!");
   return 1;
   }
   }
   else
   {
   SendClientMessage(playerid, COLOR_GREY, " Вы не в грузовике !");
   return 1;
   }
   }
   else if(CP[playerid]==5)
   {
   if(IsATruckerCar(tmpcar))
   {
   if (GetVehicleTrailer(tmpcar))
   {
   CP[playerid] = 6;//Переход на новый пикап
   DisablePlayerCheckpoint(playerid);
   SetPlayerCheckpoint(playerid, -1053.2174,-640.4914,32.0078, 8.0);
   TogglePlayerControllable(playerid,0);
   SendClientMessage(playerid, RED,"Подождите какое-то време пока загрузят груз!");
   SetTimerEx("zgruzFurui",25000,false,"i",playerid);
   }
else
{
SendClientMessage(playerid, COLOR_GREY, " У вас нету прицепа!");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Вы не в грузовике !");
return 1;
}
}
else if(CP[playerid]==6)
{
if(IsATruckerCar(tmpcar))
   {
   if (GetVehicleTrailer(tmpcar))
   {
   CP[playerid] = 0;
   TogglePlayerControllable(playerid,0);
   SendClientMessage(playerid, RED,"Подождите какое-то време пока разгрузят фуру!");
   SetTimerEx("RazgruzFurui",25000,false,"i",playerid);
   DisablePlayerCheckpoint(playerid);
   new zarplata = 31000;
   format(string, sizeof(string), "вам вышла полько зарплота зарплата $%d", zarplata);
   SendClientMessage(playerid, COLOR_GREY,string);
   GivePlayerMoney(playerid, zarplata);
   PlayerInfo[playerid][pLevel]++;
   }
   else
   {
   SendClientMessage(playerid, COLOR_GREY, " У вас нету прицепа!");
   return 1;
   }
   }
   else
   {
   SendClientMessage(playerid, COLOR_GREY, " Вы не в грузовике !");
   return 1;
   }
   }
    else if(CP[playerid]==7)
   {
   if(IsATruckerCar(tmpcar))
   {
   if (GetVehicleTrailer(tmpcar))
   {
   CP[playerid] = 8;//Переход на новый пикап
   DisablePlayerCheckpoint(playerid);
   SetPlayerCheckpoint(playerid, -1461.8278,431.6042,7.1875, 8.0);
   TogglePlayerControllable(playerid,0);
   SendClientMessage(playerid, RED,"Подождите какое-то време пока загрузят груз!");
   SetTimerEx("zgruzFurui",25000,false,"i",playerid);
   }
else
{
SendClientMessage(playerid, COLOR_GREY, " У вас нету прицепа!");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Вы не в грузовике !");
return 1;
}
}
else if(CP[playerid]==8)
{
if(IsATruckerCar(tmpcar))
   {
   if (GetVehicleTrailer(tmpcar))
   {
   CP[playerid] = 0;
   TogglePlayerControllable(playerid,0);
   SendClientMessage(playerid, RED,"Подождите какое-то време пока разгрузят фуру!");
   SetTimerEx("RazgruzFurui",25000,false,"i",playerid);
   DisablePlayerCheckpoint(playerid);
   new zarplata = 24900;
   format(string, sizeof(string), "вам вышла полько зарплота зарплата $%d", zarplata);
   SendClientMessage(playerid, COLOR_GREY,string);
   GivePlayerMoney(playerid, zarplata);
   PlayerInfo[playerid][pLevel]++;
   }
   else
   {
   SendClientMessage(playerid, COLOR_GREY, " У вас нету прицепа!");
   return 1;
   }
   }
   else
   {
   SendClientMessage(playerid, COLOR_GREY, " Вы не в грузовике !");
   return 1;
   }
   }

и в конец мода ставим
Код
forward IsATruckerCar(carid);
   public IsATruckerCar(carid)
   {
   new model = GetVehicleModel(carid);
   if(model == 514 || model == 515)
   {
   return 1;
   }
   return 0;
   }
forward RazgruzFurui(playerid);
forward zgruzFurui(playerid);
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
public zgruzFurui(playerid)
{
TogglePlayerControllable(playerid,1);
SendClientMessage(playerid, COLOR_LIGHTRED, "* Машина загружена! Получен новый маршрут! Следуйте к маячку на радаре.");
return true;
}

public RazgruzFurui(playerid)
{
TogglePlayerControllable(playerid,1);
SendClientMessage(playerid, RED,"Разгрузка фуры завершена...");
return true;
}

кстати чкть бы не забыл
вот команда для устраивания на роботу
Код
if(strcmp(cmd, "/truck", true) == 0)
          {
              if(IsPlayerConnected(playerid))
              {
              new length = strlen(cmdtext);
                          while ((idx < length) && (cmdtext[idx] <= ' '))
                          {
                     idx++;
                          }
                          new offset = idx;
                          new result[256];
                          while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
                          {
                     result[idx - offset] = cmdtext[idx];
                     idx++;
                          }
                          GetPlayerName(playerid,sendername,sizeof(sendername));
              format(string,sizeof(string), "Ты устроился дальнобойшиком.",result);
                     SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                     PlayerInfo[playerid][pJop] = 0;
                     return true;
                     }
                     }

ну вот и все меняйте кардинаты и ид работы на свои
и зарплату
Работа подойдет для нового мода на mxINI, на других системах надо менять сохронение
грузы брать с этими координатами на зоне 51 примерно вот здесь



грузовики прицепы ставим сами
автор Я, но делал при помощи всего сайта, спасибо
02.08.2014 в 02:58
Проверю,а так вроде нормально расписал)
02.08.2014 в 06:05
Цитата AlexPPPP ()
Проверю,а так вроде нормально расписал)

Отпишись если какие ошибки будут
02.08.2014 в 15:51
У меня вопрос,он так сказать на засыпку)
Почему ты используешь new string[256] а не 128 пример,или 64 ?)
P.S в OnPlayerEnterCheckpoint
02.08.2014 в 17:01
Цитата AlexPPPP ()
У меня вопрос,он так сказать на засыпку)
Почему ты используешь new string[256] а не 128 пример,или 64 ?)
P.S в OnPlayerEnterCheckpoint

да просто мне привычней так а так модно использовать 128 и 64
02.08.2014 в 17:10
На заметку

Строка – это массив символов (цифр и букв). Цифра в квадратных скобок отражает количество ячеек
выделенных под символы, за исключением 1 экстра-ячейки, которая должна быть всегда. Она служит для
хранения идентификатора строки.
Строки используются в основном для хранения имени игрока, текста сообщения, диалога и для других
целей. Стоит помнить, что не рекомендуется создавать много очень больших строк, так же как не
рекомендуется создавать большие строки, которые даже не половину не используются. В строках нужно
выделять ячеек приблизительно ровно столько, сколько будет использоваться. Так например имя игрока может
составлять максимально 24 символа, поэтому для хранения имени игрока используйте строку с длиной не
более 24 символов. Если в строке вы собираетесь хранить сообщение, которое будет отправлено игроку в чат,
то строка должна быть длиной не более 144 символа, так как это ограничение на длину текста в чате. Вобщем
длина строки зависит от ограничений сервера на текст в различных элементах скриптинга.
02.08.2014 в 17:13
Цитата AlexPPPP ()
Строка – это массив символов (цифр и букв). Цифра в квадратных скобок отражает количество ячеек
выделенных под символы, за исключением 1 экстра-ячейки, которая должна быть всегда. Она служит для
хранения идентификатора строки.
Строки используются в основном для хранения имени игрока, текста сообщения, диалога и для других
целей. Стоит помнить, что не рекомендуется создавать много очень больших строк, так же как не
рекомендуется создавать большие строки, которые даже не половину не используются. В строках нужно
выделять ячеек приблизительно ровно столько, сколько будет использоваться. Так например имя игрока может
составлять максимально 24 символа, поэтому для хранения имени игрока используйте строку с длиной не
более 24 символов. Если в строке вы собираетесь хранить сообщение, которое будет отправлено игроку в чат,
то строка должна быть длиной не более 144 символа, так как это ограничение на длину текста в чате. Вобщем
длина строки зависит от ограничений сервера на текст в различных элементах скриптинга.

спасибо не знал и везде пихал 256)
02.08.2014 в 17:18
Цитата leonid767 ()
спасибо не знал и везде пихал 256)

Всегда пожалуйста smile
02.08.2014 в 17:24
отлично
06.08.2014 в 13:45
А для скрипт для RP или можно в Дальнобойный сервак вписать?
07.09.2014 в 10:06
Это больше для RP, если заменить проверки и т.д то можно вшить в "твой" мод
07.09.2014 в 10:25
Хорошая работа но к сожалению не та которую я бы хотел. Если не сложно можешь сделать как на RTS работа Дальнобойщика)), буду очень благодарен))
07.09.2014 в 11:09
Цитата VETER-OK ()
как на RTS работа Дальнобойщика

опиши как там
07.09.2014 в 11:14
Цитата fenix05 ()
опиши как там


Го в вк спишемся: http://vk.com/andrey_popov1998
07.09.2014 в 20:01
спасибо:) пригодится
17.11.2015 в 01:14
Форум | www.SAMP-TEAM.com » Wiki SA-MP » Уроки скриптинга в Pawno » Обновленная работа Дальнобойшика
Страница 1 из 11
Поиск: