Salut, am vazut ca scripting-ul este la moda, si vad ca Tr0YB0Y nu vrea sa dezvaluie cunostiintele lui din IT, pawn, c++. M-am decis sa o fac eu. In acest tutorial va voi invata cum sa adaugati o comanda , SendClientMessage, cum sa modificati GM-ul etc.
Prima data va voi invata cum sa adaugati o comanda in GM-ul vostru.
1) Mergeti in pawno.exe
2)Dati Open daca vreti sa adaugati o comanda intr-un GM existent, adica luat de pe net, sau puteti sa va creeati singuri GM-ul folosind "New", dar este mai complicat, ramanem la un GM luat de pe net.
3)Open - Alegeti GM-ul, de exemplu GameMode.pwn, acest gamemode se afla in server samp - gamemode- si acolo o sa gasiti un fisier de tip .pwn, pe acela il deschideti
4)Va duceti la sfarsitul GM-ului, pe server hostat in PC-ul vostru nu va recomand sa folositi MYSQL fiindca este mai greu, mysql il folositi daca aveti host cum are buGGed
Prima data creeati un rand:
if(strcmp(cmd, "/Comanda mea, de exemplu : /gotom", true) == 0) ( Aceasta comanda te duce pe chilliad) { if(IsPlayerConnected(playerid)) { if (PlayerInfo [ playerid ] [pAdmin] >= 1 || PlayerInfo [ playerid ] [pHelper] >= 2) { if (GetPlayerState(playerid) == 2) {
{ new tmpcar = GetPlayerVehicleID(playerid); SetVehiclePos(tmpcar, -2311.7415,-1637.7587,483.2643); //coordonatele masinii, eu acolo am salvat de exemplu un infernus pe chilliad, cand te teleportezi acolo o sa apara si acest infernus. LinkVehicleToInterior(tmpcar, 0); SetVehicleVirtualWorld(tmpcar, 0); VirtualWorld de preferabil sa fie 0. Depinde TelePos [ playerid ] [0] = 0.0;TelePos [ playerid ] [1] = 0.0; Aici coordonatele unde te teleportezi.
} else { SetPlayerPos(playerid, -2311.7415,-1637.7587,483.2643); } SendClientMessage(playerid, COLOR_GRAD1, "Ai fost teleportat pe Chilliad $@ L. Frankbr / hhsy !"); SetPlayerInterior(playerid,0); SetPlayerVirtualWorld(playerid, 0); Aici cand te teleporteaza de preferabil sa fie Vw 0. Puteti pune si 1 dar se vede mai urat. new Float:ax,Float:ay,Float:az; - }
Nu aveti treaba cu astea, puteti sa nu le mai puneti GetPlayerPos(player id,ax,ay,az); posxxx[ playerid ] = ax; posyyy[ playerid ] = ay; poszzz[ playerid ] = az;
De aici totul este obligatoriu. } else { SendClientMessage(playerid, COLOR_ORANGE, "DENIED: {FFFFFF}Nu ai accest la aceasta comanda.)} } return 1; }
Acum v-om invata cum sa adaugam un sistem de login/register pe baza "dini"
Pentru inceput aveti nevoie de includele "dini" care le gasiti foarte usor pe google, nu va dau site, fiindca nu vreau sa promovez pirateria, asa.
Pentru inceput vom pune la inceputul scriptului (GM-ului)
Spoiler
Si apoi vom incepe
sub include vom face un define prin care definim unde se salveaza conturile
si vom face ceva de genu
Spoiler
Acum trebuie sa facem un enum(adica sa enumeram tot ce are nevoie contul)
Spoiler
enum - am enumerat toate statisticile care sa le aiba contul PlayerData - Numele enum-ului Ok acum Vom face un Stock adica ca asta
Spoiler
Stock este o functie scurta la care nu ai nevoie de forward(nu prea stiu cum sa explic stock-ul ) Acest stock ne va ajuta la aflarea numelui playerului Acum vom merge la OnPlayerConnect si vom faceasa
Apasati CTRL+F in GM si cautati OnPlayerConnect pana va apare asa:
Spoiler
if(dini_Exists(file)) - arata ca contul exista if(!dini_Exists(file)) - O functie daca are ! in fata asta inseamna ca este opusul lui deci if(!dini_Exists(file)) inseamna ca contul nu exista ( scuzati de cacofonie) Ok acum cand playerul se va conecta ii va aparea acea casuta(dialog) prin care sa se logheze Dar acum trebuie sa facem sa i se salveze contul in scriptfiles Asa ca acum vom merge la OnDialogResponse Si vom face asa(Explicatiile le voi da la urma)
Spoiler
dini_Create(file); - Cu functia asta se va crea contul tmp = dini_Int(file,"Password"); - Afla parola playerului Acum contul trebbuie sa se salveze in scriptfiles/Users Dar cand playerul se va deconecta totul va disparea(banii,scorul si celelalte vor fi la 0) Cum facem sa nu se reseteze? Pai simplu Ducetiva la OnPlayerDisconnect si faceti asa
Spoiler
Cand playerul iese nu i se salveaza scorul Cum facem sa i se salveze? Pai ducetiva din nou la OnPLayerConnect si puneti asa
Spoiler
SetPlayerScore - Ii reda scorul(cand sa deconectat i sa salvat iar acum ii reda scorul) dini_IntSet - Seteaza statisticile playerului(banii , scorul si celelalte) dini_Int - Ii reda playerului statisticile salvate
Daca nu ati inteles cv dati reply PS:daca esti n00b si nu intelegi mai bine nu te mai apuca sa`l faci.
Este un tip de login/register : DIALOG.
---------------------------------------
Acum v-om invata cum sa modificati un GM, mai exact cel mai RPG GM care puteti sa`l modificati linistit este ZyGhY RPG. Are cele mai noi plugin-uri (.so si .dll)
Sa vedem, sa ii modificam numele din Zyghy in ce nume vrem noi, este usor, pana si un copil de clasa I poate sa o faca, prima data intram in GameMode si dam CTRL+F si cautam Zyghy, sau numele GM-ului downloadat dupa net. Inlocuiti tot ce este Zyghy cu numele serveru-lui dvs si gata. Taca paca:))
---------------------------------------
Asa, acum am descoperit o insula in Las Venturas care poate sa o faca si buGGed o sa va dati seama de prin poze pe unde este, si o puteti pune la voi pe server,,, $@L .
Spoiler
Acum tot ce va dau in spoiler le adaugati dupa paranteza de la public OnGameModeInit
Spoiler
Stiu sunt multe rau:)))), dar cred ca asta e cel mai bun tutorial, mi-a luat mult si inca o sa va mai invat cate ceva in el..
----------------------------------------
Asa acum va voi invata cum sa creeati o masina personala pentru un player anume
Cel mai simplu mod de a creea o masina personala din Gamemode
Pasul 1: Te duci in joc spawnezi masina te duci unde vrei sa tio spawneze dai /save => te duci unde ai instalat Gta => savedposition Ex: AddStaticVehicle(coordonatele ); // numele cui o faci Si o bagi in GM!
Pasul 2: Te duci in GM si bagi asta
if(newcar == id de la MASINA) {
new sendername[MAX_PLAYER_NAME]; GetPlayerName(playerid, sendername, sizeof(sendername)); if(strcmp(sendername," Numele jucatorului caruia o faci!",true)) { SendClientMessage(playerid,COLOR_GREY," You do not have the keys of this car !"); RemovePlayerFromVehicle(playerid); } Nu stiu daca este bine ce am facut dar pe server-ul meu a mers...
-------------------------------------
Inca ceva, multora le da eroare Run Time error 19: FIle or ... not found.
Cum o rezolvam?
Aceasta eroare apare din cauza plugin-urilor, mai exact din cauza streamer-ului.
Ca sa rezolvati eraore va trebuie streamer si sscanf 2013, adica cele mai noi.
Uitati aici, le luati pe toate si le bagati in plugins
http://www.sendspace...uZpYV/WJPYiUJbg
Dupa ce le-ati bagat va duceti in server.cfg si la plugins scrieti streamer.dll | sscanf.dll | YSF.dll
Si gata. Sper ca astazi v-am ajutat, o sa mai revin cu mai multe tutoriale despre scripting.