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

 



 
        
[SA-MP] Hosted Tab (195)
Surenos 27.11.2021 22:57
 





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





Последние Файлы 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 из 1
  • 1
Модератор форума: AXE, Weddew  
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Вопросы и Проблемы » Таймер
Таймер
kRiSyoДата: Пятница, 29.11.2013, 13:34 | Сообщение # 1
Новенький
Группа: Продвинутые
Сообщений: 71
Награды: 2
Город: Дублин
Репутация: 5
Замечания: 0%
Статус:
в обшем с первого раза все работает но потом начинаются лаги =/
рекурсия в этом коде действие будет выполняться бесконечно

есть решение ?

Код
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    switch (GetVehicleModel(vehicleid))
  {
   case 520:
   {
    DestroyObject(HydraGate);
    DestroyObject(HydraGate2);
    HydraTimer = SetTimer("Hydra",1000*60*1,true);
      }
    }
  return 1;
}


Код
forward Hydra();
public Hydra()
{
  HydraGate = CreateObject(10828,-1806.2998000,544.5996100,232.2000000,90.0000000,179.9840000,180.0000000);
  HydraGate2 = CreateObject(10828,-1806.0000000,569.0996100,232.2000000,90.0000000,180.0000000,359.4840000);
  KillTimer(HydraTimer);
  return 1;
}

GeryyДата: Пятница, 29.11.2013, 14:43 | Сообщение # 2
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
HydraTimer = SetTimer("Hydra",1000*60*1,false);


Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
kRiSyoДата: Пятница, 29.11.2013, 15:05 | Сообщение # 3
Новенький
Группа: Продвинутые
Сообщений: 71
Награды: 2
Город: Дублин
Репутация: 5
Замечания: 0%
Статус:
у меня изначально было false но нужно чтобы он запускался еще раз если сесть в гидру
работает 1 раз с false...

GeryyДата: Пятница, 29.11.2013, 16:21 | Сообщение # 4
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
Т.е. те надо, чтобы таймер выполнился только 2 раза?


Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.

Сообщение отредактировал Geryy - Пятница, 29.11.2013, 16:21
kRiSyoДата: Пятница, 29.11.2013, 20:28 | Сообщение # 5
Новенький
Группа: Продвинутые
Сообщений: 71
Награды: 2
Город: Дублин
Репутация: 5
Замечания: 0%
Статус:
нет должно всегда возвращать ворота через минуту если взять гидру

Добавлено (29.11.2013, 17:56)
---------------------------------------------
SetTimerEx("Hydra",1000*60*1,false,"%d",HydraTimer);

а если так ?

Добавлено (29.11.2013, 17:57)
---------------------------------------------
хотя погоди =/ походу будет все работать если не убивать таймер и поставить false

Добавлено (29.11.2013, 17:58)
---------------------------------------------
если так
SetTimer("Hydra",1000*60*1,false);
то он выполнится один раз и его не надо убивать ?

Добавлено (29.11.2013, 18:44)
---------------------------------------------
не и так не работет

Добавлено (29.11.2013, 19:01)
---------------------------------------------
В общем изначально у меня есть объекты ворот
когда садится в гидру они исчезают
и через 1 минуту возвращаются
срабатывает 1 раз =/ в общем что-то не то
иногда и 2 раза срабатывает

Добавлено (29.11.2013, 20:28)
---------------------------------------------

Код
////////////////////////////////////////////////////////////////////////////////
new timer;
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    switch (GetVehicleModel(vehicleid))
  {
   case 520:
   {
    DestroyObject(HydraGate);
    DestroyObject(HydraGate2);
    timer = SetTimer("Hydra",1000*60,true);
      }
    }
  return 1;
}
////////////////////////////////////////////////////////////////////////////////
forward Hydra();
public Hydra()
{
  HydraGate = CreateObject(10828,-1806.2998000,544.5996100,232.2000000,90.0000000,179.9840000,180.0000000);
  HydraGate2 = CreateObject(10828,-1806.0000000,569.0996100,232.2000000,90.0000000,180.0000000,359.4840000);
  KillTimer(timer);
  return 1;
}
////////////////////////////////////////////////////////////////////////////////


В общем все работает но потом вдруг все перестает работать и не удаляет объекты.

GeryyДата: Суббота, 30.11.2013, 01:50 | Сообщение # 6
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
Пробуй так:

Код

В public OnPlayerStateChange(playerid, newstate, oldstate)

     new vehicleID = GetPlayerVehicleID(playerid);
      if (newstate == 2 && GetVehicleModel(vehicleID) == 520)
     {
      DestroyObject(HydraGate);
      DestroyObject(HydraGate2);
      SetTimer("Hydra",60000,false);
     }
      
      
forward Hydra();
public Hydra()
{
   HydraGate = CreateObject(10828,-1806.2998000,544.5996100,232.2000000,90.0000000,179.9840000,180.0000000);
   HydraGate2 = CreateObject(10828,-1806.0000000,569.0996100,232.2000000,90.0000000,180.0000000,359.4840000);
}



Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
kRiSyoДата: Суббота, 30.11.2013, 19:18 | Сообщение # 7
Новенький
Группа: Продвинутые
Сообщений: 71
Награды: 2
Город: Дублин
Репутация: 5
Замечания: 0%
Статус:
не помогло та же история.
GeryyДата: Воскресенье, 01.12.2013, 02:59 | Сообщение # 8
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
Значит тогда дело не в этом коде. Проблема в другом.

