Dio skripte:
Imam problem u vezi dialoga, i znam sta uzrokuje taj problem ali ne znam kako da ga resim.
Ovkao, prvi deo koda mi prolazi kroz sve stepene (grade) za mafiju, i ako je stepen kroz koji je loop prosao namenjen za rank koji je trenutno igrac, dodaje ga u dialogu.
enum GradeInfo
{
gRank,
gLevel,
gName,
Float:gHealth,
Float:gArmor
}
new MafiaGrade[] =
{
{ -1, -1, "None", 0.0, 0.0},
{ 1, DEFAULT_LEVEL, "Junior Associate", 99.0, 0.0 },
{ 1, 3, "Senior Associate", 99.0, 0.0 },
{ 2, 3, "Newbie Crook", 99.0, 0.0 },
{ 2, 44, "Experienced Crook", 99.0, 0.0 },
{ 3, 22, "Light Gunner", 99.0, 0.0 },
{ 3, 11, "Heavy Gunner", 99.0, 0.0 }
};
case TEAM_MAFIA:
{
for(i = 1; i < sizeof(MafiaGrade); i++)
{
dmsg = EOS;
if(MafiaGrade != TeamRank)
{
continue;
}
format(dmsg, sizeof(dmsg), "\n"col_team_mafia"%s \t %d", MafiaGrade, MafiaGrade);
strcat(string, dmsg);
gcounter++;
}
if(!gcounter)
{
SendErrorMessage(playerid, "There is no available grades for your current rank (%s).", RankName(playerid, TeamRank));
}
else
{
ShowPlayerDialog(playerid, DIALOG_GRADE_MAFIA, DIALOG_STYLE_TABLIST_HEADERS, "Choose your grade", string, "Select", "Cancel");
}
}
Ovo gore mi sve savrseno radi, znaci ako je igrac rank 1 pokazace mu "Associate" stepene, a ako je igrac rank 2 pokazace mu "Crook" rankove u dialogu, i sve tako redom.
Ali evo gde nailazimo na moj problem, u OnDialogResponse ja sam do sada proveravao ovako:
case DIALOG_RANK_MAFIA:
{
if(response)
{
if(!IsRankChangeAllowed(playerid, GetPlayerTeam(playerid)))
return 1;
switch(listitem)
{
case 0..sizeof MafiaRank:
{
if(PlayerInfo < MafiaRank[listitem + 1])
{
SendErrorMessage(playerid, "You need to be minimum level %d in order to become %s.", MafiaRank[listitem + 1], MafiaRank[listitem + 1]);
return 1;
}
if(TeamRank == listitem + 1)
{
SendErrorMessage(playerid, "You are already %s.", MafiaRank[listitem + 1]);
return 1;
}
if(MafiaRank[listitem + 1] && PlayerInfo < MafiaRank[listitem + 1])
{
SendErrorMessage(playerid, "You need to be at least %s donor in order to use this rank.", DonorName(MafiaRank[listitem + 1]));
}
else
{
Mafia_Rank_Set(playerid, listitem + 1);
SendInfoMessage(playerid, "You have changed your rank. You are %s now.", MafiaRank[listitem + 1]);
}
}
}
}
}
Problem mi stvara ovaj podebljani deo MafiaRank[listitem + 1] a razlog ta sto ako se vratite na niz stepena videcete da su mi pod 1 i 2 Associate stepeni,
tako da koji god ja da sam rank, i bilo da mi u dialogu za stepene pisu Crook stepeni, Associate ili neki drugi, OnDialogResponse ce uvek da odradi samo Associate stepene tj krenuce od 0 pa na gore umesto da krene od broja pod kojim su mi stepeni za odabrani rank.
Da li neko ima predstavu kako mogu ovo da resim?
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): /
Slika/video ingame problema(obavezno ako je ingame problem): /