Вопросы

Gaiduk
Свой человек
Спойлер

CMD:lock(playerid, params[])
{
    if(GetPVarInt(playerid, "logged") == 0) return 1;
	extract params -> new type; else return Send(playerid, 0xFFCC00AA, "•[Подсказка] {ffffff}Введите: /lock [тип]"),  Send(playerid, 0xFFCC00AA, "•[Подсказка] {ffffff}1 - личный транспорт | 2 - арендованнный транспорт");
	new vehicleid = -1;
	
	if(type == 1)
	{
		return LockOwnableCar(playerid);
	}
	else if(type == 2)	
	{
		if(player_job_vehicle_created[playerid] == -1) return Send(playerid, 0x999999FF, "У Вас нет арендованной машины");
	
		vehicleid = player_job_vehicle_created[playerid];
		PlayerPlaySound(playerid, 24600, 0.0, 0.0, 0.0);
	}
	else 
		return Send(playerid, 0xFFCC00AA, "•[Подсказка] {ffffff}Введите: /lock [номер транспорта]"), Send(playerid, 0xFFCC00AA, "•[Подсказка] {ffffff}1 - личный транспорт | 2 - рабочий транспорт");
	
	if(vehicleid == -1) return 1;
	
	new Float:x, Float:y, Float:z;
	GetVehiclePos(vehicleid, x, y, z);
	if(!IsPlayerInRangeOfPoint(playerid, 20.0, x, y, z)) return Send(playerid, 0x999999FF, "Вы должны стоять рядом с транспортом");
	
	new engine, lights, alarm, doors, bonnet, boot, objective, set_doors;
	GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
	
	SetVehicleParamsEx(vehicleid, engine, lights, alarm, set_doors, bonnet, boot, objective);

 	if(IsPlayerInAnyVehicle(playerid))
 		UpdatePlayerSpeedTD(playerid);

	return 1; 
}

 

 

Поделиться сообщением


Ссылка на сообщение

12 ответов на этот вопрос

  • 0

@Gaiduk В следующий раз такая тема будет закрыта. Описывайте вопрос подробней, что именно не получается? Что, при вводе команды, отправляется в чат? 

Поделиться сообщением


Ссылка на сообщение
  • 0

После 

В 07.07.2018 в 14:32, Gaiduk сказал:

CMD:lock(playerid, params[]) {

добавьте

printf("[#DEBUG] %d - logged", GetPVarInt(playerid, "logged")); 

после введите команду на сервере и скиньте логи. 

Поделиться сообщением


Ссылка на сообщение
  • 0
Gaiduk
Свой человек

@DEST 

Спойлер

[21:20:06] [debug] Run time error 4: "Array index out of bounds"
[21:20:06] [debug]  Attempted to read/write array element at index 87 in array of size 50
[21:20:06] [debug] AMX backtrace:
[21:20:06] [debug] #0 0029c3c4 in public CreateOwnableCar (playerid=0, ownerid=1, number[]=@0043d858 "-1", modelid=401, color_1=1, color_2=0, Float:pos_x=1894.87964, Float:pos_y=2269.41895, Float:pos_z=15.53300, Float:angle=179.13541, lock=0, Float:mileage=0.00000, Float:fuel=100.00000, Float:health=1000.00000, weels=0, nitro=0, cost_car_=150000) at C:\Users\Windows\Desktop\ATTRACT RP v1\gamemodes\a_rp.pwn:25256
[21:20:06] [debug] #1 0029bbac in public LoadMyCar (playerid=0) at C:\Users\Windows\Desktop\ATTRACT RP v1\gamemodes\a_rp.pwn:25167
[21:20:19] [#DEBUG] 1 - logged
[21:20:19] [debug] Run time error 4: "Array index out of bounds"
[21:20:19] [debug]  Attempted to read/write array element at index 87 in array of size 50
[21:20:19] [debug] AMX backtrace:
[21:20:19] [debug] #0 0029663c in IsAOwnableCar (vehicleid=86) at C:\Users\Windows\Desktop\ATTRACT RP v1\gamemodes\a_rp.pwn:24542
[21:20:19] [debug] #1 00296844 in LockOwnableCar (playerid=0) at C:\Users\Windows\Desktop\ATTRACT RP v1\gamemodes\a_rp.pwn:24554
[21:20:19] [debug] #2 00214f0c in public pc_cmd_lock (playerid=0, params[]=@00439920 "1") at C:\Users\Windows\Desktop\ATTRACT RP v1 RP\gamemodes\a_rp.pwn:14581

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@Gaiduk скидывайте функции 

3 часа назад, Gaiduk сказал:

IsAOwnableCar / 24542

 

3 часа назад, Gaiduk сказал:

LockOwnableCar / 24554

 и пометьте в них строки, которые указал выше. 

Поделиться сообщением


Ссылка на сообщение
  • 0
Gaiduk
Свой человек

@DEST 

Спойлер

stock IsAOwnableCar(vehicleid)
{
	new index = vehicleid - ownable_car_id[0];
	printf("[#DEBUG] %d - logged", GetPVarInt(playerid, "logged"));
	return (ownable_car[index][oc_owner_id] != 1) ? (true) : (false);
}

stock LockOwnableCar(playerid)
{
	new vehicleid = player_ownable_car[playerid];

	new Float:x, Float:y, Float:z;
	GetVehiclePos(vehicleid, x, y, z);
	
	if(!IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z)) return Send(playerid, 0x999999FF, "Âû äîëæíû ñòîÿòü ðÿäîì ñ òðàíñïîðòîì");
	printf("[#DEBUG] %d - logged", GetPVarInt(playerid, "logged"));
	if(!IsAOwnableCar(vehicleid)) return 1;
	
	new index = vehicleid - ownable_car_id[0];

	new set_doors;
	if(ownable_car[index][oc_lock_status])
	{
		set_doors = 0;
		ownable_car[index][oc_lock_status] = false;
		GameTextForPlayer(playerid, "~g~UNLOCK", 3, 3000);
		Send(playerid, -1, "unlock");
		PlayerPlaySound(playerid, 24600, 0.0, 0.0, 0.0);
	}
	else
	{
		set_doors = 1;
		ownable_car[index][oc_lock_status] = true;
		GameTextForPlayer(playerid, "~r~LOCK", 3, 3000);
		Send(playerid, -1, "lock");
		PlayerPlaySound(playerid, 24600, 0.0, 0.0, 0.0);
	}
	
	new engine, lights, alarm, doors, bonnet, boot, objective;
	GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
	SetVehicleParamsEx(vehicleid, engine, lights, alarm, set_doors, bonnet, boot, objective);
	return 1;
}
Спойлер


[01:05:22] [debug] Run time error 4: "Array index out of bounds"
[01:05:22] [debug]  Attempted to read/write array element at index 87 in array of size 50
[01:05:22] [debug] AMX backtrace:
[01:05:22] [debug] #0 0029c72c in public CreateOwnableCar (playerid=0, ownerid=1, number[]=@0043d868 "-1", modelid=401, color_1=1, color_2=0, Float:pos_x=1894.87964, Float:pos_y=2269.41895, Float:pos_z=15.53300, Float:angle=179.13541, lock=0, Float:mileage=0.00000, Float:fuel=100.00000, Float:health=1000.00000, weels=0, nitro=0, cost_car_=150000) at C:\Users\Windows\Desktop\ATTRACT RP v1\gamemodes\a_rp.pwn:25242
[01:05:22] [debug] #1 0029bf14 in public LoadMyCar (playerid=0) at C:\Users\Windows\Desktop\ATTRACT RP v1\gamemodes\a_rp.pwn:25153
[01:05:49] [#DEBUG] 1 - logged
[01:05:49] [#DEBUG] 1 - logged
[01:05:49] [debug] Run time error 4: "Array index out of bounds"
[01:05:49] [debug]  Attempted to read/write array element at index 87 in array of size 50
[01:05:49] [debug] AMX backtrace:
[01:05:49] [debug] #0 00296930 in IsAOwnableCar (vehicleid=86) at C:\Users\Windows\Desktop\ATTRACT RP v1\gamemodes\a_rp.pwn:24528
[01:05:49] [debug] #1 00296bac in LockOwnableCar (playerid=0) at C:\Users\Windows\Desktop\ATTRACT RP v1\gamemodes\a_rp.pwn:24540
[01:05:49] [debug] #2 002151e4 in public pc_cmd_lock (playerid=0, params[]=@00439930 "1") at C:\Users\Windows\Desktop\ATTRACT RP v1\gamemodes\a_rp.pwn:14577
[01:05:52] [debug] Run time error 4: "Array index out of bounds"
[01:05:52] [debug]  Attempted to read/write array element at index 87 in array of size 50
[01:05:52] [debug] AMX backtrace:
[01:05:52] [debug] #0 00194d88 in public SSCANF_OnPlayerDisconnect (playerid=0, reason=1) at C:\Users\Windows\Desktop\ATTRACT RP v1\gamemodes\a_rp.pwn:2044
[01:05:52] [debug] #1 native CallLocalFunction () from samp-server-cr.exe
[01:05:52] [debug] #2 000021b0 in public Iter_OnPlayerDisconnect (playerid=0, reason=1) at C:\Users\Windows\Desktop\ATTRACT RP v1\pawno\include\../include/sscanf2.inc:143
[01:05:52] [debug] #3 native CallLocalFunction () from samp-server-cr.exe
[01:05:52] [debug] #4 00001114 in public OnPlayerDisconnect (playerid=0, reason=1) at C:\Users\Windows\Desktop\ATTRACT RP v1\pawno\include\../include/foreach.inc:641

 

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0

@Gaiduk зачем вы везде эту строку добавляли 

В 10.07.2018 в 01:08, Gaiduk сказал:

printf("[#DEBUG] %d - logged", GetPVarInt(playerid, "logged"));

если было указано, что ее нужно только в начало команды. Эту строку можно удалить. 

По поводу проблемы: команда не работает, так как в скинутых вами функциях выход за пределы массива. Скорее всего в строчках 

В 10.07.2018 в 01:08, Gaiduk сказал:

(ownable_car[index][oc_owner_id] != 1)

 

В 10.07.2018 в 01:08, Gaiduk сказал:

if(ownable_car[index][oc_lock_status])

 

В 10.07.2018 в 01:08, Gaiduk сказал:

ownable_car[index][oc_lock_status] = false;

 

В 10.07.2018 в 01:08, Gaiduk сказал:

ownable_car[index][oc_lock_status] = true;

 

Скиньте еще этот массив ownable_car

Поделиться сообщением


Ссылка на сообщение
  • 0
Gaiduk
Свой человек

@Gaiduk

Спойлер

forward CreateOwnableCar(playerid, ownerid, number[], modelid, color_1, color_2, Float: pos_x, Float: pos_y, Float: pos_z, Float: angle, lock, Float:mileage, Float:fuel, Float: health, weels, nitro, cost_car_);
public CreateOwnableCar(playerid, ownerid, number[], modelid, color_1, color_2, Float: pos_x, Float: pos_y, Float: pos_z, Float: angle, lock, Float:mileage, Float:fuel, Float: health, weels, nitro, cost_car_)
{
	player_ownable_car[playerid] = CreateVehicle(modelid, pos_x, pos_y, pos_z, angle, color_1, color_2, -1);
	
	new vehicleid = player_ownable_car[playerid];
	new index = vehicleid - ownable_car_id[0];

	if(1 <= vehicleid <= MAX_VEHICLES)
		vehicle_broken_engine[vehicleid] = false;
		
	ownable_car_id[index] = vehicleid;
	
	ownable_car[index][oc_owner_id] = 		ownerid;
	
	new n_text[32];
	format(n_text, sizeof n_text, "%s", number);
	
	if(strval(n_text) == -1) ownable_car[index][oc_number] = -1, ownable_car_label[index] = CreateDynamic3DTextLabel("[ НЕТ НОМЕРОВ]", 0xFFFFFFFF, 0.0, 0.0, 0.0, 15.0, _, vehicleid);		
	else format(ownable_car[index][oc_number], 32, "%s", number), ownable_car_label[index] = CreateDynamic3DTextLabel(ownable_car[index][oc_number], 0xFFFFFFFF, 0.0, 0.0, 0.0, 15.0, _, vehicleid);

	ownable_car[index][oc_modelid] = 	modelid;
	ownable_car[index][oc_color_1] = 	color_1;
	ownable_car[index][oc_color_2] = 	color_2;
	
	ownable_car[index][oc_lock_status] =	bool: lock;
	
	ownable_car[index][oc_mileage] =		mileage;
	
	ownable_car[index][tun_weels] =		weels;
	ownable_car[index][tun_nitro] = 	nitro;
	
	ownable_car[index][cost_car] =		cost_car_;
	
	if(ownable_car[index][tun_weels] != 0) AddVehicleComponent(vehicleid, ownable_car[index][tun_weels]);
	if(ownable_car[index][tun_nitro] != 0) AddVehicleComponent(vehicleid, ownable_car[index][tun_nitro]);

	new engine, lights, alarm, doors, bonnet, boot, objective;
	GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
	SetVehicleParamsEx(vehicleid, 0, lights, alarm, ownable_car[index][oc_lock_status], bonnet, boot, objective);

	if(fuel < 0.0)
		fuel = 0.0;
		
	if(health < 400)
		health = 400;
	
	vehicle[vehicleid][veh_fuel] = fuel;
	SetVehicleHealth(vehicleid, health);
	
	return vehicleid;
}
//=========================================================================================================================================================

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Gaiduk
Свой человек

@DEST,

Спойлер

forward CreateOwnableCar(playerid, ownerid, number[], modelid, color_1, color_2, Float: pos_x, Float: pos_y, Float: pos_z, Float: angle, lock, Float:mileage, Float:fuel, Float: health, weels, nitro, cost_car_);
public CreateOwnableCar(playerid, ownerid, number[], modelid, color_1, color_2, Float: pos_x, Float: pos_y, Float: pos_z, Float: angle, lock, Float:mileage, Float:fuel, Float: health, weels, nitro, cost_car_)
{
	player_ownable_car[playerid] = CreateVehicle(modelid, pos_x, pos_y, pos_z, angle, color_1, color_2, -1);
	
	new vehicleid = player_ownable_car[playerid];
	new index = vehicleid - ownable_car_id[0];

	if(1 <= vehicleid <= MAX_VEHICLES)
		vehicle_broken_engine[vehicleid] = false;
		
	ownable_car_id[index] = vehicleid;
	
	ownable_car[index][oc_owner_id] = 		ownerid;
	
	new n_text[32];
	format(n_text, sizeof n_text, "%s", number);
	
	if(strval(n_text) == -1) ownable_car[index][oc_number] = -1, ownable_car_label[index] = CreateDynamic3DTextLabel("[ НЕТ НОМЕРОВ]", 0xFFFFFFFF, 0.0, 0.0, 0.0, 15.0, _, vehicleid);		
	else format(ownable_car[index][oc_number], 32, "%s", number), ownable_car_label[index] = CreateDynamic3DTextLabel(ownable_car[index][oc_number], 0xFFFFFFFF, 0.0, 0.0, 0.0, 15.0, _, vehicleid);

	ownable_car[index][oc_modelid] = 	modelid;
	ownable_car[index][oc_color_1] = 	color_1;
	ownable_car[index][oc_color_2] = 	color_2;
	
	ownable_car[index][oc_lock_status] =	bool: lock;
	
	ownable_car[index][oc_mileage] =		mileage;
	
	ownable_car[index][tun_weels] =		weels;
	ownable_car[index][tun_nitro] = 	nitro;
	
	ownable_car[index][cost_car] =		cost_car_;
	
	if(ownable_car[index][tun_weels] != 0) AddVehicleComponent(vehicleid, ownable_car[index][tun_weels]);
	if(ownable_car[index][tun_nitro] != 0) AddVehicleComponent(vehicleid, ownable_car[index][tun_nitro]);

	new engine, lights, alarm, doors, bonnet, boot, objective;
	GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
	SetVehicleParamsEx(vehicleid, 0, lights, alarm, ownable_car[index][oc_lock_status], bonnet, boot, objective);

	if(fuel < 0.0)
		fuel = 0.0;
		
	if(health < 400)
		health = 400;
	
	vehicle[vehicleid][veh_fuel] = fuel;
	SetVehicleHealth(vehicleid, health);
	
	return vehicleid;
}
//=========================================================================================================================================================
 

 

 

 

Отредактировано пользователем Gaiduk

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Дебилойд
      От Дебилойд
      Здравствуйте!
      Мы ищем талантливого 3D-моделлера в команду нашего CRMP-проекта!
      Что нужно будет делать:
      Моделировать и адаптировать автомобили.
      Создавать и настраивать скины (модели персонажей).
      Большим плюсом будет:
      Умение создавать качественные и оптимизированные интерьеры.
      Если вы хотите стать частью нашей команды и развивать проект вместе с нами, пишите в ЛС. Ждем ваши портфолио!
    • LORDIKUS
      От LORDIKUS
      Уважаемые участники форума - всех приветствую, кто перешел в беседу моей темы обсуждения. В настоящее время у меня зарождается огромное желание и мысль создать собственный CR:MP проект, но столкнулся с единственной проблемой - с отсутствием команды людей, у которых будет искреннее желание ежедневно вкладывать свой труд на разработку проекта. Особого опыта в скриптинге, маппинге, дизайне или в моделировании у меня не имеется, поэтому такой критерий как опыт в определенной сфере для желающих вступить в команду я не рассматриваю. Так как проект не открыт и находится на начальной стадии создания, мое сотрудничество выстраивается на некоммерческой основе (без выплаты за проделанную работу и труд), однако я не собираюсь отрицать высокую ценность вложенного командой труд — труд, особенно на первой стадии разработки я рассматриваю превыше всего. После открытия проекта в зависимости от коммерции и чистой прибыли каждый участник будет получать настоящую выплату, однако это также может убить еще значительное время. Мне нужна команда, которая проявит искренний интерес в создании общего между командой CR:MP проекта, пожертвует свое время, а также вложит собственный труд благодаря заработанным навыкам. Если вас заинтересовала данная тема обсуждения, пожалуйста, свяжитесь со мной по любым возможным и удобным для вас контактам связи ниже. Спасибо всем, кто зашел в мою беседу!

      🔗 Спец. Связь:
      — DISCORD: https://discord.com/users/1452715348196589691 (перейти по ссылке и добавить в друзья) ИЛИ _shin833_ (ввести никнейм и отправить запрос дружбы)
      — VK: https://vk.com/shin833
      — TG: https://t.me/s_hin833
    • Korochansky
      От Korochansky
      Настало время объявить о скором выпуске первого релиза среды разработки под названием Spawn.

      В настоящее время программа находится на заключительных этапах доработки кода и локализации интерфейса.
      Таким образом, в течение следующей недели будет выпущена быстрая и современная среда разработки, обладающая следующими возможностями (о которых я расскажу сейчас, а о других — позже):
       
      Полнофункциональный локальный Git: 
      Индексирование, фиксации, индикаторы состояния и мягкий/жесткий сброс до любой точки сохранения одним щелчком мыши. Разрабатывайте свой игровой сервер, не боясь его сломать.
      Новички могут рассматривать это как историю кодовой базы вашего сервера (что и есть на самом деле).
       
      Чистый UTF-8 (без BOM): 
      Полный отказ от устаревшей кодировки Windows-1251 (CP1251) для абсолютной стабильности и идеальной совместимости с Git.
      Реализация поддержки CP1251 привела бы к нестабильному поведению программы и ухудшила бы пользовательский опыт.
       
      История изменений строк: Редактор выделяет измененные строки в реальном времени в полях рядом с номерами строк. Это позволяет мгновенно видеть границы изменений, внесенных с момента открытия файла.
       
      Сопоставление и выделение фигурных скобок: мгновенное выделение открывающих и закрывающих фигурных скобок для быстрой навигации по структуре кода и защиты от ошибок компиляции.
       
      Интеграция с SAMPCTL: готовая к использованию автоматизация процессов. Сборка, запуск сервера и менеджер зависимостей (управление библиотеками и плагинами) работают напрямую из интерфейса редактора.
       
      И многое другое...
       
      И самое главное: проект будет с открытым исходным кодом под лицензией GPLv3!
      Следите за новостями о выпуске в репозитории: https://github.com/daniilkorochansky/spawn
    • KodBi
      От KodBi
      шапка
      по одиночке работают
      нужны оба