Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Смерть-информер - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ FS ][ All ]
Смерть-информер Информация об убийстве.
Оценка: -----

#1
Пользователь офлайн   ALFONSO. 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Я люблю мобильный SA-MP и проект, на котором я играю сделали такую функцию, которая после смерти уведомляет игроку об нарушение другого игрока. Я её повторил, и возможно это самая лёгкая функция, но для меня первая.
Вставляем в public OnPlayerDeath(playerid, killerid, reason)

if(killerid != INVALID_PLAYER_ID)  // Убедимся что у убийци не неверный идентификатор.
    {
	    new hour, minute, second; // Переменная с временем.
		gettime(hour, minute, second); // Узнаём текущае время.
		new killername[16], string[256], weaponname[24]; // Переменная с информацией про убийцу и названием оружия.
		new day, month, year; // Переменная с днем/месяцем/годом.
	 	getdate(year, month, day); // Узнаем текущую датут.
		GetPlayerName(killerid, killername, sizeof(killername)); // Узнаём имя убийци.
		new weaponid = GetPlayerWeapon(killerid); 
	 	GetWeaponName(weaponid, weaponname, sizeof (weaponname)); // По номеру оружия узнаем его название.
		format(string, sizeof(string), "Вас убил {FF0000}%s[%d] {FFFFFF}с помощью: {FF0000}%s. {FFFFFF}Время: {FF0000}%d:%d. {FFFFFF}Дата: {FF0000}%d:%d:%d.", killername, killerid, weaponname, hour, minute, day, month, year);
		SendClientMessage(playerid, 0xFFFFFFFF, string); // Информируем человека после его серти.
	}


Сообщение отредактировал ALFONSO.: 01 апреля 2021 - 13:51

0

#2
Пользователь офлайн   21th year 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Поставлю + за старание
0

#3
Пользователь офлайн   execution88 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
А почему бы размер массива string не сделать 2048? Если извращаться, то по-настоящему
0

#4
Пользователь онлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияexecution88 (01 апреля 2021 - 08:10) писал:

А почему бы размер массива string не сделать 2048? Если извращаться, то по-настоящему


Лучше уж 4096, чтоб наверняка переполнение стека ловить
0

#5
Пользователь офлайн   ALFONSO. 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Серьёзно, да я уже исправили...
0

#6
Пользователь онлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Ты, видимо, не в курсе, что если в SendClientMessage передать строку длиннее 144 символов, то она не отобразиться? Или что в gettime параметры не обязательны и ни к чему создавать лишнюю переменную? Или что в OnPlayerDeath и так передаётся ID оружия, из которого убили игрока?

if(killerid != INVALID_PLAYER_ID) 
{
    new hour, minute;
    gettime(hour, minute);
    new day, month, year;
    getdate(year, month, day);

    new weapon_name[24];
    GetWeaponName(reason, weapon_name, sizeof(weapon_name));

    new string[144+1];
    GetPlayerName(killerid, string, MAX_PLAYER_NAME);
    format(string, sizeof(string), 
        "Вас убил {FF0000}%s[%d] {FFFFFF}с помощью: {FF0000}%s. {FFFFFF}Время: {FF0000}%d:%d. {FFFFFF}Дата: {FF0000}%d:%d:%d.", 
            string, 
            killerid, 
            weapon_name, 
            hour, minute, 
            day, month, year);
    SendClientMessage(playerid, 0xFFFFFFFF, string);
}

0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика