 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Таймер или что?
| |
| 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, в общем: В начало: В 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, все норм пашет, короче сажусь в тачку, приезжаю на место, получаю деньги и т.д., возвращаюсь опять на место, сажусь в эту тачку опять и миссия почему то выполняется сразу в эту же секунду, не доезжая до места. Как так? 
|
| |
|
|
| 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 |
| |
|
|
|
 |
|
 | |
| |
|