Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 16
  1. #1
    Аватар для Geebrox
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±

    HeadShot и звуки при убийстве

    Описание:
    Определяется выстрел в голову и воспроизводится звук HeadShot, если игрок был убит не выстрелом в голову, то просто воспроизводятся разный звуки. Отдельно звуки из скрипта тоже можете скачать.

    Скрипт:
    Создаем массив для хранение имен игроков, в дальнейшим можете использовать этот массив если захотите.
    PHP код:
    new name[MAX_PLAYERS][MAX_PLAYER_NAME]; 
    В public OnPlayerConnect(playerid)
    PHP код:
    GetPlayerName(playeridname[playerid], MAX_PLAYER_NAME);
    SetPVarInt(playerid"headshot"INVALID_PLAYER_ID); 
    В public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
    PHP код:
    if(issuerid != INVALID_PLAYER_ID
    {
            if(
    bodypart == 9SetPVarInt(playerid"headshot"issuerid);
            else 
    SetPVarInt(playerid"headshot"INVALID_PLAYER_ID);

    В public OnPlayerDeath(playerid, killerid, reason)
    PHP код:
    new string[102];
    SetPVarInt(playerid"kills"0);
    SetPVarInt(killerid"kills"GetPVarInt(killerid"kills")+1);
    if(
    GetPVarInt(playerid"headshot") == killerid
    {
            
    PlayAudioStreamForPlayer(playerid"http://geebrox.esy.es/sounds/cs/1.wav");
            
    PlayAudioStreamForPlayer(killerid"http://geebrox.esy.es/sounds/cs/1.wav");
            
    GameTextForPlayer(playerid"~r~HeadShot"30005);
            
    GameTextForPlayer(killerid"~g~HeadShot"30005);
            
    format(stringsizeof(string), "%s {8B7D6B}убил {CD950C}%s {8B7D6B}с выстрелом в голову!"name[killerid], name[playerid]);
            
    SendClientMessageToAll(0xCD950CFFstring);
            
    SetPVarInt(playerid"headshot"INVALID_PLAYER_ID);
    }
    else if(
    GetPVarInt(killerid"kills") > 1
    {
            
    format(string37"http://geebrox.esy.es/sounds/cs/%d.wav"random(8)+1);
            
    PlayAudioStreamForPlayer(killeridstring);
            
    format(string12"~g~Kills: %d!"GetPVarInt(killerid"kills"));
            
    GameTextForPlayer(killeridstring30005);


    Дополнение:

    ФС:
    Ссылка: RGhost
    Пароль: geebrox

    Звуки из скрипта:

    Ссылка: RGhost
    Пароль: geebrox


    Авторские права: Запрещено копировать в другие источники!
    Последний раз редактировалось Geebrox; 29.09.2015 в 18:10. Причина: Исправление не больших ошибок

  2. #2
    Аватар для Роуди.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.07.2015
    Сообщений
    154
    Репутация:
    17 ±
    Жесть какая-то, почему сразу в OnPlayerTakeDamage нельзя установить 0.0 ХП при попадание в голову?

    Да и вообще
    PHP код:
    if(issuerid != INVALID_PLAYER_ID)
       {
            
    #define BODY_PART_HEAD 9
            
            
    if(bodypart == BODY_PART_HEAD)
            {
                    
    PlayAudioStreamForPlayer(playerid"http://geebrox.esy.es/sounds/cs/1.wav");
                
    PlayAudioStreamForPlayer(issuerid"http://geebrox.esy.es/sounds/cs/1.wav");
                
                    
    GameTextForPlayer(playerid"~r~HeadShot"30005);
                
    GameTextForPlayer(issuerid"~g~HeadShot"30005);
                
    SetPlayerHealth(playerid0);

                static const
                    
    frm_string[] = "\
                    %s {8B7D6B}убил {CD950C}%s {8B7D6B}с выстрелом в голову!"
    ;
                new 
    string_one[sizeof(frm_string)-2+MAX_PLAYER_NAME-2+MAX_PLAYER_NAME];
                
                
    format(string_onesizeof(string_one), frm_stringname[issuerid], name[playerid]);
                
    SendClientMessageToAll(0xCD950CFFstring_one);
            }
        } 
    UPDATE: Кстати, по твоему коду можно HEADSHOT поставить даже с m4..
    Последний раз редактировалось Роуди.; 27.09.2015 в 21:48.

  3. Пользователь сказал cпасибо:
    Desulaid (27.09.2015)
  4. #3
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    в этой строке
    PHP код:
    %s {8B7D6B}убил {CD950C}%s {8B7D6B}с выстрелом в голову!
    нету ста символов..
    потому что там больше 100 символов...

    а вот я, к примеру, не увидел смысла в этом участке кода
    PHP код:
    SetPVarInt(playerid"kills"0); 
    SetPVarInt(killerid"kills"GetPVarInt(killerid"kills")+1
    и соответственно в его ответвлении
    PHP код:
    else if(GetPVarInt(killerid"kills") > 1)  

            
    format(string37"http://geebrox.esy.es/sounds/cs/%d.wav"random(8)+1); 
            
    PlayAudioStreamForPlayer(killeridstring); 
            
    format(string12"~g~Kills: %d!"GetPVarInt(killerid"kills")); 
            
    GameTextForPlayer(killeridstring30005); 

    Последний раз редактировалось wAx; 27.09.2015 в 21:53.

  5. #4
    Аватар для Роуди.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.07.2015
    Сообщений
    154
    Репутация:
    17 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    потому что там больше 100 символов...

    а вот я, к примеру, не увидел смысла в этом участке кода
    PHP код:
    SetPVarInt(playerid"kills"0); 
    SetPVarInt(killerid"kills"GetPVarInt(killerid"kills")+1
    Точно не считал, но реально оказалось больше 100 :D Просто всегда юзаю способ от Кортеза и не парюсь с этим:)

  6. #5
    Аватар для Geebrox
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    Цитата Сообщение от Роуди. Посмотреть сообщение
    Жесть какая-то, почему сразу в OnPlayerTakeDamage нельзя установить 0.0 ХП при попадание в голову?

    Да и вообще
    PHP код:
    if(issuerid != INVALID_PLAYER_ID)
       {
            
    #define BODY_PART_HEAD 9
            
            
    if(bodypart == BODY_PART_HEAD)
            {
                    
    PlayAudioStreamForPlayer(playerid"http://geebrox.esy.es/sounds/cs/1.wav");
                
    PlayAudioStreamForPlayer(issuerid"http://geebrox.esy.es/sounds/cs/1.wav");
                
                    
    GameTextForPlayer(playerid"~r~HeadShot"30005);
                
    GameTextForPlayer(issuerid"~g~HeadShot"30005);
                
    SetPlayerHealth(playerid0);

                static const
                    
    frm_string[] = "\
                    %s {8B7D6B}убил {CD950C}%s {8B7D6B}с выстрелом в голову!"
    ;
                new 
    string_one[sizeof(frm_string)-2+MAX_PLAYER_NAME-2+MAX_PLAYER_NAME];
                
                
    format(string_onesizeof(string_one), frm_stringname[issuerid], name[playerid]);
                
    SendClientMessageToAll(0xCD950CFFstring_one);
            }
        } 
    UPDATE: Кстати, по твоему коду можно HEADSHOT поставить даже с m4..
    Ага а потом всегда с 1 выстрелом в голову убивать игроков у которых даже полная броня и хп, вот твойй код жесть!

    - - - Добавлено - - -

    Цитата Сообщение от wAx Посмотреть сообщение
    потому что там больше 100 символов...

    а вот я, к примеру, не увидел смысла в этом участке кода
    PHP код:
    SetPVarInt(playerid"kills"0); 
    SetPVarInt(killerid"kills"GetPVarInt(killerid"kills")+1
    и соответственно в его ответвлении
    PHP код:
    else if(GetPVarInt(killerid"kills") > 1)  

            
    format(string37"http://geebrox.esy.es/sounds/cs/%d.wav"random(8)+1); 
            
    PlayAudioStreamForPlayer(killeridstring); 
            
    format(string12"~g~Kills: %d!"GetPVarInt(killerid"kills")); 
            
    GameTextForPlayer(killeridstring30005); 

    Какой именно смысл тебе нужен? Игрок умирает, счет убийств обнуляется, а к убийце прибавляеться +1 к убийстве. а вот if(GetPVarInt(killerid, "kills") > 1) сделал для того чтобы сразу после 1 убийства звук не воспроизводился, ибо каша получется со звуками, вот после 2 убийств начнется воспроизведение звуков.
    Символов считал специальной прогой для измерении строк, так что там точно 100!
    Последний раз редактировалось Geebrox; 28.09.2015 в 15:30.

  7. Пользователь сказал cпасибо:
    Unreal (14.10.2015)
  8. #6
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Geebrox Посмотреть сообщение
    Ага а потом всегда с 1 выстрелом в голову убивать игроков у которых даже полная броня и хп, вот твойй код жесть!
    С каких пор бронежилет спасает от пули в голову?

    По теме: разве PlayAudioStreamForPlayer не будет создавать у игроков лаги после каждого хедшота?
    И что помешало использовать здесь INVALID_PLAYER_ID вместо 65535?
    PHP код:
    if(issuerid != 65535
    {
            if(
    bodypart == 9SetPVarInt(playerid"headshot"issuerid);
            else 
    SetPVarInt(playerid"headshot"INVALID_PLAYER_ID);

    Что интересно, пару строк спустя константа таки используется.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  9. #7
    Аватар для Geebrox
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.08.2015
    Адрес
    Ташкент
    Сообщений
    375
    Репутация:
    97 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    С каких пор бронежилет спасает от пули в голову?

    По теме: разве PlayAudioStreamForPlayer не будет создавать у игроков лаги после каждого хедшота?
    И что помешало использовать здесь INVALID_PLAYER_ID вместо 65535?
    PHP код:
    if(issuerid != 65535
    {
            if(
    bodypart == 9SetPVarInt(playerid"headshot"issuerid);
            else 
    SetPVarInt(playerid"headshot"INVALID_PLAYER_ID);

    Что интересно, пару строк спустя константа таки используется.
    бронижилет в некоторых рп серверах идет как и каска. а в чем разница между 65535 и инвалидом? ни в чем! вот и я использую где как удобно, кому не нравится пусть поменяет, ибо тут сидят не такие уж безоптные скриптеры которые не знают даже как поменять инвалида P.S. "Инвэйлд" для особо грамотных
    Последний раз редактировалось Geebrox; 28.09.2015 в 18:37.

  10. #8
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Geebrox Посмотреть сообщение
    бронижилет в некоторых рп серверах идет как и каска.
    Так пусть на этих "некоторых" серверах и убирают обнуление ХП. Почему все должны под них подстраиваться? Делов-то закомментировать одну строку.

    Цитата Сообщение от Geebrox Посмотреть сообщение
    а в чем разница между 65535 и инвалидом?
    В том, что со следующей версией SA:MP число может измениться, а имя константы всегда остаётся прежним.
    Вы мне напоминаете одного человека, он тоже в размерах массивов ставил 500 вместо MAX_PLAYERS. Всё твердил, что ему так удобно.
    А потом вышла новая версия сервера на 1000 игроков и тому быдлокодеру пришлось обшаривать весь мод и заменять 500 на 1000.

    Цитата Сообщение от Geebrox Посмотреть сообщение
    ни в чем! вот и я использую где как удобно, кому не нравится пусть поменяет
    Сайтом ошиблись, г-и не здесь.

    Цитата Сообщение от Geebrox Посмотреть сообщение
    "Инвэйлд" для особо грамотных
    Упрекаете самого себя в ошибках? А вот это уже что-то новое. Кстати, транскрипция всё равно неправильная.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  11. #9
    Аватар для gangzone.ini
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.06.2014
    Сообщений
    651
    Репутация:
    106 ±
    Цитата Сообщение от Geebrox Посмотреть сообщение
    Ага а потом всегда с 1 выстрелом в голову убивать игроков у которых даже полная броня и хп, вот твойй код жесть!

    - - - Добавлено - - -



    Какой именно смысл тебе нужен? Игрок умирает, счет убийств обнуляется, а к убийце прибавляеться +1 к убийстве. а вот if(GetPVarInt(killerid, "kills") > 1) сделал для того чтобы сразу после 1 убийства звук не воспроизводился, ибо каша получется со звуками, вот после 2 убийств начнется воспроизведение звуков.
    Символов считал специальной прогой для измерении строк, так что там точно 100!
    120 символов тут...
    Последний раз редактировалось gangzone.ini; 28.09.2015 в 23:01.

  12. #10
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    Цитата Сообщение от gangzone.ini Посмотреть сообщение
    120 символов тут...
    102 xD, но суть ведь не в этом...

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •