PDA

Просмотр полной версии : [Вопрос] Кости



Pawn.Dima
07.06.2020, 21:18
Здравствуйте подскажите исправить ошибку
чтобы было понятно покажу вот так
вот у меня есть поле


-- --
-- --
-- --
-- --
-- --

как сделать так чтобы было


Pawn.Dima --
-- --
-- --
-- --
-- --

и когда заходил 2 игрок было вот так


Pawn.Dima --
Pro-Pawn --
-- --
-- --
-- --

а у меня когда я первый захожу у меня изменяется в таблице вот так


Pawn.Dima --
тут пустата
тут пустата
тут пустата
тут пустата

черточки изчезают вот мне это нужно исправить но я незнаю как :(

PlayerBone[playerid][1] = CreatePlayerTextDraw(playerid, 527.309020, 163.916000, "--~n~--~n~--~n~--~n~--");//Таблица с игроками (MAX 5 игроков)
PlayerTextDrawLetterSize(playerid, PlayerBone[playerid][1], 0.175188, 1.010665);
PlayerTextDrawAlignment(playerid, PlayerBone[playerid][1], 1);
PlayerTextDrawColor(playerid, PlayerBone[playerid][1], -1347440641);
PlayerTextDrawUseBox(playerid, PlayerBone[playerid][1], true);
PlayerTextDrawBoxColor(playerid, PlayerBone[playerid][1], 0);
PlayerTextDrawSetShadow(playerid, PlayerBone[playerid][1], 0);
PlayerTextDrawSetOutline(playerid, PlayerBone[playerid][1], 1);
PlayerTextDrawBackgroundColor(playerid, PlayerBone[playerid][1], 51);
PlayerTextDrawFont(playerid, PlayerBone[playerid][1], 1);
PlayerTextDrawSetProportional(playerid, PlayerBone[playerid][1], 1);

PlayerBone[playerid][2] = CreatePlayerTextDraw(playerid, 585.057067, 165.082687, "--~n~--~n~--~n~--~n~--");//Таблица с числом сколько выпало от 1 до 12
PlayerTextDrawLetterSize(playerid, PlayerBone[playerid][2], 0.175188, 1.010665);
PlayerTextDrawAlignment(playerid, PlayerBone[playerid][2], 2);
PlayerTextDrawColor(playerid, PlayerBone[playerid][2], -1347440641);
PlayerTextDrawUseBox(playerid, PlayerBone[playerid][2], true);
PlayerTextDrawBoxColor(playerid, PlayerBone[playerid][2], 0);
PlayerTextDrawSetShadow(playerid, PlayerBone[playerid][2], 0);
PlayerTextDrawSetOutline(playerid, PlayerBone[playerid][2], 1);
PlayerTextDrawBackgroundColor(playerid, PlayerBone[playerid][2], 51);
PlayerTextDrawFont(playerid, PlayerBone[playerid][2], 1);
PlayerTextDrawSetProportional(playerid, PlayerBone[playerid][2], 1);


if(newkeys & 16)
{
if(!GameStolID(playerid)) return false;
new playerids = -1;
for(new i = 0; i != 5; i++)
{
if(BoneInfo[GameStolID(playerid)][bName][i] == INVALID_PLAYER_ID) playerids = i;
}
if(GetPVarInt(playerid, "CasinoRank") && BoneInfo[GameStolID(playerid)][bCrupie] != INVALID_PLAYER_ID)
return SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: Тут уже работает крупье!");
if(playerids > 4 && !GetPVarInt(playerid, "CasinoRank"))
return SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: За этим столом нет свободных мест!");
if(!GetPVarInt(playerid, "CasinoRank")) BoneInfo[GameStolID(playerid)][bName][playerids] = playerid;
else BoneInfo[GameStolID(playerid)][bCrupie] = playerid;
for(new i; i != 4; i++)
{
TextDrawShowForPlayer(playerid, Bone[i]);
PlayerTextDrawShow(playerid, PlayerBone[playerid][i]);
}
SetPVarInt(playerid, "GameStol", GameStolID(playerid));
SelectTextDraw(playerid, 0x33AAFFFF);//Даем возможность управлять мышью и подсвечиваем TextDraw
UpdateStol(GameStolID(playerid));
return 1;
}


stock UpdateStol(stol_id)
{
new string[100], string1[100];
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(GetPVarInt(i, "GameStol") == stol_id)
{
format(string, sizeof(string), "Table %d", stol_id);
PlayerTextDrawSetString(i, PlayerBone[i][0], string);
format(string, sizeof(string), "Bet: %i~n~Bank: %i~n~Money: %i", BoneInfo[stol_id][bBet], BoneInfo[stol_id][bBank], PlayerInfo[i][pMoney]);
PlayerTextDrawSetString(i, PlayerBone[i][3], string);
for(new ii = 0; ii < 5; ii++)
{
if(BoneInfo[stol_id][bName][ii] != INVALID_PLAYER_ID)
{
format(string, sizeof(string), "%s~n~", PlayerInfo[BoneInfo[stol_id][bName][ii]][pName]);
PlayerTextDrawSetString(i, PlayerBone[i][1], string);
strcat(string1, string);
}
else
{
format(string, sizeof(string), "--~n~", GetPVarInt(i, "GameStavka") == 0);
PlayerTextDrawSetString(i, PlayerBone[i][1], string);
strcat(string1, string);
}
}
for(new iii = 0; iii < 5; iii++)
{
if(BoneInfo[stol_id][bName][iii] != INVALID_PLAYER_ID && GetPVarInt(BoneInfo[stol_id][bName][iii], "GameStol"))
{
if(GetPVarInt(BoneInfo[stol_id][bName][iii], "GameStavka") == 1) format(string, sizeof(string), "++~n~");
else format(string, sizeof(string), "--~n~");
PlayerTextDrawSetString(i, PlayerBone[i][2], string);
strcat(string1, string);
}
else
{
format(string, sizeof(string), "--~n~");
PlayerTextDrawSetString(i, PlayerBone[i][2], string);
strcat(string1, string);
}
}
}
}
return 1;
}

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

