PARTNERI:

Marketing

-UPOZORENJE-

Samo registrovani članovi mogu da vide/koriste forum u celini.
Prijavite se ili registrujte nalog na Balkan SA-MP forumu.


Autor Tema: [Tutorial] SampVoice ( malo slozenije )  (Pročitano 605 puta)

0 članova i 1 gost pregledaju ovu temu.

Van mreže V01D

SampVoice ( malo slozenije )
« poslato: Februar 03, 2022, 06:29:05 pre podne »
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?

https://github.com/CyberMor/sampvoice/releases

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

Pawno Code: [Izaberi]
#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 ( https://www.asciitable.com )
- 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 ( https://prnt.sc/26np9lw )
- 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

RADOVI

Y_TIMERS TUT -> KLIKNI ME NEZNO
Duel System FS -> KLIKNI ME NEZNO
[GM]Noise RolePlay -> KLIKNI ME NEZNO
C# Custom SAMP Launcher -> KLIKNI ME NEZNO
FySnow Map -> KLIKNI ME NEZNO
Hunger Games FS -> KLIKNI ME NEZNO
FunRace LiveEvent FS -> KLIKNI ME NEZNO
Registracija Sistem(VIDEO) -> KLIKNI ME NEZNO
Y_ITERATE TUT -> KLIKNI ME NEZNO
[INC]Dynamic Rent Locations -> KLIKNI ME NEZNO
[GM]Balkan Evolution -> KLIKNI ME NEZNO
[TUT]SAMP VOICE ( SLOZENIJE ) -> KLIKNI ME NEZNO
 
Korisnici koji su se zahvalili: fajnydzieciak, aezakmi

Van mreže sleek

Odg: SampVoice ( malo slozenije )
« Odgovor #1 poslato: Februar 03, 2022, 13:40:38 posle podne »
Jako jako veliko sranje. Ovo je kao da ubacite neki mod u svoj GTA i kazete da je to na vasem serveru.
Nije u potpunosti server-side dodatak tako da je jako lose za bilo sta. Svakako kvari igru radi male dece jer se ne mozete nikako uziveti.
BIGDOG ENTERTAINMENT
https://vk.com/bigdogmods
 

Van mreže V01D

Odg: SampVoice ( malo slozenije )
« Odgovor #2 poslato: Februar 03, 2022, 13:54:57 posle podne »
Jako jako veliko sranje. Ovo je kao da ubacite neki mod u svoj GTA i kazete da je to na vasem serveru.
Nije u potpunosti server-side dodatak tako da je jako lose za bilo sta. Svakako kvari igru radi male dece jer se ne mozete nikako uziveti.

Zapravo sam i ja mislio tako dok mi dosta igraca nije predlozilo da ubacim. Ja nisam primetio razliku sa i bez voice chat-a. Onaj ko hoce da skine i koristi, ima tu mogucnost.

RADOVI

Y_TIMERS TUT -> KLIKNI ME NEZNO
Duel System FS -> KLIKNI ME NEZNO
[GM]Noise RolePlay -> KLIKNI ME NEZNO
C# Custom SAMP Launcher -> KLIKNI ME NEZNO
FySnow Map -> KLIKNI ME NEZNO
Hunger Games FS -> KLIKNI ME NEZNO
FunRace LiveEvent FS -> KLIKNI ME NEZNO
Registracija Sistem(VIDEO) -> KLIKNI ME NEZNO
Y_ITERATE TUT -> KLIKNI ME NEZNO
[INC]Dynamic Rent Locations -> KLIKNI ME NEZNO
[GM]Balkan Evolution -> KLIKNI ME NEZNO
[TUT]SAMP VOICE ( SLOZENIJE ) -> KLIKNI ME NEZNO
 

Van mreže Fr0z3n

Odg: SampVoice ( malo slozenije )
« Odgovor #3 poslato: Februar 03, 2022, 21:49:14 posle podne »
Moj je predlog da ne koristite ovaj include postoji exploit koji kada se iskoristi padne svima skripta(isprobano).
 

Van mreže V01D

Odg: SampVoice ( malo slozenije )
« Odgovor #4 poslato: Februar 03, 2022, 22:33:38 posle podne »
Moj je predlog da ne koristite ovaj include postoji exploit koji kada se iskoristi padne svima skripta(isprobano).

Mozda podelis sa ostalima :D ?

RADOVI

Y_TIMERS TUT -> KLIKNI ME NEZNO
Duel System FS -> KLIKNI ME NEZNO
[GM]Noise RolePlay -> KLIKNI ME NEZNO
C# Custom SAMP Launcher -> KLIKNI ME NEZNO
FySnow Map -> KLIKNI ME NEZNO
Hunger Games FS -> KLIKNI ME NEZNO
FunRace LiveEvent FS -> KLIKNI ME NEZNO
Registracija Sistem(VIDEO) -> KLIKNI ME NEZNO
Y_ITERATE TUT -> KLIKNI ME NEZNO
[INC]Dynamic Rent Locations -> KLIKNI ME NEZNO
[GM]Balkan Evolution -> KLIKNI ME NEZNO
[TUT]SAMP VOICE ( SLOZENIJE ) -> KLIKNI ME NEZNO
 

Van mreže Fr0z3n

Odg: SampVoice ( malo slozenije )
« Odgovor #5 poslato: Februar 04, 2022, 17:13:26 posle podne »
Nema potrebe, sigurnije je ovako za sad