PDA

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



Unknown
29.08.2014, 01:39
предлогаю посмотреть свою статистику, предложение пришло прописываю /accept stats ничего не происходит..



else if(strcmp(x_job,"stats",true) == 0)
{
if(GetPVarInt(playerid,"SHOW")!= 1) return error(playerid, "Никто не предлагал Вам просмотр статистики.");
GetPlayerName(playerid,sendername,sizeof(sendername));
showstats[playerid] = ReturnUser(tmp);
ShowStats(playerid,showstats[playerid]);
format(string, sizeof(string), "{33CCFF}%s{FFFFFF} просматривает Вашу статистику.", sendername);
SendClientMessage(showstats[playerid], COLOR_WHITE, string);
DeletePVar(playerid,"SHOW");
showstats[playerid] = 0;
return true;
}

DeimoS
29.08.2014, 08:09
Покажите саму команду, которой предлагается показать статус

Unknown
29.08.2014, 10:53
if(strcmp(cmd,"/showstats",true)==0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return error(playerid, "/showstats [ Ник игрока / ID игрока ]");
giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid)) return NoPlayerConnect;
if(giveplayerid == INVALID_PLAYER_ID) return NetotID;
if(GetPVarInt(giveplayerid,"SHOW") == 1) return error(playerid, "Этому игроку уже предложен просмотр статистики.");
GetPlayerName(playerid,sendername,sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
showstats[giveplayerid] = playerid;
format(string, sizeof(string), "{33CCFF}%s{FFFFFF} предложил Вам просмотр своей статистики. ({33CCFF}/accept stats{FFFFFF})", sendername);
SendClientMessage(giveplayerid, COLOR_WHITE, string);
format(string,sizeof(string),"Вы предложили просмотр своей статистики игроку {33CCFF}%s{FFFFFF}.", giveplayer);
SendClientMessage(playerid,COLOR_WHITE,string);
SetPVarInt(giveplayerid,"SHOW",1);
return true;
}

DeimoS
29.08.2014, 18:48
Строку

showstats[playerid] = ReturnUser(tmp);
уберите

Unknown
30.08.2014, 23:47
не работает все равно

L0ndl3m
31.08.2014, 00:58
Размер массива string какой? Попробуйте вместо оператора sizeof поставить число 144.

Unknown
31.08.2014, 02:38
Размер массива string какой? Попробуйте вместо оператора sizeof поставить число 144.

размер массива 256, поставил
format(string, 144, "{33CCFF}%s{FFFFFF} просматривает Вашу статистику.", sendername);

не помогло...

Я не знаю я кину все что связанно, мб что-то да выяснится..





