[TuT] /report u dijalogu i tajmerom

Započeo Vegas., Oktobar 02, 2012, 10:42:20 PRE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Vegas.


Pozdrav.

Odlučio sam napraviti ovaj mali tut jer me nekoliko ljudi pitalo kako to odraditi. Vrlo je jednostavno a dobro. Da ne duljim počinjemo.

Za početak će vam trebati ukoliko već nemate include ZCMD i foreach.

Prvo negdje pri vrhu skripte definirajte ID dijaloga i varijabilu koji će nam biti potrebni. new reportovo[MAX_PLAYERS];
#define DIALOG_REPORT 19245
Ukoliko nemate žutu boju u modu a ovo ubacujete, definirajte i nju kako ne bi bilo errora koji bi vas zbunili. #define Zuta 0xFFFF00C8

Na publicu OnPlayerConnect stavljamo igračevu varijabilu na 0. Zašto? Čisto iz sigurnosti da ne bi bilo bugova. Dakle to treba biti ovako. public OnPlayerConnect(playerid)
{
reportovo[playerid] = 0;
return 1;
}


Idemo sa komandom. CMD:report(playerid, params[])
{
if(reportovo[playerid] == 1) return SendClientMessage(playerid, -1, "Sacekajte malo, tek ste poslali report.");
ShowPlayerDialog(playerid, DIALOG_REPORT, DIALOG_STYLE_INPUT, "REPORT|", "Unesite vase pitanje te sacekajte za odgovor admina.","Unesi","Odustani");
return 1;
}
Komanda je jednostavna, kao Å¡to vidite postoji provjera ako igrač ima varijabilu "reportovo" na 1 neće moći da piÅ¡e, a to je zbog tajmera. I takoÄ'e prikazivanje običnog dijaloga.

Idemo da napravimo deÅ¡avanja u dijalogu. Potražite u svom modu public OnDialogResponse. Kada ga naÄ'ete napravite Å¡ta treba a to izgleda ovako, bar bi trebalo.

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new string[128];
new sendername[MAX_PLAYERS];
GetPlayerName(playerid, sendername, sizeof(sendername));
if(dialogid == DIALOG_REPORT)
{
reportovo[playerid] = 1;
format(string, sizeof(string), "REPORT | %s treba pomoc> %s", sendername, inputtext);
SendAdminMessage(Zuta, string);
SendClientMessage(playerid, Zuta, "Poslali ste report.");
SetTimerEx("UnReport", 30000, 1,"i",playerid);
}
return 1;
}


if(dialogid == DIALOG_REPORT)
{
Uzimamo ID dijaloga sa kojim radimo.
reportovo[playerid] = 1; Stavljamo igračevu varijabilu na 1 što znači da je napisao report.
format(string, sizeof(string), "REPORT | %s treba pomoc> %s", sendername, inputtext);
SendAdminMessage(Zuta, string);
Formatiramo igračevu poruku te uzimamo njegovo ime i šta je napisao, te adminima šaljemo poruku.
SendClientMessage(playerid, Zuta, "Poslali ste report."); Šaljemo igraču poruku da je poslao report.

SetTimerEx("UnReport", 30000, 1,"i",playerid);
}
Pokrećemo stock UnReport koji će se završiti za 30 sekundi, te završavamo radnju sa dijalogom. SetTimerEx se koristi za pojedinog igrača.


Mnogi će se zapitati šta je UnReport. To je jedan mali stock koji igračevu varijabilu za report postavlja na 0 te on može opet pisati. stock UnReport(playerid)
{
reportovo[playerid] = 0;
SendClientMessage(playerid, Zuta, "Sada mozete opet pisati report.");
}


Na kraju ubacujete stock za slanje poruke adminima, taj stock već svi dobro poznaju iz GF modova tako da ga nema potrebe objašnjavati. stock SendAdminMessage(color, string[])
{
foreach (Player, i)
{
if(PlayerInfo[i][pAdmin] >= 1)
{
SendClientMessage(i, color, string);
}
}
}



Good,Job :D svaka cast... :D
prst prst u cupi,prst prst u anus


Dobar je tut. Samo mi se nesvida tvoj nacin pisanja. Koristi TAB jer lijepse ce izgledat i lakse je se za snaci.


10/10 krajnje profesionalno ahahahaha :D :D



Kad bih ponovo mogao da biram...al' nemozes da biras.
Zajebes jedan minus i ode ceo zadatak u kurac. Ceo fazon brate, nema druge sanse.


Vegas.

Hvala vam :) ..

Citat: pllopen poslato Oktobar 02, 2012, 12:04:56 POSLE PODNE
Dobar je tut. Samo mi se nesvida tvoj nacin pisanja. Koristi TAB jer lijepse ce izgledat i lakse je se za snaci.
Meni je ljepšte ovako.. :)


Nešto prejednostavno, al dobro.
lijep tut
Samo,


Citat: pllopen poslato Oktobar 02, 2012, 12:04:56 POSLE PODNE
Dobar je tut. Samo mi se nesvida tvoj nacin pisanja. Koristi TAB jer lijepse ce izgledat i lakse je se za snaci.
;)

Ma nemaÅ¡ ti pojma  >:(

Zajebajem se , odličan tut.

ljep tutorial
nista posebno ali dobro objasnjeno

Vegas.

Naravno da je lagano, uradio sam za 2/3 minuta, ali malo više je trebalo da sve objasnim. Hvala :)