Грешно ли е да използвам else вместо да направи друга проверка ?

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от OciXCrom » 18 Мар 2018, 23:25

PlayerKills[33], а не 32. Задължително рестартиране при влизане в сървъра:

Код за потвърждение: Избери целия код

public client_putinserver(id)
    PlayerKills[id] = 0
Не е вярно, че ще се запазват ако не се сложи това. id-то на играчите е от 1 до 32. Ако играчът с id 5 е имал 10 убийства и излезне от сървъра, след това влезне нов играч, той също може да получи id 5 и съответно да има 10-те убийства от предишния играч.

Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от [N]eXuS » 19 Мар 2018, 01:47

От това което ми говорите нищо не ми светва, ная добре напишете един код с малко коментари в него и аз ще се ориентирам по него мерси :)

Аватар
Fr0sTt
Извън линия
Потребител
Потребител
Мнения: 138
Регистриран на: 16 Фев 2018, 19:11

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от Fr0sTt » 19 Мар 2018, 09:06

1.Създаваш глобална променлива - new PlayerKills[33]
2.В plugin_init добавяш:

Код за потвърждение: Избери целия код

register_event("DeathMsg", "eventPlayerKilled", "a")
3. След това създаваш public eventPlayerKilled, който трябва да изглежда така:

Код за потвърждение: Избери целия код

public eventPlayerKilled()
{
new killer = read_data(1);
new victim = read_data(2);
PlayerKills[killer]++
}
4.Слагаш проверка на X убийства, където ще ти трябва, за да добавиш бонусите:

Код за потвърждение: Избери целия код

if(PlayerKills[id]==X)
5. В client_putinserver и client_disconect рестартираш:

Код за потвърждение: Избери целия код

PlayerKills[id]=0

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от OciXCrom » 19 Мар 2018, 19:29

5. Няма нужда да го рестартираш в двата forward-а. Щом при излизане се е рестартирало, няма как при влизане да е различно от 0. Аз бих го рестартирал само в client_putinserver.

Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от [N]eXuS » 19 Мар 2018, 23:44

Направих го така но не работи :(

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <fun>

new Kills[33], pCvarKills

public plugin_init()
{
 register_event("DeathMsg", "Player", "b", "1>0")
 
 pCvarKills = register_cvar("amx_kills", "2")
}

public Player()
{
 new killer = read_data(1), victim = read_data(2)
 
 if( is_user_connected( killer ) && ( killer != victim ) ) 
 {
  Kills[killer]++
  Kills[victim] = false
  
  
  if( Kills[ killer ] == get_pcvar_num( pCvarKills ) )
  {
   set_user_health(killer, get_user_health(killer) + 50)
  }
 }
}

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от OciXCrom » 19 Мар 2018, 23:50

Не си го направил така. Даже първата стъпка ти е грешна.

Какво пише по-горе - register_event("DeathMsg", "eventPlayerKilled", "a")
Какво си написал ти - register_event("DeathMsg", "Player", "b", "1>0")

Това не знам откъде го измисли: Kills[victim] = false - махни го.

И, моля те ползвай правилна индентация. Вместо да цъкаш space 2 пъти или колкото пъти ти хрумне в началото на реда след скобите, цъкни TAB един път. Кодът трябва да е подреден за да може да се чете.

Аватар
Fr0sTt
Извън линия
Потребител
Потребител
Мнения: 138
Регистриран на: 16 Фев 2018, 19:11

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от Fr0sTt » 20 Мар 2018, 09:22

Също така и за жертвата трябва да провериш дали е в сървъра - is_user_connected(victim).
И в client_putinserver да рестартираш - Kills[id]=0

Аватар
TheRedShoko
Извън линия
Модератор
Модератор
Мнения: 1016
Регистриран на: 06 Окт 2016, 07:42
Местоположение: Бургас
Се отблагодари: 5 пъти
Получена благодарност: 84 пъти

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от TheRedShoko » 20 Мар 2018, 12:24

1>0 означава, че убиеца ще е в сървъра. Ако го оставиш с 1>0 и само промениш флага на а, може дамахнеш проверката дали играча е в сървъра и ще работи.

Аватар
[N]eXuS
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 16 Мар 2018, 04:52

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от [N]eXuS » 20 Мар 2018, 22:09

Как мога това да го направя на един ред

Код за потвърждение: Избери целия код

if(get_pcvar_num(Neshtosi) == 1)
if(is_user_alive(id))
if(get_user_flags(id))
Проверката да е на един ред ?

Как да направим проверка дали играча е достигнал Х hp и да му забраним да получи още ?

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Грешно ли е да използвам else вместо да направи друга проверка ?

Мнение от OciXCrom » 20 Мар 2018, 22:20

Код за потвърждение: Избери целия код

if(get_pcvar_num(Neshtosi) == 1 && is_user_alive(id) && get_user_flags(id) & Neshtosi)

Код за потвърждение: Избери целия код

if(get_user_health(id) >= 100)

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 8 госта