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;
#define DIALOG_REPORT 19245Ukoliko nemate žutu boju u modu a ovo ubacujete, definirajte i nju kako ne bi bilo errora koji bi vas zbunili. #define Zuta 0xFFFF00C8Na 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 = 0;
return 1;
}Idemo sa komandom.
CMD:report(playerid, params[])
{
if(reportovo == 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;
new sendername;
GetPlayerName(playerid, sendername, sizeof(sendername));
if(dialogid == DIALOG_REPORT)
{
reportovo = 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 = 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 = 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 >= 1)
{
SendClientMessage(i, color, string);
}
}
}
