Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 4
    Гостей: 3
    Пользователи: - отсутствуют
    Роботы: robot Bot

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 2-09-2011, 13:21 Просмотров: 7304

    equal Функция сравнивает строки или часть строки.

    Зачем сравнивать строки?
    Вот пара примеров:
    Работа антимата: введенное слово в чат игроком сравнивается с мат листом.
    Все авторизации пользователей происходят одинаково,сравниваются введенный логи и пароль с эталонными значениями, хранящиеся в базе данных или файле.
    Таких примеров можно привести целую кучу, данная функция используется в очень многих плагинах в сам разнообразных целях, но делает она только одно сравнивает строки

    Инфо из string.inc:
    /* Checks if two strings equal. If len var is set
    * then there are only c chars comapred. */
    native equal(const a[],const b[],c=0);]


    Синтаксис:
    equal ( const a[], const b[], [ c ] )

    • const a[] - Сравниваемая Строка
    • const b[] - Эталонная строка
    • [c] - Количество символов (для сравнения части сроки с эталоном)


    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "Sravnenie strok"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    new string1[] = {"my text"}
    new string2[] = {"my text"}
        
    new string3[] = {"My text"}
    new string4[] = {"My text"}

    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
        
        register_srvcmd("sravni","func_equal")
    }
    public func_equal(){

        //1 Случай
        if(equal(string1,string2))
            server_print("[equal] my text = my text is True")
        
        //2 Случай
        if(equal(string1[3],"text",4))
            server_print("[equal] text = text (4) is True")
        
        //3 Случай
        if(!equal(string1,string3,0))
            server_print("[equal] my text = My text is False")
        
        //4 Случай
        if(equal(string3,string4,0))
            server_print("[equal] My text = My text is True")
        
    }


    Описание:
    Так как функция не зрелищная, то и работать с ней будем в консоле сервера, что бы не мучиться с запуском клиента игры.
    Создадим 2 пары массивов, попарно равные. и отличающиеся друг от друга только регистром букв(в данной функции регистр букв отличается так же как будто это разные буквы,то есть функция чувствительна к регистру Привет не равно привет)
    Зарегистрируем консольную команду sravni.В исполняемой функции от этой команды рассмотрим 4 разных варианта работы функции:

    • 1 Случай: Сравниваем массив string1 и string2
      Так как строки равно,условие возвращает true и выполняет server_print(вывод сообщения в консоль сервера )
    • 2 Случай: Сравниваем часть массива string1 и текст(строку) text
      if(equal(string1[3],"text",4))

      Здесь мы указываем что в строке string1, нужно сравнивать начиная с 3 символа с текстом "text" и длина сравнения 4 символа
      Функция так же возвращает true, так как text и text одно и тоже.
    • 3 Случай: Сравниваем массив string1 и string3
      Массивы string1 и string3 отличаются одной буквой, вернее ее регистром, так как они разные функция вернет false, по этому в условии ставим знак !, что означает "Не равно", и у нас условие получается Если (string1 и string 3 не равно) и это правда,функция возвращает true
    • 4 Случай: Сравниваем массив string3 и string4
      Аналогично первому варианту, только строки уже разные.


    Если же вам необходимо сравнить 2 строки без сравнения регистра букв,то используйте функцию equali
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Наверх

Реклама