shape1
shape2
shape3
shape4
shape7
shape8

Список заключенных игроков


Статус
Закрыто для дальнейших ответов.

Kostyaev

Магистр
Пользователь
19.07.2014
1 123
274
0
26
Список заключенных игроков:

if(strcmp("/jlist", cmdtext, true, 10) == 0)
{
new bool:players = false;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
if(PlayerInfo[pJailTime] != 0)
{
new name[MAX_PLAYER_NAME], str[150];
GetPlayerName(i, name, sizeof(name));
format(str, sizeof(str), "%s\n{FFFFFF}ID: {FF9D00}%d {FFFFFF}Ник: {FF9D00}%s {FFFFFF}Осталось: {FF9D00}%d", str, i, name, PlayerInfo[pJailTime]);
ShowPlayerDialog(playerid,487,DIALOG_STYLE_LIST,"{FFFF00}Список заключенных",str,"Принято","");
players = true;
}
}
if(players == false) return SendClientMessage(playerid, -1, "Список заключенных пуст!");
}



В команде нужно только изменить переменную отвечающую за время в тюрьме, это pJailTime и PlayerInfo если у вас конечно не так как в команде.

Автор: Amfy

 
Последнее редактирование модератором:

Михаил0404

Освоившийся
Пользователь
10.03.2015
148
28
0
31
а если я закину в мод там потом ники будут норм или как на фотки?

 
A

Amfy

Гость
Гость
а если я закину в мод там потом ники будут норм или как на фотки?
Не тупи уж! Там будут ники игроков который сидят в тюрьме.

Команду лучше так сделать:

if(strcmp("/jlist", cmdtext, true, 10) == 0)
{
new player[MAX_PLAYER_NAME+1],s[150],list[2250],bool:fexist = false;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
if(PlayerInfo[pJailTime] != 0)
{
GetPlayerName(i,player,sizeof(player));
format(s,sizeof(s),"{FFFFFF}ID: {FF9D00}%d {FFFFFF}Ник: {FF9D00}%s {FFFFFF}Осталось: {FF9D00}%d\n",i,player,PlayerInfo[pJailTime]);
strcat(list,s);
fexist = true;
}
}
if(fexist == false) return SendClientMessage(playerid, -1, "Список заключенных пуст!");
else return ShowPlayerDialog(playerid,487,DIALOG_STYLE_LIST,"{FFFF00}Список заключенных",list,"Принято","");
}

Это конечно не идеал, но всё же, лучше первого варианта.

 

Kostyaev

Магистр
Пользователь
19.07.2014
1 123
274
0
26
Не тупи уж! Там будут ники игроков который сидят в тюрьме.

Команду лучше так сделать:

if(strcmp("/jlist", cmdtext, true, 10) == 0)
{
new player[MAX_PLAYER_NAME+1],s[150],list[2250],bool:fexist = false;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
if(PlayerInfo[pJailTime] != 0)
{
GetPlayerName(i,player,sizeof(player));
format(s,sizeof(s),"{FFFFFF}ID: {FF9D00}%d {FFFFFF}Ник: {FF9D00}%s {FFFFFF}Осталось: {FF9D00}%d\n",i,player,PlayerInfo[pJailTime]);
strcat(list,s);
fexist = true;
}
}
if(fexist == false) return SendClientMessage(playerid, -1, "Список заключенных пуст!");
else return ShowPlayerDialog(playerid,487,DIALOG_STYLE_LIST,"{FFFF00}Список заключенных",list,"Принято","");
}

Это конечно не идеал, но всё же, лучше первого варианта.
Более года назад ты написал команду первого варианта,сейчас лучше переписал её,на следующий год ещё лучше напишешь?

 
A

Amfy

Гость
Гость
Более года назад ты написал команду первого варианта,сейчас лучше переписал её,на следующий год ещё лучше напишешь?
xd  да и сейчас можно было бы лучше написать, просто пытался более менее подогнать под пабликовские моды.

Михаил0404, какой?

 

Михаил0404

Освоившийся
Пользователь
10.03.2015
148
28
0
31
Код:
(33494) : warning 219: local variable "fexist" shadows a variable at a preceding level
 
A

Amfy

Гость
Гость
Измени в команде все fexist на fexists

 

Kostyaev

Магистр
Пользователь
19.07.2014
1 123
274
0
26
Не тупи уж! Там будут ники игроков который сидят в тюрьме.

Команду лучше так сделать:

if(strcmp("/jlist", cmdtext, true, 10) == 0)
{
new player[MAX_PLAYER_NAME+1],s[150],list[2250],bool:fexist = false;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
if(PlayerInfo[pJailTime] != 0)
{
GetPlayerName(i,player,sizeof(player));
format(s,sizeof(s),"{FFFFFF}ID: {FF9D00}%d {FFFFFF}Ник: {FF9D00}%s {FFFFFF}Осталось: {FF9D00}%d\n",i,player,PlayerInfo[pJailTime]);
strcat(list,s);
fexist = true;
}
}
if(fexist == false) return SendClientMessage(playerid, -1, "Список заключенных пуст!");
else return ShowPlayerDialog(playerid,487,DIALOG_STYLE_LIST,"{FFFF00}Список заключенных",list,"Принято","");
}

Это конечно не идеал, но всё же, лучше первого варианта.
А вот так не проще?

Код:
 if(strcmp(cmd, "/jlist", true) == 0)
	{
 		new str[128], bigst[1000], x = 0;
 		for(new i = 0, p = GetMaxPlayers(); i != p; ++i)
 		{
  			if(!IsPlayerConnected(i) || !PlayerInfo[i][pJailTime]) continue;
  			format(str, 128, "{FFFFFF}ID: {FF9D00}%d {FFFFFF}Ник: {FF9D00}%s {FFFFFF}Осталось: {FF9D00}%d\n", i, GN(playerid), PlayerInfo[i][pJailTime]);
  			strcat(bigst, str);
  			format(str, 25, "jailid_%d", x);
			  SetPVarInt(playerid, str, i);
  			++x;
    	}
 		if(!x) return SendClientMessage(playerid, -1, "Список заключенных пуст!");
    	 return ShowPlayerDialog(playerid,487,DIALOG_STYLE_LIST,"{FFFF00}Список заключенных",bigst,"Принято","");
 	}
 
Последнее редактирование модератором:
A

Amfy

Гость
Гость
Kostyaev, массив bigst создан как-то не правильно. Раздели 1000 на 128, получится 7,8125, т.е максимум полноценно выведет 7 игроков, дальше массива не хватит.

GN(playerid) - на счет этого конечно согласен, но я повторюсь - пытался подогнать команду ближе к пабликовским, поэтому узнавал ник напрямую без всяких сторонних функций.

Зачем вот это, я вообще не понял.

format(str, 25, "jailid_%d", x);
SetPVarInt(playerid, str, i);

Это похоже для дальнейшего действия с заключенными в диалоге 487.

 
Статус
Закрыто для дальнейших ответов.