Вот пара примеров:
Работа антимата: введенное слово в чат игроком сравнивается с мат листом.
Все авторизации пользователей происходят одинаково,сравниваются введенный логи и пароль с эталонными значениями, хранящиеся в базе данных или файле.
Таких примеров можно привести целую кучу, данная функция используется в очень многих плагинах в сам разнообразных целях, но делает она только одно сравнивает строки
Инфо из 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