Последние Файлы 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