Здраствуйте ув. форумчане.В цьому уроці я навчу вас писати складні команди.
Взагалі навіть я сам ще ні разу не писав такого типу команди, проте мені вже зрозумілий принцип роботи та написання таких команд. Тому я поясню вам, як зможу, а в подальшому урок буду коректувати. Я познайомлю вас з функцією strtok - це функція, використовується, щоб визначити пробіл між командою і параметром.
Для цього уроку ми розглянемо команду передачі грошей. Для початку потрібно, щоб на початку автовизиваемой функції OnPlayerCommandText були оголошені всі перераховані змінні:
Мінлива string у нас буде зберігати текст повідомлення про передачі грошей між гравцями, cmd буде зберігати весь текст команди. Sendername буде зберігати ім'я гравця передавального гроші, giveplayer - ім'я одержує гроші. Мінлива giveplayerid буде зберігати ID гравця одержує гроші, money - буде зберігати кількість переданих грошей, а idx буде зберігати параметри команди. Тепер власне приступаємо до розбору самої команди. Після змінних в змінної cmd визначаємо пробіл між командою і параметром (7 рядок). Все починається з найпростішої команди:
Всередину цієї команди пишемо наступне:
Пояснюю. Створюємо змінну tmp, яка буде зберігати параметри команди, це текст, який буде після пробілу. Визначаємо функцією strtok, проблем між командою і параметром (2 рядок). Ставимо умову, якщо параметр не введений, відправляємо в чат повідомлення. Надаємо змінної giveplayerid, значення першого параметра, якої ми ввели (8строчка). Знову визначаємо пробіл, але вже між двома параметрами. Оскільки в команді вводиться 2 параметра: ID гравця і сума грошей. Також перевіряємо, що параметр введений і присвоюємо змінної money, значення 2 параметра, яке ми ввели в команді. Ось приклад: ввели ви команду: / givemoney 1 400. Мінлива giveplayerid отримує значення 1 параметра, тобто дорівнюватиме 1, змінна money отримує значення 2 параметра і буде дорівнює 400. Отже, йдемо далі: Далі ми пишемо перевірку, чи підключений гравець, який одержує гроші до сервера.
Усередині перевірки функцією GetPlayerName ми отримуємо імена обох гравців. Змінної playermoney ми присвоюємо кількість грошей гравця передавального гроші. Отже, ми знаємо поточну кількість грошей гравця і кількість грошей, яке гравець хоче передати, тепер нам
потрібно поставити умову, що гравець передає суму грошей не більше тієї суми, яка у нього з cобой є, пишемо таку умову:
Читаю умова: якщо кількість грошей, які гравець хоче передати іншому гравцеві (moneys) більше 0 і кількість грошей, яке у нього є (playermoney) більше або дорівнює тій кількості, яке він хоче передати (moneys), то ми передаємо гроші гравцеві функцією
GivePlayerMoney. Віднімаємо у гравця передавального кількість переданих грошей, і даємо їх гравцеві отримує гроші.
Ну і не забудьте для перевірки на підключення гравця одержує гроші поставити else, дія, якщо гравець не підключений до сервера.
Ну і наостанок. Якщо все ж при компіляції скрипта pawno буде лаятися на strtok, то додайте в скрипт цю функцію:
Якщо щось не зрозуміло пишіть в темі Допоміг? тикай +
Stich