- 0
Войдите для возможности подписаться
Подписчики
0
handling помощь
Вопрос от
tuki
,
-
Последние посетители 0 пользователей онлайн
Ни одного зарегистрированного пользователя не просматривает данную страницу
-
Похожий контент
-
Опубликовано (изменено) · Жалоба
Здравствуйте. Нужна помощь с handling_plugin_v14. Как сделать сохранения в (cfg, mysql). И что бы скорость настраивалась не для одной машины, а именно для модели. Кому не сложно напишите, не одну мне поможете
#define FILTERSCRIPT
// Рекомендуемая версия адаптации: Beta-Testing 2.4.3
// Рекомендуемая версия mp_handling: 1.4
#include <a_samp>
#include <mp_handling>
native IsValidVehicle(vehicleid);
#define HEDITOR_DIALOG_ID (200)
enum E_HEDITOR_PARAM_TYPE
{
PARAM_TYPE_UINT,
PARAM_TYPE_FLOAT,
PARAM_TYPE_BOOL,
PARAM_TYPE_SPECIAL
};
enum E_HEDITOR_STRUCT
{
HEDIT_NAME[40], // parameter name
HEDIT_FORMAT_STR[10], // format string
E_HEDITOR_PARAM_TYPE:HEDIT_TYPE, // parameter type
e_handling_id:HEDIT_ID // e_handling_id id
};
new g_heditor_data[][E_HEDITOR_STRUCT] =
{
{ "Масса", "%.2f", PARAM_TYPE_FLOAT, hd_mass },
{ "Масса поворота", "%.2f", PARAM_TYPE_FLOAT, hd_turn_mass },
{ "Множитель сопротивления", "%.2f", PARAM_TYPE_FLOAT, hd_drag_coeff },
{ "Центр тяжести (X)", "%.2f", PARAM_TYPE_FLOAT, hd_center_of_mass_x },
{ "Центр тяжести (Y)", "%.2f", PARAM_TYPE_FLOAT, hd_center_of_mass_y },
{ "Центр тяжести (Z)", "%.2f", PARAM_TYPE_FLOAT, hd_center_of_mass_z },
{ "Процент высоты (в воде)", "%d", PARAM_TYPE_UINT, hd_percent_submerged },
{ "Сцепление колес", "%.2f", PARAM_TYPE_FLOAT, hd_traction_multiplier },
{ "Показатель сцепления колес", "%.2f", PARAM_TYPE_FLOAT, hd_traction_loss },
{ "Кол-во передач", "%d", PARAM_TYPE_UINT, hd_number_of_gears },
{ "Максимальная скорость", "%.2f", PARAM_TYPE_FLOAT, hd_max_velocity },
{ "Ускорение двигателя", "%.2f", PARAM_TYPE_FLOAT, hd_engine_acceleration },
{ "Привод", "%s", PARAM_TYPE_SPECIAL, hd_drive_type },
{ "Тип двигателя", "%s", PARAM_TYPE_SPECIAL, hd_engine_type },
{ "Сила торможения", "%.2f", PARAM_TYPE_FLOAT, hd_brake_deceleration },
{ "Антиблокировочная система", "%s", PARAM_TYPE_BOOL, hd_abs },
{ "Угол поворота руля (макс.)", "%.2f", PARAM_TYPE_FLOAT, hd_steering_lock },
{ "Множитель повреждений", "%.2f", PARAM_TYPE_FLOAT, hd_collision_damage_mult },
{ "Фары", "%d", PARAM_TYPE_UINT, hd_head_light },
{ "Фонари", "%d", PARAM_TYPE_UINT, hd_tail_light },
{ "Множитель масштаба колес", "%.2f", PARAM_TYPE_FLOAT, hd_wheel_scale }
};
public OnPlayerSpawn(playerid)
{
SendClientMessage(playerid, 0xFFFFFFFF, "Handling Editor - {66CC66}/heditor");
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/heditor", true, 8) == 0)
{
if(strlen(cmdtext) < 9)
{
SendClientMessage(playerid, 0xEEEEEEFF, "Usage: /heditor <vehicle id>");
return 1;
}
new vehicleid = strval(cmdtext[9]);
if(!IsValidVehicle(vehicleid))
{
SendClientMessage(playerid, 0xEEEEEEFF, "Invalid vehicle id");
return 1;
}
ShowHandlingEditor(playerid, vehicleid);
return 1;
}
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case HEDITOR_DIALOG_ID:
{
if(!response)
{
return 1;
}
if(listitem < 0 || listitem > sizeof(g_heditor_data) - 1)
{
return 1;
}
SetPVarInt(playerid, "heditor_param_id", listitem);
ShowEditDialog(
playerid,
g_heditor_data[listitem][HEDIT_TYPE],
g_heditor_data[listitem][HEDIT_ID]
);
return 1;
}
case HEDITOR_DIALOG_ID + 1:
{
new vehicleid = GetPVarInt(playerid, "heditor_vehicle_id");
new param_id = GetPVarInt(playerid, "heditor_param_id");
if(!response)
{
ShowHandlingEditor(playerid, vehicleid);
return 1;
}
new value = 0;
switch(g_heditor_data[param_id][HEDIT_TYPE])
{
case PARAM_TYPE_UINT:
{
SetVehicleHandlingInt(
vehicleid,
g_heditor_data[param_id][HEDIT_ID],
strval(inputtext)
);
}
case PARAM_TYPE_FLOAT:
{
SetVehicleHandlingFloat(
vehicleid,
g_heditor_data[param_id][HEDIT_ID],
floatstr(inputtext)
);
}
case PARAM_TYPE_BOOL:
{
SetVehicleHandlingInt(
vehicleid,
g_heditor_data[param_id][HEDIT_ID],
strval(inputtext) ? 1 : 0
);
}
case PARAM_TYPE_SPECIAL:
{
value = strval(inputtext);
if(value < 0)
{
value = 0;
}
else if(value > 2)
{
value = 2;
}
SetVehicleHandlingInt(
vehicleid,
g_heditor_data[param_id][HEDIT_ID],
strval(inputtext)
);
}
}
ShowHandlingEditor(playerid, vehicleid);
return 1;
}
}
return 1;
}
stock ShowHandlingEditor(playerid, vehicleid)
{
if(!IsValidVehicle(vehicleid))
{
return 1;
}
static
value_text[16],
dialog_text[2048],
value
;
dialog_text = "{FFFFFF}Параметр\t{FFFFFF}Значение";
for(new idx = 0; idx < sizeof(g_heditor_data); idx++)
{
if(g_heditor_data[idx][HEDIT_TYPE] == PARAM_TYPE_FLOAT)
{
GetVehicleHandlingFloat(vehicleid, g_heditor_data[idx][HEDIT_ID], Float:value);
}
else
{
GetVehicleHandlingInt(vehicleid, g_heditor_data[idx][HEDIT_ID], value);
}
if(g_heditor_data[idx][HEDIT_TYPE] == PARAM_TYPE_BOOL)
{
format(value_text, sizeof(value_text), value ? ("есть") : ("нет"));
}
else if(g_heditor_data[idx][HEDIT_TYPE] == PARAM_TYPE_SPECIAL)
{
static const drive_type_str[][8 + 1] =
{
"передний",
"задний",
"полный"
};
static const engine_type_str[][7 + 1] =
{
"бензин",
"дизель",
"электро"
};
switch(g_heditor_data[idx][HEDIT_ID])
{
case hd_drive_type:
{
format(value_text, sizeof(value_text), drive_type_str[value]);
}
case hd_engine_type:
{
format(value_text, sizeof(value_text), engine_type_str[value]);
}
}
}
else
{
format(
value_text,
sizeof(value_text),
g_heditor_data[idx][HEDIT_FORMAT_STR],
value
);
}
format(
dialog_text,
sizeof(dialog_text),
"%s\n{FFFFFF}%s\t{00F400}%s",
dialog_text,
g_heditor_data[idx][HEDIT_NAME],
value_text
);
}
SetPVarInt(playerid, "heditor_vehicle_id", vehicleid);
ShowPlayerDialog(
playerid,
HEDITOR_DIALOG_ID,
DIALOG_STYLE_TABLIST_HEADERS,
"Handling Editor",
dialog_text,
"Выбрать",
"Отмена"
);
return 1;
}
stock ShowEditDialog(playerid, E_HEDITOR_PARAM_TYPE:type, e_handling_id:id)
{
switch(type)
{
case PARAM_TYPE_UINT:
{
ShowPlayerDialog(
playerid,
HEDITOR_DIALOG_ID + 1,
DIALOG_STYLE_INPUT,
"Handling Editor",
"{FFFFFF}Введите число:",
"Изменить",
"Отмена"
);
}
case PARAM_TYPE_FLOAT:
{
ShowPlayerDialog(
playerid,
HEDITOR_DIALOG_ID + 1,
DIALOG_STYLE_INPUT,
"Handling Editor",
"{FFFFFF}Введите дробное число:",
"Изменить",
"Отмена"
);
}
case PARAM_TYPE_BOOL:
{
ShowPlayerDialog(
playerid,
HEDITOR_DIALOG_ID + 1,
DIALOG_STYLE_INPUT,
"Handling Editor",
"{FFFFFF}Введите 0 (нет) или 1 (есть):",
"Изменить",
"Отмена"
);
}
case PARAM_TYPE_SPECIAL:
{
switch(id)
{
case hd_drive_type:
{
ShowPlayerDialog(
playerid,
HEDITOR_DIALOG_ID + 1,
DIALOG_STYLE_INPUT,
"Handling Editor",
"{FFFFFF}0: передний привод\n\
1: задний привод\n\
2: полный привод\n\
\n{FFFFFF}Введите требуемое число:",
"Изменить",
"Отмена"
);
}
case hd_engine_type:
{
ShowPlayerDialog(
playerid,
HEDITOR_DIALOG_ID + 1,
DIALOG_STYLE_INPUT,
"Handling Editor",
"{FFFFFF}0: бензин\n\
1: дизель\n\
2: электро\n\
\n{FFFFFF}Введите требуемое число:",
"Изменить",
"Отмена"
);
}
}
}
}
return 1;
}
Отредактировано пользователем tuki
Поделиться сообщением
Ссылка на сообщение