Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Почему при PlayerTextDrawDestroy значение переменной не обнуляется?

Статус
В этой теме нельзя размещать новые ответы.

McLuhan

Компетентный
PHP:
// для примера
new PlayerText: PTD_TextDraw[MAX_PLAYERS];

// В нужном нам месте создаем
PTD_TextDraw[playerid] = CreatePlayerTextDraw(playerid, 0.0, 0.0, "textdraw");
PlayerTextDrawLetterSize(playerid, PTD_TextDraw[playerid], 0.359238, 1.681666);
PlayerTextDrawAlignment(playerid,PTD_TextDraw[playerid], 2);
PlayerTextDrawColor(playerid, PTD_TextDraw[playerid], -1);
PlayerTextDrawSetShadow(playerid,PTD_TextDraw[playerid], 0);
PlayerTextDrawSetOutline(playerid, PTD_TextDraw[playerid], 0);
PlayerTextDrawBackgroundColor(playerid,PTD_TextDraw[playerid], 255);
PlayerTextDrawFont(playerid, PTD_TextDraw[playerid], 2);
PlayerTextDrawSetProportional(playerid, PTD_TextDraw[playerid], 1);
PlayerTextDrawSetShadow(playerid, PTD_TextDraw[playerid], 0);
PlayerTextDrawSetSelectable(playerid, PTD_TextDraw[playerid], false);
PlayerTextDrawShow(playerid, PTD_TextDraw[playerid]);

// В нужном нам месте удаляем
PlayerTextDrawDestroy(playerid, PTD_TextDraw[playerid]);
Вопрос: Почему после удаления этого текстдрава значение PTD_TextDraw[playerid] не присваивается INVALID_TEXTDRAW_ID, либо 0? Из-за этого при перезаходе с использованием других player-текстдравов они просто путаются, приходится при коннекте присваивать переменной PTD_TextDraw[playerid] = INVALID_TEXTDRAW_ID; с предупреждением tag micmatch

---------- Сообщение добавлено в 18:38 ---------- Предыдущее сообщение добавлено в 18:12 ----------

Можете это вставить и проверить сами:
PHP:
#include <a_samp>

new PlayerText: PTD_TextDraw[MAX_PLAYERS][3];

public OnFilterScriptInit()
{
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

public OnPlayerConnect(playerid)
{
	PTD_TextDraw[playerid][0] = CreatePlayerTextDraw(playerid, 0.0, 0.0, "textdraw");
	PlayerTextDrawLetterSize(playerid, PTD_TextDraw[playerid][0], 0.359238, 1.681666);
	PlayerTextDrawAlignment(playerid,PTD_TextDraw[playerid][0], 2);
	PlayerTextDrawColor(playerid, PTD_TextDraw[playerid][0], -1);
	PlayerTextDrawSetShadow(0,PTD_TextDraw[playerid][0], 0);
	PlayerTextDrawSetOutline(playerid, PTD_TextDraw[playerid][0], 0);
	PlayerTextDrawBackgroundColor(0,PTD_TextDraw[playerid][0], 255);
	PlayerTextDrawFont(playerid, PTD_TextDraw[playerid][0], 2);
	PlayerTextDrawSetProportional(playerid, PTD_TextDraw[playerid][0], 1);
	PlayerTextDrawSetShadow(playerid, PTD_TextDraw[playerid][0], 0);
	PlayerTextDrawSetSelectable(playerid, PTD_TextDraw[playerid][0], false);
	PlayerTextDrawShow(playerid, PTD_TextDraw[playerid][0]);
	printf("Create[0]: %d", _:PTD_TextDraw[playerid][0]);

	PTD_TextDraw[playerid][1] = CreatePlayerTextDraw(playerid, 0.0, 0.0, "textdraw");
	PlayerTextDrawLetterSize(playerid, PTD_TextDraw[playerid][1], 0.359238, 1.681666);
	PlayerTextDrawAlignment(0,PTD_TextDraw[playerid][1], 2);
	PlayerTextDrawColor(playerid, PTD_TextDraw[playerid][1], -1);
	PlayerTextDrawSetShadow(0,PTD_TextDraw[playerid][1], 0);
	PlayerTextDrawSetOutline(playerid, PTD_TextDraw[playerid][1], 0);
	PlayerTextDrawBackgroundColor(0,PTD_TextDraw[playerid][1], 255);
	PlayerTextDrawFont(playerid, PTD_TextDraw[playerid][1], 2);
	PlayerTextDrawSetProportional(playerid, PTD_TextDraw[playerid][1], 1);
	PlayerTextDrawSetShadow(playerid, PTD_TextDraw[playerid][1], 0);
	PlayerTextDrawSetSelectable(playerid, PTD_TextDraw[playerid][1], false);
	PlayerTextDrawShow(playerid, PTD_TextDraw[playerid][1]);
	printf("Create[1]: %d", _:PTD_TextDraw[playerid][1]);

	PTD_TextDraw[playerid][2] = CreatePlayerTextDraw(playerid, 0.0, 0.0, "textdraw");
	PlayerTextDrawLetterSize(playerid, PTD_TextDraw[playerid][2], 0.359238, 1.681666);
	PlayerTextDrawAlignment(0,PTD_TextDraw[playerid][2], 2);
	PlayerTextDrawColor(playerid, PTD_TextDraw[playerid][2], -1);
	PlayerTextDrawSetShadow(0,PTD_TextDraw[playerid][2], 0);
	PlayerTextDrawSetOutline(playerid, PTD_TextDraw[playerid][2], 0);
	PlayerTextDrawBackgroundColor(0,PTD_TextDraw[playerid][2], 255);
	PlayerTextDrawFont(playerid, PTD_TextDraw[playerid][2], 2);
	PlayerTextDrawSetProportional(playerid, PTD_TextDraw[playerid][2], 1);
	PlayerTextDrawSetShadow(playerid, PTD_TextDraw[playerid][2], 0);
	PlayerTextDrawSetSelectable(playerid, PTD_TextDraw[playerid][2], false);
	PlayerTextDrawShow(playerid, PTD_TextDraw[playerid][2]);
	printf("Create[2]: %d", _:PTD_TextDraw[playerid][2]);

    SetTimerEx("@timer", 2000, 0, "i", playerid);
	return 1;
}

@timer(playerid);
@timer(playerid)
{
	printf("Перед удалением[0]: %d", _:PTD_TextDraw[playerid][0]);
	PlayerTextDrawDestroy(playerid, PTD_TextDraw[playerid][0]);
	printf("Перед удалением[1]: %d", _:PTD_TextDraw[playerid][1]);
	PlayerTextDrawDestroy(playerid, PTD_TextDraw[playerid][1]);
	printf("Перед удалением[2]: %d", _:PTD_TextDraw[playerid][2]);
	PlayerTextDrawDestroy(playerid, PTD_TextDraw[playerid][2]);
	SetTimerEx("@timer2", 2000, 0, "i", playerid);
	return 1;
}

@timer2(playerid);
@timer2(playerid)
{
	printf("После: %d", _:PTD_TextDraw[playerid][0]);
	printf("После: %d", _:PTD_TextDraw[playerid][1]);
	printf("После: %d", _:PTD_TextDraw[playerid][2]);
	return 1;
}
server_log:
[16:34:57] Create[0]: 0
[16:34:57] Create[1]: 1
[16:34:57] Create[2]: 2
[16:34:59] Перед удалением[0]: 0
[16:34:59] Перед удалением[1]: 1
[16:34:59] Перед удалением[2]: 2
[16:35:01] После: 0
[16:35:01] После: 1
[16:35:01] После: 2
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу