Arathor 1 Odesláno: 27. Říjen, 2011 Share Odesláno: 27. Říjen, 2011 Zdravím, Mám AFK Systém od ATomase ale neak uvažuji že si udělám vlastní ted od ATomase má kod //Public pro AFK 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; } //AFK Prikaz 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 kdyz neco zmackne 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; } //Povoleni AFK po 10s 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; } //stock volné okolí 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 } //Stopc bezpecneho okoli 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 } a pořad piše ve vašem okolí je něaký Hráč nevíte nekdo co s tim v kodu chybu nikde nevidím a prosím :spam: Link to comment Share on other sites More sharing options...
Recommended Posts