https://s8.hostingkartinok.com/uploads/images/2020/06/22e14da42343428933d6cd7eb00461ad.png (https://hostingkartinok.com/show-image.php?id=22e14da42343428933d6cd7eb00461ad)

punkochel
08.06.2020, 09:57
Изучи функцию strcat (https://wiki.pro-pawn.ru/wiki/Strcat), или можно добавить под каждого игрока TextDraw, так будет более правильнее, будет возможность изменять данные конкретного игрока (или места), нежели пересобирать всю строку.

Pawn.Dima
09.06.2020, 19:39
спасибо я исправил но появилась еще одна проблема когда таймер завершается и время подходит к 0 то победил определяется то нет фиг его знает как будто stock то работает то нет и когда например за столом стоят 2 игрока
1 кинул кости а другой нет то stock вообще не срабатывает помогите исправить не рабочий код до рабочего

forward CasinoTime();
public CasinoTime()
{
for(new i = 0; i < MAX_BONES; i++)
{
if(BoneInfo[i][bGameStart] > 1)
{
BoneInfo[i][bGameStart] --;
new texts[64];
for(new A, B = GetMaxPlayers(); A != B; A++)
{
if(GetPVarInt(A, "BoneStol") == i && (GetPVarInt(A, "BoneStol_") || BoneInfo[i][bCrupie] == A))
{
if(BoneInfo[i][bGameStart] == 0 && GetPVarInt(A, "BoneStol_") == 1)
{
SetPVarInt(A, "BoneStol_", random(12));
UpdateStol(i);
}
format(texts, sizeof(texts), "~g~%i", BoneInfo[i][bGameStart]);
GameTextForPlayer(A, texts, 1000, 6);
}
}
if(BoneInfo[i][bGameStart] == 0) ShowItog(i);
}
}
return 1;
}

stock ShowItog(stol_id)
{
new itog[3] = 0, string[128];
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(GetPVarInt(i, "BoneStol") == stol_id && GetPVarInt(i, "BoneStol_") > 1 && GetPVarInt(i, "BoneStol_") > itog[0])
{
itog[0] = GetPVarInt(i, "BoneStol_");
itog[1] = i;
}
else if(GetPVarInt(i, "BoneStol") == stol_id && GetPVarInt(i, "BoneStol_") > 1 && i != itog[1] && GetPVarInt(i, "BoneStol_") == itog[0])
{
itog[2] = i;
}
}
if(itog[2] > itog[1])
{
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(GetPVarInt(i, "BoneStol") == stol_id && GetPVarInt(i, "BoneStol_") > 1 && GetPVarInt(i, "BoneStol_") == itog[0])
{
SetPVarInt(i, "BoneStol_", 1);
BoneInfo[stol_id][bGameStart] = 30;
SendClientMessage(i, 0x4B00B0AA, "Вы попали в следующий раунд. У вас есть 30 секунд, чтобы бросить кости");
}
else if(GetPVarInt(i, "BoneStol") == stol_id) DeletePVar(i, "BoneStol_");
}
UpdateStol(stol_id);
return 1;
}
else if(itog[1] > itog[2])
{
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(GetPVarInt(i, "BoneStol") == stol_id)
{
format(string, sizeof(string), "%s побеждает. Количество очков: %i", PlayerInfo[itog[1]][pName], itog[0]);
SendClientMessage(i, 0x4B00B0AA, string);
DeletePVar(i, "BoneStol_");
}
}
if(BoneInfo[stol_id][bCrupie] != INVALID_PLAYER_ID) PlayerInfo[BoneInfo[stol_id][bCrupie]][pMoney] += 500;
PlayerInfo[itog[1]][pMoney] += BoneInfo[stol_id][bBank]-(BoneInfo[stol_id][bBank]/10);
BoneInfo[stol_id][bGameStart] = 0;
BoneInfo[stol_id][bBet] = 0;
BoneInfo[stol_id][bBank] = 0;
UpdateStol(stol_id);
}
return 1;
}