Jump to content
  • 0

pomoc Admin Vězení


Precechtel

Dotaz

Zdravím, začínám s pawnem a zatím umím jen málo ale už mám na starost server. Chtějí po mě abych jim udělal příkaz /ajail ID hráče Čas (v minutách): Důvod: aby mu to napsalo Byl jsi vlozen adminem (Jméno admina) do admin vězení na (čas v minutách) [Důvod: něco] a aby ho to poslalo na souřadnice které již mám a aby to hráče zmrazilo + aby tam měli odpočet tolik sekund kolik zadám v čase a když to uplyne aby ho to propustilo a napsalo to Byl jsi propuštěn z admin vězení. Vím že mi asi nikdo nepomůžete ale snad se někdo mezi vámi najde mockrát děkuji. 

Link to comment
Share on other sites

Recommended Posts

  • 0
#include <gl_common> //Vlož na začátek kódu (za #include <a_samp>)

#define SCM SendClientMessage //To nadefinuje, že místo SendClientMessage můžeš používat jenom SCM

forward Propustit(playerid); //Definování časovače

public OnPlayerCommandText(playerid, cmdtext[]) //Pokud tam již tento callback máš, nepiš ho znovu
{
new cmd[256], idx; cmd = strtok(cmdtext, idx); //S tímhle můžeš s příkazem pracovat, abys mohl detekovat proměnné
if(strcmp(cmd, "/ajail", true) == 0) //Pokud hráč zadá příkaz /ajail
{
new tmp[256], tmp2[256], tmp3[256]; //Do těchto proměnných uložíš, co hráč zadal za příkaz /ajail
tmp = strtok(cmdtext, idx); //Určení první proměnné
tmp2 = strtok(cmdtext, idx); //Určení druhé proměnné
tmp3 = strrest(cmdtext, idx); //Určení zbytku toho, co hráč zadal, za proměnnými
//Udělej si podmínku, že hráč musí být admin
if(!strlen(tmp3) || !IsNumeric(tmp) || !IsNumeric(tmp2)) return SCM(playerid, 0xFF0000FF, "Použití: /ajail [ID] [MINUTY] [DŮVOD]");
//Tato hláška se zobrazí v případě, že nebyly vyplněny všechny proměnné, nebo ID nebo minuty nejsou číslo
new ID = strval(tmp), minuty = strval(tmp2); //Do těchto proměnných uložíš číselné hodnoty ID a minut
if(!IsPlayerConnected(ID)) return SCM(playerid, 0xFF0000FF, "Hráč není připojen");
if(minuty == 0) return SCM(playerid, 0xFF0000FF, "Hráče musíte zatknout na minimálně jednu minutu");

SetPlayerPos(ID, X, Y, Z); //To ho pošle na ty souřadnice (ty si doplň)
TogglePlayerControllable(ID, false); //To ho zmrazí
SetTimerEx("Propustit", minuty*60000, false, "d", ID); //To nastaví odpočet, kdy má být propuštěn
new string[128], Name[24]; GetPlayerName(playerid, Name, 24);
format(string, 128, "Byl jsi vlozen adminem %s do admin vězení na %d [Důvod: %s]", Name, minuty, tmp3);
return SCM(ID, 0xFF0000FF, string);
}
}

public Propustit(playerid) //Čas uplynul
{
TogglePlayerControllable(playerid, true); //To ho odmrazí
SetPlayerPos(playerid, X, Y, Z); //To ho přesune před vězení, souřadnice si doplň
return SCM(playerid, 0xFF0000FF, "Byl jsi propuštěn z admin vězení.");
}

IsNumeric(string[]) //Toto je funkce na zjištění, jestli je string číslo nebo ne - jenom to zkopíruj
{
for(new i=0, j=strlen(string); i<j; i++) if(string[i] > '9' || string[i] < '0') return false;
return true;
}
Kdybys čemukoliv nerozuměl, napiš to.
Link to comment
Share on other sites

  • 0

Já bohužel nevím kam napsat to aby to mohli udělat jen admini :/


A hlavně mám to nějak divné že mi nejde uložit to pawno do .amx F5 mi nejde tak envím :/ Nenajde se někdo kdo by to udělal a pak to sem dal na nějakým odkazu ke stažení? 

Link to comment
Share on other sites

  • 0

Jestli ani nemáš admin systém a nevíš jak ho udělat, tak nevim, proč máš server. Nauč se pawno (ne tim, že ti má někdo napsat kód) a pak s tim třeba něco dělej.

Link to comment
Share on other sites

  • 0

ak to chceš pre RCON tak pod

if(strcmp(cmd, "/ajail", true) == 0) //Pokud hráč zadá příkaz /ajail 

daj toto: 

if(IsPlayerAdmin(playerid))

a je tam aj napísane že

 //Udělej si podmínku, že hráč musí být admin
Link to comment
Share on other sites

  • 0
C:\Users\Rapid-PC\Desktop\Ajail.pwn(5) : error 038: extra characters on line

C:\Users\Rapid-PC\Desktop\Ajail.pwn(13) : error 017: undefined symbol "strtok"

C:\Users\Rapid-PC\Desktop\Ajail.pwn(13) : error 033: array must be indexed (variable "cmd")

C:\Users\Rapid-PC\Desktop\Ajail.pwn(17) : error 017: undefined symbol "strtok"

C:\Users\Rapid-PC\Desktop\Ajail.pwn(17) : error 033: array must be indexed (variable "tmp")

C:\Users\Rapid-PC\Desktop\Ajail.pwn(18) : error 017: undefined symbol "strtok"

C:\Users\Rapid-PC\Desktop\Ajail.pwn(18) : error 033: array must be indexed (variable "tmp2")

C:\Users\Rapid-PC\Desktop\Ajail.pwn(19) : error 017: undefined symbol "strrest"

C:\Users\Rapid-PC\Desktop\Ajail.pwn(19) : error 033: array must be indexed (variable "tmp3")

C:\Users\Rapid-PC\Desktop\Ajail.pwn(13) : warning 203: symbol is never used: "idx"

C:\Users\Rapid-PC\Desktop\Ajail.pwn(13 -- 34) : warning 209: function "OnPlayerCommandText" should return a value

C:\Users\Rapid-PC\Desktop\Ajail.pwn(132) : error 021: symbol already defined: "OnPlayerCommandText"

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

 

 

10 Errors.
Link to comment
Share on other sites

  • 0

tady mas optimalizovanou a prehlednejsi verzi :)

public OnPlayerCommandText(playerid,cmdtext[]) //Pokud tam již tento callback máš,nepiš ho znovu
{
    if(strcmp(cmdtext,"/ajail",true,6) == 0) //Pokud hráč zadá příkaz /ajail
    {
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,"Nejsi prihlaseny na RCON");
        new pos = chrfind(' ',cmdtext,7)+1;
        new pos2 = chrfind(' ',cmdtext,pos)+1;
        new id = strval(cmdtext[7]);
        new minut = strval(cmdtext[pos]);
        if(pos == 0 || pos2 == 0) return SCM(playerid,0xFF0000FF,"Použití: /ajail [ID] [MINUTY] [DŮVOD]");
        else if(!IsPlayerConnected(id)) return SCM(playerid,0xFF0000FF,"Hráč není připojen");
        else if(minuty < 1) return SCM(playerid,0xFF0000FF,"Hráče musíte zatknout na minimálně jednu minutu");
        else
        {
            SetPlayerPos(id,x,y,z);//dopln svoje souradnice
            TogglePlayerControllable(id,false);
            SetTimerEx("Propustit",minuty*60000,false,"i",id);
            new string[128],name[24];
            GetPlayerName(playerid,name,sizeof(name));
            format(string,sizeof(string),"Byl jsi vlozen adminem %s do admin vězení na %d [Důvod: %s]",name,minuty,cmdtext[pos2]);
            SendClientMessage(id,0xFF0000FF,string);
        }
        return 1;
    }
    return 0;
}
forward Propustit(playerid);
public Propustit(playerid)
{
    TogglePlayerControllable(playerid,true);
    SetPlayerPos(playerid,x,y,z);//dopln svoje souradnice
    return SCM(playerid,0xFF0000FF,"Byl jsi propuštěn z admin vězení.");
}

stock chrfind(n,h[],s=0)
{
    new l = strlen(h);
    while(s < l)
    {
        if(h[s] == n) return s;
        s++;
    }
    return -1;
}
Link to comment
Share on other sites

  • 0

ATome, to je jasný, ale dělal jsem to tak, aby to bylo tak nějak pochopitelné i pro začátečníka. :)

kdyz opomenu ty komentare tak myslim ze moje verze je pochopitelnejsi :d

Link to comment
Share on other sites

  • 0

Ale ty si naozaj myslíš, že život je tak jednoduchý? Urob si to sám, hľadaj na internete, pýtaj sa.. akože nikto ti nič v živote nebude robiť za teba.. navyše ešte zadarmo..

Link to comment
Share on other sites

  • 0