if(strcmp(cmd,"/accept",true)==0)
{
if(IsPlayerConnected(playerid))
{
new x_job[256];
x_job = strtok(cmdtext, idx);
if(!strlen(x_job)) return error(playerid, "/accept [ Наименование ]"),error(playerid, "Доступные наименования: drugs, repair, live, refill, stats, team"),error(playerid, "Доступные наименования: car, taxi, medic, mechanic, ticket, mats");
//-----------------------------------------------------------------------------------
else if(strcmp(x_job,"stats",true) == 0)
{
if(GetPVarInt(playerid,"SHOW")!= 1) return error(playerid, "Íèêòî íå ïðåäëàãàë Âàì ïðîñìîòð ñòàòèñòèêè.");
GetPlayerName(playerid,sendername,sizeof(sendername));
showstats[playerid] = ReturnUser(tmp);
ShowStats(playerid,showstats[playerid]);
format(string, sizeof(string), "{33CCFF}%s{FFFFFF} ïðîñìàòðèâàåò Âàøó ñòàòèñòèêó.", sendername);
SendClientMessage(showstats[playerid], COLOR_WHITE, string);
DeletePVar(playerid,"SHOW"),showstats[playerid] = 0;
return true;
}


public ShowStats(playerid,targetid)
{
if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
{
new atext[32];// Пол
switch(PlayerInfo[targetid][pSex])
{
case 0..1: atext = "Парень";
case 2: atext = "Девушка";
}
new ttext[50];// Фракция
new string[32];
new playername[MAX_PLAYER_NAME];
GetPlayerName(targetid, playername, sizeof(playername));
format(string, sizeof(string), "Accounts/%s.ini", playername);// Заменить на своё!
if(PlayerInfo[targetid][pMember] == 1 || PlayerInfo[targetid][pLeader] == 1) { ttext = "Полиция"; }
else if(PlayerInfo[targetid][pMember] == 2 || PlayerInfo[targetid][pLeader] == 2) { ttext = "ФБР"; }
else if(PlayerInfo[targetid][pMember] == 3 || PlayerInfo[targetid][pLeader] == 3) { ttext = "Армия"; }
else if(PlayerInfo[targetid][pMember] == 4 || PlayerInfo[targetid][pLeader] == 4) { ttext = "МЧС"; }
else if(PlayerInfo[targetid][pMember] == 5 || PlayerInfo[targetid][pLeader] == 5) { ttext = "La Cosa Nostra"; }
else if(PlayerInfo[targetid][pMember] == 6 || PlayerInfo[targetid][pLeader] == 6) { ttext = "Yakuza Family"; }
else if(PlayerInfo[targetid][pMember] == 8 || PlayerInfo[targetid][pLeader] == 8) { ttext = "The Triads Mafia"; }
else if(PlayerInfo[targetid][pMember] == 7 || PlayerInfo[targetid][pLeader] == 7) { ttext = "Company Hired Killers"; }
else if(PlayerInfo[targetid][pMember] == 9 || PlayerInfo[targetid][pLeader] == 9) { ttext = "Репортеры"; }
else if(PlayerInfo[targetid][pMember] == 10 || PlayerInfo[targetid][pLeader] == 10) { ttext = "The Ballas Gang"; }
else if(PlayerInfo[targetid][pMember] == 12 || PlayerInfo[targetid][pLeader] == 12) { ttext = "The Grove Street Family"; }
else if(PlayerInfo[targetid][pMember] == 13 || PlayerInfo[targetid][pLeader] == 13) { ttext = "Los Santos Vagos"; }
else if(PlayerInfo[targetid][pMember] == 14 || PlayerInfo[targetid][pLeader] == 14) { ttext = "Varrios Los Aztecas"; }
else if(PlayerInfo[targetid][pMember] == 15 || PlayerInfo[targetid][pLeader] == 15) { ttext = "San Fierro Rifa"; }
else if(PlayerInfo[targetid][pMember] == 16 || PlayerInfo[targetid][pLeader] == 16) { ttext = "Русская Мафия"; }
else if(PlayerInfo[targetid][pMember] == 17 || PlayerInfo[targetid][pLeader] == 17) { ttext = "Taxi Company"; }
else if(PlayerInfo[targetid][pMember] == 18 || PlayerInfo[targetid][pLeader] == 18) { ttext = "Street Racers"; }
else if(PlayerInfo[targetid][pMember] == 19 || PlayerInfo[targetid][pLeader] == 19) { ttext = "LVPD"; }
else if(PlayerInfo[targetid][pMember] == 21 || PlayerInfo[targetid][pLeader] == 21) { ttext = "Hell Angels"; }
else if(PlayerInfo[targetid][pMember] == 20 || PlayerInfo[targetid][pLeader] == 20) { ttext = "Black Kings"; }
else if(PlayerInfo[targetid][pMember] == 11 || PlayerInfo[targetid][pLeader] == 11) { ttext = "Академия Юристов"; }
else if(PlayerInfo[targetid][pMember] == 0 || PlayerInfo[targetid][pLeader] == 0) { ttext = "Нет"; }
new rtext[10];
switch(PlayerInfo[targetid][pRank])
{
case 0: rtext = "Нет";
case 1: rtext = "1";
case 2: rtext = "2";
case 3: rtext = "3";
case 4: rtext = "4";
case 5: rtext = "5";
case 6: rtext = "6";
}
new goldtext[10];
switch(PlayerInfo[playerid][pGold])
{
case 0: goldtext = "Нет";
case 1: goldtext = "Есть";
}
new ktext[16];
switch(PlayerInfo[targetid][pBoi])
{
case 0,1: ktext = "None";
case 2: ktext = "Boxing";
case 3: ktext = "KungFu";
case 4: ktext = "KneeHead";
}
new otmichka[16];
switch(otmi4ka[playerid])
{
case 0: otmichka = "Нет";
case 1: otmichka = "Есть";
}
new timetext[10];
switch(PlayerInfo[targetid][pTime])
{
case 0: timetext = "Нет";
case 1: timetext = "Есть";
}
if(PlayerInfo[targetid][pLeader] >= 1) { rtext = "Лидер"; }
new jtext[32];// Работа
switch(PlayerInfo[targetid][pJob])
{
case 1: jtext = "Детектив";
case 2: jtext = "Адвокат";
case 3: jtext = "Карманник";
case 4: jtext = "Наркодилер";
case 5: jtext = "Автоугонщик";
case 7: jtext = "Механик";
case 9: jtext = "Гандилер";
case 10: jtext = "Автодилер";
case 16: jtext = "Дальнобойщик";
case 0: jtext = "Нет";
}
new drank[20];
if(PlayerInfo[targetid][pDonateRank] == 1) { drank = "Есть(1 уровня)"; }
else if(PlayerInfo[targetid][pDonateRank] >= 2) { drank = "Есть(2 уровня)"; }
else { drank = "Нет"; }
new mon = PlayerInfo[targetid][pMoney]; // Деньги
new crimes = PlayerInfo[targetid][pCrimes]; // Преступления
new arrests = PlayerInfo[targetid][pArrested]; // Арестован [ Количество ] раз
new warrests = PlayerInfo[targetid][pWantedDeaths]; // Убит с розыском
new wanted = PlayerInfo[targetid][pWanted]; // Убит с розыском
new lvl = PlayerInfo[targetid][pLevel]; // Уровень
new exp = PlayerInfo[targetid][pExp]; // Респекты
new nxtlevel = PlayerInfo[targetid][pLevel]+1; // След. лвл (нужно для вычисления того, что ниже)
new expam = nxtlevel*levelexp; // Нужно респектов до след. лвл'а
new wrn = PlayerInfo[targetid][pWarns]; // Варны
new blc = PlayerInfo[targetid][pBlocked]; // Варны
new fwrn = PlayerInfo[targetid][pFWarns];
new bank = PlayerInfo[targetid][pAccount];
new zmats = PlayerInfo[targetid][pZmats];
new zdrugs = PlayerInfo[targetid][pZdrugs];
new tmats = PlayerInfo[targetid][ptMats];
new tdrugs = PlayerInfo[targetid][ptDrugs];
new dd = PlayerInfo[targetid][pDrugs];
new mm = PlayerInfo[targetid][pMats];
new fh = PlayerInfo[targetid][pFishes];
new fhb = PlayerInfo[targetid][pBiggestFish];
new clvl = nxtlevel*levelcost;
new name[MAX_PLAYER_NAME]; // Ник
GetPlayerName(targetid, name, sizeof(name));
new info[1000];
new coordsstring[500];
new coordsstring2[256];
new coordsstring3[210];
new coordsstring4[256];
new coordsstring5[210];
new coordsstring6[210];
new coordsstring7[210];
format(coordsstring, sizeof(coordsstring), "{ecca63}Уровень:\t\t{FFFFFF}%d\n{ecca63}Для сл. уровня:\t{FFFFFF}%d$\n{ecca63}Респекты:\t\t{FFFFFF}%d/%d\n{ecca63}Пол:\t\t\t{FFFFFF}%s\n{ecca63}Жизни:\t\t\t{FFFFFF}%.1f\n{ecca63}Работа:\t\t\t{FFFFFF}%s\n{ecca63}Фракция:\t\t{FFFFFF}%s\n{ecca63}Ранг:\t\t\t{FFFFFF}%s\n{ecca63}Предупреждения:\t{FFFFFF}%d/3\n{ecca63}Кол-во блокировок:\t{FFFFFF}%d/3",lvl,clvl,exp,expam,atext,PlayerInfo[targetid][pSHealth]+50.0,jtext,ttext,rtext,wrn,blc);
format(coordsstring5, sizeof(coordsstring5), "\n{ecca63}Кол-во выговоров:\t{FFFFFF}%d/3\n{ecca63}Стиль Боя:\t\t{FFFFFF}%s\n\n{ecca63}V.I.P. Аккаунт:\t\t{FFFFFF}%s\n{ecca63}Деньги на руках:\t{FFFFFF}%d$",fwrn,ktext,drank,mon);
format(coordsstring2, sizeof(coordsstring2), "\n{ecca63}Банк:\t\t\t{FFFFFF}%d$\n{ecca63}Обручен(а):\t\t{FFFFFF}No-one\n{ecca63}Золотая Карточка:\t{FFFFFF}%s\n{ecca63}Часы:\t\t\t{FFFFFF}%s\n{ecca63}Часов в игре:\t\t{FFFFFF}%d\n{ecca63}Лотерейный №:\t{FFFFFF}%d",bank,goldtext, timetext, PlayerInfo[targetid][pHourgame], PlayerInfo[targetid][pLottoNr]);
format(coordsstring3, sizeof(coordsstring3), "\n\n{ecca63}Рыб поймано:\t\t{FFFFFF}%d\n{ecca63}Большая рыба:\t\t{FFFFFF}%dкг\n{ecca63}Уровень розыска:\t{FFFFFF}%d\n{ecca63}Преступлений:\t\t{FFFFFF}%d\n{ecca63}Арестов:\t\t{FFFFFF}%d\n{ecca63}Смертей с розыском:\t{FFFFFF}%d",fh,fhb,wanted,crimes,arrests,warrests);
format(coordsstring4, sizeof(coordsstring4), "\n\n{ecca63}Наркотики:\t\t{FFFFFF}%d\n{ecca63}Материалы:\t\t{FFFFFF}%d\n{ecca63}Нарко на складе:\t{FFFFFF}%d\n{ecca63}Матов на складе:\t{FFFFFF}%d\n{ecca63}Пакетов на складе:\t{FFFFFF}0\n{ecca63}Отмычка:\t\t{FFFFFF}%s",dd,mm,tdrugs,tmats,otmichka);
format(coordsstring6, sizeof(coordsstring6), "{ecca63}Статистика: {FFFFFF}%s",name);
if(IsACop(targetid)) format(coordsstring7, sizeof(coordsstring7), "\n\n{ecca63}Конфиск. матов:{FFFFFF}\t%d\n{ecca63}Конфиск. нарко: {FFFFFF}\t%d",zmats,zdrugs);
format(info, 1260,"{ecca63}____________________________________\n%s%s%s%s%s%s",coordsstring,coordsstring5,coordsstring2,coordsstring3,coordsstring4,coordsstring7);
Dialog(playerid,18,DIALOG_STYLE_MSGBOX,coordsstring6,info,"Закрыть","Назад");
}
}

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

ну и команда.. хоть и кидал..
if(strcmp(cmd,"/showstats",true)==0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return error(playerid, "/showstats [ Ник игрока / ID игрока ]");
if(!IsPlayerConnected(giveplayerid)) return NoPlayerConnect;
if(giveplayerid == INVALID_PLAYER_ID) return NetotID;
if(GetPVarInt(giveplayerid,"SHOW") == 1) return error(playerid, "Этому игроку уже предложен просмотр статистики.");
GetPlayerName(playerid,sendername,sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
giveplayerid = ReturnUser(tmp);
showstats[giveplayerid] = playerid;
format(string, sizeof(string), "{33CCFF}%s{FFFFFF} предложил Вам просмотр своей статистики. ({33CCFF}/accept stats{FFFFFF})", sendername);
SendClientMessage(giveplayerid, COLOR_WHITE, string);
format(string, sizeof(string),"Вы предложили просмотр своей статистики игроку {33CCFF}%s{FFFFFF}.", giveplayer);
SendClientMessage(playerid, COLOR_WHITE, string);
SetPVarInt(giveplayerid,"SHOW",1);
return true;
}

DeimoS
31.08.2014, 07:45
if(strcmp(cmd,"/showstats",true)==0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return error(playerid, "/showstats [ Ник игрока / ID игрока ]");
giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid)) return NoPlayerConnect;
if(showstats[giveplayerid] == playerid) return error(playerid, "Вы уже предложили данному игроку посмотреть свою статистику.");
if(showstats[giveplayerid] != INVALID_PLAYER_ID) return error(playerid, "Этому игроку уже предложен просмотр статистики.");
GetPlayerName(playerid,sendername,sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
showstats[giveplayerid] = playerid;
format(string, sizeof(string), "{33CCFF}%s{FFFFFF} предложил Вам просмотр своей статистики. ({33CCFF}/accept stats{FFFFFF})", sendername);
SendClientMessage(giveplayerid, COLOR_WHITE, string);
format(string,sizeof(string),"Вы предложили просмотр своей статистики игроку {33CCFF}%s{FFFFFF}.", giveplayer);
SendClientMessage(playerid,COLOR_WHITE,string);
return true;
}

if(strcmp(cmd,"/accept",true)==0)
{
new x_job[256];
x_job = strtok(cmdtext, idx);
if(!strlen(x_job)) return error(playerid, "/accept [ Наименование ]"),error(playerid, "Доступные наименования: drugs, repair, live, refill, stats, team"),error(playerid, "Доступные наименования: car, taxi, medic, mechanic, ticket, mats");
//-----------------------------------------------------------------------------------
else if(strcmp(x_job,"stats",true) == 0)
{
if(showstats[playerid] == INVALID_PLAYER_ID) return error(playerid, "Никто не предлагал Вам просмотр статистики.");
if(!IsPlayerConnected(showstats[playerid])) return error(playerid, "Игрк, предложивший Вам просмотр статистики, покинул сервер."), showstats[playerid] = INVALID_PLAYER_ID;
GetPlayerName(showstats[playerid], sendername, sizeof(sendername));
ShowStats(playerid, showstats[playerid]);
format(string, sizeof(string), "%s{FFFFFF} просматривает Вашу статистику.", sendername);
SendClientMessage(showstats[playerid], 0x33CCFFFF, string);
showstats[playerid] = INVALID_PLAYER_ID;
return true;
}

Unknown
31.08.2014, 13:35
теперь пишет этом игроку уже предложен просмотр статистики при вводе /showstats id

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

а при /accept stats выдаёт Server Unknown command

Dima_Turkow
31.08.2014, 13:42
Использование GetPlayerName(showstats[playerid], sendername, sizeof(sendername));... Нет слов, оптимизировали бы хоть, ведь по этой теме есть куча мануалов, зачем каждый раз использовать эту функцию?

DeimoS
31.08.2014, 14:34
showstats[playerid] = INVALID_PLAYER_ID;
в OnPlayerConnect



Использование GetPlayerName(showstats[playerid], sendername, sizeof(sendername));... Нет слов, оптимизировали бы хоть, ведь по этой теме есть куча мануалов, зачем каждый раз использовать эту функцию?

Это не смертельно :)

Dima_Turkow
31.08.2014, 14:36
Это не смертельно :)
Но все же слегка попахивает RLS модом xD

DeimoS
31.08.2014, 14:38
Но все же слегка попахивает RLS модом xD

Ни капли. Наоборот, способ с записью ника при входе равносилен командным процессорам. Всё и без них прекрасно работает, но если вы хотите чуть быстрее - используйте. Ну и про удобство не забываем.