Skripta koju koristim: LARP
Detaljan opis problema: Ovako ,sto se tice bozica,zelim napraviti komandu /wish,odnosno zelja..Kad je igrac na odredenom mjestu da moze koristit tu komandu..I svi sto to kucaju da se sprema na notepad u gamepanelu..Ako shvacate :P..
Dio skripte:/
Neke slike/video za lakse dobivanje pomoci(neobavezno):/
Edit again,uspio sam evo komande al kako samo jos tu dodat da igrac samo jednom moze koristit tu komandu
if(strcmp(cmd, "/wish", true) == 0)
{
if(IsPlayerConnected(playerid))
{
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[128];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "Korištenje: /wish [text-zelja]");
return 1;
}
new y,m,d;
new h,mi,s;
getdate(y,m,d);
gettime(h,mi,s);
format(string, sizeof(string),"(%d/%d/%d)[%d:%d:%d] /wish %s: %s",d,m,y,h,mi,s,sendername, (result));
WishLog(string);
}
return 1;
}
Koristi
if(IsPlayerInRangeOfPoint(playerid, 20, koordinate))
Pitam kako napravit da se moze samo 1,a ovo cu probat kasnije ubacit u komandu
Postavi parametar kad koristi komandu da mu postavi recimo na 1, i da nemoze koristit komandu kad mu je taj parametar na 1. Ako zelis da nemoze ni poslje reloga koristit onda stavi da mu se sprema u acc taj parametar
Citat: [SC] ScHaLe poslato Decembar 19, 2011, 21:23:07 POSLE PODNE
Postavi parametar kad koristi komandu da mu postavi recimo na 1, i da nemoze koristit komandu kad mu je taj parametar na 1. Ako zelis da nemoze ni poslje reloga koristit onda stavi da mu se sprema u acc taj parametar
Kako ? Zato sam i stavio ovdje -.-'
aaa, nisam te razumeo dobro... pa gledaj ovako, da bi on samo jednom mogao da iskoristi tu komandu zauvek, onda moras da napravis sejvanje u statstima, larp koristi dini pa bi to islo ovako...
pod enum pinfo stavis sledece
pZelja,
tj evo ti kako to izgleda pocetak
enum pInfo
{
pKey,
pLevel,
pSpawn,
pAdmin,
pZelja,
dole su ostale stvari...
onda nadjes u skripti pomocu ctrl + f sledece
PlayerInfo[playerid][pPhousekey] = 9999;
to je inace negde izmedju linije 5500 i 5580 , zavisi dal si nesto editovao i sl...
i ispod toga dodas
PlayerInfo[playerid][pZelja] = 0;
onda pronadjes ovo u skripti
dini_IntSet(string3, "AdminLevel",PlayerInfo[playerid][pAdmin]);
to je negde izmedju linije 27300 i 27400
i dodas ispod
dini_IntSet(string3, "Zelja",PlayerInfo[playerid][pZelja]);
onda pod public OnPlayerUpdateEx(playerid)
ispod ovoga
dini_IntSet(string3, "AdminLevel",PlayerInfo[playerid][pAdmin]);
dodas ovo
dini_IntSet(string3, "Zelja",PlayerInfo[playerid][pZelja]);
zatim pod public OnPlayerLogin(playerid,password[])
ispod ovoga
PlayerInfo[playerid][pAdmin] = dini_Int(string2,"AdminLevel");
dodas ovo
PlayerInfo[playerid][pZelja] = dini_Int(string2,"Zelja");
zatim onda ovo uradis u svojoj komandi, tj ovo ti je komanda
if(strcmp(cmd, "/wish", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(PlayerInfo[playerid][pZelja] == 1)
{
SendClientMessage(playerid, COLOR_WHITE, "Vec si pozeleo zelju!");
return 0;
}
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[128];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "Korištenje: /wish [text-zelja]");
return 1;
}
PlayerInfo[playerid][pZelja] = 1;
new y,m,d;
new h,mi,s;
getdate(y,m,d);
gettime(h,mi,s);
format(string, sizeof(string),"(%d/%d/%d)[%d:%d:%d] /wish %s: %s",d,m,y,h,mi,s,sendername, (result));
WishLog(string);
}
return 1;
}
Naravno ti podesi lepo u komandi da mu stavi zlju na 1, tj stavis tamo de mu i upisuje zelju, nemogu sad da trazim lakse je tebi to...
nadam se da si razumeo sta sam ti gore ispisao... :D
ZaÅ¡to da to dodaje u igraÄev enum? Bolje da jednostavno
new bool:Wish[MAX_PLAYERS];
Te jednostavno kad iskoristi komandu
Wish[playerid] = true;
I onda provjera dali igraÄ već napravio želju
if(Wish[playerid] == true) return SCM(playerid,-1,"nemozete koristit vec ste koristili");
I tebi Dane preporuÄavam da koristiÅ¡ ycmd i sscanf , skratit ćeÅ¡ si komandu na 6,7 linija i smanjit ćeÅ¡ lag i optimizirat skriptu.
Citat: [SC] ScHaLe poslato Decembar 19, 2011, 21:23:07 POSLE PODNE
Postavi parametar kad koristi komandu da mu postavi recimo na 1, i da nemoze koristit komandu kad mu je taj parametar na 1. Ako zelis da nemoze ni poslje reloga koristit onda stavi da mu se sprema u acc taj parametar
ZnaÅ¡ ti Å¡ta znaÄi parametar?
To što si ti rekao je vrijednost varijable a ne parametar.
Citat: 20 Dollar Nosebleed poslato Decembar 20, 2011, 02:23:37 PRE PODNE
ZaÅ¡to da to dodaje u igraÄev enum? Bolje da jednostavno
new bool:Wish[MAX_PLAYERS];
Te jednostavno kad iskoristi komandu
Wish[playerid] = true;
I onda provjera dali igraÄ već napravio želju
if(Wish[playerid] == true) return SCM(playerid,-1,"nemozete koristit vec ste koristili");
I tebi Dane preporuÄavam da koristiÅ¡ ycmd i sscanf , skratit ćeÅ¡ si komandu na 6,7 linija i smanjit ćeÅ¡ lag i optimizirat skriptu.
Citat: [SC] ScHaLe poslato Decembar 19, 2011, 21:23:07 POSLE PODNE
Postavi parametar kad koristi komandu da mu postavi recimo na 1, i da nemoze koristit komandu kad mu je taj parametar na 1. Ako zelis da nemoze ni poslje reloga koristit onda stavi da mu se sprema u acc taj parametar
ZnaÅ¡ ti Å¡ta znaÄi parametar?
To što si ti rekao je vrijednost varijable a ne parametar.
Pa ako mu nedoda u profil, onda ce pamtiti samo dok on neode offline, a on hoce da i posle logina to ima...
probat cu na tedr cmd od sada sam daovo rjesim probat cu kad budem na kompu