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

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

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

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

Проблема с if

OverGame
сообщение 27.7.2014, 1:04
Сообщение #1
Стаж: 11 лет

Сообщений: 384
Благодарностей: 217
Полезность: 348

В чем, может быть проблема?
Код:
	new gHealth = get_user_health(id)
if(equal(gHealth,"255"))
set_user_health(id, gHealth + 3)



Решил проблему, теперь компилируется - но не работает.

Код:
static gHealth[64]
formatex(gHealth, charsmax(gHealth), "%d",get_user_health(id))
if(!equal(gHealth,"255"))
set_user_health(id, get_user_health(id) + 3)


Как таймер использую
set_task(0.5, "task_healing", 0, _, _, "b")

Отредактировал: OverGame, - 27.7.2014, 1:26
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Safety1st
сообщение 27.7.2014, 1:57
Сообщение #2
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

OverGame, функция get_user_health() возвращает число, а вы с ним обращаетесь как с текстом.

Правильный вариант:
Код:
#define HEALING_AMOUNT  3
#define MAX_HEALTH 255
static gHealth = get_user_health(id)
if( gHealth <= MAX_HEALTH - HEALING_AMOUNT )
set_user_health( id, gHealth + HEALING_AMOUNT )


Если вы делаете автопополнение hp для всех игроков, такой плагин есть, и очень интересный. Разумнее заюзать готовый код, а не изобретать кривой велосипед ;)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Surf
сообщение 27.7.2014, 2:02
Сообщение #3


Стаж: 14 лет

Сообщений: 1089
Благодарностей: 501
Полезность: 583

Safety1st,
Все правильно и по делу говоришь, но никогда не понимал, зачем новичку давать вот эти ванильные дефайны, new -> static, etc... Они же только запутывают, да и в таком объеме кода - излишни
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 27.7.2014, 2:18
Сообщение #4
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

По-моему хардкод мешает пониманию, а к новым операторам пусть привыкает)


OverGame, вот во что код выше после компиляции превратится:
Код:
static gHealth = get_user_health(id)
if( gHealth <= 252 )
set_user_health( id, gHealth + 3 )

И посмотрите 2 видеоурока Radius'а по основам, раз так всё запущено: 1 и 2.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
OverGame
сообщение 27.7.2014, 9:39
Сообщение #5
Стаж: 11 лет

Сообщений: 384
Благодарностей: 217
Полезность: 348

Еще вопрос, как оставить set_task?
Если в руках не knife, нужно остановить функцию set_task (который дает хп).
Насчет
parameter[]="" - Массив с данными, который передается функции.
не очень понятно, да и примера нету.

Код:
	SetKnife(id, g_knifeid[id]) 
new gWeaponKNF = get_user_weapon(id)
if(gWeaponKNF == 29){
if( g_knifeid[id] == 3 ) set_task(5.0, "task_healing", id, _, _, "b")
if( g_knifeid[id] == 2 ) set_user_maxspeed(id, 450.0)
}


Отредактировал: OverGame, - 27.7.2014, 9:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nixon
сообщение 27.7.2014, 10:23
Сообщение #6


Стаж: 12 лет

Сообщений: 399
Благодарностей: 192
Полезность: 589

Цитата(OverGame @ 27.7.2014, 11:39) *
Еще вопрос, как оставить set_task?
Если в руках не knife, нужно остановить функцию set_task (который дает хп).
Насчет
parameter[]="" - Массив с данными, который передается функции.
не очень понятно, да и примера нету.

Код:
	SetKnife(id, g_knifeid[id]) 
new gWeaponKNF = get_user_weapon(id)
if(gWeaponKNF == 29){
if( g_knifeid[id] == 3 ) set_task(5.0, "task_healing", id, _, _, "b")
if( g_knifeid[id] == 2 ) set_user_maxspeed(id, 450.0)
}


Ну вот типо такого. Делаем такс(как ты написал):

Код:
set_task(5.0, "task_healing", id, _, _, "b")


Далее сам паблик:

Код:
public task_healing(id)
{
if(!is_user_alive(id) || !is_user_connected(id) || g_knifeid[id] != 3)
{
remove_task(id)
return PLUGIN_HANDLED
}

if(get_user_health(id) >= 100)
{
set_user_health(id, 100)
remove_task(id)
return PLUGIN_HANDLED
}

set_user_health(id, get_user_health(id) + 1) /*(ну там где 1 твоё число для прибавки хп)*/
return PLUGIN_HANDLED
}


Да и еще. Проверку на ножик тоже лучше сделать(вдруг сменит на другой).

Отредактировал: Nixon, - 27.7.2014, 10:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: