Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Проблема с CreateVehicle - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Pawn ]
Проблема с CreateVehicle Машина не спавнится.

#1
Пользователь офлайн   Freeman_VOS 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Добрый день, товарищи. Недавно начал изучать Pawn, поэтому пишу простенький мод.
Суть проблемы: я хотел написать функцию создания транспорта на диалогах. В результате этого процесса спавн транспорта не происходит.

В паблике я добавил вывод всех значений, которые происходят в этом процессе, в игру. Все значения выводятся, никаких проблем я не заметил. Но спавн транспорта все равно не происходит.

Includes:
#include <a_samp>
#include <a_players>
#include <a_vehicles>
#include <MXini>


Public OnDialogResponse():
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new trid;
    new col1;
    new col2;

// Тут лишний код...

	if (dialogid == 4)
		{
            if(response)
		    {
			    if(listitem == 0)
			    {
		                ShowPlayerDialog(playerid, 5, DSI,"Сумма денег","{FFFFFF}Введите необходимую сумму денег в поле ниже(максимум 9 цифр).","Ввод","Закрыть");
			    }
			    if(listitem == 1)
    			   {
	                       ShowPlayerDialog(playerid, 6, DSI,"Создание транспорта","Введите ID транспорта в поле ниже.","Ввод","Закрыть");
	    		   }
		    }
		    else
		    {
		        ShowPlayerDialog(playerid, 2, DSL,"Меню игрока","\n1.Cтатистика\n2.Отладка"
,"Выбор","Закрыть");
		    }
		}
// ...
	if (dialogid == 6)
		{
            if(response)
		    {
				new strtrid[5];
				new msg[30];
				strmid(strtrid, inputtext, 0, strlen(inputtext), sizeof(strtrid));
				trid = strval(strtrid);
				format(msg, sizeof(msg),"Установлен ID транспорта: %d", trid);
				SendClientMessage(playerid, COLOR_GREEN, msg);
				ShowPlayerDialog(playerid, 7, DSI,"Цвет 1","Введите первый цвет транспорта","Выбор","Закрыть");
		    }
		    else
		    {
		        ShowPlayerDialog(playerid, 2, DSL,"Меню игрока","\n1.Cтатистика\n2.Отладка"
,"Выбор","Закрыть");
		    }
		}
    if (dialogid == 7)
		{
            if(response)
		    {
				new strcol1[5];
				new msg[30];
				strmid(strcol1,inputtext,0,strlen(inputtext),sizeof(strcol1));
				col1 = strval(strcol1);
				format(msg, sizeof(msg),"Установлен первый цвет: %d", col1);
				SendClientMessage(playerid, COLOR_GREEN, msg);
				ShowPlayerDialog(playerid, 8, DSI,"Цвет 2","Введите второй цвет транспорта","Выбор","Закрыть");
		    }
		    else
		    {
		        ShowPlayerDialog(playerid, 2, DSL,"Меню игрока","\n1.Cтатистика\n2.Отладка"
,"Выбор","Закрыть");
		    }
		}
    if (dialogid == 8)
		{
            if(response)
		    {
				new strcol2[5];
				new Float:x;
				new Float:y;
				new Float:z;
				new msg[30];
				new position[50];
	            GetPlayerPos(playerid, x, y, z);
	            format(position, sizeof(position),"x = %f, y = %f, z = %f", x, y, z);
				strmid(strcol2,inputtext,0,strlen(inputtext),sizeof(strcol2));
				SendClientMessage(playerid, COLOR_WHITE, position);
				col2 = strval(strcol2);
				format(msg, sizeof(msg),"Установлен второй цвет: %d", col2);
				SendClientMessage(playerid, COLOR_GREEN, msg);
				new amg = CreateVehicle(trid, x+3.2000, y, z, 37.0911, col1, col2, -1);
		    }
		}
    return 1;
}



Сообщение отредактировал Freeman_VOS: 09 Ноябрь 2018 - 10:05

0

#2
Пользователь офлайн   lastomg3 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
Попробуй ка AddStaticVehicleEx
0

#3
Пользователь офлайн   Pa4enka 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
1. Позиция будет правильная, а вот цвет нет, потому что нужно все твои переменные в начале паблике надо вынести за OnDialogResponse. Сделать их глобальными.
2. Использовать strmid в паре strval бессмысленно и глупо. Используй сразу strval(inputtext).

// Global
new
    vehicle_model[MAX_PLAYERS],
    vehicle_color[MAX_PLAYERS]
;

// Command
CMD:veh(playerid) {
    return ShowPlayerDialog(playerid, 4, DIALOG_STYLE_INPUT, " ", !"Введите модель т/с:", !"Далее", "Выход");
}

// OnDialogResponse
if(dialogid == 4) {
    if( !response )
        return true;;
 
    vehicle_model[playerid] = strval(inputtext);

    ShowPlayerDialog(playerid, 5, DIALOG_STYLE_INPUT, " ", !"Введите 1 цвет:", !"Далее", "Выход");
}

if(dialogid == 5) {
    if( !response )
        return true;

    if( !( 0 <= strval(inputtext) > 255 ) )
        return SendClientMessage(playerid, -1, !"Invalid vehicle color!");
 
    vehicle_color[playerid] = strval(inputtext);

    ShowPlayerDialog(playerid, 6, DIALOG_STYLE_INPUT, " ", !"Введите 2 цвет:", !"Далее", "Выход");
}

if(dialogid == 6) {
    if( !response )
        return true;

    if( !( 0 <= strval(inputtext) > 255 ) )
        return SendClientMessage(playerid, -1, !"Invalid vehicle color!");

    new
         model = vehicle_model[playerid],
         color1 = vehicle_color[playerid],
         color2 = strval(inputtext),
         Float: veh_x, Float: veh_y, Float: veh_z   
    ;
  
    GetPlayerPos(playerid, veh_x, veh_y, veh_z);

    CreateVehicle(model, veh_x+3.2, veh_y, veh_z, 0.0, color1, color2, -1);
}

Сообщение отредактировал Pa4enka: 09 Ноябрь 2018 - 22:28

0

#4
Пользователь офлайн   Freeman_VOS 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Спасибо всем, накидаю + как только лимит обнулится)

Сообщение отредактировал Freeman_VOS: 10 Ноябрь 2018 - 17:16

0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей