Hali!
Csinálgatom a telefon rendszeremet,ami már majdnem kész csak még pár bug van benne,ezeket szeretném kijavítani.
Az elsõ bug: tegyük fel van két játékos,mind a kettõnek van telefonja,ha \'A\' játékossal felhívom a \'B\' játékost,akkor aki felvette azaz a \'B\' játékos ha õ vele írok a chatbe,akkor az \'A\' játékos nem látja azt amit írok,helyette a \'B\' játékos kétszer látja a chatben egymás után azt amit írok,például: \"[Telefonban] XY Mondja: asd\"
Azt szeretném megtudni, hogy mi lehet a hiba oka,ha kicsit értelmetlenül írtam le akkor kérdezzetek,így tudtam csak leírni.
OnPlayerText rész:
public OnPlayerText(playerid, text[])
{
new icchat[128];
new telefonchat[128];
if(!pInfo[playerid][pLoggedin]) return SendClientMessage(playerid, COLOR_ULTRARED,\"(( Nem írhatsz a chatbe míg be nem jelentkezel! ))\");
if (CallerLine[playerid] != INVALID_PLAYER_ID)
{
format(telefonchat, sizeof(telefonchat), \"[Telefonban] %s mondja: %s\", GetName(playerid), text);
SendClientMessage(CallerLine[playerid], COLOR_YELLOW, telefonchat); //elküldjük a szöveget annak a játékosnak akivel beszélünk
ProxDetector(20.0, playerid, telefonchat, COLOR_WHITE); //annak a körzetében elküldjük a szöveget aki telefonál
SetPlayerChatBubble(playerid, telefonchat, COLOR_WHITE, 20.0, 6000);
}
else
{
format(icchat, sizeof(icchat), \"%s mondja: %s\", GetName(playerid), text);
ProxDetector(20.0, playerid, icchat, COLOR_WHITE);
SetPlayerChatBubble(playerid, icchat, COLOR_WHITE, 20.0, 10000);
}
return 0;
}
Stock rész ami meghívódik akkor amikor az egyik játékos felhívja a másikat:
stock HivoSzam(playerid,number)
{
id = INVALID_PLAYER_ID;
foreach(Player, i)
{
if (pInfo[pLoggedin] && pInfo[pHivoszamElotag] && pInfo[pTelefonSzam] == number)
{
id = i;
break;
}
}
if (id != INVALID_PLAYER_ID)
{
new string[128];
SendClientMessage(playerid,COLOR_WHITE,\"(( Kicsöng... ))\");
SendClientMessage(playerid,COLOR_WHITE,\"(( Ha leakarod tenni: /telefonlerak ))\");
format(string, sizeof(string), \"(( Csörög a telefonod! Ha felakarod venni: /telefonfelvesz [Hívó: %s] ))\", GetName(playerid));
SendClientMessage(id, COLOR_WHITE, string);
format(string, sizeof(string), \"* Valakinek csörög a telefonja.\");
ProxDetector(20.0,playerid, string, COLOR_PURPLE);
BeingCalled[id] = playerid;
SetPlayerAttachedObject(playerid, 6, 330, 6);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USECELLPHONE);
return 1;
}
else SendClientMessage(playerid, COLOR_ULTRARED, \"(( Hívott számon az elõfizetõ nem kapcsolható! ))\");
return 1;
}
Itt pedig az a parancs amivel felvesszük a telefont:
CMD:telefonfelvesz(playerid, params[])
{
if (!pInfo[playerid][pTelefon])
{
SendClientMessage(playerid, COLOR_ULTRARED,\"(( Neked nincs telefonod! ))\");
return 1;
}
if (BeingCalled[playerid] == INVALID_PLAYER_ID)
{
SendClientMessage(playerid, COLOR_ULTRARED,\"(( Nem csörög a telefonod! ))\");
return 1;
}
if(pInfo[playerid][pTelefonBeKapcsolva] == 1)
{
BeingCalled[playerid] = playerid;
CallerLine[playerid] = BeingCalled[playerid];
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USECELLPHONE);
BeingCalled[playerid] = INVALID_PLAYER_ID;
SetPlayerAttachedObject(playerid, 6, 330, 6);
}
else
{
SendClientMessage(playerid,COLOR_ULTRARED,\"(( A Telefonod ki van kapcsolva! ))\");
}
return 1;
}
Elõre is köszi,aki segít annak megy a +!
EDIT: Közben megoldottam,teljesen máshogy.