Sunday - 09. 08. 2026 •  Ucitavanje...
Link #1 Link #2 Link #3 Link #4 Link #5

!!

Registruj se i otključaj pun sadržaj

Kao gost imaš ograničen pristup forumu.
Registracijom dobijaš pristup svim temama, možeš pisati poruke, učestvovati u diskusijama i biti dio naše zajednice.

Author Topic: [TUTORIAL] Samp Voice  (Read 5618 times)

Offline

V01D, Admin

    Street Hustler
      Postova: 39
    • RESPECT: 0
      • View Profile
[TUTORIAL] Samp Voice
on: November 24, 2024, 09:05:14 PM
Samp Voice Tutorial

E ovako, vec dosta vas je sigurno culo za sampvoice, ubacivanje voice chat-a itd..
Odlucio sam da napravim ovaj tutorial opet sa razlogom na ima nesto malo detaljnije objasnjeno na
ovom forumu, pa da sami mozete iskoristiti za nesto svoje.


Pre svega, sta je samp voice?

- Samp voice je plugin i include koji omogucava implementaciju voice chat-a tacnije pricanja unutar samp igre.
- Za samp voice su potrebni server-side ( plugin i include ) i client-side ( fajl koji igrac skida i ubacuje u gta sa )


Za sta se koristi?

- Pricanje ingame, ali njegove mogucnosti su mnogo sire od toga, pored raznih voice kanala koje igraci mogu koristiti,
i dobra stvar ovoga je sto se moze staviti na skoro bilo koju tipku koja postoji na tastaturi


Gde se moze skinuti sampvoice?

You are not allowed to view links. Register or Login

Na github linku mozete naci server-side i client-side, kao i source kod client-side dela koji mozete build-ati i napraviti
neku svoju modifikaciju.


Kako da ubacim sampvoice u svoj server?

- Pre svega, u sampvoice pluginu je moguce napraviti 2 vrste stream-a, jedan globalni, drugi lokalni. Globalni nije vezan za lokaciju ili bilo sta slicno,
dok lokalni moze biti vezan za objekat, lokaciju, igraca ili slicno..

- Jako prosto, bice objasnjeno u kodu ispod
- Sada cu sa slicnim koracima objasniti i drugi nacin upotrebe ( oba slucaja cu staviti u jedan kod  i detaljno objasniti unutar koda )
- Na primer, u ovom slucaju zelimo da svaka banda i mafija na serveru imaju poseban voice chat izmedju sebe
- I takodje da mogu da se cuju globalno, bilo gde
- Ovo moze da sluzi kao radio za PD, radio za bande/mafije, moze da se koristi za razne stvari

Code: You are not allowed to view links. Register or Login
#include <sampvoice> //Prvo negde pri vrhu skripte include-amo sampvoice.inc

#define nekiKey                 0x58 //Ovo na sluzi za define KEY-a koji ce igrac pritisnuti za voice chat
#define orgKey                  0x42 //Ovo ce nam sluziti kao define za KEY koji ce igras pritiskati za org chat

//Izecemo i u obzir jednu promenljivu kada su u pitanju dinamicne organizacije ( sto vecina modova koristi )
#define MAX_ORG                 15 //Na primer

//I takodje uzecemo u obzir clana organizacije kao PlayerInfo[playerid][xClan]

// < ! >

new SV_LSTREAM:lstream[MAX_PLAYERS] = { SV_NULL, ... }; //Deklarisemo lokalni stream gde cemo da ubacujemo igrace koji su u blizini
new SV_GSTREAM:orgStream[MAX_ORG] = { SV_NULL, ... }; //Deklarisemo globalni stream, gde ubacujemo clanove iste organizacije


public SV_VOID:OnPlayerActivationKeyPress(SV_UINT:playerid, SV_UINT:keyid) //Ovo je callback koji se poziva kada igrac pritisne activation key koji smo dodali
{
    if(keyid == nekiKey && lstream[playerid]) SvAttachSpeakerToStream(lstream[playerid], playerid);
    if(keyid == orgKey && orgStream[PlayerInfo[playerid][xClan]]) SvAttachSpeakerToStream(orgStream[PlayerInfo[playerid][xClan]], playerid); //Ako igrac pritisne orgKey, ubacuje ga u voice sa ostalim clanovima svoje organizacije
}

public SV_VOID:OnPlayerActivationKeyRelease(SV_UINT:playerid, SV_UINT:keyid) //Callback gada prestane da ga drzi
{
    if(keyid == nekiKey && lstream[playerid]) SvDetachSpeakerFromStream(lstream[playerid], playerid);
    if(keyid == orgKey && orgStream[PlayerInfo[playerid][xClan]]) SvDetachSpeakerToStream(orgStream[PlayerInfo[playerid][xClan]], playerid); //slican princip kao gore
}

// < ! >

public OnPlayerConnect(playerid) { //Kada se igrac connectuje na server

        if(!SvGetVersion(playerid)) SendClientMessage(playerid, -1, "Nemate validnu verziju SAMPA ( R1 ili R3 ) ili nemate voice chat!"); //Proverava verziju sampa i da li igrac ima voice chat
    else if(!SvHasMicro(playerid)) SendClientMessage(playerid, -1, "Nemate mikrofon za voice chat!"); //provera da li ima mikrofon
    else if((lstream[playerid] = SvCreateDLStreamAtPlayer(40.0, SV_INFINITY, playerid, 0xff0000ff, "L"))) { // red color

        SendClientMessage(playerid, -1, "Voice Chat uspesno ucitan, koristite tipku 'X' za pricanje!");
        SvAddKey(playerid, nekiKey);
        SvAddKey(playerid, orgKey); //Ovde dodajemo key-eve koji ce se koristiti

        //Ukoliko ispuni sve uslove, ubacuje ga u lokalni chat i dodaje key koji smo naveli gore
    }

        return 1;
}

public OnGameModeInit() {

        //Pri ucitavanju organizaciju dodajte sledece ( to mozete naci preko labela ili pickup-a za org u OnGameModeInit )
        orgStream[orgID] = SvCreateGStream(0xffff0000, "ORG CHAT");

        return 1;
}

public OnPlayerDisconnect(playerid) { //kada igrac izadje sa servera

        if(lstream[playerid]) { //Ako se nalazi u lokalnom stream-u
        SvDeleteStream(lstream[playerid]); //Izbacuje ga iz voice chat-a
        lstream[playerid] = SV_NULL;
    }

        return 1;
}

// < ! >
// Sada moramo napraviti nesto cime ce igrac organizacije zapravo da udje u taj stream, moze to da se radi
// Pri connectu ukoliko je igrac clan organizacije, da ga ubaci u taj stream
// I takodje kada zapravo ucitamo njegov account
if(PlayerInfo[playerid][xClan] >= 1) {

        SvAttachListenerToStream(orgStream[PlayerInfo[playerid][xClan]], playerid); //Ubacuje ga u stream organizacije koje je clan
}

Kako promeniti neki key koji zelimo da koristimo?

- KEY-eve mozemo da menjamo koristeci ASCII tabelu i hex vrednosti odredjenih karaktera ( You are not allowed to view links. Register or Login )
- Sada, sve sto treba da uradimo je da izvucemo hexadecimalnu vrednost karaktera koji zelimo da koristimo
- Primer : Ako zelimo da koristimo slovo 'P' za pokretanje voice chat-a ( You are not allowed to view links. Register or Login )
- Isto vazi za svaki karakter, kada smo nasli odgovarajuci broj, dodamo 0x ispred njega i stavimo umesto naseg define-a za key

Zakljucak?

- Interesantan include i plugin koji nije za svakoga. Onaj koji zeli da koristi nadam se da ce pomocu ovoga uspeti da napravi nesto novo i zanimljivo koristeci plugin, posto ima ogroman broj mogucnosti koji koristimo samo kao lokalni chat.. Na GitHub linku imaju prikazane funkcije i za sta zapravo sluze. Sada je ostalo samo na vama na pustite masti na volju i odradimo nesto zanimljivo sa ovim :D <3


Offline

Vostic, Korisnik

    Street Mob
      Postova: 50
    • RESPECT: 0
      • View Profile
Re: [TUTORIAL] Samp Voice
Reply #1 on: November 24, 2024, 09:11:36 PM
Hvala cika voide na korisnom tutorialu :)
Ne’š nada me


 


Vrati se na pocetak
SMF 2.0.19 | SMF © 2021, Simple Machines
Page created in 0.047 seconds with 17 queries.
ZBS © 2011 - 2024, Zapadni Balkan SA:MP
Weiss X 10.2 © 2014, Jade Works Studio
Footer background belongs to GTA Forums
SimplePortal 2.3.7 © 2008-2026, SimplePortal