Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

[Pamoka by DexinoZ] NPC boto kūrimas


DexiZ

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3501 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

NPC bot'as - netikras žaidėjas. Jūs parašote jo veiksmus, o jis tai atlieka serveryje.
( Pavyzdžiui.: važinėja taxi, vaikšto po miestą ir panašiai. )
 
Įrašome NPC boto veiksmus
Visų pirma mums reikia įrašyti jo veiksmus. Įsijungiame serverį ir prisijungiame kaip rcon adminas. ( /rcon login slaptažodis ). Tada rašome /rcon loadfs npc_record. Viskas. Lyg ir pasiruošėme įrašinėjimui, tik dabar truputį plačiau apie komandas...

 

* /vrecord pavadinimas - įrašinėja veiksmus, kurie atliekami sėdint transporte.

* /ofrecord pavadinimas - įrašinėja veiksmus, kurie atliekami stovint ant kojų.
* /stoprecord - sustabdo įrašinėjimą.
 
Tarkim, kad aš pasirinkau, kad mano NPC bot'as važinėtų po miestą. Taigi, įlipu i automobilį ir parašau /vrecord TaksiVairuotojas.
 
Pavažinėsiu po miestą ir kai man užtenka maršruto, rašau /stoprecord.
Viskas. Uždarome serverį.
Aplanke scriptfiles/ mano atveju bus failas TaksiVairuotojas.rec.
Jį reikia perkelti į <Jūsų serveris>/npcmodes/recordings/.
 
Kontroliuojame NPC botą
Ko gero pastebėjote, kad npcmodes kataloge yra daug įrašų. Tai yra "mini" skriptukai kurie galbūt padės Jums tvarkyti savo NPC botus.
Na, o mes darome įviešis "žaidiant?". 
Atsidarome pawno programą, spaudžiame File, o tada New.
Visą šš ten ištriname, ir įklijuojame kodą, esantį apačioje..
 
#define RECORDING "TaksiVairuotojas" //Jūsų failo pavadinimas.
#define RECORDING_TYPE 1 //1 reiškia, kad veiksmas vyko transporte, o 2 reiškia, kad veiksmas buvo ant kojų.

#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

 

Dabar paaiškinsiu kiekvieną funkciją...

 

#define RECORDING "TaksiVairuotojas" //Jūsų failo pavadinimas.

Kaip ir komentaras sako, kad čia reikia įrašyti mūsų failo pavadinimą. Pavadinimas turi būti be galūnės. Mūsų failas buvo TaksiVairuotojas.rec, taigi mes įrašome "TaksiVairuotojas"

 

#define RECORDING_TYPE 1 //1 reiškia, kad veiksmas vyko transporte, o 2 reiškia, kad veiksmas buvo ant kojų. 

Ką daro ši funkcija, ko gero supratote iš komentaro... wink.png Jeigu Jūs įrašinėjote veiksmą ant kojų, įrašome 2, o jeigu transporte - įrašome 1. Mano atveju buvom Taksi automobilyje ( transporte ), taigi rašome 1.

 

#include <a_npc>

SA-MP NPC botų funkcijos.

 

public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);

OnRecordingPlaybackEnd callback'as yra NPC botų funkcijose, kuri priklauso a_npc includ'ui. Ši funkcija mūsų NPC boto veiksmus kartoja. Kai mūsų įrašas baigiasi, ši funkcija tą įraša paleidžia iš naujo. Pasaka be galo... :]

 

public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);

Dar viena funkcija, priklausanti NPC botų funkcijoms. Ji pradeda įrašinėti, kai NPC botas atsisėda į transportą.

 

public OnNPCExitVehicle() StopRecordingPlayback();

 Ir dar viena funkcija. Ji nutraukia įrašinėjimą, jeigu NPC botas dėl kaškokios priežasties išlipa iš transporto

 

public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);

Ši funkcija neišsiskiria iš kitų... Ji taip pat NPC botų funkcijose yra. Ji pradeda rodyti mūsų įrašytus veiksmus, kai NPC botas būna paleidžiamas serveryje.

 

Prijungiame NPC botą į serverą
Mes turime "mini" skriptą. Taip pat turime ir savo NPC botą. Dabar mums reikia savo NPC bot'ą įkelti i GameMod'ą ar FilterScript'?.
ConnectNPC funkcija padės mums tai padaryti.
Panagrinėkime tai truputį...
 
Viskas turi atrodyti:
 
ConnectNPC("DexinoZ_F","TaksiVairuotojas");

 

Dabar paaiškinsiu.
 
DexinoZ_F - mūsų NPC boto vardas. Taip jūs galėsite prijungti daugybė NPC botų. Svarbiausia, kad būtų skirtingi vardai.
TaksiVairuotojas - jūsų įrašo pavadinimas ( be .rec galųnės ).
Ką gi... Dabar pamėginsime padaryti mūsų NPC boto prisijungimą į serverį, kai GameMod'as ar FilterScript'as užkraunamas.

 

 
Jeigu jungiate NPC botą GameMod'e, tada rašome...
 
public OnGameModeInit()

{
    print("NPC botas GameMod'e prijungtas");
    ConnectNPC("Martin_M","TaksiVairuotojas");
    return 1;
}

 

 

PRATESIMAS APAČIOJE

Nuoroda į komentarą
Dalintis per kitą puslapį

 O, jeigu jungiame į FilterScript'ą, rašome..

 

public OnFilterScriptInit()

{
    print("NPC botas FilterScript'e prijungtas");
    ConnectNPC("Martin_M","TaksiVairuotojas");
    return 1;
}

 

 

 

Ką gi. Mano NPC bot'as važinėjo su Taksi. Tai man reikia sukurti automobilį, kuriuo jis važinėjo.
GameMod'o ar FilterScript'o viršuje, rašome...
 
new TaksiMasina;

 

Ir dabar OnGameModeInit turėtų atrodyti šitaip...

 

public OnGameModeInit()
{
    print("NPC botas GameMod'e prijungtas");
    ConnectNPC("Martin_M","TaksiVairuotojas");
    TaksiMasina = CreateVehicle(420, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
    return 1;
}

 

O jeigu, NPC bot'ą kuriate FilterScript'e, tada turi atrodyti šitaip..

 

FilterScript'o viršuje:
 
new TaksiMasina;

 

O OnFilterScriptInit turi atrodyti šitaip...

 

public OnFilterScriptInit()
{
    print("NPC botas FilterScript'e prijungtas");
    ConnectNPC("Martin_M","TaksiVairuotojas");
    MyFirstNPCVehicle = CreateVehicle(420, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
    return 1;
}

 

 

DĖMESIO!! Jeigu Jūsų NPC boto veiksmai buvo ant kojų, o ne transporte, šitą dalį praleiskite.
 
PASTABA: Transpoto vieta nėra svarbi. Vistiek transportas būna nuteleportuotas NPC botui, kai įrašas pradedamas rodyti.
---------------------------------------------------------------------
 
Ir liko paskutinis žingsnis, kad galėtumėme NPC bot'ą pamatyti žaidime. Tai - pasodinti NPC bot'ą į jam sukurtą transportą.
 
Tai darome, naudodamiesi OnPlayerSpawn...
PASTABA: Jeigu Jūsų NPC boto veiksmai buvo ant kojų, o ne transporte, šitą dalį praleiskite.
 
OnPlayerSpawn turi atrodyti šitaip...
 
public OnPlayerSpawn(playerid)

{
    if(IsPlayerNPC(playerid)) //Tikrina, ar žaidėjas paleistas kaip NPC botas.
    {
        new npcname[MAX_PLAYER_NAME];
        GetPlayerName(playerid, npcname, sizeof(npcname)); //Gauna NPC boto vardą.
        if(!strcmp(npcname, "Martin_M", true)) //Tikrina, ar NPC boto vardas Martin_M
        {
            PutPlayerInVehicle(playerid, TaksiMasina, 0); //Pasodina NPC botą į jam sukurtą transportą.
        }
        return 1;
    }
    //Visa kita paprastam žaidėjui.
    return 1;
}

 

 

Jeigu mes norime pridėti dar vieną NPC botą, tai nėra sunku. wink.png Tiesiog mums reikia pridėti

 

 

if(!strcmp(npcname, "KitasNPCvardas", true))

        {
            PutPlayerInVehicle(playerid, KitaMasina, 0);
            return 1;
        }

 
Taigi, 2 NPC botams, viskas turi atrodyti šitaip..
 
public OnPlayerSpawn(playerid)

{
    if(IsPlayerNPC(playerid)) //Tikrina, ar žaidėjas paleistas kaip NPC botas.
    {
        new npcname[MAX_PLAYER_NAME];
        GetPlayerName(playerid, npcname, sizeof(npcname)); //Gauna NPC boto vardą.
        if(!strcmp(npcname, "Martin_M", true)) //Tikrina, ar NPC boto vardas Martin_M
        {
            PutPlayerInVehicle(playerid, TaksiMasina, 0); //Pasodina NPC botą į jam sukurtą transportą.
        }
        if(!strcmp(npcname, "KitasNPCvardas", true))
        {
            PutPlayerInVehicle(playerid, KitaMasina, 0);
            return 1;
        }
        return 1;
    }
    //Visa kita paprastam žaidėjui.
    return 1;
}

 

Viskas. Dabar sukompiliuokite GameMod'ą ar FilterScript'ą paspausdami F5 ir pirmyn tikrinti NPC boto. Jis važinės taip, kaip Jūs jį įrašėte. Sveikinu! Jūs sukūrėte savo NPC botą! =]

Nuoroda į komentarą
Dalintis per kitą puslapį

tai, kad jis legenda :) O kodėl samp pasaulyje? Jis ištikro miręs. R.I.P

Rašyti kad "neįsiminiau visų mirusių žmonių pasaulyje" būtų labai banalu. Todėl parašiau apie SAMP pasaulį.

 

Aš nesidomiu legendomis, aš naudoju laiką pasivyti ir/ar aplenkti juos.

 

Jei norėsi tęsti pokalbį, rašyk AŽ. Nes šią temą greitai pašalinsiu už informacijos kopijavimą, autorius jau įspėtas už kiekvieną iš jų.

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3501 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...