Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5078 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki. SA-MP.COM Forume radau AFK sistemą.

#include 

#define AFKTime 60 //How many seconds it takes to go AFK
#define AFKWorld 1 //if you don't understand virtual worlds, don't touch this
#define AFKColor 0x000000FF
new AFK[MAX_PLAYERS];
new Float:AFKPos[MAX_PLAYERS][3];
new Esc[MAX_PLAYERS];

public OnFilterScriptInit()
{
       SetTimer("AFKCheck",1000,true);
       return 1;
}

public OnFilterScriptExit()
{
       return 1;
}

public OnPlayerConnect(playerid)
{
       AFK[playerid] = 0;
       Esc[playerid] = 0;
       return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
   BackFromAFK(playerid);
   Esc[playerid] = 0;
       return 1;
}

public OnPlayerText(playerid, text[])
{
   BackFromAFK(playerid);
       return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
   BackFromAFK(playerid);
       return 0;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
   Esc[playerid] = 0;
   return 1;
}
public OnPlayerUpdate(playerid)
{
   Esc[playerid] = 0;
   return 1;
}
forward AFKCheck();
public AFKCheck()
{
       new Float:Pos[3];
       for(new i = 0; i < MAX_PLAYERS; i++)
       {
           Esc[i] += 1;
               GetPlayerPos(i,Pos[0],Pos[1],Pos[2]);
           if(Esc[i] >= 30)
               {
                   AFK[i] += 120;
                   AFKMode(i);
               }
               if(Pos[0] != AFKPos[i][0] || Pos[1] != AFKPos[i][1] || Pos[2] != AFKPos[i][2])
               {
                   BackFromAFK(i);

               }
               else
               {
                   AFK[i] += 1;
                   AFKMode(i);
               }
               GetPlayerPos(i,AFKPos[i][0],AFKPos[i][1],AFKPos[i][2]);
       }
       return 1;
}
stock BackFromAFK(playerid)
{
       if(AFK[playerid] >= AFKTime)
   {
       SetPlayerColor(playerid,GetPVarInt(playerid,"OldCol"));
       SetPlayerVirtualWorld(playerid,GetPVarInt(playerid,"OldVW"));
   }
       AFK[playerid] = 0;
       return 1;
}
stock AFKMode(playerid)
{
   if(AFK[playerid] >= AFKTime)
   {
       SetPVarInt(playerid,"OldCol",GetPlayerColor(playerid));
       SetPVarInt(playerid,"OldVW",GetPlayerVirtualWorld(playerid));
       SetPlayerColor(playerid,AFKColor);
       SetPlayerVirtualWorld(playerid,AFKWorld);
   }
       return 1;
}

Plačiau apie skriptą:

Žaidėjas nejudėdamas 60sec = 1min yra AFK būsenoje. Arba paspaudęs ESC.

Pamoka ripinta!

  • Teigiamai 2
  • Neigiamai 2
Kaip suprantu jam nerašo virš galvos AFk : ** sek. Ir galėtum padaryt Kad kai būni afk išmestų gui lentelę "jųs buvote afk"

Viršuje rašai #define AFK_TIME 2

ir po public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])

if(dialogid == 477)
  {
  if(!response) 
  {
  ShowPlayerDialog(playerid, 477, DIALOG_STYLE_MSGBOX,"AFK","Jus buvote AFK\nNorite testi žaidima?", "Taip","");
  }
  if(response) // Jeigu paspaude Teip
  {
}
}

Man veikia.

  • Teigiamai 1
  • Neigiamai 1

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5078 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.
  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...