Рекомендованные сообщения



8 posts in this topic

Проблемы две:

[1] При ПейДее, не появляется надпись "Вы уже отыграли: %d часов"

Вот сток

stock PayDay(playerid)
{
        for(new i=0; i<MAX_PLAYERS; i++) // Цикл проверяющий всех игроков
        {
                new string[144];
                GiveHours(playerid);
				format(string, sizeof(string), "Вы уже отыграли: %d часов", pHours);
        }
}     

Вот паблик в котором вызывается сток

forward UpdateTime(playerid);
public UpdateTime(playerid)
{
        new hour, minute, second;
        gettime(hour, minute, second);
        if(minute == 0) // Зарплата выдается каждый час в 0 минут.
        {
                PayDay(playerid); // Вызываем паблик с зарплатой.
        }
        return 1;
}

[2] После каждого payday в статистике персонажа добавляется по 1000 отыгранных часов, а нужно чтобы по 1 часу.

Вот сток

stock GiveHours(playerid)
{
	    PlayerInfo[playerid][pHours]++;
}

На всякий случай кинул сток ShowStats.

stock ShowStats(playerid, checkadm)
{
	new dialog[400];
	format(dialog, sizeof(dialog),
		"{FFFFFF}Ник:\t\t{0089ff}%s\n\
		{FFFFFF}Пол:\t\t{0089ff}%s\n\
		{FFFFFF}Раса:\t\t{0089ff}%s\n\
		{FFFFFF}Возраст:\t{0089ff}%d лет/год\n\
		{FFFFFF}Организация:\t{0089ff}%s\n\
		{FFFFFF}Отыгранных часов:\t\t{0089ff}%d\n",
	pName(playerid),
	(PlayerInfo[playerid][pSex] == 1) ? ("Мужской") : ("Женский"),
	PlayerRaces[PlayerInfo[playerid][pRace]-1],
	PlayerInfo[playerid][pAge],
	PlayerInfo[playerid][pMember],
	PlayerInfo[playerid][pHours]
	);
	if(checkadm == 0) SPD(playerid, DLG_STATS, DIALOG_STYLE_MSGBOX, !"{ff9300}Статистика персонажа", dialog, !"Назад", !"Закрыть");
	else SPD(playerid, DLG_NONE, DIALOG_STYLE_MSGBOX, !"{ff9300}Статистика персонажа", dialog, !"Закрыть", "");
}

+rep, за одну проблему

Edited by daltwb

Share this post


Link to post
Share on other sites

@daltwb, UpdateTime с какой частотой вызывается? Покажите функцию создания этого таймера.

 

И функцию PayDay замените этой:

stock PayDay(playerid)
{
	new string[144];
	GiveHours(playerid);
	format(string, sizeof(string), "Вы уже отыграли: %d часов", pHours);
	SendClientMessage(playerid, -1, string);
}

 

Share this post


Link to post
Share on other sites

@odosenokВот

SetTimer("UpdateTime", 1000*60, 1); 

 

Share this post


Link to post
Share on other sites

@daltwb, замените этой строкой:

SetTimerEx("UpdateTime", 1000*60, true, "i", playerid); 

И переместите ее в авторизацию (в конец авторизации).

 

p.s. за репутацией тут никто не гонится. И без "+rep за одну проблема" вам помогут.

Все остальное вроде как нормально. Проверьте еще раз в игре.

Share this post


Link to post
Share on other sites

@odosenok В авторизацию? Т.е. в public OnGameModeInit()?

@odosenok Появились ошибки.

Цитата

C:\Users\Администратор\Desktop\SERVER\gamemodes\droid.pwn(152) : warning 202: number of arguments does not match definition
C:\Users\Администратор\Desktop\SERVER\gamemodes\droid.pwn(152) : error 017: undefined symbol "playerid"

 

Share this post


Link to post
Share on other sites

@daltwb, OnGameModeInit - public-функция, вызывающаяся при загрузке игрового мода. А я прошу в авторизацию игрока. Вот он ввел пароль успешно, начинается загрузка данных его аккаунта. Вот туда и нужно добавить этот таймер.


Ах, да, его еще удалить нужно при отключении игрока. В начало мода добавьте:

new gPlayerTimer[MAX_PLAYERS] = {-1, ...}; // создадим переменную, куда будем записывать ID таймера конкретного игрока

Строку с созданием таймера еще раз замените этой:

gPlayerTimer[playerid] = SetTimerEx("UpdateTime", 1000*60, true, "i", playerid); // запишем в переменную ID таймера номер созданного для игрока таймера

И в OnPlayerDisconnect:

if(gPlayerTimer[playerid] != -1) { // если таймер для этого игрока был создан (в переменной присутствует валидное значение ID таймера)
	KillTimer(gPlayerTimer[playerid]); // удалим таймер по его ID
	gPlayerTimer[playerid] = -1; // сделаем значение переменной пустым
}

 

Share this post


Link to post
Share on other sites

@odosenok Сделал все как сказали

Ошибка: error 017: undefined symbol "playerid"

@odosenok Добавил это в паблик OnPlayerConnect, ошибка исчезла

gPlayerTimer[playerid] = SetTimerEx("UpdateTime", 1000*60, true, "i", playerid); // запишем в переменную ID таймера номер созданного для игрока таймера

 

Share this post


Link to post
Share on other sites

