rxki
Пользователь
- Регистрация
- 5 Янв 2019
- Сообщения
- 208
- Симпатии
- 5
- Пол
- Мужской
Наткнулся на закономерный баг в турели. Точнее, в патронах. Суть: после перемещения пустой турели (без патронов) - она продолжает стрелять (кол патронов при стрельбе идет в минусовое значение). Сначала пытался создать условие, которое не давало бы двигать турель при количестве патронов в ней <1. Но у меня оно не компилится. Думаю, есть какая то строка, которая рефрешит данные турели после ее обновы. Но что то не могу понять, как она прописывается. Вот паблики перемещения турели:
Подскажите, как правильно сделать проверку на патроны после перемещения турели...
Ниже креплю оригинальный полный плагин
PHP:
public ShowMenuMoveTurret(id, iTurretIndex)
{
new iMenu;
if(g_TurretsMaxLevelData[ entity_get_int( g_PlayerTurretEnt[id][iTurretIndex], EV_INT_turret_type)][1] == 1)
iMenu = menu_create("Куда переместить эту турель?^n\rРАДИУС НЕЛЬЗЯ ПРОКАЧАТЬ\w", "ShowMenuMoveTurretH")
else
iMenu = menu_create("Перемещение выбранной турели", "ShowMenuMoveTurretH")
new szData[4];
num_to_str(iTurretIndex, szData, 3)
menu_additem(iMenu, "Переместить сюда", szData)
menu_additem(iMenu, "Назад")
menu_setprop(iMenu, MPROP_EXITNAME, "Назад");
menu_display(id, iMenu);
}
public ShowMenuMoveTurretH(id, menu, item)
{
new acces, szTurretIndex[4], szType[33], cb
menu_item_getinfo(menu, 0, acces, szTurretIndex, 3, szType, 32, cb)
new iTurretIndex = str_to_num(szTurretIndex)
new iEnt = g_PlayerMovingTurretEntity[id] ;
entity_get_string(iEnt, EV_SZ_turret_name, szType, 32);
static Float:fActivateTime;
if(!fActivateTime)
fActivateTime = g_ConfigValuesFloat[CFG_FLOAT_MOVE_INSTALL_TIME];
if(cs_get_user_money(id) < g_ConfigValues[CFG_TURRET_MOVE_COST] )
{
client_print(id, print_center, "У тебя нет %d$", g_ConfigValues[CFG_TURRET_MOVE_COST] );
goto removeEffect;
}
if(item == MENU_EXIT || !is_user_alive(id) || item == 1)
{
client_print_color(id, print_team_default, "%s^x01 Ты передумал перемещать турель, она станет активна через ^x04%0.1f сек^x01", CHAT_PREFIX, fActivateTime);
removeEffect:
// When player moving turret and he decide to not move, set old origin */
g_PlayerMovingTurretEntity[id] = 0;
entity_set_string(iEnt, EV_SZ_classname, "turret");
entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER)
fm_set_rendering(iEnt, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
new Float:fOldOrigin[3]
entity_get_vector(iEnt, EV_VEC_turret_old_origin, fOldOrigin);
entity_set_origin(iEnt, fOldOrigin);
entity_set_vector(iEnt, EV_VEC_turret_old_origin, Float:{0.0, 0.0, 0.0});
emit_sound(iEnt, CHAN_AUTO, g_SoundFile[SOUND_TURRET_PLANT], 1.0, 0.7, 0, PITCH_NORM);
RemoveMoveEntity(iEnt);
set_task(fActivateTime, "PlayerMoveTurretTaskInfo", iEnt + TASK_MOVE_TURRET, szType, 32);
SetTurretModelByLevel(iEnt, entity_get_int(iEnt, EV_INT_turret_level));
DestroyTurretRanger(iEnt);
return PLUGIN_CONTINUE
}
new Float:fOrigin[3], entlist[3];
entity_get_vector(iEnt, EV_VEC_origin, fOrigin)
if(find_sphere_class(iEnt, "turret", 60.0, entlist, 2)
|| find_sphere_class(iEnt, "turret_reloading", 60.0, entlist, 2)
|| find_sphere_class(iEnt, "turret_upgrading", 60.0, entlist, 2))
{
client_print(id, print_center,"Ты не можешь поставить турель на другую турель");
ShowMenuMoveTurret(id, iTurretIndex)
return PLUGIN_CONTINUE
}
else if(find_sphere_class(iEnt, "func_illusionary", 10.0, entlist, 2) || !fm_is_ent_visible(id, iEnt)) {
client_print(id, print_center, "Здесь нельзя установить турель")
ShowMenuMoveTurret(id, iTurretIndex)
return PLUGIN_CONTINUE
}
else if(find_sphere_class(iEnt, "slot_reservation", 60.0, entlist, 2) &&iEnt!= entity_get_int(entlist[0], EV_INT_place_owner))
{
//entlist[0] - index of turret enity place owner
new szName[33], szTurretName[33];
get_user_name(entity_get_edict(entity_get_int(entlist[0], EV_INT_place_owner), EV_ENT_turret_owner), szName, 32);
entity_get_string(entity_get_int(entlist[0], EV_INT_place_owner), EV_SZ_turret_name, szTurretName ,32);
client_print(id, print_center, "Это место занято турелью %s (он двигает ее)", szTurretName, szName)
ShowMenuMoveTurret(id, iTurretIndex)
return PLUGIN_CONTINUE
}
g_PlayerMovingTurretEntity[id] = 0;
cs_set_user_money(id, cs_get_user_money(id) - g_ConfigValues[CFG_TURRET_MOVE_COST] )
entity_set_string(iEnt, EV_SZ_classname, "turret");
entity_set_int(iEnt, EV_INT_solid, SOLID_TRIGGER)
fm_set_rendering(iEnt, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
SetTurretModelByLevel(iEnt, entity_get_int(iEnt, EV_INT_turret_level));
RemoveMoveEntity(iEnt);
entity_set_vector(iEnt, EV_VEC_turret_old_origin, Float:{0.0, 0.0, 0.0});
emit_sound(iEnt, CHAN_AUTO, g_SoundFile[SOUND_TURRET_PLANT], 1.0, 0.7, 0, PITCH_NORM);
client_print_color(id, print_team_default, "%s^x01 Ты переместил турель ^x04%s^x01, она будет активна через ^x04%0.1f сек^x01", CHAT_PREFIX, szType, fActivateTime);
set_task(fActivateTime, "PlayerMoveTurretTaskInfo", iEnt + TASK_MOVE_TURRET, szType, 32);
DestroyTurretRanger(iEnt);
return PLUGIN_CONTINUE;
}
Ниже креплю оригинальный полный плагин
Вложения
-
120,6 KB Просмотры: 2