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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±

    Как обойти вызов одного и того же стока (Рекурсия хелп)

    Всем привет, делаю лотерею для мода. И никак не могу обойтись без вызова этого же стока. Как можно сделать подругому? В коде, я в // опишу всё.

    PHP код:
    stock RandomPlayer_Lottery()
    {
        new 
    win_id RandomEx(0150); // рандомим айди
        
    if(!IsPlayerConnected(win_id)) // если игрок не онлайн, заного вызвааем сток
        
    {
             
    RandomPlayer_Lottery();
        }
            
    //тут уже выдача

    И как видно, например если рандом выдаст число 130, а игрока с идом 130 нету, то он заного вызовет этот сток и будет рандомить другой айди. Хелп короче(

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    PHP код:
    new winnerid;
    do
    {
        
    winnerid RandomEx(0150);
    }
    while (!
    IsPlayerConnected(winnerid)); 
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  3. Пользователь сказал cпасибо:
    StevenH (29.12.2015)
  4. #3
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    PHP код:
    new winnerid;
    do
    {
        
    winnerid RandomEx(0150);
    }
    while (!
    IsPlayerConnected(winnerid)); 
    Правильный код?:
    PHP код:
    stock RandomPlayer_Lottery()
    {
        new 
    winnerid;
        do
        {
            
    winnerid RandomEx(0150);
        }
        while(!
    IsPlayerConnected(winnerid));
        
    format(stringsizeof(string), "[Новогодняя Лотерея 2015-2016]: Счастливчик %s[%d] получил(а) случайный подарок от сервера!"PlayerInfo[winnerid][pNames], winnerid);
        
    SendClientMessageToAll(0xF68400FFstring);


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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Правильный код?:
    PHP код:
    stock RandomPlayer_Lottery()
    {
        new 
    winnerid;
        do
        {
            
    winnerid RandomEx(0150);
        }
        while(!
    IsPlayerConnected(winnerid));
        
    format(stringsizeof(string), "[Новогодняя Лотерея 2015-2016]: Счастливчик %s[%d] получил(а) случайный подарок от сервера!"PlayerInfo[winnerid][pNames], winnerid);
        
    SendClientMessageToAll(0xF68400FFstring);

    Почти. Забыл спросить, что это за "магическое число" 150? Откуда вы его взяли?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. Пользователь сказал cпасибо:
    StevenH (30.12.2015)
  7. #5
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Почти. Забыл спросить, что это за "магическое число" 150? Откуда вы его взяли?
    тип максимальный онлайн сервера (150 слотов). Онлайн доходит до 150 человек каждый день.
    Как подругому сделать я увы не знаю :(
    Последний раз редактировалось StevenH; 30.12.2015 в 00:02.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    тип максимальный онлайн сервера (150 слотов).
    Как подругому сделать я увы не знаю :(
    GetPlayerPoolSize ?
    PHP код:
    new winneridplayer_pool_size GetPlayerPoolSize();
    if (
    player_pool_size == 0)
        
    player_pool_size 1;
    do
    {
        
    winnerid random(player_pool_size);
    }
    while(!
    IsPlayerConnected(winnerid)); 
    Всяко лучше, чем потом выискивать функцию и менять в ней число при увеличении онлайна.
    Последний раз редактировалось Daniel_Cortez; 30.12.2015 в 00:08. Причина: upd
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

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

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    GetPlayerPoolSize ?
    PHP код:
    winnerid random(GetPlayerPoolSize() + 1); 
    Всяко лучше, чем потом выискивать функцию и менять в ней число при увеличении онлайна.
    Значит должно получится как то так?:
    PHP код:
    stock RandomPlayer_Lottery()
    {
        new 
    string[128]; // потом высчитаю
        
    new winnerid;
        do
        {
            
    winnerid random(GetPlayerPoolSize() + 1);
        }
        while(!
    IsPlayerConnected(winnerid));
        
    format(stringsizeof(string), "[Новогодняя Лотерея 2015-2016]: Счастливчик %s[%d] получил(а) случайный подарок от сервера!"PlayerInfo[winnerid][pNames], winnerid);
        
    SendClientMessageToAll(0xF68400FFstring);

    Последний раз редактировалось StevenH; 30.12.2015 в 00:06.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Значит должно получится как то так?:
    PHP код:
    stock RandomPlayer_Lottery()
    {
        new 
    string[128]; // потом высчитаю
        
    new winnerid;
        do
        {
            
    winnerid random(GetPlayerPoolSize() + 1);
        }
        while(!
    IsPlayerConnected(winnerid));
        
    format(stringsizeof(string), "[Новогодняя Лотерея 2015-2016]: Счастливчик %s[%d] получил(а) случайный подарок от сервера!"PlayerInfo[winnerid][pNames], winnerid);
        
    SendClientMessageToAll(0xF68400FFstring);

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

  12. Пользователь сказал cпасибо:
    StevenH (30.12.2015)
  13. #9
    Аватар для StevenH
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.10.2015
    Сообщений
    516
    Репутация:
    21 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Обновил свой пост выше, проверьте.
    Спасибо, посмотрел.
    Но почему то на 0 айди не реагирует.

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

    upd, зашёл через песочницу с 3 аккаунта (на тест сервере), вроде как не работает на последний айди который на сервере.

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

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от StevenH Посмотреть сообщение
    Спасибо, посмотрел.
    Но почему то на 0 айди не реагирует.

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

    upd, зашёл через песочницу с 3 аккаунта (на тест сервере), вроде как не работает на последний айди который на сервере.
    Как вы это выяснили? Код сделали точно так, как показано в примере?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  15. Пользователь сказал cпасибо:
    StevenH (30.12.2015)
 

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

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

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

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

Ваши права

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