Jump to content

cmg4life

V.I.P
  • Posts

    304
  • Joined

  • Last visited

Posts posted by cmg4life

  1. - In acest tutorial va voi arata cum sa realizati un NPC dar si cum sa il folositi.

    Inainte de toate setati Numarul de NPCii pe care vreti sa-i folositi in script in server.cfg

    maxnpc X 
    
    Unde X este numarul de NPCii folositi. Inregistrarea rutei NPCului Incarcati filterscriptul "npc_record" (npc_record.amx). Mergeti in joc, logati-va ca RCON ( /rcon login PASS ). Folositi comanda /ofrecord [nume] -pt a inregistra o ruta fara vehicul- sau /vrecord [nume] -pt a inregistra o ruta cu vehicul- , folositi comanda /stoprecord pt a finaliza inregistrarea. Mergeti in folderul scriptfiles si cautati un fisier de formatul "nume.rec" -unde nume este numele folosit mai sus- , mutati acest fisier in folderul recordings aflat in folderul npcmodes . Controlarea NPCului Creeaza un fisier .pwn, gol in folderul npcmodes. In fisierul .pwn scrieti codul acesta:
    #define RECORDING "mynpc" //This is the filename of your recording without the extension.
    #define RECORDING_TYPE 1 //1 for in vehicle and 2 for on foot.
    
    #include <a_npc>
    main(){}
    public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
    
    #if RECORDING_TYPE == 1
        public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
        public OnNPCExitVehicle() StopRecordingPlayback();
    #else
        public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
    #endif
    
    Inlocuim "mynpc" cu numele inregistrarii facute mai sus, fara extensie -daca inregistrarea este "bla.rec" atunci scriem "bla" fara extensie- .
    #define RECORDING_TYPE 1 //1 for in vehicle and 2 for on foot.
    
    Aici scriem 1 sau 2 in functie de: 1 - NPCul are un vehicul, 2 - NPCul nu are un vehicul. Dupa ce am facut tot de mai sus, compliem scriptul ( F5 ). Conectarea NPCului Deschidem GameModeul sau FilterScriptul in care folosim NPCul. Sub OnGameModeInit (sau OnFilterScriptInit ), adaugam
    ConnectNPC("NUME", "inregistrare");
    
    unde inlocuim "NUME" cu numele ales pt NPC si "inregistrare" cu numele inregistrarii, fara extensie. Daca NPCul conduce un vehicul, trebuie sa il cream.
    #include <a_samp>
    
    new NPCvehicle;
    
    public OnGameModeInit()
    {
        NPCvehicle = CreateVehicle(411, 0.0, 0.0, 0.0, 0.0, -1, -1, 1000);
        return 1;
    }
    
    -doar un exemplu- Iar acum sa il punem in vehicul, aici trebuie mai intai sa il recunoastem. Pt a recunoaste un NPC ne folosim de Nume. Si il vom recunoaste cand se spawneaza.
    public OnPlayerSpawn(playerid)
    {
        if(IsPlayerNPC(playerid)) //Verifica daca playerul este NPC
        {
            new npcname[MAX_PLAYER_NAME];
            GetPlayerName(playerid, npcname, sizeof(npcname)); //Luam numele NPCului
            if(!strcmp(npcname, "NUME", true)) //Verificam daca numele NPCului este "NUME"
            {
                PutPlayerInVehicle(playerid, NPCvehicle, 0); //Punem NPCul in vehicul
            }
            return 1;
        }
    
        //Celelalte lucruri din OnPlayerSpawn
    
        return 1;
    }
    
    -puteti sa-i adaugati si alte caracteristici, nu doar sa il asezati intr-un vehicul, puteti sa-i schimbati skinul, culoarea pe harta etc.- Daca aveti probleme la conectarea NPCului de exemplu este dat afara, adaugati urmatoarea verificare la OnPlayerConnect
    if(IsPlayerNPC(playerid)) return 1;
    

    -Cititi cu atentie inainte de a intreba.-

    Verificati http://forum.sa-mp.com/index.php?topic=119947.0 pt mai multe detalii.

  2. =-" post="20490" timestamp="1255786441"]

    1. Da sunt skinurile. Exemplu:

    AddPlayerClass( 0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0 );

    AddPlayerClass(skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);

    Click aici

    2. Pe la public OnPlayerRequestClass(playerid,classid) gasesti o linie (rand) SetPlayerPos(playerid X, Y, Z);. Acolo pui coordonatele X, Y, Z

    3. La public OnPlayerDeath(playerid, killerid, reason) gasesti pe acolo GetPlayerPos(playerid, X, Y, Z);

    Modifici coordonatele X, Y, Z de acolo.

    Note: Coordonatele le poti afla in felul urmator: intri pe server, te duci in locul unde vrei sa salvezi coordonatele, scrii /save acolo, intri unde ai San Andreasul instalat in PC, si gasesti acolo un fisier savedpossition.txd

    In el o sa gasesti coordonatele X, Y, Z.

    Mari prostii ai zis... da mari de tot

    AddPlayerClass, adauga o clasa, clasesele sunt "categorii" de player, cand intra pe un server, un player isi alege Categoria (clasa), acum tu trebuie sa definesti aceasta clasa, cu AddPlayerClass(skin, Float:x, Float:y, Float:z, Float:Angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo); acolo scrii tot ce trebuie sa definesti, skinul, coordonatele, unghiul, armele, munitia.

    Dupa la OnPlayerRequestClass, aici definesti ce se intampla cand playerul selecteaza si/sau alege o clasa.

    Unde sta clasa respectiva cand e vazuta, unde sta camera, ce unghi, etc.

      SetPlayerInterior(playerid,14);

      SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);

      SetPlayerFacingAngle(playerid, 270.0);

      SetPlayerCameraPos(playerid,256.0815,-43.0475,1004.0234);

      SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);

    Poti face optiunui pentru fiecare clasa in sine , ceva de genul (mai simplu ) :

    switch(classid)

    {

       case 0: { SetPlayerPos SetPlayerFacingAngle etc. }

       case 1: { SetPlayerPos etc. }

       case 2: { SetPlayerColor SetPlayerPos etc. }

    } ( pawno incepe numaratoarea de la 0 nu de la 1 )

    Cate "case" ai atatea clase ai. Daca ai 5 Clase, o sa ai 5 case ( case 0 , case 1, 2 , 3, 4 )

    ---^^^-- Cum este prezentata clasa.

    Apoi, Coordonatele de la AddPlayerClass, pot fii diferite de acestea; coordonatele acelea aleg unde va aparea playerul cand alege clasa respectiva ( unde se spawneaza ).

    Cu OnPlayerDeath nu ai treaba in capitolul asta. La OnPlayerDeath definesti ce se intampla cand moare playeru... Isi schimba culoarea, pierde bani sau altele.

    Citeste tot daca vrei sa afli un raspuns decent .

  3. ceva de genul

    enum inf { CarKeys };

    new pInfo[MAX_PLAYERS][inf];

    Cand vrei tu

    pInfo[playerid][CarKeys] = 191;

    si dupa

    if( pInfo[playerid][CarKeys] == 191 )  SetVehicleParamsForPlayer(191, playerid, 0, 0 );  else SetVehicleParamsForPlayer(191, playerid, 0, 1 );

    asta poti sa o folosesti sa i descui masina la care are chei si sa o incui pe cea la care nu are chei...

  4. Calmati-va... LWDM are o chestie care iti salveaza pozitia pt 5 minute (ultimul player deconectat) deci daca intri repede inapoi te da exact cum erai.

    Dar pt ceva mai bun si pt o mai lunga durata de timp, folosesti un sistem care sa salveze coordonatele iar apoi sa le foloseasca cand playerul intra.

  5. new stuntpl[MAX_PLAYERS];
    forward StuntPl(playerid);
    public StuntPl(playerid)
    {
        if( stuntpl[playerid] == 1 ) stuntpl[playerid] = 0;
        return 1;
    }
    
    public OnPlayerSpawn(playerid)
    {
        stuntpl[playerid] = 0;
        //altele
        return 1;
    }
    
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
        if (newstate == PLAYER_STATE_DRIVER)
        {
            if( stuntpl[playerid] == 0 )
            {
                stuntpl[playerid] = 1; SetTimerEx("StuntPl", 60 * 1000 * 2, 0, "i", playerid); // 2 minute
                if(GetPlayerVehicleID(playerid) ==513)//ID-ul stuntplane-ului
                {
                    SendClientMessage(playerid,COLOR_RED,"Ai intrat in avionul de acrobatii.Daca vrei, poti lasa o dara de fum pe cer apasand tasta 2");
                }
            }
        }
        return 1;
    }

  6. se pot face "interioare" - interiorul e o harta in sinea esti, ca ii trebuie SetPlayerInterior sa se vada e a 2a parte.

    Ca sa faci ceva apropiat unui interior, du-te cu mapperu in pamant, undeva unde nu se poate ajunge si faci o harta fara iesire/vedere spre exterior ... si ala e interioru  :P

  7. SALUT !!!

    Intro zi mam gandit daca ar putea fi vro comanda secreta care numai un om sa o stie si comanda sa puna o parola la server ( tu sa pui parola) si apoi sa inchida serverul !!! Dar parola sa se salveze in scriptfiles intrun fisier oarecare si dupa ce se porneste din nou serverul sa se auto logheze la parola si sa nu lase pe nimeni sa intre pe server !!! ar putea cineva sa faca o asfel de comanda ?  :-\ :-\?

    mie mi se pare ca vrei sa nenorocesti pe cineva

    Asta nu e locul potrivit.

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