Ted už mi to háže jen toto C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(93) : error 029: invalid expression, assumed zero

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(93) : error 017: undefined symbol "Nejsi"
C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(93) : error 017: undefined symbol "prihlaseny"
C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(93) : fatal error 107: too many error messages on one line
Link to comment
Share on other sites

  • 0

 

Ted už mi to háže jen toto C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(93) : error 029: invalid expression, assumed zero

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(93) : error 017: undefined symbol "Nejsi"
C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(93) : error 017: undefined symbol "prihlaseny"
C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(93) : fatal error 107: too many error messages on one line

 

 

Chybí ti tam, nebo tam máš blbě uvozovky pošli řádek 93?

Link to comment
Share on other sites

  • 0

Raději ti to pošlu celé nevadí? public OnPlayerCommandText(playerid, cmdtext[])

{
if(strcmp(cmdtext," /ajail",true,6) == 0)
    {
        if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,-1,*Nejsi prihlaseny na RCON*);
        new pos = chrfind(' ',cmdtext,7)+1;
        new pos2 = chrfind(' ',cmdtext,pos)+1;
        new id = strval(cmdtext[7]);
        new minut = strval(cmdtext[pos]);
        if(pos == 0 || pos2 == 0) return SendClientMessage(playerid,0xFF0000FF,"Použití: /ajail [iD] [MINUTY] [DŮVOD]");
        else if(!IsPlayerConnected(id)) return SendClientMessage(playerid,0xFF0000FF,"Hráč není připojen");
        else if(minuty < 1) return SendClientMessage(playerid,0xFF0000FF,"Hráče musíte zatknout na minimálně jednu minutu");
        else
        {
            SetPlayerPos(id,-1053.9696, 438.3813, 19.8165 );
            TogglePlayerControllable(id,false);
            SetTimerEx("Propustit",minuty*60000,false,i,id);
            new string[128],name[24];
            GetPlayerName(playerid,name,sizeof(name));
            format(string,sizeof(string),Byl jsi vlozen adminem %s do admin vězení na %d [Důvod: %s],name,minuty,cmdtext[pos2]);
            SendClientMessage(id,0xFF0000FF,string);
        }
        return 1;
    }
    return 0;
}
forward Propustit(playerid);
public Propustit(playerid)
{
    TogglePlayerControllable(playerid,true);
    SetPlayerPos(playerid,-1053.9696, 438.3813, 19.8165 );
    return SendClientMessage(playerid,0xFF0000FF,"Byl jsi propuštěn z admin vězení.");
}
 
stock chrfind(n,h[],s=0)
{
    new l = strlen(h);
    while(s < l)
    {
        if(h == n) return s;
        s++;
    }
    return -1;
}
}
Link to comment
Share on other sites

  • 0
C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(100) : error 017: undefined symbol "minuty"

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(105) : error 017: undefined symbol "minuty"

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(108) : error 017: undefined symbol "Byl"

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(108) : error 017: undefined symbol "jsi"

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(108) : error 017: undefined symbol "vlozen"

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(108) : fatal error 107: too many error messages on one line 

 

Řádek: format(string,sizeof(string),Byl jsi vlozen adminem %s do admin vězení na %d [Důvod: %s],name,minuty,cmdtext[pos2]); 

 

Co ted?  :cry:

Link to comment
Share on other sites

  • 0
\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(100) : error 017: undefined symbol "minuty"

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(105) : error 017: undefined symbol "minuty"

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(108) : error 017: undefined symbol "minuty"

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(97) : warning 204: symbol is assigned a value that is never used: "minut"

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(133) : error 054: unmatched closing brace ("}") 

 

Tam pořád naskakujou nový  :cry:

Link to comment
Share on other sites

  • 0
  • Globální moderátor

zkus si to přeložit .... a zjistíš že nemáš definované minuty ... stačí minutka hledání a zjistíš že jsi definoval minut a ne minuty

Link to comment
Share on other sites

  • 0

\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(100) - else if(minuty < 1) return SendClientMessage(playerid,0xFF0000FF,"Hráče musíte zatknout na minimálně jednu minutu"); 

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(105) : error 017: undefined symbol "minuty" - SetTimerEx("Propustit",minuty*60000,false,i,id); 

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(108) : error 017: undefined symbol "minuty" - format(string,sizeof(string),"Byl jsi vlozen adminem %s do admin vězení na %d [Důvod: %s]",name,minuty,cmdtext[pos2]); 

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(97) : warning 204: symbol is assigned a value that is never used: "minut" -  new minut = strval(cmdtext[pos]); 

C:\Users\Rapid-PC\Desktop\AMX & PAWN\Ajail.pwn(133) : error 054: unmatched closing brace ("}") - 

                                                                                                                                           }

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...