На пример если игрок что то сказал, а вы хотите заменить его фразу другой, но не целиком. То вам поможет функция replace
Инфо из string.inc:
/* Replaces given string to another in given text. */
native replace(text[], len, const what[], const with[]);
Синтаксис:
replace ( text[], len, const what[], const with[] )
- text[] - Массив символов в котором необходимо заменить какую то часть на другую
- len - Максимальный размер массива
- const what[] - Что заменить
- const with[] - На что заменить
Тип функции:
Native
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "[string.inc] replace"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("func_replace","func_replace")
}
public func_replace(){
//Объявление массивов для функции
new text[] = {"Its text for replace"}
new what[] = {"text"}
new whith[] = {"MEGA"}
//Вывод строки до обработки
server_print("Test:%s",text)
//Обработка строки
replace(text,64,what,whith)
//Вывод после обработки
server_print("Test:%s",text)
}
Описание:
В данном примере показано как можно заменить одно слово на другое в целом предложении.
Обратите внимания, что окончательная длина строки не должна быть больше изначального размера массива с текстом.
так же в функции можно использовать не только массивы, а сразу значения взятые в кавычках.
Результат работы функции выглядит вот так:
func_replace
Test:Its text for replace
Test:Its MEGA for replace
Test:Its text for replace
Test:Its MEGA for replace
А так же обращаю внимание на то, что функция заменит только первое найденное совпадение, то есть если взять строку
Test:Its text for text replace
То результат будет такой:
Test:Its MEGA for text replace
Обратили внимание, что второй второе точное вхождение осталось неизменным?
Что бы заменить сразу все вхождения используйте функцию replace_all