Jump to content

Gireada

V.I.P
  • Posts

    2,688
  • Joined

  • Last visited

  • Days Won

    25

Posts posted by Gireada

  1. Tie iti da warning la linia 539 respectiv 544 din includerul impl.inc. Cauta includerul si vezi ca variabila time mai este definita odata.

    Eu as zice ca nu umblii pe acolo mai ales ca e un warning. Nu o sa te deranjeze la in timpul jocului. 

  2. Daca ne uitam la

    if(sscanf(params, "fffii", x,y,z,interior,vw))

    Vedem fffii care ar veni asa Float, Float, Float, int, int (x,y,z,interior,vw)

     

    Deci comanda noastra va arata asa

    /gotoxyz 0.000 0.000 0.000 0 0 - ne va duce la pozitia 0.00, 0.000, 0.000, si vom avea interiorul 0 si virtualul 0.

  3. CMD:gotoxyz(playerid, params[])
    {
    	if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login first.");
    	if(PlayerInfo[playerid][pAdmin] >= 5)
    	{
    		new string[128],interior,vw;
    		new Float:x, Float:y, Float:z;
    		if(sscanf(params, "fffii", x,y,z,interior,vw)) return SCM(playerid,COLOR_WHITE,"{FF9900}Scrie: {33CCFF}/gotoxyz <x> <y> <z> <interior> <virtual world>");
    		{
    			SetPlayerPos(playerid, x, y, z);
    			format(string,sizeof(string),"You've teleported to x = %f, y = %f, z = %f, interior %d.",x,y,z,interior);
    			SendClientMessage(playerid,COLOR_WHITE, string);
    			SetPlayerVirtualWorld(playerid, vw);
    			SetPlayerInterior(playerid,interior);
    			InHQ[playerid] = -1;
    			InHouse[playerid] = -1;
    			InBussines[playerid] = -1;
    			StopAudioStreamForPlayer(playerid);
    		}
    	}
    	else return SendClientMessage(playerid, COLOR_ERROR, AdminOnly);
    	return 1;
    }	

     

  4. Va prezint cel mai rapid procesor de comenzi. Acesta nu este creeat de mine, l-am gasit pe .com (toate creditele ii revin lui YourShadow) si ma gandeam sa le prezint si scripterilor care nu viziteaza acel forum.

    Mai jos gasiti un grafic, unde arata vitezele dintre procesoarele de comenzi.

    v43AinV.png

     

    El are urmatoarele functii:

    native PC_RegAlias(const cmd[], const alias[], ...); 
    native PC_SetFlags(const cmd[], flags); 
    native PC_GetFlags(const cmd[]); 
    native PC_EmulateCommand(playerid, const cmdtext[]); 
    native PC_RenameCommand(const cmd[], const newname[]); 
    native PC_CommandExists(const cmd[]);    
    native PC_DeleteCommand(const cmd[]); 
    
    native CmdArray:PC_GetCommandArray(); 
    native CmdArray:PC_GetAliasArray(const cmd[]); 
    native PC_GetArraySize(CmdArray:arr); 
    native PC_FreeArray(&CmdArray:arr); 
    native PC_GetCommandName(CmdArray:arr, index, dest[], size = sizeof dest);  

    si urmatoarele callback-uri:

    forward PC_OnInit(); // calls after Pawn.CMD initialization 
    forward OnPlayerCommandReceived(playerid, cmd[], params[], flags); // calls before a command  
    forward OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags); // calls after a command  

     

    Va voi arata un exemplu de comanda.

    
    cmd:help(playerid, params[]) // also possible to use CMD and COMMAND 
    { 
        // code here 
        return 1; 
    }  

    Deci trecerea de la ZCDM la Pawn.CMD este foarte usoara, creearea comenzilor fiind identica.

    Singura diferata cand vorbim de comenzi este un alias.

    Deci daca in ZCMD aveam:

    CMD:salut(playerid, params[])
    {
    	SendClientMessage(playerid, -1, "Salutare");
    	return 1;
    }
    
    CMD:salut2(playerid, params[])
    {
    	return cmd_salut(playerid, params);
    }
    
    CMD:salut3(playerid, params[])
    {
    	return cmd_salut(playerid, params);
    }

    Adica comanzile /salut2 /salut3, vor face exact acelasi lucru ca si comanda /salut. In Pawn.CMD, treaba devenind mai simpla:

    CMD:salut(playerid, params[])
    {
    	SendClientMessage(playerid, -1, "Salutare");
    	return 1;
    }
    
    alias:salut("salut2", "salut3");

    Deci sintaxa este astfe: alias:comanda("prescurtare");

    Putem pune, cate prescurtari vrem noi fara a mai folosi CMD de zeceori sau de cate ori vrem sa scurtat o comanda.

    alias:comanda("prescurtare1", "prescurtare2","prescurtare3","prescurtare4");

    Pentru mai multe detalii accesati link-ul asta.

     

    Download:

    Github

  5. hOpa # Hcs a cerut un tutorial cum sa pui interdictie la comanda ban, daca ea este folosita de prea multe ori.

    Pai vom avea nevoie de un contor, care sa contorizeze de cate ori este folosita comanda, de un timer care sa scada acel contor dupa un anumit timp si o variabila unde vom stoca id-ul timer-ului.

    Vom defini:

    #define MAX_ACCES 3 // poate folosi de 3 ori maxim comanda
    #define TIME_CONTOR 60000  // dupa 1 minut sa-i scada contorul
    
    new contorCMD[MAX_PLAYERS]; //contorul nostru
    new timerCMD[MAX_PLAYERS]; //timpul pe care il are jucatorul de cand a folosit comanda
    new timer[MAX_PLAYERS]; //unde vom stoca id-ul timer-ului
    
    forward TimeCMD(playerid); //definit functia, unde-i va scadea contorul

    La comanda noastra adaugam:

     

    if(timerCMD[playerid] == 0) // daca nu a facut exces sau a stat ceva timp
        timer[playerid] = SetTimerEx("TimeCMD", 1000, 1, "i", playerid); // va porni timer-ul cand va accesa comanda
    
    contorCMD[playerid]++; // contorul va creste pentru ca a folosit comanda
    if(contorCMD[playerid] >= 3) { BanEx(playerid, "Exces de ban"; return 1;}  //iar daca a folosit comanda de 3 ori ii va da Ban si-i va afisa mesajul "Exces de ban"

     

    Iar acum la final vom creea timer-ul(functia)


     

    public TimeCMD(playerid) // numele functie, pe care l-am definit la inceput de tutorial
    {
        timerCMD[playerid]++; // variabila unde va creste timpul secunda dupa secunda
        if(timerCMD[playerid] >= TIME_CONTOR) // daca valoarea variabilei a depasit timpul definit
        {
    
            contorCMD[playerid]--; // contorul va scade
            timerCMD[playerid] = 0; // timpul va fi din nou 0
           
            if(contorCMD[playerid] == 0)// iar daca contorul va ajunge la 0 se va opri timer-ul
                KillTimer(timer[playerid]); // cu functia KillTimer
        }
    }

     

    Sper ca ti-a fost de folos hOpa # Hcs, si celorlalti.

    • Thanks 1
    • Upvote 5
  6. Iti dau niste sfaturi. Daca esti nou, nu te baga la deschis server din prima. Daca esti nou, invata macar baza in limbajul pawn.

    Ca sa urci gamemode-ul intr-un host trebuie primadata sa treci serverul pe linux, iar apoi sa-l urci pe host cu ajutorul unui program ftp cum ar fi filezila. Dupa ce l-ai urcat editezi server.cfg si ii pui numele gamemode-ului la gamemode si numele filescript-urilor la filescript si sa nu uiti de pluginuri, cele mai importante.

    Baza de date daca e prea mare, acceseaza baza pe care o ai si impartea in doua/trei/patru, in cate parti ai nevoie.

     

    Sper ca am spus ce ai nevoie. Bafta.

  7. La inceputul gamemode-ului pui

    new ZburatorCP[MAX_PLAYERS];

    iar la final pui

     

    public IsAZburator(carid)
    {
        if(carid = zbur[1] || carid == zbur[2] || carid == zbur[3] || carid == zbur[4] || carid == zbur[5])
        {
            return 1;
        }

        return 0;

    }

    • Upvote 1
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.