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

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

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

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

3 страниц V   1 2 »

добавление проверки / кодинг для начинающих :)

exec1337
сообщение 6.5.2013, 17:09
Сообщение #1
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Код:
		case 6: // Respawn
{
if(get_pcvar_num(allowrespawn) == 0) {
ColorChat(id, NORMAL, "[123] This item is disabled.");
return PLUGIN_HANDLED;
}

if(is_user_alive(id)) {
ColorChat(id, NORMAL, "[123] Вы живы.");
return PLUGIN_HANDLED;
} else {
new money = fm_get_user_money(id);
new cost = get_pcvar_num(respawncost);

if(money > cost || money == cost)
fm_set_user_money(id, money - cost);
ExecuteHam(Ham_CS_RoundRespawn, id);
ColorChat(id, NORMAL, "[123] В купили возрождение.");
}
}


Почему всё работает не так,как должно? А должно:
не возрождать и писать,мол жив,когда жив
возрождать и писать,что купил,когда был мёртв

Отредактировал: exec1337, - 5.1.2014, 4:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
cs-portal
сообщение 6.5.2013, 17:11
Сообщение #2
Стаж: 16 лет

Сообщений: 8181
Благодарностей: 2709
Полезность: 0

return PLUGIN_HANDLED;
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 6.5.2013, 17:19
Сообщение #3
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Как я понимаю это лишнее?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 6.5.2013, 18:11
Сообщение #4
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Если убрать, то оно возродит, даже если жив.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 6.5.2013, 18:15
Сообщение #5
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Вот и я думаю,что нужно останавливать выполнение. Такчто эта строка нужна.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя nsgenn
сообщение 6.5.2013, 19:02
Сообщение #6


Стаж: 13 лет

Сообщений: 885
Благодарностей: 561
Полезность: 667

Цитата(exec1337 @ 6.5.2013, 20:15) *
Вот и я думаю,что нужно останавливать выполнение. Такчто эта строка нужна.


а как работает? к примеру я увидел, что если денег у игрока не будет, то он все равно сможет купить воскрешение.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 6.5.2013, 21:47
Сообщение #7
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Цитата(nsgenn @ 6.5.2013, 21:02) *
а как работает? к примеру я увидел, что если денег у игрока не будет, то он все равно сможет купить воскрешение.

Через **** всё работает :) Уже устал фиксить.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
letsplayer
сообщение 6.5.2013, 21:54
Сообщение #8
Стаж: 13 лет

Сообщений: 215
Благодарностей: 35
Полезность: 0

Код:

