я не знаю как исправить:( кр4 не помогайте мне
я не знаю как исправить:( кр4 не помогайте мне
Разрабатываю свой собственный мод State RolePlay Mysql R38
Ну так пробуй и учись. Думаешь, знания сами по себе появятся?
Почитай о том, как работать с функцией printf. Посмотри на то, как я сделал логирование. А дальше просто найди создание переменных "X12,Y12, Z12" и начинай логировать все случаи, когда в них так или иначе изменяется значение. Таким образом ты найдёшь место, где данные "портятся". А дальше уже будем искать причину, по которой они портятся.
Тут никто не желает бесплатно выполнять за тебя работу. Помочь с изучением языка или решением проблемы - пожалуйста. Но только если ты продемонстрируешь, что сам заинтересован в этом и прикладываешь к этому усилия, а не просто приходишь на форум и говоришь: "я вот не умею, поэтому сделайте за меня".
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Dima_Tushin (19.06.2019)
Понял спасибо сейчас все действия буду логировать
Разрабатываю свой собственный мод State RolePlay Mysql R38
нашел 2 ошибки:
начнем пожалуй с таймера
после чего как поставил я автомобиль вылетело в логахPHP код:
if(SbotTime_2[i] > 0)
{
SbotTime_2[i] --;
printf("SbotTime_2: %d", SbotTime_2[i]);
if(SbotTime_2[i] == 0)
{
new randoms = random(sizeof(SborFerm_1));
printf("SborFerm_1[0]: %f, SborFerm_1[1]: %f, SborFerm_1[2]: %f",SborFerm_1[randoms][0], SborFerm_1[randoms][1], SborFerm_1[randoms][2]);
if(IsPlayerInRangeOfPoint(i, 10.0, SborFerm_1[randoms][0], SborFerm_1[randoms][1], SborFerm_1[randoms][2]))
{
new carid = GetPlayerVehicleID(i);
new pID = GetFarmCar(i);
new string[30+MAX_PLAYER_NAME-2];
GetVehiclePos(carid, X12, Y12, Z12);
static const ferm[] = "Загруженно\n%d / 1000";
format(string, sizeof(string), ferm, FermInfo[f][fNytriCar][pID]);
//GetXYInFrontOfPlayer(i, X12, Y12, -3.0);
GetXYInFrontOfPlayer(i, X12, Y12, -3.0);
FermPickup[pID] = CreateDynamicPickup(19197, 23, X12, Y12, Z12+3);
FermText3D[pID] = Create3DTextLabel(string, COLOR_YELLOW, X12, Y12, Z12+3, 15.0, 0, 1);
SendClientMessage(i, COLOR_WHITE, "{0289CC}Машина на месте. Теперь вы и ваши рабочие, могут загружать её");
SendClientMessage(i, COLOR_WHITE, "{0289CC}Если решите завершить сбор урожая, /fpanel [9] завершить сбор урожая");
// GetVehicleParamsEx(carid, engine, lights, alarm, doors, bonnet, boot, objective);
// SetVehicleParamsEx(carid, VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective);
// zavodis[i] = false;
DisablePlayerCheckpoint(i);//Удаляем чекпоинт!
printf("FERMA: 1 / %f, %f, %f\n", X12,Y12, -3.0);
return 1;
}
}
}
все нормально это пикап сзади машины координатыPHP код:
[21:26:58] FERMA: 1 / -1065.659179, -959.688354, -3.000000
теперь как только я взял пикап у машины у меня вылетело вот куда координаты для взятие куста
PHP код:
[21:27:37] FERMA: 1 / -996858624.000000, -999124160.000000, 129.208770
и теперь 2 ошибка это сами автомобили кары фермыPHP код:
if(pickupid == FermPickup[2] || pickupid == FermPickup[3])
{
for(new f = 0; f < sizeof(FermInfo); f++)
{
if(PlayerKist[playerid] == true)
{
new pID = GetFarmPickup(pickupid);
if(FermInfo[f][fNytriCar][pID] > 1000)//Если в машине меньше 1000 зерен то...
{
if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
new string[30+MAX_PLAYER_NAME-2];
FermInfo[f][fNytriCar][pID] = 1000;
SendClientMessage(playerid, COLOR_WHITE, "Грузовик полон!");
static const ferm_1[] = "Загруженно\n{ffffff}%d / 1000";
format(string, sizeof(string), ferm_1, FermInfo[f][fNytriCar][pID]);
DisablePlayerCheckpoint(playerid);
PlayerKist[playerid] = false;
}
else
{
if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
new string[50+MAX_PLAYER_NAME-2];
FermInfo[f][fZaseeno] -= 5;//Отнимаем -5 засеености!
FermInfo[f][fNytriCar][pID] += 5;//Загрузили +5 зерен!
FermZarabotok[1] += FermInfo[f][fPayday];//Прибовляем заработок
static const ferm[] = "~b~count:~w~+%d$";
format(string, sizeof(string), ferm, FermZarabotok[1]);
GameTextForPlayer(playerid, string, 3000, 1);
DisablePlayerCheckpoint(playerid);//Удалили чекпоинт
//GetXYInFrontOfPlayer(playerid, FarmX, FarmY, FarmZ);
//SetPlayerCheckpoint(playerid, FarmX+random(2)+3, FarmY+random(2)+3, FarmZ, 2.0);
GetXYInFrontOfPlayer(playerid, X12, Y12, Z12);
X12+=random(2);
Y12+=random(2);
SetPlayerCheckpoint(playerid, X12,Y12, Z12, 2.0);
printf("FERMA: 1 / %f, %f, %f\n", X12,Y12, Z12);
static const ferm_1[] = "Загруженно\n{ffffff}%d / 1000";
format(string, sizeof(string), ferm_1, FermInfo[f][fNytriCar][pID]);
Update3DTextLabelText(FermText3D[pID], COLOR_YELLOW, string);
PlayerKist[playerid] = false;
if(gettime() - GetPVarInt(playerid, "BotFarm") < 20)
{
if(GetPVarInt(playerid, "BotCount") == 1)
{
if(GetPVarInt(playerid, "FludTime") < gettime())
{
static const ferm_2[] = "<<Warning>> Игрок %s[%d]: Возможно бот фермер";
format(string, sizeof(string), ferm_2, PlayerInfo[playerid][pName], playerid);
SendAdminMessage(COLOR_RED, string);
SetPVarInt(playerid, "BotCount", 0);
SetPVarInt(playerid,"FludTime",gettime()+10);
}
}
}
SetPVarInt(playerid, "BotFarm", gettime());
SetPVarInt(playerid, "BotCount", GetPVarInt(playerid, "BotCount") +1);
PlayerCheck[1] = true;
}
}
else
{
SendClientMessage(playerid, COLOR_GREEN, "{00D607} Для начала соберите урожай {FFFFFF}(( Встаньте на красный чекпоинт, и ждите 15 секунд ))");
SendClientMessage(playerid, COLOR_GREEN, "{00D607} Когда соберёте положите в кузов автомобиля {FFFFFF}(( Встаньте на желтую стрелку ))");
SendClientMessage(playerid, COLOR_GREEN, "{00D607} Если захотите завершить работу, пройдите к раздевалке {FFFFFF}(( Встаньте на синий пикап у фермы ))");
SendClientMessage(playerid, COLOR_GREEN, "{00D607} Если вы фермер, то просто сядьте в машину для завершения сбора урожая, /funload - разгрузить урожай");
DisablePlayerCheckpoint(playerid);
if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
//GetXYInFrontOfPlayer(playerid, FarmX, FarmY, FarmZ);
//SetPlayerCheckpoint(playerid, FarmX+random(2), FarmY+random(2), FarmZ, 2.0);
GetXYInFrontOfPlayer(playerid, X12, Y12, Z12);
X12+=random(2);
Y12+=random(2);
SetPlayerCheckpoint(playerid, X12,Y12, Z12, 2.0);
printf("FERMA: 1 / %f, %f, %f\n", X12,Y12, Z12);
PlayerKist[playerid] = false;
PlayerCheck[1] = true;
return 1;
}
}
например:
Farm0: есть 2 кары у них когда садишься вылезает диалог
потом как выхожу и опять сажусь у меня вылезает вот такой диалогPHP код:
ShowPlayerDialog(playerid, 39, DIALOG_STYLE_MSGBOX, "\n", "Вы хотите начать сбор урожая?", "Да", "Нет");
теперь переходим на Farm1:PHP код:
ShowPlayerDialog(playerid, 40, DIALOG_STYLE_MSGBOX, "\n", "Вы хотите завершить сбор урожая?", "Да", "Нет");
как только я сажусь в машину любую фермы 1 то у меня вылезает диалог
Все правильно но как только я вылезаю и сажусь обратно у меня должен вылетать вот этот диалогPHP код:
ShowPlayerDialog(playerid, 39, DIALOG_STYLE_MSGBOX, "\n", "Вы хотите начать сбор урожая?", "Да", "Нет");
А на самом деле опять появляется вот этотPHP код:
ShowPlayerDialog(playerid, 40, DIALOG_STYLE_MSGBOX, "\n", "Вы хотите завершить сбор урожая?", "Да", "Нет");
Может суть ошибки вообще в автомобилях? незнаю вот что я заметил при выдачи логовPHP код:
ShowPlayerDialog(playerid, 39, DIALOG_STYLE_MSGBOX, "\n", "Вы хотите начать сбор урожая?", "Да", "Нет");
Разрабатываю свой собственный мод State RolePlay Mysql R38
Так а какой проверкой ты проверяешь, запущен ли сбор урожая для машины? Ну по какому условию показываешь диалоги, которые сейчас не работают. Вот в этом условии переменная, с которой всё сравнивается, реализована как-то не так (либо не продублировал её под новые фермы, либо продублировал неправильно)
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Dima_Tushin (19.06.2019)
я эту проблему сейчас буду переделывать заново.
Найду ошибку еще напишу обязательно в теме.
- - - Добавлено - - -
Решил вопрос вот таким действием
в пикапе убрал проверку
и заменил проверку позиции на игрока и поставил рандом чекпоинт ГОТОВО все заработало мне кажется дело было в функцииPHP код:
GetXYInFrontOfPlayer(playerid, X, Y, Z);
но странно почему на ферме 0 все работало а на другой нет вот это будет для меня загадка)PHP код:
GetXYInFrontOfPlayer
Ладно спасибо DeimoS что помогал мне если что обращусь еще)
Последний раз редактировалось Dima_Tushin; 19.06.2019 в 19:50.
Разрабатываю свой собственный мод State RolePlay Mysql R38
помогите хочу сделать проверку на ID фермы.
когда купил ферму 0 например еду на ферму 1 и сажусь спокойно в машины фермы 1.
как сделать проверку?
Разрабатываю свой собственный мод State RolePlay Mysql R38
Эмм, ну а как ты указываешь, что игрок купил именно ферму 0? Так и проверяй
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Подскажите как лучше оптимизировать код?
тут я сделал проверки на владельца ферм,зама,фермера и если из других фермеров захочет угнать не получиться))
мне кажется тут по максимуму все оптимизировано главное что работает и я добился чего хотел)PHP код:
if(carid >= FermCarID[3] && carid <= FermCarID[4])
{
if(JobGO[playerid] == false)
{
SendClientMessage(playerid, COLOR_WHITE, "Вы не Фермер/Владелец/Заместитель!");
RemovePlayerFromVehicle(playerid);
return 1;
}
for(new f = 0; f < sizeof(FermInfo); f++)
{
switch(PlayerInfo[playerid][pFarm])
{
case 1://проверка на владельца
{
if(FarmJob[playerid] == false)
{
ShowPlayerDialog(playerid, 52, DIALOG_STYLE_MSGBOX, "\n", "Вы хотите начать сбор урожая?", "Да", "Нет");
return 1;
}
else if(FarmJob[playerid] == true)
{
ShowPlayerDialog(playerid, 53, DIALOG_STYLE_MSGBOX, "\n", "Вы хотите завершить сбор урожая?", "Да", "Нет");
return 1;
}
switch(PlayerInfo[playerid][pFarmJob])//проверка на фермера/зама
{
case 1, 2:
{
if(FarmJob[playerid] == false)
{
ShowPlayerDialog(playerid, 52, DIALOG_STYLE_MSGBOX, "\n", "Вы хотите начать сбор урожая?", "Да", "Нет");
return 1;
}
else if(FarmJob[playerid] == true)
{
ShowPlayerDialog(playerid, 53, DIALOG_STYLE_MSGBOX, "\n", "Вы хотите завершить сбор урожая?", "Да", "Нет");
return 1;
}
}
default:
{
SendClientMessage(playerid, COLOR_WHITE, "Вы не Фермер/Владелец/Заместитель!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
default:
{
SendClientMessage(playerid, COLOR_WHITE, "Вы не Фермер/Владелец/Заместитель!");
RemovePlayerFromVehicle(playerid);
return 1;
}
}
}
return 1;
}
Последний раз редактировалось Dima_Tushin; 22.06.2019 в 00:19.
Разрабатываю свой собственный мод State RolePlay Mysql R38
Лучше делать вот так:PHP код:
if(FarmJob[playerid] == false)
else if(FarmJob[playerid] == true)
Смысл получится тот же, но в твоём варианте сервер будет два раза получать значение FarmJob, а в моём - один.PHP код:
if(FarmJob[playerid] == false)
else
И не совсем понятно зачем у тебя там цикл, если ты, в итоге, никак с ним не работаешь, а определяешь всё через switch.
Код не идеален в плане оптимизации, но раз работает, то и не парься пока. Как опыта наберёшься, сможешь оптимизировать.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)