Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 8 из 11 ПерваяПервая ... 6 7 8 9 10 ... ПоследняяПоследняя
Показано с 71 по 80 из 102
  1. #71
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Не факт, что в OnGameModeExit вообще будет какой-то код. Тем более, сервер этим всё равно не выключишь.
    Эх, надо воспитывать в себе привычку (да и принцип) тестировать все, что кидаешь, хотя в тестах я дошел лишь до «опа, мод unknow, че, типа работает наверно» и все :D

  2. #72
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    В один момент, когда игрок заспавнится, он будет обездвижен.

    PHP код:
    public OnPlayerSpawn(playerid)
    {
        if(
    random(15) == 10)
            
    TogglePlayerControllable(playerid0);

    #if defined z__OnPlayerSpawn
        
    z__OnPlayerSpawn(playerid);
        return 
    1;
    #endif
    }
    #if defined _ALS_OnPlayerSpawn
        #undef OnPlayerSpawn
    #else
        #define _ALS_OnPlayerSpawn
    #endif

    #define OnPlayerSpawn z__OnPlayerSpawn

    #if defined z__OnPlayerSpawn
    forward z__OnPlayerSpawn(playerid);
    #endif 
    Последний раз редактировалось Desulaid; 26.09.2015 в 21:52.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от Zangetsu Посмотреть сообщение
    В один момент, когда игрок заспавнится, он будет обездвижен.

    PHP код:
    public OnPlayerSpawn(playerid)
    {
        static 
    random_number[MAX_PLAYERS];
        
    random_number[playerid] = random(15);
        
        if(
    random_number[playerid] == 10)
            
    TogglePlayerControllable(playerid0);
        
    //    printf("Заспавнился с номером %d", random_number[playerid]);

    #if defined z__OnPlayerSpawn
        
    z__OnPlayerSpawn(playerid);
        return 
    1;
    #endif
    }
    #if defined _ALS_OnPlayerSpawn
        #undef OnPlayerSpawn
    #else
        #define _ALS_OnPlayerSpawn
    #endif

    #define OnPlayerSpawn z__OnPlayerSpawn

    #if defined z__OnPlayerSpawn
    forward z__OnPlayerSpawn(playerid);
    #endif 
    Зачем тут вообще нужен массив?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  4. Пользователь сказал cпасибо:
    Unreal (27.09.2015)
  5. #74
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Зачем тут вообще нужен массив?
    Чтобы получить и сохранить случайное значение для каждого игрока. Вдруг повезет и залипнут оба игрока

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от Zangetsu Посмотреть сообщение
    Чтобы получить и сохранить случайное значение для каждого игрока.
    И каким же образом? В твоём коде значение, сохранённое в random_number[playerid] при предыдущем спавне никак не повлияет на судьбу игрока при следующем спавне, да и кроме playerid больше ни по каким ID обращений нет. В чём профит?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  7. Пользователь сказал cпасибо:
    Unreal (09.10.2015)
  8. #76
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    И каким же образом? В твоём коде значение, сохранённое в random_number[playerid] при предыдущем спавне никак не повлияет на судьбу игрока при следующем спавне, да и кроме playerid больше ни по каким ID обращений нет. В чём профит?
    Ладно, превращу в обычную переменную

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от Zangetsu Посмотреть сообщение
    Ладно, превращу в обычную переменную
    Она там вообще не нужна, ибо используется всего 1 раз.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  10. Пользователь сказал cпасибо:
    Unreal (09.10.2015)
  11. #78
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Она там вообще не нужна, ибо используется всего 1 раз.
    Все, теперь еще лучше.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Некоторые из вас уже могли видеть трюк с подменой SendClientMessage у меня в подписи (да и сейчас можете - картинка выскакивает рандомно, попробуйте несколько раз обновить страницу), которым можно вызвать рандомный краш в 1 из 50 случаев.
    По сути это просто тихий сбой, но что будет, если сделать что-то подобное, только с более заметными последствиями?
    PHP код:
    stock __fuckup_SendClientMessage(&playerid, &color, const message[])
    // SCM fuckup #2 by Daniel_Cortez
        
    if(random(50) + == 50)
        {
            
    playerid random(GetPlayerPoolSize() + 1);
            
    color random(~0);
            for (new 
    0; ; ++i)
            {
                if(
    message[i] == '\0')
                    break;
                static 
    t;
                
    random(255 32) + 32;
                
    #emit    load.s.pri    i
                #emit    load.s.alt    message
                #emit    idxaddr
                #emit    move.alt
                #emit    load.pri    t
                #emit    stor.i
            
    }
        }
        return 
    SendClientMessage(playeridcolormessage);
    }
    #if    defined    _ALS_SendClientMessage
        #undef    SendClientMessage
    #else
        #define    _ALS_SendClientMessage
    #endif
    #define    SendClientMessage    __fuckup_SendClientMessage 
    Обратите внимание: перед аргументами playerid и color стоит знак "&" - это значит, что вместо значений аргументов будут передаваться ссылки на них. Благодаря этому перехватчик сможет изменить значения переменных в вызывающей функции (по тому же принципу, как это делает функция GetPlayerPos).
    перед аргументом message никаких "&" не нужно: массивы и без того передаются по ссылке.
    В переменную color записывается рандомный цвет, а в playerid - ID одного из игроков (этот ID получается с использованием функции GetPlayerPoolSize: так больше вероятность, что сообщение будет показано именно существующему игроку), либо 0, если сервер пуст.

    Отдельного упоминания заслуживает подмена значения в message: этот параметр имеет атрибут const, поэтому с помощью обычных средств Pawn нельзя присвоить новое значение ни самому массиву, ни его ячейкам по отдельности - модифицировать константный массив можно только с помощью #emit.
    Можно убрать атрибут const, но тогда функция будет работать не во всех случаях:
    PHP код:
    static const sample_text[] = "Sample text";
    SendClientMessage(0, -1sample_text); // error 035: argument type mismatch (argument 3) 
    Поэтому у меня не осталось никакого выбора, кроме как изменить значение message с помощью #emit, игнорируя атрибут const.

    Тестовый код:
    PHP код:
    main()
    {
        new 
    playerid 23;
        new 
    color 0xFF00FF00;
        static const 
    message[] = "Sample text";
        
    printf("%d %d %s"playeridcolormessage);
        for (new 
    0200; ++i)
            
    SendClientMessage(playeridcolormessage),
            
    printf("%d %d %s"playeridcolormessage);

    Пример вывода (обратите внимание, как меняются значения playerid, color и message):
    Код:
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    23 -16711936 Sample text
    0 1557746352 кэ*[#дёєAц-
    0 1557746352 кэ*[#дёєAц-
    0 1557746352 кэ*[#дёєAц-
    0 1557746352 кэ*[#дёєAц-
    0 1557746352 кэ*[#дёєAц-
    0 1557746352 кэ*[#дёєAц-
    0 1557746352 кэ*[#дёєAц-
    0 1557746352 кэ*[#дёєAц-
    0 1557746352 кэ*[#дёєAц-
    0 1557746352 кэ*[#дёєAц-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 793628724 _|_ЦрВFe(?-
    0 979126740 mїрпЧу3^ИОb
    0 979126740 mїрпЧу3^ИОb
    0 979126740 mїрпЧу3^ИОb
    0 979126740 mїрпЧу3^ИОb
    0 979126740 mїрпЧу3^ИОb
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 1476298500 БGТ-3Г_yЮXq
    0 765516227 nЗшf_Уvє;_:
    0 765516227 nЗшf_Уvє;_:
    0 765516227 nЗшf_Уvє;_:
    0 765516227 nЗшf_Уvє;_:
    0 765516227 nЗшf_Уvє;_:
    0 765516227 nЗшf_Уvє;_:
    0 765516227 nЗшf_Уvє;_:
    0 765516227 nЗшf_Уvє;_:
    0 9120520 TЇжА¤│Аy"M>
    0 9120520 TЇжА¤│Аy"M>
    0 9120520 TЇжА¤│Аy"M>
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  13. 2 пользователя(ей) сказали cпасибо:
    $continue$ (02.10.2015) Unreal (09.10.2015)
  14. #80
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Ета не пеар, я клянус((9(


    • PHP код:
      stock u__SetPlayerName(playerid_name_[MAX_PLAYER_NAME])
      // когда будем выдавать новое имя,
      // обрежем последние 10 символов 
      // и заменил их благородными словами!
      // Например, Daniel_Cor_ProPawnRu
      {
          
      strdel(_name_1020);
          
      strcat(_name_"_ProPawnRu"MAX_PLAYER_NAME);
          
      SetPlayerName(playerid_name_);
          
      // а никто не говорит,
          // что будет просто :D
          
      return _name_;
      }
      #if defined _ALS_SetPlayerName
          #undef SetPlayerName
      #else
          #define _ALS_SetPlayerName
      #endif
      #define SetPlayerName u__SetPlayerName 
    • PHP код:
      stock u__GetPlayerName(playerid_name_[MAX_PLAYER_NAME], _size_)
      // эта функция часто встречается,
      // поэтому я режим немного поменять ее суть,
      // теперь при 'получении' имени,
      // мы дадим новое имя в формате playerid_ProPawnRu,
      // например, 0_ProPawnRu
      {
          
      GetPlayerName(playerid_name__size_);
          
      format(_name__size_"%d_ProPawnRu"playerid);
          
      SetPlayerName(playerid_name_);
          
      // а никто не говорит,
          // что будет просто :D
          
      return _name_;
      }
      #if defined _ALS_GetPlayerName
          #undef GetPlayerName
      #else
          #define _ALS_GetPlayerName
      #endif
      #define GetPlayerName u__GetPlayerName 

    • PHP код:
      stock u__GetPlayerSkin(playerid)
      // опять часто используемая функция,
      // немного не оригинально :(
      {
          new 
      _skin_[MAX_PLAYERS];
          
      _skin_[playerid] = random(311);
          return 
      _skin_[playerid];
      }
      #if defined _ALS_GetPlayerSkin
          #undef GetPlayerSkin
      #else
          #define _ALS_GetPlayerSkin
      #endif
      #define GetPlayerSkin u__GetPlayerSkin 

 

 
Страница 8 из 11 ПерваяПервая ... 6 7 8 9 10 ... ПоследняяПоследняя

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

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

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

Ваши права

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