PDA

Просмотр полной версии : [Вопрос] GetPlayerWeaponData



vovandolg
29.01.2016, 10:09
Как мне правильно без лишней пыли посчитать все Ammo во всех слотах GetPlayerWeaponData(playerid,0,Gun,Ammo); через цикл for
Слотов всего 13(0-12)..

Desulaid
29.01.2016, 12:08
Попробуйте так.


new
Gun, Ammo, CountAmmo;

for (new i; i <= 12; i++)
{
GetPlayerWeaponData(playerid, i, Gun, Ammo);
CountAmmo += Ammo;
}

wAx
29.01.2016, 13:04
Попробуйте так.


new
Gun, Ammo, CountAmmo;

for (new i; i <= 12; i++)
{
GetPlayerWeaponData(playerid, i, Gun, Ammo);
CountAmmo += Ammo;
}

а ведь можно пропустить параметр weapon, за ненадобностью:?

Desulaid
29.01.2016, 13:58
а ведь можно пропустить параметр weapon, за ненадобностью:?

Неа, этот параметр есть ссылка и проигнорировать его нельзя.

McLuhan
30.01.2016, 00:28
а ведь можно пропустить параметр weapon, за ненадобностью:?


new summaAmmo = 0;
for(new sl = 0, ammo = 0; sl < 13; sl++)
{
GetPlayerWeaponData(playerid, sl, ammo, ammo);
summaAmmo += ammo;
}
printf("Summa ammo: %d.", summaAmmo);

vovandolg
30.01.2016, 03:29
for(new sl = 0, ammo = 0; sl < 13; sl++)
А вот тут часом не произойдёт так что при каждом выполнении цикла патроны будут обнуляться,
то есть к примеру ammo первого слота равно 4 а потом начинает второй считать и обнуляет и так с каждым слотом, или как оно поведёт себя?
______
GetPlayerWeaponData(playerid, sl, ammo, ammo);
А так разве можно? одной переменной в двух значениях юзать?

wAx
30.01.2016, 08:28
for(new sl = 0, ammo = 0; sl < 13; sl++)
А вот тут часом не произойдёт так что при каждом выполнении цикла патроны будут обнуляться,
то есть к примеру ammo первого слота равно 4 а потом начинает второй считать и обнуляет и так с каждым слотом, или как оно поведёт себя?
ну sl ведь не обнуляется...


GetPlayerWeaponData(playerid, sl, ammo, ammo);
А так разве можно? одной переменной в двух значениях юзать?
да, сначала ammo используется для получения weapon, а после значение перезаписывается на значение ammo, в конце концов у нас ammo будет равняться кол-ву патронов.

DeimoS
30.01.2016, 08:50
for(new sl = 0, ammo = 0; sl < 13; sl++)
А вот тут часом не произойдёт так что при каждом выполнении цикла патроны будут обнуляться,
то есть к примеру ammo первого слота равно 4 а потом начинает второй считать и обнуляет и так с каждым слотом, или как оно поведёт себя?



Ну а теперь давайте окунёмся в то, что каждый должен изучит ещё на стадии ознакомления с понятием "Что такое Pawn?":

for(Оператор_инициализация; Условие; Поститерационная_команда)

Оператор_инициализация - это тот код, который выполнится при старте цикла. Здесь записывают объявление переменных или же задают этим переменным стартовые значения, если переменные были объявлены ранее.

Условие - это условия выполнения цикла. То бишь пока условие не выполнится, цикл будет продолжать выполнять код в своём теле (ели оставить пустым, то цикл будет бесконечным).

Поститерационная_команда - это тот код, который будет выполняться после выполнения тела цикла (в конце каждой итерации). Здесь записывают действия с переменными, значения которых сравниваются в условии.

И работа цикла будет выглядеть, примерно, так:


Оператор_инициализация

Итерация №1:
Условие
{Тело_Цикла}
Поститерационная_команда

Итерация №2:
Условие
{Тело_Цикла}
Поститерационная_команда

Итерация №3:
Условие
{Тело_Цикла}
Поститерационная_команда

Итерация №4:
Условие
{Тело_Цикла}
Поститерационная_команда

Итерация №5:
Условие
{Тело_Цикла}
Поститерационная_команда

...//Пока условие не будет выполнено

Итерация №over900:
Условие//Условие выполнено
break;//Остановка цикла

Из этого всего должно стать понятно, что переменная ammo обнуляется только при старте цикла и больше её мы не обнуляем

vovandolg
31.01.2016, 20:12
Тему можно закрывать, оба варианта гуд) Спасибо.