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

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3874 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

b0af76ab1afa4b589e7d898ae35e4ba8221.png

 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ą! =]

b0af76ab1afa4b589e7d898ae35e4ba8221.png

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

Reikia Pawn pagalbos? Skype nerašyk.

 

 

 

 

 

 

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3874 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ą...