Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Из названия модели машины её ID - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Pawn ]
Из названия модели машины её ID Из модели в ID

#1
Пользователь офлайн   Avisomik 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
Всем привет, кто подскажет как сделать так, чтобы из названия машины можно было вывести её ID.

Пример команды:
/idcar [название машины]


Какие использовать функции ?
0

#2
Пользователь офлайн   shinra.tensei 

  • Среднячок
  • Вставить ник
  • Раскрыть информацию
Почему бы не завести массив?
0

#3
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
new VehicleNames[][] =
{
    "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
    "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
    "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
    "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
    "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
    "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
    "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
    "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
    "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
    "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
    "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
    "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
    "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
    "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking",
    "Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin",
    "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT",
    "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
    "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
    "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
    "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
    "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
    "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
    "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
    "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratium",
    "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
    "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
    "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
    "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
    "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
    "Police Car", "Police Car", "Police Ranger", "Picador", "S.W.A.T", "Alpha",
    "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
    "Tiller", "Utility Trailer"
};


Цикл по массиву выше + strfind (если хочешь, чтоб можно было не полное название вбивать, а часть). К полученному индексу прибавляешь 400 и получаешь ID автомобиля

Сообщение отредактировал DeimoS: 08 Октябрь 2019 - 22:03

0

#4
Пользователь офлайн   Bredemar12 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Через функцию strfind.

Сначала получаешь, с помощью команды параметр, потом ищешь в нем знакомые буквы.

Чет такое, например:

CMD:idcar(playerid, params[]) // Сама команда.
{
    new cash[32]; //Создаем переменную, в которой запишется название машины, которое напишет игрок.
    if(sscanf(params, "s[32]", cash)) return SendClientMessage(playerid,-1, "/idcar [Название машины]"); // Проверяем написал ли вообще игрок что-то.
    if(strfind(cash, "LandStalker", true) != -1) return SendClientMessage(playerid,-1, "400"); // И так, "cash" - это переменная с команды, "LandStalker" - это то, что ищем в cash(можешь указать пол слова или вообще две буквы), "true" - учитываем ли регистр названия(то есть будет принимать и landstalker, LandStalker). "!= -1" возвращаем число 0, так как слово было найдено - пишется сообщение, если нет - идем к след. проверке.
    if(strfind(cash, "Bravura", true) != -1) return SendClientMessage(playerid,-1, "401"); // Все так же
    if(strfind(cash, "Buffalo", true) != -1) return SendClientMessage(playerid,-1, "402"); // Все так же
    if(strfind(cash, "Linerunner", true) != -1) return SendClientMessage(playerid,-1, "403"); // Все так же
   // ... тут продолжаешь список тачек или используешь массив от Деймоса.
    SendClientMessage(playerid,-1, "Такой машины не существует, укажите название машины корректно!"); // Если игрок ввел не корректное название машины.
    return 1;
}

Сообщение отредактировал Bredemar12: 08 Октябрь 2019 - 22:32

0

#5
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Можно даже в виде кастомного спецификатора для sscanf реализовать:
Скрытый текст [Показать]


Ну либо то же самое, только в виде функции:
Скрытый текст [Показать]

1

#6
Пользователь офлайн   Bredemar12 

  • Местный
  • Вставить ник
  • Раскрыть информацию
А мой вариант, DeimoS, слишком быдлокодный, если к нему прикрепить твой массив?
1

#7
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияBredemar12 (08 Октябрь 2019 - 23:20) писал:

А мой вариант, DeimoS, слишком быдлокодный, если к нему прикрепить твой массив?


А как к твоему варианту "прикрепить" массив? В моём варианте всё тот же strfind используется. Только ты предлагаешь расписывать 212 строк strfind, а я предлагаю загнать названия автомобилей в массив и через цикл прогнать их.
Твой вариант можно отнести к китайскому коду)
2

#8
Пользователь офлайн   Avisomik 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
Всем спасибо
0

#9
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Там в массиве неправильные названия машин некоторых.
Вот тут исправленная версия - http://pawn-wiki.ru/...findpost=232464
1

#10
Пользователь офлайн   Bredemar12 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (08 Октябрь 2019 - 23:39) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Ахах, лол.
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика