Итак первый баг: Коп поднимает пикап и сразу "возвращает кейс" Решение: Ищем паблик OnPlayerEnterCheckpoint(playerid) перед ним пишем new haveupped; затем смотрим сюда и пишем то чего не хватает, по идее должно помочь.[pwn] if (gTeam[playerid] >= 3) { PlayerPlaySound(playerid, 1058, 0.0, 0.0, 0.0); CheckpointReset(); GameTextForPlayer(playerid, "~w~Now get to the~n~~r~Safehouse", 5000, 1); cwx = gCBdropoff[DropOff][0]; cwy = gCBdropoff[DropOff][1]; cwz = gCBdropoff[DropOff][2]; SetAllPlayerCheckpoint(cwx, cwy, cwz, 1.4, 0); gPlayerCheckpointStatus[playerid] = CHECKPOINT_DROPOFF; if (gdebug){printf("DEBUG gpcs %d",gPlayerCheckpointStatus[playerid]);} format(string, sizeof(string), "%s yкpaл кeйc coдepжaщий $%d.", name ,reward); BroadCast(COLOR_YELLOW, string); gSuperCop = playerid; SetPlayerCriminal(playerid,255, "ограбление",0,0); MissionActive = 2; haveupped=1; if (gdebug){print("DEBUG MissionActive = 2;");} } else if ((gTeam[playerid]) == 2 && haveupped==0) { SendClientMessage(playerid, COLOR_BLUE, "*Никто еще не украл кейс!"); return1; } else if ((gTeam[playerid]) == 2 && haveupped==1) { PlayerPlaySound(playerid, 1058, 0.0, 0.0, 0.0); CheckpointReset(); GameTextForPlayer(playerid, "~w~Return the Briefcase~n~to the ~r~Store", 5000, 5); cwx = rx;//retrieving the store cwy = ry; cwz = rz; SetAllPlayerCheckpoint(cwx, cwy, cwz, 1.4, 0); gPlayerCheckpointStatus[playerid] = CHECKPOINT_DROPOFF; format(string, sizeof(string), "Пoлицeйcкий %s пoдoбpaл кeйc coдepжaщий $%d.", name ,reward); BroadCast(COLOR_BLUE, string); gSuperCop = playerid; MissionActive = 2; haveupped=0; if (gdebug){print("DEBUG MissionActive = 2;");} }[/pwn] Сейчас будем разбирать 2 баг
Добавлено (18.04.2009, 19:33) --------------------------------------------- Итак баг N2 Когда при сообщении об уличной гонке чекпоинт появляется в сельск местности. раскомментируем это [pwn]/*LoadRace(playerid,name[]) { if (gdebug >= 1){printf("DEBUG Loadrace(%d,%s)",playerid,name);} new arrCoords[16][64]; new strFromFile2[256]; new racename[64]; strmid(CurrentRace, name, 0, strlen(name), 255); format(racename, sizeof(racename), "%s.race",name); new File: file = fopen(racename, io_read); if (file) { fread(file, strFromFile2); split(strFromFile2, arrCoords, ','); RaceInfo[rStartx] = floatstr(arrCoords[0]); RaceInfo[rStarty] = floatstr(arrCoords[1]); RaceInfo[rStartz] = floatstr(arrCoords[2]); RaceInfo[rMidx] = floatstr(arrCoords[3]); RaceInfo[rMidy] = floatstr(arrCoords[4]); RaceInfo[rMidz] = floatstr(arrCoords[5]); RaceInfo[rMid2x] = floatstr(arrCoords[6]); RaceInfo[rMid2y] = floatstr(arrCoords[7]); RaceInfo[rMid2z] = floatstr(arrCoords[8]); RaceInfo[rEndx] = floatstr(arrCoords[9]); RaceInfo[rEndy] = floatstr(arrCoords[10]); RaceInfo[rEndz] = floatstr(arrCoords[11]); strmid(RaceInfo[rName], arrCoords[12], 0, strlen(arrCoords[12]), 255); strmid(RaceInfo[rBest], arrCoords[13], 0, strlen(arrCoords[13]), 255); RaceInfo[rBestms] = strval(arrCoords[14]); RaceInfo[rLaps] = strval(arrCoords[15]); rsx = RaceInfo[rStartx];rsy = RaceInfo[rStarty];rsz =RaceInfo[rStartz]; rmx = RaceInfo[rMidx];rmy = RaceInfo[rMidy];rmz = RaceInfo[rMidz]; rm2x = RaceInfo[rMid2x];rm2y = RaceInfo[rMid2y];rm2z = RaceInfo[rMid2z]; rex = RaceInfo[rEndx];rey = RaceInfo[rEndy];rez = RaceInfo[rEndz]; fclose(file); format(strFromFile2, sizeof(strFromFile2), "%s Race Loaded",name); ConvertTicks(RaceInfo[rBestms]); SendClientMessage(playerid, COLOR_GREEN,strFromFile2); if(RaceInfo[rLaps] > 0) { format(strFromFile2, sizeof(strFromFile2), "Next Race: %s, By : %s | BestTime: %s : %d:%d:%d Laps: %d",name,RaceInfo[rName],RaceInfo[rBest],cmins,csecs,cmils,RaceInfo[rLaps]); } else { format(strFromFile2, sizeof(strFromFile2), "Next Race: %s, By : %s | BestTime: %s : %d:%d:%d",name,RaceInfo[rName],RaceInfo[rBest],cmins,csecs,cmils); } SendEnemyMessage(COLOR_GREEN, strFromFile2); randomrace = 0; } else { if(playerid != 255) { SendClientMessage(playerid, COLOR_GREEN,"File not found"); } } // return 1; }*/[/pwn] и это [pwn]/*if(strcmp(cmd, "/randomrace", true) == 0 && IsPlayerConnected(playerid)) { if ((IsPlayerAdmin(playerid)) || PlayerInfo[playerid][pAdmin] >= 104 || FugitiveCore[playerid] == 1 || PlayerInfo[playerid][pAdmin] == -11 || gRaceGuy[playerid]) { if(randomrace == 1) { randomrace = 0; SendClientMessage(playerid, COLOR_GRAD2, "Random races disabled"); rsx = RaceInfo[rStartx];rsy = RaceInfo[rStarty];rsz =RaceInfo[rStartz]; rmx = RaceInfo[rMidx];rmy = RaceInfo[rMidy];rmz = RaceInfo[rMidz]; rm2x = RaceInfo[rMid2x];rm2y = RaceInfo[rMid2y];rm2z = RaceInfo[rMid2z]; rex = RaceInfo[rEndx];rey = RaceInfo[rEndy];rez = RaceInfo[rEndz]; } else if(randomrace == 0) { randomrace = 1; SendClientMessage(playerid, COLOR_GRAD2, "Random races enabled"); } return 1; } else { SendClientMessage(playerid, COLOR_GRAD1, " you are not authorized to use that command!"); } }*/ /*if(strcmp(cmd, "/setrace", true) == 0 && IsPlayerConnected(playerid)) { if ((IsPlayerAdmin(playerid)) || PlayerInfo[playerid][pAdmin] >= 103 || FugitiveCore[playerid] == 1 || PlayerInfo[playerid][pAdmin] == -11 || gRaceGuy[playerid]) { new racename[64]; new name[64]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /setrace [racename] [position-1-2-3-4]"); format(string, sizeof(string), "Race List (1. %s) (2. %s) (3. %s) (4. %s) ",Races[0],Races[1],Races[2],Races[3]); SendClientMessage(playerid, COLOR_GREEN,string); format(string, sizeof(string), "Race List (5. %s) (6. %s) (7. %s) (8. %s) ",Races[4],Races[5],Races[6],Races[7]); SendClientMessage(playerid, COLOR_GREEN,string); return 1; } strmid(name, tmp, 0, strlen(tmp), 255); format(racename, sizeof(racename), "%s.race",name); new File: file = fopen(racename, io_read); if (!file) { SendClientMessage(playerid, COLOR_GREEN,"File not found"); return 1; } fclose(file); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /setrace [racename] [position-1-2-3-4]"); return 1; } new raceid = strval(tmp)-1; racelist = strval(tmp); strmid(Races[raceid], name, 0, strlen(name), 255); format(string, sizeof(string), "New List (1. %s) (2. %s) (3. %s) (4. %s) ",Races[0],Races[1],Races[2],Races[3]); SendClientMessage(playerid, COLOR_GREEN,string); format(string, sizeof(string), "New List (5. %s) (6. %s) (7. %s) (8. %s) ",Races[4],Races[5],Races[6],Races[7]); SendClientMessage(playerid, COLOR_GREEN,string); } else { SendClientMessage(playerid, COLOR_GRAD1, " you are not authorized to use that command!"); } }*/[/pwn] Позволит нам создавать и загружать гонки. либо пойдем по другому пути... я сейчас просмотрю код и посмотрю как гонки реализуются, не загруженные из файла
Добавлено (18.04.2009, 19:42) --------------------------------------------- Кто может толком обьснить порядок создания быстрой гонки? у меня времени сейчас нет рыться
Добавлено (18.04.2009, 19:54) --------------------------------------------- Пример гонки, которая отлично работает с Сообщением копам - [pwn]24 rCheckpoints -2822.5 954.4 43.5 -2807.0 870.0 43.5 -2741.5 811.2 52.5 -2580.0 809.0 49.4 -2523.1 815.9 49.4 -2523.8 903.7 6 4.4 -2526.6 993.4 77.5 -2513.3 1096.5 55.0 -2421.8 1048.8 50.7 -2409.5 1146.0 55.0 -2528.1 1227.0 37.4 -2420.3 1183.0 34.5 -2265.1 1178.8 55.0 -2148.0 1174.0 55.2 -2175.6 1200.0 47.7 -2128.1 1275.5 20.7 -2044.0 1291.0 6.5 -1669.5 1272.5 6.5 -1 622.5 1194.0 6.5 -1589.9 1110.4 6.5 -1542.4 986.2 6.5 -1535.5 892.4 6.5 -1553.8 666.5 6.5 -1521.4 567.7 6.8 -1512.9 559.2 3.0 JohnSanders Creator JohnSanders BestPerson 85500 BestTime[/pwn] Пофиксить сообщение копам можно введением новой переменной в паблики, ну или понять как эта тварь читает чекпоинты из файла и при старте гонки дать копу чекпоинт по ним
1 час моей работы стоит минимум 800 рублей для срочных работ. Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS. Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы. Немного ассемблер. Ох**тельный верстальщик какб.
Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^
Итак баг N2 Когда при сообщении об уличной гонке чекпоинт появляется в сельск местности. раскомментируем это
Тоесть мне сделать все гонки наново?
Quote (|RD|Chez)
Итак первый баг: Коп поднимает пикап и сразу "возвращает кейс" Решение: Ищем паблик OnPlayerEnterCheckpoint(playerid) перед ним пишем new haveupped; затем смотрим сюда и пишем то чего не хватает, по идее должно помочь.
Rabbit, а которое из них? xD ну хотьб миссию опиши в 2ух словах
1 час моей работы стоит минимум 800 рублей для срочных работ. Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS. Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы. Немного ассемблер. Ох**тельный верстальщик какб.
Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^
[pwn]if (gTeam[i] >= 2) { if (automission) { JobGive(i); }[/pwn] Нужно было изменить на if (gTeam[i] >= 3) XD Теперь осталось решить проблему с гонкой...
Итак первый баг: Коп поднимает пикап и сразу "возвращает кейс" Решение: Ищем паблик OnPlayerEnterCheckpoint(playerid) перед ним пишем new haveupped; затем смотрим сюда и пишем то чего не хватает, по идее должно помочь.
...Проверил миссию полностью Кейс ментом не береться даже после того как его украли и когда убил вора....
Rabbit, хм... завтра посмотрю... я прост по логике действий написал, но не тестил
1 час моей работы стоит минимум 800 рублей для срочных работ. Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS. Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы. Немного ассемблер. Ох**тельный верстальщик какб.
Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^
Ты больше разбераешься, есле что, то в обычном ПЕН1 эти миссии нормально настроены.Думаю ты поймешь где именно смотреть.
Добавлено (04.05.2009, 01:44) --------------------------------------------- Есть еще такая проблемка, иногда даються миссии, к примеру доставить лодку в центр города или машину в море, или что-то по типу этого. Кто знает как править??
Если покопаться-можно все исправить... Ты напоминай время от времени, а то я в ворохе дел забываю совсем
1 час моей работы стоит минимум 800 рублей для срочных работ. Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS. Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы. Немного ассемблер. Ох**тельный верстальщик какб.
Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^
И еще проблема с миссиями... "Угнать тачку" всем извесная миссия, так вот, есле некто не выполняет эту миссию проходит время которое задано в конфиге "интервал между миссиями" jobdelay и всё, машина с карты исчезает и дальше миссии не даються....но есле обездить весь город и всётаки найти эту машину без маркера и отвезти ее, то миссии дальше пойдут... Вот такая проблемка.
Сообщение отредактировал Rabbit - Понедельник, 04.05.2009, 20:10
Есть еще такая проблемка, иногда даються миссии, к примеру доставить лодку в центр города или машину в море, или что-то по типу этого. Кто знает как править??
Вообщем такс, разберём такие строки (sorry Но версия англ) : [pwn] case 8: { if (gdebug){print("DEBUG test1");} stealcar = random(166)+88; GetVehiclePos(stealcar, scx, scy, scz); format(objstore, sizeof(objstore), "A Buyer is Interested in the Car Marked on your GPS, Sender: 8 Ball (555)"); format(cbjstore, sizeof(cbjstore), "Police HQ: 911 10-64 Suspect Vehicle Spotted."); rx = scx;//storing the car pos ry = scy; rz = scz; if (gdebug){print("DEBUG TEST2");} stealcardest = random(166)+88; while (stealcardest == stealcar) { stealcardest = random(166)+88; }[/pwn]
Нам нужна строка: [pwn]stealcar = random(166)+88;[/pwn]
Разберём более детально: 166 это максимальное число за предел которого функция random не может выйти. Сама функция random предназначена для произвольного выбора элемента\числа и тд. не выходя за установленные пределы. +88 это число которое будет прибавлено к произвольному числу. stealcar это id нашей машины для угона. Отсюда следует, что:id машины для угона = произвольное число(от 0-166)+88
Если у тебя попадает в этот диапазон ид лодки то соответственно будет назначен ид лодки =))
Есть два варианта исправления: Если попадает на ид лодки - перезапускать функцию random чтобы попало не на ид лодки, либо выбрать такой диапазон в который не попадает ид лодки. Исправлять диапазон нужно не один раз, ищи random(166)+88 и исправляй на свои цифры, т.к. там не один раз упоминаетса диапазон в коде. Надеюсь доходчиво обьяснил =)
И еще проблема с миссиями... "Угнать тачку" всем извесная миссия, так вот, есле некто не выполняет эту миссию проходит время которое задано в конфиге "интервал между миссиями" jobdelay и всё, машина с карты исчезает и дальше миссии не даються....но есле обездить весь город и всётаки найти эту машину без маркера и отвезти ее, то миссии дальше пойдут... Вот такая проблемка.
я сделал авторестартер миссий просто ) типо еси миссия не началась, то срабатывает рестартер и запускает миссии заново )
Relax, благодарю, но я так понял что число не может зайти за предел 254(166+88), а ID автомобилей начинаються с 400!!!
Добавлено (07.05.2009, 20:47) --------------------------------------------- Думал решил проблему, но не тут-то было! Всё с теми же чекпоинтами гонок для ментов...
if (gdebug){print("DEBUG Checkp6");} format(cbjstore, sizeof(cbjstore), "Police HQ: 911 10-14 Блoкиpyйтe дopoгy нa кpacнoм мapкepe"); GameTextForPlayer(i, "~w~Waypoint set ~n~~r~RoadBlock", 5000, 1); SendClientMessage(i, TEAM_BLUE_COLOR, cbjstore); RingTone[i] = 20; SetPlayerCheckpoint(i,rm2x,rm2y,rm2z, 8.0); } То что выделено Красным написано изначально не правельно, гоночный чекпоинт(он же маркер на карте)для ментов, даеться всё время в одном и том же месте, в какой-то сельской местносте. Пробовал сделать по анологии как в обычном PEN1, но там абсолютно другая система гонок... Что же всетаки нужно написать вместо строки выделеной Красным?
Сообщение отредактировал Rabbit - Вторник, 05.05.2009, 17:20
Relax, благодарю, но я так понял что число не может зайти за предел 254(166+88), а ID автомобилей начинаються с 400!!!
там перебераются порядковые номера тачек на серве, а не "общие" ид тачек так что максимальное число там не должно быть меньше 1 и не больше максимального колва тачек у тебя на серве.
Как можно сделать, что б тогда, когда игрок портиться в тюнинг на домашней машине при помощи /modcar, /modst, /modlr, при выезде из тюнинга его портило обратно к дому и при команде /exit тоже. Как-то странно, в этих командах есть функия GameTextForPlayer(playerid, "~w~To Exit type ~r~/exit~n~-$1000", 5000, 1); только вот толку нету, когда в Тюненге /exit набираешь...