@odosenok Спасибо, щас все работает более менее стабильно.

Но появилась другая ошибка, зашел в игру. Вызвал payday с помощью команды.

А там появилось: "Вы уже отыграли: 206 часов", число не меняеться. Но в статистике персонажа все работает хорошо.

@daltwb Исправил последующую ошибку самостоятельно, Спасибо.

Закрываю тему.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • misha_makilov
      By misha_makilov


      Просмотр файла Arizona RP | Nike
      1. Система каршеринга (Полностью написана с 0 и готова).
      2. Система дрифта. (Написана с 0, не доделан магазин аксессуаров).
      3. Система заточек, а так же улучшения на них, как на аризоне рп, по типу больше хп или урона. (Система готова до конца)
      4. Динамическая система казино, казино работает как бизнес, можно добавить несколько казино и управлять ими, в них можно менять цены на все, что имеет цену в самом казино (Полностью написана с 0 и готова).
      5. Система для слетов бизнесов и домов, можно выставить через сколько он слетит (Полностью написана с 0 и готова).
      6. Система люкс каров (Полностью написана с 0 и готова, даже с таймеров, но необходим плагин на машины)
      7. Полностью был оптимизирован весь мод, а так же подправлен код + убраны все ошибки связанные с БД
      8. Исправлены все возможные баги, который находили игроки на Arizona Nike и мною.
      9. Система урона с заточенными аксессуарами. (Копия оригинальной аризоны рп)
      10. Смена текста у организаций на стенде. (Копия оригинальной аризоны рп)
      11. Начата разработка системы майнинга (Система будет не много другой, не как на оригинальной аризоне)
      12. Сайт с логами, с небольшими переделками.
       
      Обзор мода - https://www.youtube.com/watch?v=MrQ6tFQsD2o
       
      Цена данного мода 800 рублей + еженедельная подписка навсегда(включает в себя еженедельные обновления)

      Для получения сайта с логами, обратитесь сюда - https://vk.com/jenyahuntwill (Необходимо предоставить док-ва, что вы купили данный мод)
      Добавил misha_makilov Добавлено 29.05.2021 Категория Моды Автор Mayota_Nebr  
    • glvde.
      By glvde.
      Хранение данных (версия MySQL): R39-6.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 65908.
      Анти-чит: Nexius-AC v1.9.55.
       
      Автор данного мода: неизвестно.
      Автор данной доработки: glvde. (я).

      На доработку мода ушло около двух недель.
      Тестовый сервер предоставляется по запросу покупателя.
       
       
       

      Не исключено, что есть баги. Каждую неделю выходит багофикс.
      Всем спасибо за внимание.
    • glvde.
      By glvde.


      Просмотр файла Arizona RolePlay | Paige
      Хранение данных (версия MySQL): R39-6.
      Командный процессор: Pawn.CMD.
      Количество строк в моде (без маппинга): 65908.
      Анти-чит: Nexius-AC v1.9.55.
       
      Автор данного мода: неизвестно.
      Автор данной доработки: glvde. (я).

      На доработку мода ушло около двух недель.
      Тестовый сервер предоставляется по запросу покупателя.
       
       
       

      Не исключено, что есть баги. Каждую неделю выходит багофикс.
      Всем спасибо за внимание.
      Добавил glvde. Добавлено 16.06.2021 Категория Моды Автор glvde.  
    • Человек-редиска
      By Редиска
      ПОМОГИТЕ!!!!!!!!
      НЕ СОХРАНЯЮТСЯ НОМЕРА НА АВТО.
      ПОЛУЧАЮ НОМЕРА, А ОНИ ПРОПАДАЮТ ПОСЛЕ ПОЛУЧЕНИЯ.
      ТО ЕСТЬ, КОГДА ПРОПИСЫВАЮ КОМАНДУ /FIXCAR И ВЫБЕРАЮ ВЫГРУЗИТЬ А ПОТОМ ЗАГРУЗИТЬ.
      ТО НОМЕРОВ УЖЕ НЕТУ, ТУПО ПРОПАЛИ!
      ЗАХОДИЛ В БД ТАМ ОНИ ПОЯВЛЯЮТСЯ, А НА АВТО ПОЧЕМУ ТО НЕ ОТОБРАЖАЮТСЯ.
      ПОТОМ Я РЕШИЛ ЗАЙТИ В ТАБЛИЦУ ПОД НАЗВАНИЕМ OWNABLE_CARS ТАМ Я УВИДЕЛ СТРОКУ C_NUMBERS
      В ЭТОМ СТРОКЕ Я ПРОПИСАЛ СВОЁ ИМЯ, ПОТОМ ЗАШЁЛ В ИГРУ, ЗАГРУЖАЮ АВТО И ЕСТЬ НОМЕРА.
      А ТО ЧТО У МЕНЯ ЕСТЬ ЕЩЁ ОДНА ТАБЛИЦА ПОД НАЗВАНИЕМ OWNABLE_NUMBERS.
      ТАМ У МЕНЯ ТОЛЬКО НОМЕРА ПОЯВЛЯЮТСЯ И ВСЁ. ТОЕСТЬ ОНИ НЕ ПРИВЯЗЫВАЮТСЯ К АВТО КОРОЧЕ ВОТ И ВСЁ!!!!!!
      ПОМОГИТЕ УЖЕ ПОЖАЛУЙСТА СРОЧНО НУЖНО.