Timerio kvietimas, gali į main() arba OnGameModeInit() dėt:
Code:
SetTimer("OnOneSecondPass", 1000, true);
Tas kintamasis:
Code:
new iskvietejoID[MAX_PLAYERS];
Jį reikėtų nustatyt į INVALID_PLAYER_ID iљ pradћių(nu nes jokio iљkvietėjo dar nebūna xd):
Code:
public OnPlayerConnect(playerid)
{
iskvietejoID[playerid] = INVALID_PLAYER_ID;
}
Toliau, /priimti komandoj kai jau gauni targetid raљai:
Code:
iskvietejoID[playerid] = targetid;
Dabar su ta 1 sekunde (P.S patariu loopint ћaidėjus su foreach, raљau su tuo MAX_PLAYERS tik dėl to, kad tu taip raљai):
Code:
forward OnOneSecondPass();
public OnOneSecondPass()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(iskvietejoID[i] != INVALID_PLAYER_ID)
{
new Float:x, Float:y, Float:z;
GetPlayerPos(i, x, y, z);
new Float:atstumas = GetPlayerDistanceFromPoint(iskvietejoID[i], x, y, z);
if(atstumas <= 30.0)
{
SendClientMessage(iskvietejoID[i], -1, "Medikas atvyko (čia tikrinsi pagal profesiją)");
iskvietejoID[i] = INVALID_PLAYER_ID;
}
}
}
}
}
Bet dar ne viskas, jeigu iљkvietėjas atsijungtų, tas tikrinimas toliau eitų, tai tau reik daryt:
Code:
public OnPlayerDisconnect(playerid, reason)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(iskvietejoID[i] == playerid)
{
SendClientMessage(i, -1, "Tavo klientas atsijungė");
iskvietejoID[i] = INVALID_PLAYER_ID;
}
}
}
}
Nu va, tikiuos viskas čia gerai xd