18:20
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: AXE, Weddew  
Таймер или что?
Stop-TussinДата: Суббота, 05.07.2008, 12:43 | Сообщение # 1
Освоившийся
Группа: Продвинутые
Сообщений: 93
Награды: 1
Город: Челны
Репутация: 4
Замечания: 0%
Статус:
Объясню ситуацию:
Есть миссия, допустим мне нада отвести машину к одному месту, за что мне дают деньги! Но на сервере есть читеры с телепортом и спедхаком, так вот, они делают точку для телепорта в конце миссии, то есть там куда нада доставить машину, и таким образом проходят миссию за 1-2 секунды и заколачивают так деньги.

Как можно сделать так, чтобы миссия могла быть окончена только после 5 минут допустим. То есть приедешь на место раньше 5 минут, будет выдано сообщение: "Чертов читер, вали с сервера" (или можно кик :) ), а если приедешь туда после этих 5 минут, то все будет норм.

Вот моя миссия:

Code
#include <a_samp>
#include <a_vehicles>

new DriverTimer;
new driver[MAX_PLAYERS];

public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}

// Сел в тачку
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
switch (GetVehicleModel(vehicleid))
{
        case 605:
        {
         if(driver[playerid] == 0)
         {
          SendClientMessage(playerid,0xE49BADFF," Доставьте эту тачку к дому Си-Джея (cJay), и вы получите 100 000 $");
          driver[playerid]=1;
         }
         DriverTimer = SetTimer("IsPlayerDriverJob",2000,1);
         SetPlayerMapIcon(playerid,17,365.7159,2537.8953,16.6630,11,6);  // # - порядковый номер иконки в моде, xyz - координаты, 1 - квадрат, 6 - жёлтый цвет.
        }
}
}

// Вышел с тачки
public OnPlayerExitVehicle(playerid)
{
if(driver[playerid] == 1)
{
        SendClientMessage(playerid,0xFF0000AA," Вы не справились со своим заданием! Лузер!");
        driver[playerid]=0;
        KillTimer(DriverTimer);
}
}

forward IsPlayerDriverJob();

// Привез тачку
public IsPlayerDriverJob()
{
        for(new i=0; i<MAX_PLAYERS; i++)
        {
         if(driver[i] == 1)
         {
          if(PlayerToPoint(20,i,365.7159,2537.8953,16.6630)) // xyz - те же координаты, которые у иконки
          {
           SetVehicleToRespawn(GetPlayerVehicleID(i));
           SendClientMessage(i,0xFFFF00AA," Поздравляем! Вы доставили транспорт! Молодца!");
           CallRemoteFunction("GivePlayerXP", "", 0);
           GameTextForPlayer(i,"+ 400 XP",5000,3);
           GivePlayerMoney(i,10000); // 10 000 - плата
           SendClientMessage(i,0xFFFFF0AA," Получите ваши $100 000");
           driver[i]=0;
           KillTimer(DriverTimer);
           RemovePlayerMapIcon(i,17); // тот порядковый номер иконки
           //SetPlayerXP(i,400); // 400 - кол-во экспы
          }
         }
}
}

Добавлено (05.07.2008, 12:43)
---------------------------------------------
Помогите плиз, срочно надо. ПЛЮС поставлю :)


Сообщение отредактировал Stop-Tussin - Суббота, 05.07.2008, 08:42
OrangeДата: Суббота, 05.07.2008, 14:22 | Сообщение # 2
Уважаемый человек
Группа: Продвинутые
Сообщений: 945
Награды: 6
Город: San Fierro
Репутация: 101
Замечания: 0%
Статус:
В начало:
Code

new 5min[MAX_PLAYERS];

Code
// Привез тачку  
public IsPlayerDriverJob()  
{  
         for(new i=0; i<MAX_PLAYERS; i++)  
         {  
          if(driver[i] == 1)  
          {  
           if(PlayerToPoint(20,i,365.7159,2537.8953,16.6630)) // xyz - те же координаты, которые у иконки  
           {  
            if(5min[playerid] == 1)
            {   
            SetVehicleToRespawn(GetPlayerVehicleID(i));  
            SendClientMessage(i,0xFFFF00AA," Поздравляем! Вы доставили транспорт! Молодца!");  
            CallRemoteFunction("GivePlayerXP", "", 0);  
            GameTextForPlayer(i,"+ 400 XP",5000,3);  
            GivePlayerMoney(i,10000); // 10 000 - плата  
            SendClientMessage(i,0xFFFFF0AA," Получите ваши $100 000");  
            driver[i]=0;  
            KillTimer(DriverTimer);  
            RemovePlayerMapIcon(i,17); // тот порядковый номер иконки  
            //SetPlayerXP(i,400); // 400 - кол-во экспы  
           }  
          }
         }  
}  
}

В низ
Code

forward If5Min(playerid);
public If5Min(playerid)
{
for(new i=0; i<MAX_PLAYERS; i++)  
{
5Min[i] = 1;
}
}

Code
// Сел в тачку  
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)  
{  
switch (GetVehicleModel(vehicleid))  
{  
         case 605:  
         {  
          if(driver[playerid] == 0)  
          {  
           SendClientMessage(playerid,0xE49BADFF," Доставьте эту тачку к дому Си-Джея (cJay), и вы получите 100 000 $");  
           driver[playerid]=1;  
          }  
          SetTimer("If5Min",Время в милисекундах,0);  
          DriverTimer = SetTimer("IsPlayerDriverJob",2000,1);  
          5Min[playerid] = 0;
         SetPlayerMapIcon(playerid,17,365.7159,2537.8953,16.6630,11,6);  
         }  
}  
}

Добавлено (05.07.2008, 14:22)
---------------------------------------------
на работоспособность не проверял


Stop-TussinДата: Суббота, 05.07.2008, 14:48 | Сообщение # 3
Освоившийся
Группа: Продвинутые
Сообщений: 93
Награды: 1
Город: Челны
Репутация: 4
Замечания: 0%
Статус:
Все сделал, ошибки появились:
E:\gtm\filterscripts\mission2.pwn(7) : error 020: invalid symbol name ""
E:\gtm\filterscripts\mission2.pwn(43) : error 029: invalid expression, assumed zero
E:\gtm\filterscripts\mission2.pwn(43) : error 028: invalid subscript (not an array or too many subscripts): "min"
E:\gtm\filterscripts\mission2.pwn(43) : warning 215: expression has no effect
E:\gtm\filterscripts\mission2.pwn(43) : error 001: expected token: ";", but found "]"
E:\gtm\filterscripts\mission2.pwn(43) : fatal error 107: too many error messages on one line

43 срочка: 5min[playerid] = 0;


Сообщение отредактировал Stop-Tussin - Суббота, 05.07.2008, 14:50
OrangeДата: Суббота, 05.07.2008, 15:45 | Сообщение # 4
Уважаемый человек
Группа: Продвинутые
Сообщений: 945
Награды: 6
Город: San Fierro
Репутация: 101
Замечания: 0%
Статус:
замени:
new 5min[MAX_PLAYERS]; на new FiveMinTimer;
if(5min[playerid] == 1) на if(FiveMinTimer == 1)
5Min[playerid] = 0; на FiveMinTimer = 0;



Stop-TussinДата: Суббота, 05.07.2008, 20:33 | Сообщение # 5
Освоившийся
Группа: Продвинутые
Сообщений: 93
Награды: 1
Город: Челны
Репутация: 4
Замечания: 0%
Статус:
А вот тут как изменить?
forward If5min(playerid);
public If5min(playerid)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
5min[i] = 1;
}
}

Без этого кода не работает это ограничение в 5 мину

Добавлено (05.07.2008, 20:33)
---------------------------------------------
И вот тут еще как изменит?
SetTimer("If5min",50000,0);


Сообщение отредактировал Stop-Tussin - Суббота, 05.07.2008, 20:33
OKStyle™Дата: Суббота, 05.07.2008, 20:35 | Сообщение # 6
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
Stop-Tussin, в общем:

В начало:

Code
new DriverJobTimer;

В IsPlayerDriverJob:
Вместо:

Code
SetVehicleToRespawn(GetPlayerVehicleID(i));     
SendClientMessage(i,0xFFFF00AA," Поздравляем! Вы доставили транспорт! Молодца!");     
CallRemoteFunction("GivePlayerXP", "", 0);     
GameTextForPlayer(i,"+ 400 XP",5000,3);     
GivePlayerMoney(i,10000); // 10 000 - плата     
SendClientMessage(i,0xFFFFF0AA," Получите ваши $100 000");     
driver[i]=0;     
KillTimer(DriverTimer);     
RemovePlayerMapIcon(i,17); // тот порядковый номер иконки     
//SetPlayerXP(i,400); // 400 - кол-во экспы

Пиши:

Code
DriverJobTimer = SetTimer("DriverJobTimerFunc",300000,0);

Вниз:

Code
forward DriverJobTimerFunc();

public DriverJobTimerFunc()
{
for(new i=0; i<MAX_PLAYERS;i++)
{
if(driver[i] == 1)
{
  if(PlayerToPoint(10,playerid,x,y,z)); // xyz - те же координаты, которые у иконки  
  {
   SetVehicleToRespawn(GetPlayerVehicleID(i));
   SendClientMessage(i,0xFFFF00AA," Поздравляем! Вы доставили транспорт! Молодца!");
   CallRemoteFunction("GivePlayerXP", "", 0);
   GameTextForPlayer(i,"+ 400 XP",5000,3);
   GivePlayerMoney(i,10000); // 10 000 - плата
   SendClientMessage(i,0xFFFFF0AA," Получите ваши $100 000");
   driver[i]=0;
   KillTimer(DriverTimer);
   KillTimer(DriverJobTimer);
   RemovePlayerMapIcon(i,17); // тот порядковый номер иконки
   //SetPlayerXP(i,400); // 400 - кол-во экспы
  }
}
}
return 1;
}



Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR


Сообщение отредактировал okstyle - Воскресенье, 06.07.2008, 08:50
Stop-TussinДата: Суббота, 05.07.2008, 22:31 | Сообщение # 7
Освоившийся
Группа: Продвинутые
Сообщений: 93
Награды: 1
Город: Челны
Репутация: 4
Замечания: 0%
Статус:
Спасибо все работает, но есть вопрос:
DriverJobTimer = SetTimer("DriverJobTimerFunc",1000,0);
1000 это сколько секунд?

Добавлено (05.07.2008, 22:31)
---------------------------------------------
И еще, что и куда нужно всунуть, чтоб если он приедет раньше установленного времени-его кинуло!


Сообщение отредактировал Stop-Tussin - Суббота, 05.07.2008, 22:30
OKStyle™Дата: Суббота, 05.07.2008, 22:47 | Сообщение # 8
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
Stop-Tussin, ошибочка, 1000 замени на 300000.
Quote (Stop-Tussin)
И еще, что и куда нужно всунуть, чтоб если он приедет раньше установленного времени-его кинуло

раньше времени ничего не произойдёт...



Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
Stop-TussinДата: Воскресенье, 06.07.2008, 10:41 | Сообщение # 9
Освоившийся
Группа: Продвинутые
Сообщений: 93
Награды: 1
Город: Челны
Репутация: 4
Замечания: 0%
Статус:
Знаю, но я хочу чтоб если он приедет в этот чекпоинт раньше установленного времени, чтоб его кикнуло! Или хотя бы сообщение было написано.

Добавлено (06.07.2008, 10:41)
---------------------------------------------
СРОЧНО! ПРОБЛЕМА ппц такая:
Сделал как сказал okstyle, все норм пашет, короче сажусь в тачку, приезжаю на место, получаю деньги и т.д., возвращаюсь опять на место, сажусь в эту тачку опять и миссия почему то выполняется сразу в эту же секунду, не доезжая до места. Как так? sad sad

OKStyle™Дата: Воскресенье, 06.07.2008, 10:43 | Сообщение # 10
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
Stop-Tussin, точно всё так? Там же стоит обнуление переменной.


Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
Stop-TussinДата: Воскресенье, 06.07.2008, 14:13 | Сообщение # 11
Освоившийся
Группа: Продвинутые
Сообщений: 93
Награды: 1
Город: Челны
Репутация: 4
Замечания: 0%
Статус:
Да все так ( тока сажусь и тут же выполняется миссия

Добавлено (06.07.2008, 11:46)
---------------------------------------------
Оказывается у меня в public OnPlayerEnterVehicle был другой таймер
А щас миссия вообюще не выполняется с твоим таймером, а без него все норм. Исправь плиз код чтоб работало все норм :)

Добавлено (06.07.2008, 14:13)
---------------------------------------------
HELP ME


Сообщение отредактировал Stop-Tussin - Воскресенье, 06.07.2008, 14:12
OKStyle™Дата: Воскресенье, 06.07.2008, 14:15 | Сообщение # 12
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
Stop-Tussin, ну дык миссия и не будет выполняться, пока время не пройдёт...


Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
Stop-TussinДата: Воскресенье, 06.07.2008, 14:21 | Сообщение # 13
Освоившийся
Группа: Продвинутые
Сообщений: 93
Награды: 1
Город: Челны
Репутация: 4
Замечания: 0%
Статус:
Даже если время проходит-миссия все равно не выполняется! (в том то и дело)
OKStyle™Дата: Воскресенье, 06.07.2008, 14:26 | Сообщение # 14
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус:
Stop-Tussin, надо с той темой объединить эту... Модеры, хелп... ибо 2 темы на 1 скрипт неудобно. Склейте темы.


Да потому что когда человек делает на заказ он не старается. © kRiSyo
Кланяимся нофаму королю анимаций =))))))) © Manusya
В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
Stop-TussinДата: Воскресенье, 06.07.2008, 15:05 | Сообщение # 15
Освоившийся
Группа: Продвинутые
Сообщений: 93
Награды: 1
Город: Челны
Репутация: 4
Замечания: 0%
Статус:
Вот смотри, я забыл вставить if(PlayerToPoint(0,i,2493.9749,-1678.6537,13.3382)); в public DriverJobTimerFunc()

Code
#include <a_samp>
#include <a_vehicles>

new DriverJobTimer;
new DriverTimer;
new driver[MAX_PLAYERS];

public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}

// Ñåë â òà÷êó
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
  new string[256];
  new name[256];
switch (GetVehicleModel(vehicleid))
{
       case 605:
       {
        if(driver[playerid] == 0)
        {
         SendClientMessage(playerid,0xE49BADFF," Äîñòàâüòå ýòó òà÷êó ê äîìó Ñè-Äæåÿ (cJay), è âû ïîëó÷èòå 100 000 $");
         format(string,sizeof(string)," %s âçÿë ìèññèþ ïî äîñòàâêå òðàíñïîðòà",name);
      driver[playerid]=1;
        }
        DriverTimer = SetTimer("IsPlayerDriverJob",2000,1);
        SetPlayerMapIcon(playerid,17,365.7159,2537.8953,16.6630,11,6);  // # - ïîðÿäêîâûé íîìåð èêîíêè â ìîäå, xyz - êîîðäèíàòû, 1 - êâàäðàò, 6 - æ¸ëòûé öâåò.
       }
}
}

// Âûøåë ñ òà÷êè
public OnPlayerExitVehicle(playerid)
{
if(driver[playerid] == 1)
{
       SendClientMessage(playerid,0xFF0000AA," Âû íå ñïðàâèëèñü ñî ñâîèì çàäàíèåì! Ëóçåð!");
       driver[playerid]=0;
       KillTimer(DriverTimer);
}
}

// Ïðèâåç òà÷êó
public IsPlayerDriverJob()
{
  new string[256];
  new name[256];
       for(new i=0; i<MAX_PLAYERS; i++)
       {
        if(driver[i] == 1)
        {
         if(PlayerToPoint(20,i,2493.9749,-1678.6537,13.3382)) // xyz - òå æå êîîðäèíàòû, êîòîðûå ó èêîíêè
         {
   DriverJobTimer = SetTimer("DriverJobTimerFunc",300000,0);
         }
        }
}
}
forward DriverJobTimerFunc();

public DriverJobTimerFunc()
{
for(new i=0; i<MAX_PLAYERS;i++)
{
if(driver[i] == 1)
{
   if(PlayerToPoint(0,i,2493.9749,-1678.6537,13.3382)); // xyz - òå æå êîîðäèíàòû, êîòîðûå ó èêîíêè
   {
    SetVehicleToRespawn(GetPlayerVehicleID(i));
    SendClientMessage(i,0xFFFF00AA," Ïîçäðàâëÿåì! Âû äîñòàâèëè òðàíñïîðò! Ìîëîäöà!");
    CallRemoteFunction("GivePlayerXP", "", 0);
    GameTextForPlayer(i,"+ 400 XP",5000,3);
    GivePlayerMoney(i,10000); // 10 000 - ïëàòà
    SendClientMessage(i,0xFFFFF0AA," Ïîëó÷èòå âàøè $100 000");
    driver[i]=0;
    KillTimer(DriverTimer);
    KillTimer(DriverJobTimer);
    RemovePlayerMapIcon(i,17); // òîò ïîðÿäêîâûé íîìåð èêîíêè
    //SetPlayerXP(i,400); // 400 - êîë-âî ýêñïû
   }
}
}
return 1;
}

Одна ошибка такая:
D:\gtm\filterscripts\mission.pwn(84) : error 036: empty statement

в этой строчке: if(PlayerToPoint(0,i,2493.9749,-1678.6537,13.3382)); в public DriverJobTimerFunc()


Сообщение отредактировал Stop-Tussin - Воскресенье, 06.07.2008, 15:13
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua