В моде попутаны иды машин -
stabker - 01.04.2012
Здравствуйте!
Вообщем у меня такая проблема: в моем РП моде попутаны иды машин, а именно при destroy'e определенной машины ид которой записан в переменную, удаляется еще одна (может и больше). Незнаю почему так, сделал вывод что айди машин попутаны и совпадают. Очень долго мучаюсь с этой проблемой, немогу никак решить.
Кто подскажет, что можно сделать?
Заранее спасибо!
Re: В моде попутаны иды машин -
Stepashka - 01.04.2012
42__
Re: В моде попутаны иды машин -
jhonyxakep - 02.04.2012
У вас массив с идами машин? Код пж-ста
Профит!
Re: В моде попутаны иды машин -
stabker - 02.04.2012
jhonyxakep, нет, не масив. Путаются не иды моделей, а именно иды транспорта
Re: В моде попутаны иды машин -
devil77771 - 02.04.2012
Ты свою проблему грамотнее изложи, не?
Re: В моде попутаны иды машин -
ZiGGi - 02.04.2012
Насколько я помню, в гф создаётся куча машин, а потом просто делаются проверки такого вида: if (vehicleid > 30 && vehicleid < 36) (вроде даже в отдельные функции не вынесено>_<)
Поэтому, автор, забей, ты не исправишь это.
Re: В моде попутаны иды машин -
Hawkins - 02.04.2012
Quote:
Originally Posted by ZiGGi
Насколько я помню, в гф создаётся куча машин, а потом просто делаются проверки такого вида: if (vehicleid > 30 && vehicleid < 36) (вроде даже в отдельные функции не вынесено>_<)
Поэтому, автор, забей, ты не исправишь это.
|
Через переменную можно
Re: В моде попутаны иды машин -
stabker - 02.04.2012
Quote:
Ты свою проблему грамотнее изложи, не?
|
Постараюсь. Вообщем так, почти все созданные машины записываются в переменные типо
grovecar[число] = CreateVehicle....
Тоесть в grovecar[число] записан ид тачки. Также создаются личные авто, авто всех работ и т.д. (серв РП, но это не важно). И вот эти иды записаные в переменных совпадают с другими.
А теперь расскажу чем мне это мешает.
В OnPlayerEnterVehicle стоит у меня проверка на машину. Если это к примеру машина фракции в которой я не состою то при входе будет писать "вы не член бла-бла-бла". А вот если ид например совпал с чьей-то личной машиной, при входе в нее будет писать тоже самое! Либо если совпали иды 2х личных машин, при fix'e (обновлении) одной, вторая тоже пропадет. Вообщем вот вся проблема, то что они часто совпадают и когда владелец обновляет личый транспорт пропадает посреди дороги еще у кого-то.
Если не ясно рассказал, могу написать кратко и понятней.
P.S. Проверка не именно по иду, а по иду в переменной, тоесть не
vehicleid == 35, а peremennaya == 35 по этому думаю проблема не в этом что говорит
ZiGGi
Re: В моде попутаны иды машин -
OKStyle - 02.04.2012
А диапазон ID как проверяется? Может быть вместо > стоит >= или с < то же самое...
Re: В моде попутаны иды машин -
stabker - 02.04.2012
Quote:
Originally Posted by OKStyle
А диапазон ID как проверяется? Может быть вместо > стоит >= или с < то же самое...
|
Если к примеру у меня 10 машин car[10] то проверка будет такая: if(newcar >= car[0] && newcar <= car[9]) и так везде.
Но суть же не в проверке? Причем она тут если машины совпадают и те которые не в фракциях, а личные
Есть вариант что не соблюдается порядок при создании машин. Тоесть переменная для личных машин (у меня new caridhouse[MAX_PLAYERS]) объявлена выше переменных для тех машин, которые в игре создаются первее личных.
Ходил по форуму, вот у
Gettopro аналогичная проблема
https://sampforum.blast.hk/showthread.php?tid=325033
P.S. На многих русскоязычных форумах сидел, помощи нигде так и не нашел...
Re: В моде попутаны иды машин -
Stepashka - 13.04.2012
Зря используешь
AddStaticVehicleEx для динамических машин, используй
CreateVehicle.
В команде "/fixcar" есть вероятность что ты удалишь чужую машину.
caridhouse[playerid] = 0; ->
caridhouse[playerid] = INVALID_VEHICEL_ID;
В остальном вроде все верно, может проблема в других машинах?
Re: В моде попутаны иды машин -
stabker - 13.04.2012
Quote:
Originally Posted by Stepashka
Зря используешь AddStaticVehicleEx для динамических машин, используй CreateVehicle.
В команде "/fixcar" есть вероятность что ты удалишь чужую машину.
caridhouse[playerid] = 0; -> caridhouse[playerid] = INVALID_VEHICEL_ID;
В остальном вроде все верно, может проблема в других машинах?
|
А где ты вообще нашел в fixcar что я caridhouse = 0 присваиваю? Или в других случаях? Ну если ты об этом то не думаю что тут проблема. Т.к. я щас пишу обновления и тут на всякий случай уже поставил чтобы переменная обнулялась, еще даже не загружал. Ок, вместо обнуления поставлю INVALID_VEHICEL_ID
Такс... иду заменять AddStaticVehicleEx на CreateVehicle.
И вот на всякий случай паблик в котором я создаю машины. Глянь, мб что-то не так я тут сделал
PHP Code:
public CreateVehicles() //Машины сервера
{
lvpdcar[0] = AddStaticVehicleEx(598,2268.9678,2443.6958,10.5668,359.5409,44,1,900);
AddStaticVehicleEx(598,2273.5706,2443.7290,10.5665,0.6987,44,1,900);
AddStaticVehicleEx(598,2277.9482,2443.7490,10.5654,359.8027,44,1,900);
AddStaticVehicleEx(598,2282.1309,2443.7957,10.5660,359.7104,44,1,900);
AddStaticVehicleEx(598,2282.5002,2476.4595,10.5663,181.3129,44,1,900);
AddStaticVehicleEx(598,2277.6665,2476.5178,10.5670,180.8092,44,1,900);
AddStaticVehicleEx(598,2273.6030,2476.5684,10.5669,180.3357,44,1,900);
AddStaticVehicleEx(598,2268.8853,2476.6331,10.5663,179.7468,44,1,900);
AddStaticVehicleEx(598,2269.2004,2459.8330,10.5683,0.1298,44,1,900);
AddStaticVehicleEx(598,2273.3623,2459.5422,10.5661,178.7547,44,1,900);
AddStaticVehicleEx(598,2278.0513,2459.7075,10.5667,359.0662,44,1,900);
AddStaticVehicleEx(598,2281.9307,2459.4504,10.5672,180.7914,44,1,900);
AddStaticVehicleEx(599,2290.6970,2443.7861,11.0110,1.2899,44,1,900);
AddStaticVehicleEx(599,2260.5859,2476.3032,11.0123,180.0692,44,1,900);
lvpdcar[1] = AddStaticVehicleEx(497,2271.4736,2470.6799,38.8604,0.0013,44,1,900);
...
}
Re: В моде попутаны иды машин -
ZiGGi - 13.04.2012
Зачем записывать id каждого транспорта в собственный массив? Достаточно иметь массив на 2 ячейки и записывать туда первый и последний id транспорта.
Re: В моде попутаны иды машин -
stabker - 13.04.2012
Quote:
Originally Posted by ZiGGi
Зачем записывать id каждого транспорта в собственный массив? Достаточно иметь массив на 2 ячейки и записывать туда первый и последний id транспорта.
|
PHP Code:
new lvpdcar[2];
lvpdcar[0] = AddStaticVehicleEx(598,2268.9678,2443.6958,10.5668,359.5409,44,1,900);
AddStaticVehicleEx(598,2273.5706,2443.7290,10.5665,0.6987,44,1,900);
AddStaticVehicleEx(598,2277.9482,2443.7490,10.5654,359.8027,44,1,900);
AddStaticVehicleEx(598,2282.1309,2443.7957,10.5660,359.7104,44,1,900);
AddStaticVehicleEx(598,2282.5002,2476.4595,10.5663,181.3129,44,1,900);
AddStaticVehicleEx(598,2277.6665,2476.5178,10.5670,180.8092,44,1,900);
AddStaticVehicleEx(598,2273.6030,2476.5684,10.5669,180.3357,44,1,900);
AddStaticVehicleEx(598,2268.8853,2476.6331,10.5663,179.7468,44,1,900);
AddStaticVehicleEx(598,2269.2004,2459.8330,10.5683,0.1298,44,1,900);
AddStaticVehicleEx(598,2273.3623,2459.5422,10.5661,178.7547,44,1,900);
AddStaticVehicleEx(598,2278.0513,2459.7075,10.5667,359.0662,44,1,900);
AddStaticVehicleEx(598,2281.9307,2459.4504,10.5672,180.7914,44,1,900);
AddStaticVehicleEx(599,2290.6970,2443.7861,11.0110,1.2899,44,1,900);
AddStaticVehicleEx(599,2260.5859,2476.3032,11.0123,180.0692,44,1,900);
lvpdcar[1] = AddStaticVehicleEx(497,2271.4736,2470.6799,38.8604,0.0013,44,1,900);
Ты это имел ввиду? Если да то не плохо, что-то даже не думал что так можно сделать...
Re: В моде попутаны иды машин -
stabker - 13.04.2012
AddStaticVehicle(Ex)
Функция добавляет статичный транспорт, который не может быть удален.
Примечание: эту функцию можно использовать только внутри OnGameModeInit, в других автовызываемых функциях она работать не будет. Используйте CreateVehicle, чтобы создавать транспорт в процессе игры.
А у меня почти все машины которые создаются в процессе игры добавлены через AddStaticVehicle(Ex)... Уже заменил все на CreateVehicles, на днях обновлю. Если пропадать перестанут - плясать буду
Re: В моде попутаны иды машин -
stabker - 19.04.2012
Проблема решилась
Re: В моде попутаны иды машин -
Newcomer - 10.02.2013
Quote:
Originally Posted by stabker
Проблема решилась
|
Каким образом решил? У меня такая же беда.
Re: В моде попутаны иды машин -
stabker - 10.02.2013
Quote:
Originally Posted by Newcomer
Каким образом решил? У меня такая же беда. 
|
1. Если динамическая машина не создана или удалена, изменяй ее значение на INVALID_VEHICLE_ID.
2. Если удаляешь динамическую машину, делай тоже самое (в моем случае это были лишь личные тс).
3. Перед созданием машины проверяй, не создана ли она уже. Перед удалением соответственно, не удалена ли она уже (не равно ли значение ида машины в переменной значению INVALID_VEHICLE_ID).
Re: В моде попутаны иды машин -
Mexanizm93 - 10.02.2013
Спасибо.
Тоже интересовал такой вопрос.
Как то давно поднимал тему на другом форуме но толком не смог объяснить
Re: В моде попутаны иды машин -
Cherbet - 12.02.2013
Возможно у тебя превышен размер, то есть смотри:
Например у тебя grovecar это массив, а кол-во авто 6, так вот ставишь массив на grovecar[7];
и потом уже машины
grovecar[0] = AddStatisticVehicle...
grovecar[1] = AddStatisticVehicle...
grovecar[2] = AddStatisticVehicle...
grovecar[3] = AddStatisticVehicle...
grovecar[4] = AddStatisticVehicle...
grovecar[5] = AddStatisticVehicle...// Всего 6!
И проверка
if(carid >= grovecar[0] && grovecar[5] <= carid)// как то так, ну вот и проверка на них, и так все проверь авто