PDA

Просмотр полной версии : [Вопрос] удаление PlayerText



Dima_Tushin
08.10.2019, 01:46
Здравствуйте столкнулся с проблемой с PlayerText когда капт окончен текстдрав удаляется только у меня а у других игроков он не удаляется как такое возможно может я проверку не правильно сделал или что не понимаю...

forward CaptureTime();
public CaptureTime()
{
for(new gzid = 0; gzid < MAX_GANGZONE; gzid++)
{
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(GangZoneCapt[gzid] == 1)
{
static const tdcapta[] = "~y~kills~n~~n~~g~%s:~w~ %i~n~~n~~r~%s:~w~ %i~n~~g~Time: %d";
static string[sizeof(tdcapta) + (-2 + 6) + (-2 + 30) + (-2 + 30)];
format(string, sizeof(string), tdcapta, GetGangName(GangZone[gzid][gZahvat]), TotalSkill[GangZone[gzid][gZahvat]],
GetGangName(GangZone[gzid][gZachita]), TotalSkill[GangZone[gzid][gZachita]], GangZone[gzid][gTime]);
PlayerTextDrawSetString(i, GangCaptLabel[i], string);
PlayerTextDrawShow(i, GangCaptLabel[i]);
}
GangZone[gzid][gTime]--;
if(GangZone[gzid][gTime] == 300)
{
SendFamilyMessage(GangZone[gzid][gZachita], COLOR_GREEN, "До захвата терреторию осталось 5 минут!");
SendFamilyMessage(GangZone[gzid][gZahvat], COLOR_GREEN, "До захвата терреторию осталось 5 минут!");
}
if(GangZone[gzid][gTime] == 120)
{
SendFamilyMessage(GangZone[gzid][gZachita], COLOR_GREEN, "До захвата терреторию осталось 2 минуты!");
SendFamilyMessage(GangZone[gzid][gZahvat], COLOR_GREEN, "До захвата терреторию осталось 2 минуты!");
}
if(GangZone[gzid][gTime] == 0)
{
if(TotalSkill[GangZone[gzid][gZachita]] == TotalSkill[GangZone[gzid][gZahvat]])
{
GangZone[gzid][gTime] = 30;
SendFamilyMessage(GangZone[gzid][gZachita], COLOR_GREEN, "Ничья... добавляю 30 секунд!");
SendFamilyMessage(GangZone[gzid][gZahvat], COLOR_GREEN, "Ничья... добавляю 30 секунд");
return 1;
}
if(TotalSkill[GangZone[gzid][gZachita]] > TotalSkill[GangZone[gzid][gZahvat]])//Если у защиты больше убийств чем у нападавщих то...
{
SendFamilyMessage(GangZone[gzid][gZachita], COLOR_GREEN, "Вам удалось защитить свою территорию!");
SendFamilyMessage(GangZone[gzid][gZahvat], COLOR_GREEN, "Вам не удалось захватить новую территорию!");
SaveGZ(GangZone[gzid][gZachita]);
}
else
{
SendFamilyMessage(GangZone[gzid][gZahvat], COLOR_GREEN, "Вам удалось захватить новую территорию!");
SendFamilyMessage(GangZone[gzid][gZachita], COLOR_GREEN, "Вам не удалось защитить свою территорию!");
GangZone[gzid][gZachita] = GangZone[gzid][gZahvat];
SaveGZ(GangZone[gzid][gZahvat]);
}
GangZone[gzid][gTime] = 0;
GangZoneCapt[gzid] = 0;
GangZoneStopFlashForAll(GangZone[gzid][gID]);
GangZoneHideForAll(GangZone[gzid][gID]);
GangZoneShowForAll(GangZone[gzid][gID], GetGangZoneColor(gzid));
if(PlayerInfo[i][pMember] == GangZone[gzid][gZahvat] || PlayerInfo[i][pMember] == GangZone[gzid][gZachita])
{
PlayerTextDrawHide(i, GangCaptLabel[i]);
}
}
}
}
return 1;
}
получается вот когда война идет например Ballas / Vagos у меня Баллас скрывается у Vagos нет :(

Daniel_Cortez
08.10.2019, 09:01
В вашем случае проблема со скрытием ТД - только вершина айсберга. По-хорошему, нужно едва ли не всю функцию CaptureTime переделывать, т.к. логика захвата территорий (которая по идее должна выполняться один раз) почему-то находится внутри цикла по всем игрокам, со всеми вытекающими (например, флуд из SendFamilyMessage() - впрочем, это можно и не заметить, если тестировать только одним игроком).

SteveStage
30.11.2019, 16:15
forward CaptureTime();
public CaptureTime()
{
for(new gzid = 0; gzid < MAX_GANGZONE; gzid++)
{
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(GangZoneCapt[gzid] == 1)
{
static const tdcapta[] = "~y~kills~n~~n~~g~%s:~w~ %i~n~~n~~r~%s:~w~ %i~n~~g~Time: %d";
static string[sizeof(tdcapta) + (-2 + 6) + (-2 + 30) + (-2 + 30)];
format(string, sizeof(string), tdcapta, GetGangName(GangZone[gzid][gZahvat]), TotalSkill[GangZone[gzid][gZahvat]],
GetGangName(GangZone[gzid][gZachita]), TotalSkill[GangZone[gzid][gZachita]], GangZone[gzid][gTime]);
PlayerTextDrawSetString(i, GangCaptLabel[i], string);
PlayerTextDrawShow(i, GangCaptLabel[i]);
}
GangZone[gzid][gTime]--;
if(GangZone[gzid][gTime] == 300)
{
SendFamilyMessage(GangZone[gzid][gZachita], COLOR_GREEN, "До захвата терреторию осталось 5 минут!");
SendFamilyMessage(GangZone[gzid][gZahvat], COLOR_GREEN, "До захвата терреторию осталось 5 минут!");
}
if(GangZone[gzid][gTime] == 120)
{
SendFamilyMessage(GangZone[gzid][gZachita], COLOR_GREEN, "До захвата терреторию осталось 2 минуты!");
SendFamilyMessage(GangZone[gzid][gZahvat], COLOR_GREEN, "До захвата терреторию осталось 2 минуты!");
}
if(GangZone[gzid][gTime] == 0)
{
if(TotalSkill[GangZone[gzid][gZachita]] == TotalSkill[GangZone[gzid][gZahvat]])
{
GangZone[gzid][gTime] = 30;
SendFamilyMessage(GangZone[gzid][gZachita], COLOR_GREEN, "Ничья... добавляю 30 секунд!");
SendFamilyMessage(GangZone[gzid][gZahvat], COLOR_GREEN, "Ничья... добавляю 30 секунд");
return 1;
}
if(TotalSkill[GangZone[gzid][gZachita]] > TotalSkill[GangZone[gzid][gZahvat]])//Если у защиты больше убийств чем у нападавщих то...
{
SendFamilyMessage(GangZone[gzid][gZachita], COLOR_GREEN, "Вам удалось защитить свою территорию!");
SendFamilyMessage(GangZone[gzid][gZahvat], COLOR_GREEN, "Вам не удалось захватить новую территорию!");
SaveGZ(GangZone[gzid][gZachita]);
}
else
{
SendFamilyMessage(GangZone[gzid][gZahvat], COLOR_GREEN, "Вам удалось захватить новую территорию!");
SendFamilyMessage(GangZone[gzid][gZachita], COLOR_GREEN, "Вам не удалось защитить свою территорию!");
GangZone[gzid][gZachita] = GangZone[gzid][gZahvat];
SaveGZ(GangZone[gzid][gZahvat]);
}
GangZone[gzid][gTime] = 0;
GangZoneCapt[gzid] = 0;
GangZoneStopFlashForAll(GangZone[gzid][gID]);
GangZoneHideForAll(GangZone[gzid][gID]);
GangZoneShowForAll(GangZone[gzid][gID], GetGangZoneColor(gzid));
if(PlayerInfo[i][pMember] == GangZone[gzid][gZahvat] || PlayerInfo[i][pMember] == GangZone[gzid][gZachita])
{
PlayerTextDrawHide(i, GangCaptLabel[i]);
}
}
}
}
return 1;
}

Апхахпхапхахпа "До захвата терреторию осталось 5 минут!") Вообще вот: https://pro-pawn.ru/showthread.php?8347 тема, в которой черным по белому (или белым по черному в Dark стиле сайта) написано, что для названий переменных/констант/массивов и т.п. не стоит использовать транслит (tdcapta, gZahvat, gZachita), а если проблемы с английским - с пониманием ЯП будут большие проблемы.
Цитирую:

Не стоит писать названия переменных, констант и функций на транслите. Это должно быть очевидно, как убого выглядит код, написанный на транслите или на ломанном английском.
Если же у вас проблемы с иностранными языками - учите английский. Либо завязывайте со скриптингом, потому что знание английского - неотъемлимая часть в обучении программированию.