HydraGate = CreateObject(10828,-1806.2998000,544.5996100,232.2000000,90.0000000,179.9840000,180.0000000);
HydraGate2 = CreateObject(10828,-1806.0000000,569.0996100,232.2000000,90.0000000,180.0000000,359.4840000);

у тебя в public OnGameModeInit() они есть? Или только в таймере создаются?



Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.

Сообщение отредактировал Geryy - Воскресенье, 01.12.2013, 03:01
FiLEДата: Воскресенье, 01.12.2013, 03:00 | Сообщение # 9
Группа: Разработчики
Сообщений: 681
Награды: 70
Город: Одесса
Замечания: 0%
Статус:
Ну, можно с помощью каменного века:

Кидаем в "начало" мода:
Код

new secund,HydraGate,HydraGate2;
forward sec();
forward Hydra();
public sec()
{
  if(secund > 0)
  {
      if(secund==1) Hydra();
   secund --;
  }
  return 1;
}
public Hydra()
{
    HydraGate = CreateObject(10828,-1806.2998000,544.5996100,232.2000000,90.0000000,179.9840000,180.0000000);
    HydraGate2 = CreateObject(10828,-1806.0000000,569.0996100,232.2000000,90.0000000,180.0000000,359.4840000);
}


Потом в modeinit создаем таймер: SetTimer("sec",1000,true);

И в заключение public OnPlayerStateChange:

Код

if (newstate == 2 && GetVehicleModel(GetPlayerVehicleID(playerid)) == 520)
{
  if(IsValidObject(HydraGate))
  {
   DestroyObject(HydraGate);
   DestroyObject(HydraGate2);
  }
  secund = 60;
}


В теории должно работать железно.




kRiSyoДата: Воскресенье, 01.12.2013, 22:40 | Сообщение # 10
Новенький
Группа: Продвинутые
Сообщений: 71
Награды: 2
Город: Дублин
Репутация: 5
Замечания: 0%
Статус:
Цитата Geryy ()
Значит тогда дело не в этом коде. Проблема в другом.

HydraGate = CreateObject(10828,-1806.2998000,544.5996100,232.2000000,90.0000000,179.9840000,180.0000000);
HydraGate2 = CreateObject(10828,-1806.0000000,569.0996100,232.2000000,90.0000000,180.0000000,359.4840000);

у тебя в public OnGameModeInit() они есть? Или только в таймере создаются?


OnGameModeInit они есть =/

Добавлено (01.12.2013, 22:40)
---------------------------------------------
в общем сделал через MoveObject в таймере почему то стало только для ид 0....
на всякий случай скидываю весь таймер
Код

forward OnGameTimer();
public OnGameTimer()
{
for(new i = 0; i < MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInRangeOfPoint(i, 5.0, -1806.80005,557.59998,228.8))
{
MoveObject(HydraGate, -1821.5000000,534.9000200,232.0000000, 2.0);
MoveObject(HydraGate2, -1793.5000000,584.0000000,232.0000000, 2.0);
}else{
MoveObject(HydraGate, -1813.2998000,548.8994100,232.0000000, 2.0);
MoveObject(HydraGate2, -1801.0000000,570.2998000,232.0000000, 2.0);
}
// Check chatoff time
if(PlayerInfo[i][pMuteTime] > 0) {
lastMuteTime[i] = PlayerInfo[i][pMuteTime];
PlayerInfo[i][pMuteTime]--;
}
else {
if(lastMuteTime[i] == 1) {
lastMuteTime[i] = 0;
SendClientMessage(i, COLOR_LIGHTGREEN, "Теперь вы можете говорить в чат!");
}
PlayerInfo[i][pMuteTime] = 0;
}
if(gPlayerSpawn[i] == 1)
{
new string[128];
new pPing = GetPlayerPing(i);
new pName[MAX_PLAYER_NAME];
GetPlayerName(i,pName,sizeof(pName));

ResetPlayerMoney(i);
GivePlayerMoney(i,pCash[i]);

if(pPing > 650)
{
format(string,sizeof(string),"%s(%d) {33CCFF}Кикнут за высокий пинг(+650m/s)",pName,i);
SendClientMessageToAll(-1,string);
Kick(i);
}
if((GetPlayerWeapon(i) == 35) || (GetPlayerWeapon(i) == 36) || (GetPlayerWeapon(i) == 37) || (GetPlayerWeapon(i) == 38) || (GetPlayerWeapon(i) == 17) || (GetPlayerWeapon(i) == 18))
{
format(string,sizeof(string),"%s(%d) {33CCFF}Кикнут за использование запрещенного оружия",pName,i);
SendClientMessageToAll(-1,string);
Kick(i);
}
}
}
}
return 1;
}



Сообщение отредактировал kRiSyo - Воскресенье, 01.12.2013, 22:41
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Вопросы и Проблемы » Таймер
  • Страница 1 из 1
  • 1
Поиск:





 


 


 
Хостинг от uCoz SAMP-RUS.COM