Skripta koju koristim: GF (Nx)
Opis problema: Kako da napravim da igraci ne mogu dati /ad dok nema admina online?
Dio skripte:
Evo /ad:
CMD:ad(playerid, params[])
{
new string[200];
new sendername[MAX_PLAYER_NAME];
new oglastekst[128], payout;
if(sscanf(params, "s[128]", oglastekst))
{
SCM(playerid, COLOR_GRAD2, "{168BFF}INFO: {959561} (/ad)vertise [tekst oglasa]");
return 1;
}
else
{
if(PlayerInfo[playerid][pMuted] == 1)
{
format(string, sizeof(string), " {FFFF80}Real Los Santos Life| {FF4444}Ne mozes oglasavati jer si utisan! Preostalo vrijeme: {FFFF80}%d sekundi(%d minuta)", PlayerInfo[playerid][pMuteTime], (PlayerInfo[playerid][pMuteTime]/60)+1);
SCM(playerid, 0xFF4444FF, string);
return 1;
}
if(PlayerInfo[playerid][pLevel] <= 2)
{
format(string, sizeof(string), " {FFFF80}Real Los Santos Life| {FF4444}Moras biti {FFFF80}lvl 3+ {FF4444}da bi mogao pisati oglase!");
SCM(playerid, 0xFF4444FF, string);
return 1;
}
if (oglasvrijeme >= 0 && (PlayerInfo[playerid][pAdmin] < 1))
{
format(string, sizeof(string), " Sacekaj jos %d sekundi prije ponovnog postavljanja oglasa !", oglasvrijeme);
SendClientMessage(playerid, COLOR_GRAD2, string);
return 1;
}
payout = cijenaoglasa1;
if(GetPlayerCash(playerid) < payout)
{
format(string, sizeof(string), "* Nemas dovoljno novca!{FF5E5E} (Potrebno %d$) ", payout);
SendClientMessage(playerid, 0xB9B9B9FF, string);
return 1;
}
for(new i = 0; i < sizeof(Dionice); i++)
{
if(Dionice[i][dType] == 1)
{
Dionice[i][dKasa1] += payout/10;
Dionice[i][dKasa2] += payout/10;
Dionice[i][dKasa3] += payout/10;
Dionice[i][dKasa4] += payout/10;
Dionice[i][dKasa5] += payout/10;
Dionice[i][dKasa6] += payout/10;
Dionice[i][dKasa7] += payout/10;
Dionice[i][dKasa8] += payout/10;
Dionice[i][dKasa9] += payout/10;
Dionice[i][dKasa10] += payout/10;
SaveDionice(i);
}
}
new brojevi[] = { '1','2','3','4','5','6','7','8','9'};
for(new b = 0; b < sizeof brojevi; b++)
{
new tekst = strlen(oglastekst);
for(new i = 0; i<tekst; i++)
{
if(oglastekst[i] == brojevi[b])
oglastekst[i] = '*' ;
}
}
new ostring[128];
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "Oglasavanje | Korisnik: %s | Kontakt broj: %d", sendername,PlayerInfo[playerid][pPnumber]);
OOCNews(0xA0BE73FF,string);
format(string, sizeof(string), "{FFFFFF}-%s", oglastekst);
OOCNews(COLOR_WHITE,string);
GivePlayerCash(playerid, - payout);
format(ostring, sizeof(ostring), "%s -> Oglas: %s", sendername,oglastekst);
OglasLog(ostring);
format(string, sizeof(string), "~r~Postavio si Oglas!~n~~w~Cijena: %d$", payout);
GameTextForPlayer(playerid, string, 5000, 5);
if (PlayerInfo[playerid][pAdmin] < 1)
{
oglasvrijeme = 45;
}
}
return 1;
}
Hvala,LP
U ovom kodu ja nevidim nista sto "zabranjuje" izvrsenje komande ako nema admina online :S
Jesi ti to testao IG pa vidio da nemozes dati oglas a nema admina ?
@FyoDoR, on to nema ali zeli napravit :/ ÄitaÅ¡ li post :D
@pHon, jel to protiv reklamiranja?
haahah soryy xD Nisam ga razumio :S
Pa ajmo reci da je protiv..
Ovak
Nema Admina online i ne mogu kaznjavati nepravilne oglase i onda ne mogu igraci davati ad..
Kuzis?
Recimo ja bi to napravio ovako:
stavim neku varijablu
new adminaOnline=0;
i sad loop
for(i=0;i<MAX_PLAYERS;i++)
{
if(PlayerInfo[i][pAdmin] == 1) adminaOnline++;
}
i onda stavis ovako:
if(adminaOnline==0) SendClientMessage(playerid,-1,"Nema online admina!!!");
evo stavljeno u tvoju komandu:
CMD:ad(playerid, params[])
{
new adminaOnline=0;
for(i=0;i<MAX_PLAYERS;i++)
{
if(PlayerInfo[i][pAdmin] == 1) adminaOnline++;
}
if(adminaOnline==0) SendClientMessage(playerid,-1,"Nema online admina!!!");
else
{
new string[200];
new sendername[MAX_PLAYER_NAME];
new oglastekst[128], payout;
if(sscanf(params, "s[128]", oglastekst))
{
SCM(playerid, COLOR_GRAD2, "{168BFF}INFO: {959561} (/ad)vertise [tekst oglasa]");
return 1;
}
else
{
if(PlayerInfo[playerid][pMuted] == 1)
{
format(string, sizeof(string), " {FFFF80}Real Los Santos Life| {FF4444}Ne mozes oglasavati jer si utisan! Preostalo vrijeme: {FFFF80}%d sekundi(%d minuta)", PlayerInfo[playerid][pMuteTime], (PlayerInfo[playerid][pMuteTime]/60)+1);
SCM(playerid, 0xFF4444FF, string);
return 1;
}
if(PlayerInfo[playerid][pLevel] <= 2)
{
format(string, sizeof(string), " {FFFF80}Real Los Santos Life| {FF4444}Moras biti {FFFF80}lvl 3+ {FF4444}da bi mogao pisati oglase!");
SCM(playerid, 0xFF4444FF, string);
return 1;
}
if (oglasvrijeme >= 0 && (PlayerInfo[playerid][pAdmin] < 1))
{
format(string, sizeof(string), " Sacekaj jos %d sekundi prije ponovnog postavljanja oglasa !", oglasvrijeme);
SendClientMessage(playerid, COLOR_GRAD2, string);
return 1;
}
payout = cijenaoglasa1;
if(GetPlayerCash(playerid) < payout)
{
format(string, sizeof(string), "* Nemas dovoljno novca!{FF5E5E} (Potrebno %d$) ", payout);
SendClientMessage(playerid, 0xB9B9B9FF, string);
return 1;
}
for(new i = 0; i < sizeof(Dionice); i++)
{
if(Dionice[i][dType] == 1)
{
Dionice[i][dKasa1] += payout/10;
Dionice[i][dKasa2] += payout/10;
Dionice[i][dKasa3] += payout/10;
Dionice[i][dKasa4] += payout/10;
Dionice[i][dKasa5] += payout/10;
Dionice[i][dKasa6] += payout/10;
Dionice[i][dKasa7] += payout/10;
Dionice[i][dKasa8] += payout/10;
Dionice[i][dKasa9] += payout/10;
Dionice[i][dKasa10] += payout/10;
SaveDionice(i);
}
}
new brojevi[] = { '1','2','3','4','5','6','7','8','9'};
for(new b = 0; b < sizeof brojevi; b++)
{
new tekst = strlen(oglastekst);
for(new i = 0; i<tekst; i++)
{
if(oglastekst[i] == brojevi[b])
oglastekst[i] = '*' ;
}
}
new ostring[128];
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "Oglasavanje | Korisnik: %s | Kontakt broj: %d", sendername,PlayerInfo[playerid][pPnumber]);
OOCNews(0xA0BE73FF,string);
format(string, sizeof(string), "{FFFFFF}-%s", oglastekst);
OOCNews(COLOR_WHITE,string);
GivePlayerCash(playerid, - payout);
format(ostring, sizeof(ostring), "%s -> Oglas: %s", sendername,oglastekst);
OglasLog(ostring);
format(string, sizeof(string), "~r~Postavio si Oglas!~n~~w~Cijena: %d$", payout);
GameTextForPlayer(playerid, string, 5000, 5);
if (PlayerInfo[playerid][pAdmin] < 1)
{
oglasvrijeme = 45;
}
}
}
return 1;
}
ovo bi trebalo radit, al mislim da ima i bolje rijesenje ;)
nisam kompajlao komandu tak da neznam dal radi, ak neradi onda sam vjerojatno sjebo neku zagradu
nadam se da sam pomogao :)
@Fyodor: takve ko ti ja jednostavno ne kuzim, sta imas odgovarat ak neznas, i ak ne kuzis njegovo pitanje? procitaj jos par puta i razumijet ces, ak jos uvijek ne razumijes, onda imas problema s razumijevanjem Hrvatskog jezika
C:\Documents and Settings\PC\Desktop\Real Los Santos Life\gamemodes\RLRP.pwn(28726) : error 017: undefined symbol "i"
C:\Documents and Settings\PC\Desktop\Real Los Santos Life\gamemodes\RLRP.pwn(28726) : warning 205: redundant code: constant expression is zero
C:\Documents and Settings\PC\Desktop\Real Los Santos Life\gamemodes\RLRP.pwn(28726) : error 017: undefined symbol "i"
C:\Documents and Settings\PC\Desktop\Real Los Santos Life\gamemodes\RLRP.pwn(28726) : warning 215: expression has no effect
C:\Documents and Settings\PC\Desktop\Real Los Santos Life\gamemodes\RLRP.pwn(28726) : error 001: expected token: ")", but found ";"
C:\Documents and Settings\PC\Desktop\Real Los Santos Life\gamemodes\RLRP.pwn(28726) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Provjeri zagrade i izmijeni ovo (nisam jedno vrijeme skripto i sad radimo c++ u skoli i rasturam ga i zaboravio sam nesto pawna xD, slicni su jezici ali ne i isti ;) )
for(new i=0;i<MAX_PLAYERS;i++) //znaci stavi new jos
a errora al i dalje mogu dat ad :D