[pomoć] Kako napraviti komandu ,/wish


Započeo dane_1, Decembar 19, 2011, 18:23:51 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

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;
	}
Poslednja Izmena: Decembar 19, 2011, 21:17:02 POSLE PODNE od Koksildo


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
Street's Creed

Street's Creed gaming zajednica se vraća.
Forum: www.streets-creed.info
IP: 213.149.60.34:7774

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
Kod: c
new bool:Wish[MAX_PLAYERS];


Te jednostavno kad iskoristi komandu

Kod: c
Wish[playerid] = true;


I onda provjera dali igrač već napravio želju

Kod: c
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.
Poslednja Izmena: Decembar 20, 2011, 03:01:42 PRE PODNE od 20 Dollar Nosebleed
"I'm a loser and a user so I don't need no accuser" - Billie Joe Armstrong

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
Kod: c
new bool:Wish[MAX_PLAYERS];


Te jednostavno kad iskoristi komandu

Kod: c
Wish[playerid] = true;


I onda provjera dali igrač već napravio želju

Kod: c
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