Ещё один перевод статьи с офф. форума. На этот раз, всё гораздо проще и быстрее. Поэтому в этом коде сможет разобраться даже человек, который совсем не знает pawn языка, при желании.
Сегодня разберём, туториал под названием "Killstreaks", перевести одним красивым словом на русский язык у меня пока не получилось, буду признателен, если подскажите как это правильно назвать по русски. Скрипт предназначен для (T)DM и подобных серверов. Суть скрипта заключается в том, что при двух, трёх, ..., десяти подряд убийствах, об этом будет оповещаться всему серверу.
Процесс создания состоит всего из 4 пунктов.
1. Создаём глобальную переменную
Code
new Streaks[MAX_PLAYERS];
2. Обнуляем переменную в public OnPlayerConnect или public OnPlayerDisconnect, чтобы статистика повторяющихся убийств хранилась до выхода
Code
Streaks[playerid] = 0;
3. Теперь собственно добавим в скрипт ту самую статистику, которая нам нужна. Для этого ищем public OnPlayerDeath, в который добавляем следующие строки
4. Со статистикой разобрались. Теперь немного разнообразим всё это. Теперь создадим функцию KillStreaks(killerid), которая будет выглядеть у нас следующим образом
Code
stock KillStreaks(killerid) { SetPlayerScore(killerid,GetPlayerScore(killerid)+1); // увеличиваем результат игрока на 1 очко new str[ 128 ], KillerName[MAX_PLAYER_NAME]; //объявление переменных GetPlayerName(killerid, KillerName, sizeof(KillerName)); switch(Streaks[killerid]) { case 2: format(str, sizeof(str), "[KILLINGSPREE] ~g~%s has performed a ~y~double kill!", KillerName); case 3: format(str, sizeof(str), "[KILLINGSPREE] ~y~Triple Kill for ~b~%s!", KillerName); case 4: format(str, sizeof(str), "[KILLINGSPREE] ~p~Quadro Kill for ~r~%s!", KillerName); case 5: format(str, sizeof(str), "[KILLINGSPREE] ~r~%s is dominating with ~p~five kills!", KillerName); case 6: format(str, sizeof(str), "[KILLINGSPREE] ~w~%s is godlike with ~y~six kills!", KillerName); case 7: format(str, sizeof(str), "[KILLINGSPREE] ~r~RAMPAGE for %s with ~w~seven kills!", KillerName); case 8: format(str, sizeof(str), "[KILLINGSPREE] ~p~%s is unbelievable with ~y~eight kills!", KillerName); case 9: format(str, sizeof(str), "[KILLINGSPREE] ~g~%s is worldclass, ~b~nine kills!", KillerName); case 10: format(str, sizeof(str), "[KILLINGSPREE] ~b~%s is annihilating with ~g~ten kills!", KillerName); //case 11: format(str, sizeof(str), "[KILLINGSPREE] ~b~%s ваше текст...", KillerName); } GameTextForAll(str,4000,4); //Показываем текст всем игрокам }
Это всё, компилируем. Если не получилось - прилагаю PWN файл, или задавайте вопросы в теме Скачать PWN
Сообщение отредактировал Andrejs - Воскресенье, 25.03.2012, 20:21
у меня на сервере ооочень давно было реализовано, за одним исключением, а именно бонусом за даблкиллы триплкилы и пр (Вознаграждение_за_убийство+бонус*на_число_киллов_за_1_жизнь)
А то играет малое количество, один всех убивает, набрал это все и вышел. Заходит другой с его id и все на нем сохраняется. Или я ошибаюсь?? А так это было очень просто, идея хорошая, но, я думаю, лучше в Textdraw выводить в центр. Ник игрока и под ним его "достижение".