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

Тема: Чат

  1. #1
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±

    Чат

    Всем привет. В общем, бороздил просторы интернета найти нормальный сток для отправки сообщений в чат (для RP сервера), наткнулся на такую вещь:
    PHP код:
    stock ProxDetector(Float:radius 30.0playeridtext[], col1 0xFFFFFFFFcol2 0xCCCCCCFFcol3 0x999999FFcol4 0x666666FFcol5 0x333333FF)
    {
        new 
    Float:xFloat:yFloat:z;
        
    GetPlayerPos(playeridxyz);
        new 
    Float:distvirtualworld GetPlayerVirtualWorld(playerid), interior GetPlayerInterior(playerid);
        
    tforeach(i)
        {
            if(
    virtualworld != GetPlayerVirtualWorld(i) || interior != GetPlayerInterior(i)) continue;
            
    dist GetPlayerDistanceFromPoint(ixyz);
            if(
    dist radius 16SCM(icol1text);
            else if(
    dist radius 8SCM(icol2text);
            else if(
    dist radius 4SCM(icol3text);
            else if(
    dist radius 2SCM(icol4text);
            else if(
    dist radiusSCM(icol5text);
        }
        return 
    1;

    И вот ещё один:
    PHP код:
    stock ProxDetector(playeridFloat:radistring[], col1,col2,col3,col4,col5)
    {
        new 
    FloatPos[3], FloatRadius;
        
    GetPlayerPos(playeridPos[0], Pos[1], Pos[2]);
        new 
    i;
        foreach(
    i)
        {
            
    Radius GetPlayerDistanceFromPoint(iPos[0], Pos[1], Pos[2]);
            if (
    Radius radi 16SendClientMessage(icol1string);
            else if(
    Radius radi 8SendClientMessage(icol2string);
            else if(
    Radius radi 4SendClientMessage(icol3string);
            else if(
    Radius radi 2SendClientMessage(icol4string);
            else if(
    Radius radiSendClientMessage(icol5string);
        }
        return 
    1;

    Они схожи, но вопрос всё равно один и тот же (ниже)
    Нормальны ли они в плане кода? Просто видел намного больше (< официальный форум SA:MP), и эти два, по-моему более красиво смотрятся.
    Последний раз редактировалось PawnoNoob; 03.08.2016 в 00:08.

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Мало где используется 5 разных цветов, да и проще использовать 1 цвет, не правда?

    PHP код:
    stock ProxDetector(Float:radiusplayeridstring[], color = -1)
    {
        new 
    Float:X,
            
    Float:Y,
            
    Float:Z,
            
    GetMaxPlayers(),
            
    world GetPlayerVirtualWorld(playerid),
            
    interior GetPlayerInterior(playerid);
            
        
    GetPlayerPos(playeridXYZ);
        do
        {
            if(
    == IsPlayerConnected(--i)
            || 
    world != GetPlayerVirtualWorld(i)
            || 
    interior != GetPlayerInterior(i)
            || 
    GetPlayerDistanceFromPoint(ixyz) > radius) continue;
            
    SendClientMessage(icolorstring);
        }
        while(
    0);
        return 
    true;

    Использование:
    PHP код:
    ProxDetector(10.0playerid"example"0xAFAFAFFF); 
    Последний раз редактировалось StevenH; 03.08.2016 в 00:56. Причина: Добавил проверку на интерьер

  3. #3
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Мало где используется 5 разных цветов, да и проще использовать 1 цвет, не правда?
    Не не это у него фишка такая интересная, чем дальше стоишь тем темнее или светлее надпись,
    я где то видел код покороче ziggi выкладывал, задавали уже вопрос подобный.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  4. #4
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Мало где используется 5 разных цветов, да и проще использовать 1 цвет, не правда?

    PHP код:
    stock ProxDetector(Float:radiusplayeridstring[], color = -1)
    {
        new 
    Float:X,
            
    Float:Y,
            
    Float:Z,
            
    GetMaxPlayers(),
            
    world GetPlayerVirtualWorld(playerid),
            
    interior GetPlayerInterior(playerid);
            
        
    GetPlayerPos(playeridXYZ);
        do
        {
            if(
    == IsPlayerConnected(--i)
            || 
    world != GetPlayerVirtualWorld(i)
            || 
    interior != GetPlayerInterior(i)
            || 
    GetPlayerDistanceFromPoint(ixyz) > radius) continue;
            
    SendClientMessage(icolorstring);
        }
        while(
    0);
        return 
    true;

    Использование:
    PHP код:
    ProxDetector(10.0playerid"example"0xAFAFAFFF); 
    Да есть у меня код с одним цветом, Deimos помогал, я решил спросить, нормальные ли те стоки, которые я написал выше (в плане кода).

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    PHP код:
    stock ProxDetector(Float:radius 30.0playeridtext[], col1 0xFFFFFFFFcol2 0xCCCCCCFFcol3 0x999999FFcol4 0x666666FFcol5 0x333333FF
    Зачем объявлять в аргументах такие данные,
    либо без объявления сделай,
    либо внеси всё внутрь стока чтобы было так примерно stock ProxDetector(playerid, text[])
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Стоит указать авторство функции?
      Открыть/закрыть



    Цитата Сообщение от StevenH Посмотреть сообщение
    Мало где используется 5 разных цветов, да и проще использовать 1 цвет, не правда?

    PHP код:
    stock ProxDetector(Float:radiusplayeridstring[], color = -1)
    {
        new 
    Float:X,
            
    Float:Y,
            
    Float:Z,
            
    GetMaxPlayers(),
            
    world GetPlayerVirtualWorld(playerid),
            
    interior GetPlayerInterior(playerid);
            
        
    GetPlayerPos(playeridXYZ);
        do
        {
            if(
    == IsPlayerConnected(--i)
            || 
    world != GetPlayerVirtualWorld(i)
            || 
    interior != GetPlayerInterior(i)
            || 
    GetPlayerDistanceFromPoint(ixyz) > radius) continue;
            
    SendClientMessage(icolorstring);
        }
        while(
    0);
        return 
    true;

    Использование:
    PHP код:
    ProxDetector(10.0playerid"example"0xAFAFAFFF); 
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  7. #7
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Вот вариант с автоматическим изменением цвета. Как мне кажется, он лучше всего реализует суть этой функции.

    UPD. Последняя версия функции здесь: http://pro-pawn.ru/showthread.php?p=75874#post75874

    P.S. Проверки вида IsPlayerConnected, GetPlayerInterior, GetPlayerVirtualWorld лучше заменить одной IsPlayerStreamedIn.
    Последний раз редактировалось ziggi; 03.08.2016 в 15:56.

  8. 5 пользователя(ей) сказали cпасибо:
    $continue$ (03.08.2016) Osetin (03.08.2016) PawnoNoob (03.08.2016) VVWVV (03.08.2016) _lizard (03.08.2016)
  9. #8
    Аватар для _lizard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    11.02.2016
    Адрес
    Геленджик
    Сообщений
    193
    Репутация:
    26 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Вот вариант с автоматическим изменением цвета. Как мне кажется, он лучше всего реализует суть этой функции.

    PHP код:
    stock ProxDetector(playeridFloat:max_rangecolorstring[])
    {
        new
            
    Float:pos_x,
            
    Float:pos_y,
            
    Float:pos_z,
            
    Float:range,
            
    code;

        
    GetPlayerPos(playeridpos_xpos_ypos_z);

        foreach (new 
    Player) {
            if (!
    IsPlayerStreamedIn(playeridi)) {
                continue;
            }

            
    range GetPlayerDistanceFromPoint(ipos_xpos_ypos_z);
            if (
    range max_range) {
                continue;
            }

            
    code floatround((max_range range) / max_range 255.0);

            
    SendClientMessage(icolor & (0xFF | (code << 8) | (code << 16) | (code << 24)), string);
        }

        return 
    1;

    P.S. Проверки вида IsPlayerConnected, GetPlayerInterior, GetPlayerVirtualWorld лучше заменить одной IsPlayerStreamedIn.
    Также, если использовать данный вариант, надо учесть, что самому игроку, который пишет что-то в чат, писаться сообщение не будет, так как функция IsPlayerStreamedIn() возвращает 0, если в аргументах playerid forplayerid указан один и тот же игрок.
    (Просто во многих системах самому игроку пишет сообщение в цикле, как и всем остальным)
    Последний раз редактировалось _lizard; 03.08.2016 в 12:11.

  10. Пользователь сказал cпасибо:
    PawnoNoob (03.08.2016)
  11. #9
    Аватар для PawnoNoob
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.03.2016
    Сообщений
    257
    Репутация:
    3 ±
    А те стоки, указанные выше, они нормальны в плане кода? Ну, в них, по сути, всё, как мне нужно, вот и спрашиваю.

  12. #10
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от _lizard Посмотреть сообщение
    Также, если использовать данный вариант, надо учесть, что самому игроку, который пишет что-то в чат, писаться сообщение не будет, так как функция IsPlayerStreamedIn() возвращает 0, если в аргументах playerid forplayerid указан один и тот же игрок.
    (Просто во многих системах самому игроку пишет сообщение в цикле, как и всем остальным)
    Спасибо, исправил.

    Цитата Сообщение от PawnoNoob Посмотреть сообщение
    А те стоки, указанные выше, они нормальны в плане кода? Ну, в них, по сути, всё, как мне нужно, вот и спрашиваю.
    Нормальную функцию в плане кода ты получил, а те функции, что скинул ты - лишь имитируют правильную работу.

  13. Пользователь сказал cпасибо:
    PawnoNoob (03.08.2016)
 

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

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

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

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

Ваши права

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