Jump to content

AFK system by ATomas


Recommended Posts

 

public OnPlayerCommandText(playerid, cmdtext[])

{

 

dcmd(info,4,cmdtext);

 

dcmd(afk,3,cmdtext);

 

if (strcmp("/info", cmdtext, true, 10) == 0)

{

SendClientMessage(playerid,COLOR_BLUE,"Mod vytvořil GB_Warilock");

SendClientMessage(playerid,COLOR_BLUE,"www.Mini-Parba.g6.cz");

SendClientMessage(playerid,COLOR_LIGHTBLUE,"Skype: skilerbykiller");

SendClientMessage(playerid,COLOR_GREEN,"ICQ: 644-109-079");

return 1;

}

 

if (strcmp("/help", cmdtext, true, 10) == 0)

{

SendClientMessage(playerid,0xFFFF00AA,"Příkazy jsou /info /help /rules /kill /info /afk");

return 1;

}

 

if (strcmp("/rules", cmdtext, true, 10) == 0)

{

SendClientMessage(playerid,COLOR_RED,"Je zakázáno cheatovat!");

SendClientMessage(playerid,COLOR_RED,"Je zakázán spawn-kill, heli-kill a car-kill!");

SendClientMessage(playerid,COLOR_RED,"Je zakázáno ničit hráčům auta a bezdůvodně jim nadávat!");

SendClientMessage(playerid,COLOR_RED,"Pokud někdo bude porušovat pravidla napište adminovi co je na serveru a ten udělí trest hráčí co porušuje pravidla!");

return 1;

}

 

if (strcmp("/kill", cmdtext, true, 10) == 0)

{

SetPlayerHealth(playerid,0);

SendClientMessage(playerid,COLOR_RED,"Nechápu proč žádáš o smrt?? Ale když ji chceš máš ji mít.");

return 1;

}

 

dcmd(info, 4, cmdtext);

return 0;

}

dcmd_info(playerid, params[]){

#pragma unused params

new string[256];

SendClientMessage(playerid,COLOR_BLUE,"Čaas:");

format(string,256,"Dni : %d || Hodin : %d || Minut : %d",den[playerid],hodina[playerid],minuta[playerid]);

SendClientMessage(playerid, COLOR_BLUE, string);

return 1;

}

 

 

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)

{

return 1;

}

 

public OnPlayerExitVehicle(playerid, vehicleid)

{

return 1;

}

 

public OnPlayerStateChange(playerid, newstate, oldstate)

{

return 1;

}

 

public OnPlayerEnterCheckpoint(playerid)

{

return 1;

}

 

public OnPlayerLeaveCheckpoint(playerid)

{

return 1;

}

 

public OnPlayerEnterRaceCheckpoint(playerid)

{

return 1;

}

 

public OnPlayerLeaveRaceCheckpoint(playerid)

{

return 1;

}

 

public OnRconCommand(cmd[])

{

return 1;

}

 

public OnPlayerRequestSpawn(playerid)

{

return 1;

}

 

public OnObjectMoved(objectid)

{

return 1;

}

 

public OnPlayerObjectMoved(playerid, objectid)

{

return 1;

}

 

public OnPlayerPickUpPickup(playerid, pickupid)

{

return 1;

}

 

public OnVehicleMod(playerid, vehicleid, componentid)

{

return 1;

}

 

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)

{

return 1;

}

 

public OnVehicleRespray(playerid, vehicleid, color1, color2)

{

return 1;

}

 

public OnPlayerSelectedMenuRow(playerid, row)

{

return 1;

}

 

public OnPlayerExitedMenu(playerid)

{

return 1;

}

 

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)

{

return 1;

}

 

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

{

 

 

//jako u prikazu afk akorat kdyz stiskne jakoukoli klavesu ktera je definovana pawnem

if(AFK[playerid] == true)

{

new string[128];

format(string,sizeof(string),"[ AFK ] Hráč %s je zpět ve hře !",Jmeno(playerid));

SendClientMessageToAll(COLOR_GREY,string);

TogglePlayerControllable(playerid,1);

SetPlayerName(playerid,UlozeneJmeno[playerid]);

AFK[playerid] = false;

OldAFK[playerid] = 10;

SetTimerEx("PovolitAFK",1000,0,"i",playerid);

 

return 1;

}

 

public OnRconLoginAttempt(ip[], password[], success)

{

return 1;

}

 

public OnPlayerUpdate(playerid)

{

return 1;

}

 

public OnPlayerStreamIn(playerid, forplayerid)

{

return 1;

}

 

public OnPlayerStreamOut(playerid, forplayerid)

{

return 1;

}

 

public OnVehicleStreamIn(vehicleid, forplayerid)

{

return 1;

}

 

public OnVehicleStreamOut(vehicleid, forplayerid)

{

return 1;

}

 

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

{

 

if(dialogid == 1)

{

if(response == 1)

{

if (udb_Exists(PlayerName(playerid))) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Přihlášení","Účet již existuje přihlaš se !","Přihlásit","Odpojit");

if (strlen(inputtext)==0) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Registrace","Musíš napsat heslo !","Registrovat","Odpojit");

if (udb_Create(PlayerName(playerid),inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registrace","Výborně, nyní napiš znovu heslo !","Registrovat","Odpojit");

}

if(response == 2)

{

Kick(playerid);

}

}

//==============================================================================

if(dialogid == 2)

{

if(response == 1)

{

if (strlen(inputtext)==0) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Přihlášení","Musíš zadat heslo !\nNapiš heslo !","Použít","Odpojit");

if (udb_CheckLogin(PlayerName(playerid),inputtext))

{

GivePlayerMoney(playerid,dUserINT(PlayerName(playerid)).("money")-GetPlayerMoney(playerid));

PLAYERLIST_authed[playerid] = true;

return SendClientMessage(playerid, COLOR_WHITE, "Úspěšně přihlášen !");

}

return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Přihlášení","Nespravne heslo !","Přihlásit","Odpojit");

}

if(response == 2)

{

Kick(playerid);

}

}

 

return 1;

}

 

public OnPlayerClickPlayer(playerid, clickedplayerid, source)

{

return 1;

}

 

public cas(playerid)

{

minuta[playerid] = minuta[playerid]+1;

if (minuta[playerid] > 59)

{

minuta[playerid] = 0;

hodina[playerid] = hodina[playerid]+1;

if (hodina[playerid] > 23)

{

hodina[playerid] = 0;

den[playerid] = den[playerid]+1;

}

}

}

//------------------------------------------------------------------------------

public KontrolaPozice()

{

new Float:X,Float:Y,Float:Z;//promene do kterych budeme zapisovat

for(new i;i

{

if(IsPlayerConnected(i))//vsechny obsazene sloty

{

GetPlayerPos(i,X,Y,Z);//zjistime pozici

if(SaveX == X && SaveY == Y && SaveZ == Z)

{

if(AFK == false) dcmd_afk(i," ");//kdyz bude na stejnych radkach jako minule a nebude afk tak ho dame ho do afk

}

//ulozime pro dalsi hodnoceni

SaveX = X;

SaveY = Y;

SaveZ = Z;

}

}

return 1;

}

 

dcmd_afk(playerid,params[])//odeslan callback z OnPlayerCommandText

{

if(IsPlayerConnected(playerid))

{

new string[128];//promena do ktere si budeme zapisovat texty

if(AFK[playerid] == false)//kdyz hrac neni AFK

{

if(OldAFK[playerid] != 0)//kdyz neubehlo 10 sekund od vraceni k pocitaci

{

format(string,sizeof(string),"[ ! ] Tento prikaz muzete pouzit az za %d sekund",OldAFK[playerid]);//dosadime si do spravy

SendClientMessage(playerid,BARVA_BILA,string);//odesleme

return 1;//zastavime prkaz

}

else if(strlen(params) == 0)//kdyz uz ubehlo 10 sekund od navraceni a nezada zadny duvod za afk proste jenom ciste prikaz /afk

{

if(!VolneOkoli(playerid)) return SendClientMessage(playerid,BARVA_BILA,"[ ! ] Ve vasi blizkosti je nejaky hrac !");//public vysvetlen nize

format(string,sizeof(string),"[ AFK ] Hráč %s odešel na chvíli od PC !",Jmeno(playerid));//dosadime spravu

SendClientMessageToAll(COLOR_GREY,string);//odesleme

TogglePlayerControllable(playerid,0);//smzarime

AFK[playerid] = true;//dame promenou aby sme vedeli ze je afk

SendClientMessage(playerid,BARVA_BILA,"Pro navrat /afk");//aprava aby vedel ja kse vratit

format(UlozeneJmeno[playerid],MAX_PLAYER_NAME,Jmeno(playerid));//ulozime si hracovo jmeno

new name[MAX_PLAYER_NAME];//promena do ktere ulozime nove jmeno

format(name,MAX_PLAYER_NAME,"[AFK]%s",Jmeno(playerid));//pred jeho jmeno pridame [AFK]

SetPlayerName(playerid,name);//zmenime jmeno

}else{//kdyz zada nejaky duvod treba /afk du na WC

if(!VolneOkoli(playerid)) return SendClientMessage(playerid,BARVA_BILA,"[ ! ] Ve vasi blizkosti je nejaky hrac !");

format(string,sizeof(string),"[ AFK ] Hráč %s odešel na chvíli od PC ! [ Důvod: %s ]",Jmeno(playerid),params);//zase dosadiem ale uz s duvodem .. dal uz to znate..

SendClientMessageToAll(COLOR_GREY,string);

TogglePlayerControllable(playerid,0);

AFK[playerid] = true;

SendClientMessage(playerid,BARVA_BILA,"Pro navrat /afk");

format(UlozeneJmeno[playerid],MAX_PLAYER_NAME,Jmeno(playerid));

new name[MAX_PLAYER_NAME];

format(name,MAX_PLAYER_NAME,"[AFK]%s",Jmeno(playerid));

SetPlayerName(playerid,name);

}

}

else if(AFK[playerid] == true)//kdyz je afk

{

format(string,sizeof(string),"[ AFK ] Hráč %s je zpět ve hře !",Jmeno(playerid));//zase dosadime spravu

SendClientMessageToAll(COLOR_GREY,string);//odesleme

TogglePlayerControllable(playerid,1);//rozmrazime

SetPlayerName(playerid,UlozeneJmeno[playerid]);//vratime jeho jmeno

AFK[playerid] = false;//promena aby sme vedeli ze uz neni afk

OldAFK[playerid] = 10;//promena ze ktere budeme odecitat kazdou sekundu

SetTimerEx("PovolitAFK",1000,0,"i",playerid);//a timer ve kterem budeme odecitat

}

}

return 1;

}

 

public PovolitAFK(playerid)//public ktery si vyvolavame sekundovym tiemrem

{

OldAFK[playerid]--;//odesmete promenou

if(OldAFK[playerid] > 0) SetTimerEx("PovolitAFK",1000,0,"i",playerid);//kdyz promena nebdue nula pustime public

return 1;

}

 

 

-- stř 12. led 2011 21:22:28 --

 

 

public OnPlayerCommandText(playerid, cmdtext[])

{

 

dcmd(info,4,cmdtext);

 

dcmd(afk,3,cmdtext);

 

if (strcmp("/info", cmdtext, true, 10) == 0)

{

SendClientMessage(playerid,COLOR_BLUE,"Mod vytvořil GB_Warilock");

SendClientMessage(playerid,COLOR_BLUE,"www.Mini-Parba.g6.cz");

SendClientMessage(playerid,COLOR_LIGHTBLUE,"Skype: skilerbykiller");

SendClientMessage(playerid,COLOR_GREEN,"ICQ: 644-109-079");

return 1;

}

 

if (strcmp("/help", cmdtext, true, 10) == 0)

{

SendClientMessage(playerid,0xFFFF00AA,"Příkazy jsou /info /help /rules /kill /info /afk");

return 1;

}

 

if (strcmp("/rules", cmdtext, true, 10) == 0)

{

SendClientMessage(playerid,COLOR_RED,"Je zakázáno cheatovat!");

SendClientMessage(playerid,COLOR_RED,"Je zakázán spawn-kill, heli-kill a car-kill!");

SendClientMessage(playerid,COLOR_RED,"Je zakázáno ničit hráčům auta a bezdůvodně jim nadávat!");

SendClientMessage(playerid,COLOR_RED,"Pokud někdo bude porušovat pravidla napište adminovi co je na serveru a ten udělí trest hráčí co porušuje pravidla!");

return 1;

}

 

if (strcmp("/kill", cmdtext, true, 10) == 0)

{

SetPlayerHealth(playerid,0);

SendClientMessage(playerid,COLOR_RED,"Nechápu proč žádáš o smrt?? Ale když ji chceš máš ji mít.");

return 1;

}

 

dcmd(info, 4, cmdtext);

return 0;

}

dcmd_info(playerid, params[]){

#pragma unused params

new string[256];

SendClientMessage(playerid,COLOR_BLUE,"Čaas:");

format(string,256,"Dni : %d || Hodin : %d || Minut : %d",den[playerid],hodina[playerid],minuta[playerid]);

SendClientMessage(playerid, COLOR_BLUE, string);

return 1;

}

 

 

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)

{

return 1;

}

 

public OnPlayerExitVehicle(playerid, vehicleid)

{

return 1;

}

 

public OnPlayerStateChange(playerid, newstate, oldstate)

{

return 1;

}

 

public OnPlayerEnterCheckpoint(playerid)

{

return 1;

}

 

public OnPlayerLeaveCheckpoint(playerid)

{

return 1;

}

 

public OnPlayerEnterRaceCheckpoint(playerid)

{

return 1;

}

 

public OnPlayerLeaveRaceCheckpoint(playerid)

{

return 1;

}

 

public OnRconCommand(cmd[])

{

return 1;

}

 

public OnPlayerRequestSpawn(playerid)

{

return 1;

}

 

public OnObjectMoved(objectid)

{

return 1;

}

 

public OnPlayerObjectMoved(playerid, objectid)

{

return 1;

}

 

public OnPlayerPickUpPickup(playerid, pickupid)

{

return 1;

}

 

public OnVehicleMod(playerid, vehicleid, componentid)

{

return 1;

}

 

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)

{

return 1;

}

 

public OnVehicleRespray(playerid, vehicleid, color1, color2)

{

return 1;

}

 

public OnPlayerSelectedMenuRow(playerid, row)

{

return 1;

}

 

public OnPlayerExitedMenu(playerid)

{

return 1;

}

 

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)

{

return 1;

}

 

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

{

 

 

//jako u prikazu afk akorat kdyz stiskne jakoukoli klavesu ktera je definovana pawnem

if(AFK[playerid] == true)

{

new string[128];

format(string,sizeof(string),"[ AFK ] Hráč %s je zpět ve hře !",Jmeno(playerid));

SendClientMessageToAll(COLOR_GREY,string);

TogglePlayerControllable(playerid,1);

SetPlayerName(playerid,UlozeneJmeno[playerid]);

AFK[playerid] = false;

OldAFK[playerid] = 10;

SetTimerEx("PovolitAFK",1000,0,"i",playerid);

 

return 1;

}

 

public OnRconLoginAttempt(ip[], password[], success)

{

return 1;

}

 

public OnPlayerUpdate(playerid)

{

return 1;

}

 

public OnPlayerStreamIn(playerid, forplayerid)

{

return 1;

}

 

public OnPlayerStreamOut(playerid, forplayerid)

{

return 1;

}

 

public OnVehicleStreamIn(vehicleid, forplayerid)

{

return 1;

}

 

public OnVehicleStreamOut(vehicleid, forplayerid)

{

return 1;

}

 

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

{

 

if(dialogid == 1)

{

if(response == 1)

{

if (udb_Exists(PlayerName(playerid))) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Přihlášení","Účet již existuje přihlaš se !","Přihlásit","Odpojit");

if (strlen(inputtext)==0) return ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT,"Registrace","Musíš napsat heslo !","Registrovat","Odpojit");

if (udb_Create(PlayerName(playerid),inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Registrace","Výborně, nyní napiš znovu heslo !","Registrovat","Odpojit");

}

if(response == 2)

{

Kick(playerid);

}

}

//==============================================================================

if(dialogid == 2)

{

if(response == 1)

{

if (strlen(inputtext)==0) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Přihlášení","Musíš zadat heslo !\nNapiš heslo !","Použít","Odpojit");

if (udb_CheckLogin(PlayerName(playerid),inputtext))

{

GivePlayerMoney(playerid,dUserINT(PlayerName(playerid)).("money")-GetPlayerMoney(playerid));

PLAYERLIST_authed[playerid] = true;

return SendClientMessage(playerid, COLOR_WHITE, "Úspěšně přihlášen !");

}

return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT,"Přihlášení","Nespravne heslo !","Přihlásit","Odpojit");

}

if(response == 2)

{

Kick(playerid);

}

}

 

return 1;

}

 

public OnPlayerClickPlayer(playerid, clickedplayerid, source)

{

return 1;

}

 

public cas(playerid)

{

minuta[playerid] = minuta[playerid]+1;

if (minuta[playerid] > 59)

{

minuta[playerid] = 0;

hodina[playerid] = hodina[playerid]+1;

if (hodina[playerid] > 23)

{

hodina[playerid] = 0;

den[playerid] = den[playerid]+1;

}

}

}

//------------------------------------------------------------------------------

public KontrolaPozice()

{

new Float:X,Float:Y,Float:Z;//promene do kterych budeme zapisovat

for(new i;i

{

if(IsPlayerConnected(i))//vsechny obsazene sloty

{

GetPlayerPos(i,X,Y,Z);//zjistime pozici

if(SaveX == X && SaveY == Y && SaveZ == Z)

{

if(AFK == false) dcmd_afk(i," ");//kdyz bude na stejnych radkach jako minule a nebude afk tak ho dame ho do afk

}

//ulozime pro dalsi hodnoceni

SaveX = X;

SaveY = Y;

SaveZ = Z;

}

}

return 1;

}

 

dcmd_afk(playerid,params[])//odeslan callback z OnPlayerCommandText

{

if(IsPlayerConnected(playerid))

{

new string[128];//promena do ktere si budeme zapisovat texty

if(AFK[playerid] == false)//kdyz hrac neni AFK

{

if(OldAFK[playerid] != 0)//kdyz neubehlo 10 sekund od vraceni k pocitaci

{

format(string,sizeof(string),"[ ! ] Tento prikaz muzete pouzit az za %d sekund",OldAFK[playerid]);//dosadime si do spravy

SendClientMessage(playerid,BARVA_BILA,string);//odesleme

return 1;//zastavime prkaz

}

else if(strlen(params) == 0)//kdyz uz ubehlo 10 sekund od navraceni a nezada zadny duvod za afk proste jenom ciste prikaz /afk

{

if(!VolneOkoli(playerid)) return SendClientMessage(playerid,BARVA_BILA,"[ ! ] Ve vasi blizkosti je nejaky hrac !");//public vysvetlen nize

format(string,sizeof(string),"[ AFK ] Hráč %s odešel na chvíli od PC !",Jmeno(playerid));//dosadime spravu

SendClientMessageToAll(COLOR_GREY,string);//odesleme

TogglePlayerControllable(playerid,0);//smzarime

AFK[playerid] = true;//dame promenou aby sme vedeli ze je afk

SendClientMessage(playerid,BARVA_BILA,"Pro navrat /afk");//aprava aby vedel ja kse vratit

format(UlozeneJmeno[playerid],MAX_PLAYER_NAME,Jmeno(playerid));//ulozime si hracovo jmeno

new name[MAX_PLAYER_NAME];//promena do ktere ulozime nove jmeno

format(name,MAX_PLAYER_NAME,"[AFK]%s",Jmeno(playerid));//pred jeho jmeno pridame [AFK]

SetPlayerName(playerid,name);//zmenime jmeno

}else{//kdyz zada nejaky duvod treba /afk du na WC

if(!VolneOkoli(playerid)) return SendClientMessage(playerid,BARVA_BILA,"[ ! ] Ve vasi blizkosti je nejaky hrac !");

format(string,sizeof(string),"[ AFK ] Hráč %s odešel na chvíli od PC ! [ Důvod: %s ]",Jmeno(playerid),params);//zase dosadiem ale uz s duvodem .. dal uz to znate..

SendClientMessageToAll(COLOR_GREY,string);

TogglePlayerControllable(playerid,0);

AFK[playerid] = true;

SendClientMessage(playerid,BARVA_BILA,"Pro navrat /afk");

format(UlozeneJmeno[playerid],MAX_PLAYER_NAME,Jmeno(playerid));

new name[MAX_PLAYER_NAME];

format(name,MAX_PLAYER_NAME,"[AFK]%s",Jmeno(playerid));

SetPlayerName(playerid,name);

}

}

else if(AFK[playerid] == true)//kdyz je afk

{

format(string,sizeof(string),"[ AFK ] Hráč %s je zpět ve hře !",Jmeno(playerid));//zase dosadime spravu

SendClientMessageToAll(COLOR_GREY,string);//odesleme

TogglePlayerControllable(playerid,1);//rozmrazime

SetPlayerName(playerid,UlozeneJmeno[playerid]);//vratime jeho jmeno

AFK[playerid] = false;//promena aby sme vedeli ze uz neni afk

OldAFK[playerid] = 10;//promena ze ktere budeme odecitat kazdou sekundu

SetTimerEx("PovolitAFK",1000,0,"i",playerid);//a timer ve kterem budeme odecitat

}

}

return 1;

}

 

public PovolitAFK(playerid)//public ktery si vyvolavame sekundovym tiemrem

{

OldAFK[playerid]--;//odesmete promenou

if(OldAFK[playerid] > 0) SetTimerEx("PovolitAFK",1000,0,"i",playerid);//kdyz promena nebdue nula pustime public

return 1;

}

 

Link to comment
Share on other sites

nedal si sem { a } dal si tu každy neviem jaký riadok

 

Mattsy určite tam nekde nebude mit zavorku proto mu to vyhodil nekolik erroru

 

veď to hej lenže nato aby som zistil kde tak mi tu musí zátvorky dať :boss:

Link to comment
Share on other sites

#include 
new bool:AFK[MAX_PLAYERS];
new OldAFK[MAX_PLAYERS];
new UlozeneJmeno[MAX_PLAYERS][MAX_PLAYER_NAME];
new Float:SaveX[MAX_PLAYERS],Float:SaveY[MAX_PLAYERS],Float:SaveZ[MAX_PLAYERS];
#define BARVA_SEDA                0xAFAFAFAA
#define BARVA_BILA                  0xEFEFF7AA
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
forward PovolitAFK(playerid);
forward KontrolaPozice();




public OnGameModeInit()
{
	SetTimer("KontrolaPozice",60000,1);//tiemr ktery bude kontrolovat kazdou minutu pozici hrace
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
  AFK[playerid] = false;//zrusime mu afk aby dalsi hrac co prijde nemel problemy s titmo prikazem
  OldAFK[playerid] = 0;//jistota je jistota
  return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    	dcmd(afk,3,cmdtext);
	return 1;
}
dcmd_afk(playerid,params[])//odeslan callback z OnPlayerCommandText
{
   if(IsPlayerConnected(playerid))
  {
 	   new string[128];//promena do ktere si budeme zapisovat texty
      if(AFK[playerid] == false)//kdyz hrac neni AFK
       {
           if(OldAFK[playerid] != 0)//kdyz neubehlo 10 sekund od vraceni k pocitaci
           {
               format(string,sizeof(string),"[ ! ] Tento prikaz muzete pouzit az za %d sekund",OldAFK[playerid]);//dosadime si do spravy
               SendClientMessage(playerid,BARVA_BILA,string);//odesleme
               return 1;//zastavime prkaz
               }
             else if(strlen(params) == 0)//kdyz uz ubehlo 10 sekund od navraceni a nezada zadny duvod za afk proste jenom ciste prikaz /afk
            {
            if(!VolneOkoli(playerid)) return SendClientMessage(playerid,BARVA_BILA,"[ ! ] Ve vasi blizkosti je nejaky hrac !");//public vysvetlen nize
            format(string,sizeof(string),"[ AFK ] Hráč %s odešel na chvíli od PC !",Jmeno(playerid));//dosadime spravu
            SendClientMessageToAll(BARVA_SEDA,string);//odesleme
            TogglePlayerControllable(playerid,0);//smzarime
            AFK[playerid] = true;//dame promenou aby sme vedeli ze je afk
            SendClientMessage(playerid,BARVA_BILA,"Pro navrat /afk");//aprava aby vedel ja kse vratit
            format(UlozeneJmeno[playerid],MAX_PLAYER_NAME,Jmeno(playerid));//ulozime si hracovo jmeno
            new name[MAX_PLAYER_NAME];//promena do ktere ulozime nove jmeno
            format(name,MAX_PLAYER_NAME,"[AFK]%s",Jmeno(playerid));//pred jeho jmeno pridame [AFK]
            SetPlayerName(playerid,name);//zmenime jmeno
               }else{//kdyz zada nejaky duvod treba /afk du na WC
               if(!VolneOkoli(playerid)) return SendClientMessage(playerid,BARVA_BILA,"[ ! ] Ve vasi blizkosti je nejaky hrac !");
               format(string,sizeof(string),"[ AFK ] Hráč %s odešel na chvíli od PC ! [ Důvod: %s ]",Jmeno(playerid),params);//zase dosadiem ale uz s duvodem .. dal uz to znate..
           	SendClientMessageToAll(BARVA_SEDA,string);
               TogglePlayerControllable(playerid,0);
               AFK[playerid] = true;
               SendClientMessage(playerid,BARVA_BILA,"Pro navrat /afk");
               format(UlozeneJmeno[playerid],MAX_PLAYER_NAME,Jmeno(playerid));
               new name[MAX_PLAYER_NAME];
               format(name,MAX_PLAYER_NAME,"[AFK]%s",Jmeno(playerid));
               SetPlayerName(playerid,name);
               }
       }
       else if(AFK[playerid] == true)//kdyz je afk
       {
         format(string,sizeof(string),"[ AFK ] Hráč %s je zpět ve hře !",Jmeno(playerid));//zase dosadime spravu
         SendClientMessageToAll(BARVA_SEDA,string);//odesleme
         TogglePlayerControllable(playerid,1);//rozmrazime
         SetPlayerName(playerid,UlozeneJmeno[playerid]);//vratime jeho jmeno
         AFK[playerid] = false;//promena aby sme vedeli ze uz neni afk
         OldAFK[playerid] = 10;//promena ze ktere budeme odecitat kazdou sekundu
         SetTimerEx("PovolitAFK",1000,0,"i",playerid);//a timer ve kterem budeme odecitat
      }
   }
   return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
 //jako u prikazu afk akorat kdyz stiskne jakoukoli klavesu ktera je definovana pawnem
   	if(AFK[playerid] == true)
  		{
       new string[128];
       format(string,sizeof(string),"[ AFK ] Hráč %s je zpět ve hře !",Jmeno(playerid));
       SendClientMessageToAll(BARVA_SEDA,string);
       TogglePlayerControllable(playerid,1);
       SetPlayerName(playerid,UlozeneJmeno[playerid]);
       AFK[playerid] = false;
       OldAFK[playerid] = 10;
       SetTimerEx("PovolitAFK",1000,0,"i",playerid);
	}
	return 1;
}
public PovolitAFK(playerid)//public ktery si vyvolavame sekundovym tiemrem
{
  OldAFK[playerid]--;//odesmete promenou
  if(OldAFK[playerid] > 0) SetTimerEx("PovolitAFK",1000,0,"i",playerid);//kdyz promena nebdue nula pustime public
  return 1;
}

public KontrolaPozice()
{
  new Float:X,Float:Y,Float:Z;//promene do kterych budeme zapisovat
  for(new i;i   {
      if(IsPlayerConnected(i))//vsechny obsazene sloty
      {
          GetPlayerPos(i,X,Y,Z);//zjistime pozici
          if(SaveX[i] == X && SaveY[i] == Y && SaveZ[i] == Z)
          {
              	if(AFK[i] == false) dcmd_afk(i," ");//kdyz bude na stejnych radkach jako minule a nebude afk tak ho dame ho do afk
               }
        		//ulozime pro dalsi hodnoceni
        		SaveX[i] = X;
        		SaveY[i] = Y;
     		    SaveZ[i] = Z;
     }
  }
  return 1;
}

stock VolneOkoli(playerid)
{
  for(new i;i   {
      if(IsPlayerConnected(i))//obsazene id
      {
          if(DistanceBTWPlayers(playerid,i) < 10) return 0;// kdyz bude nekdo blize jak 10 jednotek odesleme do podminky hodnotu nula
     }
  }
  return 1;//kdyz nebude nidko poblic odesleme hodnotu 1
}
stock DistanceBTWPlayers(playerid,playerid2)
{
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2,Float:tmpdis;//nadefinujeme si promene do kterych si zapiseme pozice hracu
GetPlayerPos(playerid,x1,y1,z1);//zjistime pozici prvniho hrace
GetPlayerPos(playerid2,x2,y2,z2);//zjistime pozii druheho
tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));//slet funkci nema cenu vsvetlovat chytrak psal dobry tut "nejaky ty funkce" tam sou popsane
return floatround(tmpdis);//vydlesek zaokrouhlime na cele cislo
}
stock Jmeno(playerid)//stock kterym zjistime jmeno hrace aby jsme porad nemuseli pouzivat GetPlayername
{
  new p[MAX_PLAYER_NAME];
  if(IsPlayerConnected(playerid)) GetPlayerName(playerid,p,MAX_PLAYER_NAME);
  return p;
}

Link to comment
Share on other sites

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(AFK[playerid] == true)
{
new string[128];
format(string,sizeof(string),"[ AFK ] Hráč %s je zpět ve hře !",Jmeno(playerid));
SendClientMessageToAll(COLOR_GREY,string);
TogglePlayerControllable(playerid,1);
SetPlayerName(playerid,UlozeneJmeno[playerid]);
AFK[playerid] = false;
OldAFK[playerid] = 10;
SetTimerEx("PovolitAFK",1000,0,"i",playerid);
}//si tu nemal
return 1;
}

Link to comment
Share on other sites

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(AFK[playerid] == true)
{
new string[128];
format(string,sizeof(string),"[ AFK ] Hráč %s je zpět ve hře !",Jmeno(playerid));
SendClientMessageToAll(COLOR_GREY,string);
TogglePlayerControllable(playerid,1);
SetPlayerName(playerid,UlozeneJmeno[playerid]);
AFK[playerid] = false;
OldAFK[playerid] = 10;
SetTimerEx("PovolitAFK",1000,0,"i",playerid);
}//si tu nemal
return 1;
}

 

 

To jsi cornul odemne? :lek:

Link to comment
Share on other sites

ne, dal tu riadky ak si si nevšimol tak som si to pozrel, tvoje mi vyhodilo že si odoslal keď som išiel poslať :boss:

 

To si dve minuty psal return?

No neresim to je jedno hlavne ze to pomohlo ....

Link to comment
Share on other sites

ne, dal tu riadky ak si si nevšimol tak som si to pozrel, tvoje mi vyhodilo že si odoslal keď som išiel poslať :boss:

 

To si dve minuty psal return?

No neresim to je jedno hlavne ze to pomohlo ....

 

jžš ne, kým som našiel čo tam je za problém v tých riadkoch...máš jedno omg prečo by som mal jednú blbú zátvorku od teba opísať, si myslíš že si neviem čo by si doplnil zátvorku?jak keby som musel kopírovať zátvorku v helpe, omg a naviac ty si mu dal celý skript ja som mu dal konkrétny problém...

Link to comment
Share on other sites

ne, dal tu riadky ak si si nevšimol tak som si to pozrel, tvoje mi vyhodilo že si odoslal keď som išiel poslať :boss:

 

To si dve minuty psal return?

No neresim to je jedno hlavne ze to pomohlo ....

 

jžš ne, kým som našiel čo tam je za problém v tých riadkoch...máš jedno omg prečo by som mal jednú blbú zátvorku od teba opísať, si myslíš že si neviem čo by si doplnil zátvorku?jak keby som musel kopírovať zátvorku v helpe, omg a naviac ty si mu dal celý skript ja som mu dal konkrétny problém...

 

Ajo zapomel sem to oznacit cervene lol :d

Nerikam zes to zkopcil a uz to neresim!

Link to comment
Share on other sites

  • 5 months later...

Je tam niekde chyba neviem kde neviem tak dobre pawno aby som ju nasiel ale proste nikto neni na servery tam /afk a napise ze nejaky hrac je v mojej blizkosti :(

 

EDIT:// ja chcem aby to bolo tak ze nikto nesmie byt pri tebe nechcem to z tade dat kompletne prec chcem to len opravit a nwm jak :)

Link to comment
Share on other sites

  • 1 year later...
Je tam niekde chyba neviem kde neviem tak dobre pawno aby som ju nasiel ale proste nikto neni na servery tam /afk a napise ze nejaky hrac je v mojej blizkosti :(

 

EDIT:// ja chcem aby to bolo tak ze nikto nesmie byt pri tebe nechcem to z tade dat kompletne prec chcem to len opravit a nwm jak :)

 

 

Zdravím, toto isté aj mne robí, keď dám kompiláciu, 0x error, 0x warning, no ked som v hre a dam /afk tak napise vo vasej blizskosti je hrac.

Ďakujem za pomoc

Link to comment
Share on other sites

Doporučuji ti začít nějákým teoretickým návodem, kde se seznámíš ze základy a syntaxem. Pak už sám budeš vědět co a jak a tvorba GM ti půjde lépe.

Link to comment
Share on other sites

hele lidi sem zacatecnik kde mam to vsetko co tam pise vlozit prosim vas ?? surne dekuji a jak to mam vlastne vkladat proc to neni naras v jednom ale rozdeleno do vic okenku :) ??

 

a jaky navod kde to mam vse vlozit prosím ?

 

preto aby si sa to naucil a pochopil a nestlacil len CTRL+C a CTRL+V

 

a mas tam napisane co kam mas dat...

Link to comment
Share on other sites

jaaaj no dekuji ti moc ale hele toto nevim kam dat prve :) Kód:

#define BARVA_SEDA 0xAFAFAFAA

#define BARVA_BILA 0xEFEFF7AA

 

 

Kód:

forward PovolitAFK(playerid);

forward KontrolaPozice();

 

 

Kód:

new bool:AFK[MAX_PLAYERS];

new OldAFK[MAX_PLAYERS];

new UlozeneJmeno[MAX_PLAYERS][MAX_PLAYER_NAME];

new Float:SaveX[MAX_PLAYERS],Float:SaveY[MAX_PLAYERS],Float:SaveZ[MAX_PLAYERS];

Link to comment
Share on other sites

to daj hore pod

 

#include

 

#define BARVA_SEDA 0xAFAFAFAA

#define BARVA_BILA 0xEFEFF7AA

 

forward PovolitAFK(playerid);

forward KontrolaPozice();

 

new bool:AFK[MAX_PLAYERS];

new OldAFK[MAX_PLAYERS];

new UlozeneJmeno[MAX_PLAYERS][MAX_PLAYER_NAME];

new Float:SaveX[MAX_PLAYERS],Float:SaveY[MAX_PLAYERS],Float:SaveZ[MAX_PLAYERS];

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...