else
{
new money = fm_get_user_money(id);
new cost = get_pcvar_num(respawncost);

if(money > cost || money == cost)
{
fm_set_user_money(id, money - cost);
ExecuteHam(Ham_CS_RoundRespawn, id);
ColorChat(id, NORMAL, "[123] В купили возрождение.");
}
else
{
ColorChat(id, NORMAL, "[123] No have a money.");
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
exec1337
сообщение 6.5.2013, 22:04
Сообщение #9
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Код:
		case 6: // Respawn
{
if(get_pcvar_num(allowrespawn) == 0) {
ColorChat(id, NORMAL, "[123] This item is disabled.");
return PLUGIN_HANDLED;
}

if(is_user_alive(id)) {
ColorChat(id, NORMAL, "[123] Вы живы.");
} else {
new money = fm_get_user_money(id);
new cost = get_pcvar_num(respawncost);

if(money > cost || money == cost) {
fm_set_user_money(id, money - cost);
ExecuteHam(Ham_CS_RoundRespawn, id);
ColorChat(id, NORMAL, "[123] В купили возрождение.");
} else{
ColorChat(id, NORMAL, "[123] No have a money.");
}
}
}

Код
L 05/07/2013 - 00:02:49: Plugin called message_begin with an invalid message id (0).
L 05/07/2013 - 00:02:49: [AMXX] Displaying debug trace (plugin "plg.amxx")
L 05/07/2013 - 00:02:49: [AMXX] Run time error 10: native error (native "message_begin")
L 05/07/2013 - 00:02:49: [AMXX] [0] plg.sma::fm_set_user_money
L 05/07/2013 - 00:02:49: [AMXX] [1] plg.sma::shop_handler


Отредактировал: exec1337, - 6.5.2013, 22:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
letsplayer
сообщение 6.5.2013, 22:09
Сообщение #10
Стаж: 13 лет

Сообщений: 215
Благодарностей: 35
Полезность: 0

Цитата(exec1337 @ 6.5.2013, 23:04) *
Код:
		case 6: // Respawn
{
if(get_pcvar_num(allowrespawn) == 0) {
ColorChat(id, NORMAL, "[123] This item is disabled.");
return PLUGIN_HANDLED;
}

if(is_user_alive(id)) {
ColorChat(id, NORMAL, "[123] Вы живы.");
} else {
new money = fm_get_user_money(id);
new cost = get_pcvar_num(respawncost);

if(money > cost || money == cost) {
fm_set_user_money(id, money - cost);
ExecuteHam(Ham_CS_RoundRespawn, id);
ColorChat(id, NORMAL, "[123] В купили возрождение.");
} else{
ColorChat(id, NORMAL, "[123] No have a money.");
}
}
}

Код
L 05/07/2013 - 00:02:49: Plugin called message_begin with an invalid message id (0).
L 05/07/2013 - 00:02:49: [AMXX] Displaying debug trace (plugin "plugin.amxx")
L 05/07/2013 - 00:02:49: [AMXX] Run time error 10: native error (native "message_begin")
L 05/07/2013 - 00:02:49: [AMXX] [0] draceshop.sma::fm_set_user_money
L 05/07/2013 - 00:02:49: [AMXX] [1] draceshop.sma::shop_handler

Я лишь пофиксил то, что ты указал вначале, а эти ошибки не связаны с моей корректировкой.
Попробуй делать вычет денег через cs_set_user_money
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 6.5.2013, 22:11
Сообщение #11
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Хорошо,спасибо. Будем ковырять дальше.

//а одна ошика именно в правленной функ-ии
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
letsplayer
сообщение 6.5.2013, 22:13
Сообщение #12
Стаж: 13 лет

Сообщений: 215
Благодарностей: 35
Полезность: 0

Цитата(exec1337 @ 7.5.2013, 0:11) *
Хорошо,спасибо. Будем ковырять дальше.

//а одна ошика именно в правленной функ-ии

Я лишь добавил скобки =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
exec1337
сообщение 6.5.2013, 22:13
Сообщение #13
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Измените,пожалуйста,цитату.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
letsplayer
сообщение 6.5.2013, 22:15
Сообщение #14
Стаж: 13 лет

Сообщений: 215
Благодарностей: 35
Полезность: 0

Цитата(exec1337 @ 6.5.2013, 23:13) *
Измените,пожалуйста,цитату.

Какую?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 6.5.2013, 23:40
Сообщение #15
Стаж: 16 лет

Сообщений: 8181
Благодарностей: 2709
Полезность: 0

там каша. лучше синтаксис
if
else if
else



Код
     new money = fm_get_user_money(id);
     new cost = get_pcvar_num(respawncost);


      if(is_user_alive(id)) {
      ColorChat(id, NORMAL,  "пошол на***");
      return PLUGIN_CONTINUE
      }
      else if(!is_user_alive(id) && money >= cost){
      fm_set_user_money(id, money - cost);
      ExecuteHam(Ham_CS_RoundRespawn, id);
       ColorChat(id, NORMAL,  "[123] В купили возрождение.");
        }
        else
         ColorChat(id, NORMAL,  "[123] No have a money.");
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
exec1337
сообщение 7.5.2013, 14:37
Сообщение #16
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Охох,в твоём коде всё чотко,только пары скобок нет/лишние+нет 'прерывателя' функции.
Сделал так:
Код:
		{	
new money = fm_get_user_money(id);
new cost = get_pcvar_num(respawncost);

if(is_user_alive(id)) {
ColorChat(id, NORMAL, "пошол на***");
return PLUGIN_HANDLED;
}

else if(!is_user_alive(id) && money >= cost) {
fm_set_user_money(id, money - cost);
ExecuteHam(Ham_CS_RoundRespawn, id);
ColorChat(id, NORMAL, "[123] В купили возрождение.");
} else {
ColorChat(id, NORMAL, "[123] No have a money.");
}
}


А кто-нибудь может дать что-то типа мануала по теме "как сделать проверку на кол-во живых игроков"? Или пример плагина с такой проверкой :3
Надо не выводить меню,когда более двух живых игроков.

Цитата(letsplayer @ 7.5.2013, 0:15) *
Какую?

#10 сообщ.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя iLLuSioN
сообщение 7.5.2013, 14:47
Сообщение #17
Иконка группы

Стаж: 19 лет

Сообщений: 6911
Благодарностей: 7990
Полезность: 1639

Код:
fnGetAlive()
{
static iAlive, id
iAlive = 0

for (id = 1; id <= get_maxplayers(); id++)
{
if (is_user_alive(id))
iAlive++
}

return iAlive;
}


Код:
if(fnGetAlive() > 2)
return


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
exec1337
сообщение 8.5.2013, 9:24
Сообщение #18
Стаж: 13 лет

Сообщений: 6490
Благодарностей: 2558
Полезность: 491

Код:
public OpenRespawnMenu(id)
{
new g_Money = cs_get_user_money(id)

new szText[ 555 char ]
formatex(szText, charsmax( szText ), "\rВозродиться за %d $?^n\rДенег:%d $.",g_CostRespawn,g_Money)

if(fnGetAlive() > 2)
return PLUGIN_HANDLED
new menu = menu_create( szText, "menu" )

formatex( szText, charsmax( szText ), "\yДа!")
menu_additem(menu,szText,"1",0)

formatex( szText, charsmax( szText ), "\yНет.")
menu_additem(menu,szText,"2",0)

menu_setprop( menu, MPROP_EXIT,MEXIT_NEVER)
menu_display(id,menu,0)

return PLUGIN_CONTINUE
}

Добавил функцию и сделал так. 0 эфекта.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 8.5.2013, 12:35
Сообщение #19
Стаж: 16 лет

Сообщений: 8181
Благодарностей: 2709
Полезность: 0

лучше всего get_players("a")


http://amxxmodx.ru/core/amxmodxinc/50-get_...eh-igrokov.html

если прочел статью if( Count < 2 ) {
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
letsplayer
сообщение 8.5.2013, 13:18
Сообщение #20
Стаж: 13 лет

Сообщений: 215
Благодарностей: 35
Полезность: 0

iLLuSioN,
Каждую итерацию ты получаешь кол-во игроков заново.
Нужно так:
Код:

new iMaxPLS = get_maxplayers();
for (id = 1; id <= iMaxPLS; id++)
{
if (is_user_alive(id))
iAlive++
}
exec1337,
Что значит 0 эффекта? Как проверял?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
3 страниц V   1 2 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: