PDA

Просмотр полной версии : [Вопрос] Почему GetPlayerWeaponData возвращает ID оружия и 0 патрон для него?



m1n1vv
26.08.2019, 20:44
Почему GetPlayerWeaponData не всегда находит патроны? ID оружия всегда.

DeimoS
26.08.2019, 21:07
Кончились патроны?
http://wiki.pro-pawn.ru/wiki/GetPlayerWeaponData


https://i.imgur.com/lyv39UH.png

m1n1vv
26.08.2019, 23:49
Делаю выстрел и только потом GetPlayerWeaponData начинает выводить ammo. Выдаю через SetSpawnInfo.

DeimoS
27.08.2019, 00:51
Скорее всего очередной баг. Как вариант - пробовать выдавать оружие через GivePlayerWeapon при спавне.

m1n1vv
27.08.2019, 01:00
Сделал. Так оно и есть. Тему закрыто.

DeimoS
27.08.2019, 01:18
Ну и, если что, можно так же саму SetSpawnInfo зафиксить при помощи перехвата, сохранения инфы об оружии и отслеживании первого выстрела/вызова GivePlayerWeapon. В случае выстрела/вызова - обнуление переменных. Ну и в GetPlayerWeaponData проверять значение переменных: не равны нулю - возвращать их значение вместо того, что выдаёт сама функция.

m1n1vv
28.08.2019, 11:44
Ну и, если что, можно так же саму SetSpawnInfo зафиксить при помощи перехвата, сохранения инфы об оружии и отслеживании первого выстрела/вызова GivePlayerWeapon. В случае выстрела/вызова - обнуление переменных. Ну и в GetPlayerWeaponData проверять значение переменных: не равны нулю - возвращать их значение вместо того, что выдаёт сама функция.

При смене оружия все время вызывается GetPlayerWeaponData. Сколько бы раз не прокрутил колесико, все равно 0.

DeimoS
28.08.2019, 18:12
Не совсем понял о чём ты :)
Ты хочешь получать количество патрон при смене оружия или что?

m1n1vv
28.08.2019, 18:53
Да. При смене вызывается в таймере:

stock UpdateHudWeapon(playerid, weaponid)
{
new
slot = td_hud_weapon_slots[weaponid],
weapon,
ammo,
string[6];

PlayerTextDrawSetString(playerid, td_hud_player_weapon_name[playerid], td_hud_weapon_name[weaponid]);

GetPlayerWeaponData(playerid, slot, weapon, ammo);
printf("%i, %i, %i\n", weaponid, weapon, ammo);
format(string, sizeof string, "%02i/%02i", ammo, td_hud_weapon_ammo[weaponid]);
PlayerTextDrawSetString(playerid, td_hud_player_weapon_ammo[playerid], string);

PlayerTextDrawTextSize(playerid, td_hud_player_weapon_ammo_block[playerid], 24.0000, 1.2400);
PlayerTextDrawShow(playerid, td_hud_player_weapon_ammo_block[playerid]);

PlayerTextDrawDestroy(playerid, td_hud_player_weapon_model[playerid]);

td_hud_player_weapon_model[playerid] = CreatePlayerTextDraw(playerid, td_hud_weapon_model_position[weaponid][td_hud_weapon_pos_x], td_hud_weapon_model_position[weaponid][td_hud_weapon_pos_y], !"");
PlayerTextDrawTextSize(playerid, td_hud_player_weapon_model[playerid], -88.0000, 108.0000);
PlayerTextDrawAlignment(playerid, td_hud_player_weapon_model[playerid], 1);
PlayerTextDrawColor(playerid, td_hud_player_weapon_model[playerid], -1);
PlayerTextDrawBackgroundColor(playerid, td_hud_player_weapon_model[playerid], 0);
PlayerTextDrawFont(playerid, td_hud_player_weapon_model[playerid], 5);
PlayerTextDrawSetProportional(playerid, td_hud_player_weapon_model[playerid], 0);
PlayerTextDrawSetShadow(playerid, td_hud_player_weapon_model[playerid], 0);
PlayerTextDrawSetPreviewModel(playerid, td_hud_player_weapon_model[playerid], td_hud_weapon_model_position[weaponid][td_hud_weapon_modelid]);
PlayerTextDrawSetPreviewRot(playerid, td_hud_player_weapon_model[playerid], 0.0000, td_hud_weapon_model_position[weaponid][td_hud_weapon_pot_y], 0.0000, td_hud_weapon_model_position[weaponid][td_hud_weapon_size]);

PlayerTextDrawShow(playerid, td_hud_player_weapon_model[playerid]);

return 1;
}

DeimoS
28.08.2019, 20:29
Пробуй использовать GetPlayerWeapon + GetPlayerAmmo вместо GetPlayerWeaponData

ziggi
01.09.2019, 18:04
Информация об оружии может приходить с большой задержкой. Тут уже ничего не поделать

m1n1vv
01.09.2019, 18:35
Информация об оружии может приходить с большой задержкой. Тут уже ничего не поделать

Сколько бы раз не вызывал GetPlayerWeaponData, при SetSpawnInfo возвращает 0, а при GivePlayerWeapon необходимое значение.

Nexius_Tailer
01.09.2019, 20:14
Сколько бы раз не вызывал GetPlayerWeaponData, при SetSpawnInfo возвращает 0, а при GivePlayerWeapon необходимое значение.
Проблема с патронами к классовому оружию всегда возникает, или только после реконнекта?