 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Таймер
| |
| 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 |
| |
|
|
|
 |
|
 | |
| |
|