Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Нубские вопросы по скриптингу

Статус пользователя LaFA
сообщение 28.7.2015, 18:14
Сообщение #1


Стаж: 16 лет

Сообщений: 4505
Благодарностей: 3256
Полезность: 793

Задаем любые вопросы по скриптингу ниже. (или те вопросы, которые не стоят отдельной темы)
Надеюсь добрые форумчане нам помогут thank_you2.gif


Собственно первый вопрос:
Нужно чтобы функция не работала, если за кт живо 2 человека.
Код
if(fnGetAliveCTsNR() <= 2 && fnGetAliveCTsR() > 0)

тут вроде все правильно
Код
fnGetAliveCTsR()
{
    static iCTs, id
    iCTs = 0
    
    for (id = 1; id <= g_maxplayers; id++)        
        if (is_user_alive(id) && get_user_team(id) == 2 && g_respawn[id])
            iCTs++
    
    return iCTs;
}

Правильна ли проверка?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Fintok
сообщение 28.7.2015, 19:42
Сообщение #2


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

Пора бы уже выучить операции сравнения и логические операции, а то так дело далеко не уйдет.

Код
< — Меньше
> — Больше
== — Равно
!= — Не равно
>= — Больше либо равно
=> — Меньше либо равно
&& — Логическое И
|| — Логическое ИЛИ
! — Логическое НЕ (Отрицание)


Цитата(LaFA @ 28.7.2015, 19:09) *
Нужно чтобы функция не работала, если за кт живо 2 человека.

Код:
if(fnGetAliveCTsR() != 2) 


Код:
fnGetAliveCTsR()
{
static iPlayers[32], iNum

get_players(iPlayers, iNum, "ae", "CT")

return iNum
}


Отредактировал: Fintok, - 28.7.2015, 19:47
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя LaFA
сообщение 28.7.2015, 19:48
Сообщение #3


Стаж: 16 лет

Сообщений: 4505
Благодарностей: 3256
Полезность: 793

Цитата(Fintok @ 28.7.2015, 20:38) *
Код
=> — Меньше либо равно

можно было только этой строчкой обойтись, спасибо.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя LaFA
сообщение 28.7.2015, 19:59
Сообщение #4


Стаж: 16 лет

Сообщений: 4505
Благодарностей: 3256
Полезность: 793

Цитата
=> — Меньше либо равно

Код
2 => 0
0 <= 2

так и не понял где я ошибся..

Код
if(fnGetAliveCTsNR() => 2 && fnGetAliveCTsR() > 0)

да и вообще не компилируются так.


вернул как было, походу было правильно изначально.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 28.7.2015, 20:25
Сообщение #5


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

LaFA, это я уже ошибся при написание, знак не в ту сторону поставил.

Вот так правильно:
Код
<= — Меньше либо равно
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя LaFA
сообщение 28.7.2015, 21:15
Сообщение #6


Стаж: 16 лет

Сообщений: 4505
Благодарностей: 3256
Полезность: 793

Fintok, угу, я правильно сделал изначально, но ошибка была в другой стоке и не работало как надо, поэтому я усомнился в этом части)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя strelok93
сообщение 1.8.2015, 23:09
Сообщение #7


Стаж: 12 лет

Сообщений: 905
Благодарностей: 392
Полезность: 576

Есть плагин плазменной пушки на серве.
Сделана на основе калаша. Если ее купить, с калашем в руках - калаш просто заменится на плазму, но если купить ее держа в руках эмку, у меня на руках будет и плазма и эмка.
Добавил в плагин сток дропа оружия, работает, при покупке выбрасыввется основное и дается плазма, но еще выбрасывается второстепенное оружие почему то...
Может я не совсем туда вставил UTIL_DropWeapon(id); ?
Код:

public Get_Plasma(id)
{
if(!is_user_alive(id))
return

UTIL_DropWeapon(id);
Set_BitVar(g_Had_Plasma, id)
fm_give_item(id, weapon_plasma)

// Set Weapon
engclient_cmd(id, weapon_plasma)

set_pev(id, pev_viewmodel2, V_MODEL)
set_pev(id, pev_weaponmodel2, P_MODEL)

set_pdata_string(id, (492) * 4, WEAPON_ANIMEXT, -1 , 20)

// Set Weapon Base
static Ent; Ent = fm_get_user_weapon_entity(id, CSW_PLASMA)
if(!pev_valid(Ent)) return

cs_set_weapon_ammo(Ent, CLIP)
cs_set_user_bpammo(id, CSW_PLASMA, BPAMMO)

Update_AmmoHud(id, CSW_PLASMA, CLIP, BPAMMO)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя strelok93
сообщение 1.8.2015, 23:51
Сообщение #8


Стаж: 12 лет

Сообщений: 905
Благодарностей: 392
Полезность: 576

Подсказали как исправить, проблема была в стоке, надо было убрать один символ &
То есть сделать так:
Код:

stock UTIL_DropWeapon(id)
{
new szWeapons[32], iNum;
get_user_weapons(id, szWeapons, iNum);
for(new i = 0; i < iNum; i++)
{
if(PRIMARY_WEAPONS_BITSUM & (1 << szWeapons[i]))
{
static szWeaponName[32];
get_weaponname(szWeapons[i], szWeaponName, charsmax(szWeaponName));
engclient_cmd(id, "drop", szWeaponName);
}
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: