[POMOC] Komanda u komandi, sa upisivanjem


Započeo 032.Marcus, Januar 31, 2015, 00:17:05 PRE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Scripta koju koristim: Moja od nule
Detaljan opis problema: Zanima me kako bih mogao da u YCMD komandi sa upisivanjem teksta dodam jos jednu komandu sa upisivanjem teksta. Naprimer: /sb (osnovna komanda, za koju unosimo rec u zavisnosti sta zelimo) owner (komanda za davanje vlasnika, sto zahteva da se opet unese tekst) (ne znam da l' me razumete, ne znam kako da objasnim lepo)
Code: /

Ja sam radio samo sa jednim unosenje, za COS (/v lock1, lock2, lock3, find1, find2, find3 itd itd), ali mi treba da i posle lock1 upisem jos nesto (/v color [color1] [color2] naprimer)

Druze najlakse ti je preko dijaloga.. npr: Kada kucas /komanda, otvori ti dialog (ti izaberi koji ti dialog potreban, da li za unosenje teksta ili broja, ili dialog za odabiranje)
Ovako ja kucam npr /kupioruzije izbaci mi dialog sa oruzijem ak47,m4,deagle,knife... i onda kada ti izaberes npr Deagle on ti predje na taj dialog i da igracu pistolj i oduzme novac, uzavisnosti sta ti stavis u scriptu.. Ako si na to mislio?
Ili po tvom, kada kucas npr /v pa ti otvori dialog vozila, pa onda izaberes Color, pa ti otvori dialog 1 boje, kad uneses ID boje onda ti otvori jos jedan dialog u kojem kucas ID 2 boje... Mozes tako do beskraja napraviti. Pozz :D
Poslednja Izmena: Januar 31, 2015, 00:24:36 PRE PODNE od Ozrenac

Evo ovako:

DEFINE
#define DIALOG_AUTOBOJA 1
#define DIALOG_AUTO 2


Komanda:
YCMD:v(playerid, params[], help)
{
#pragma unused help
#pragma unused params
if(PlayerInfo[playerid][pPosedovanjeAuta] == -1) return SCM(playerid,-1,""B"Ne posedujes vozilo!");
if(strcmp(VoziloInfo[PlayerInfo[playerid][pPosedovanjeAuta]][vVlasnik], GetName(playerid), false))
SPD(playerid,DIALOG_AUTO,DIALOG_STYLE_LIST, ""BELA"Auto", "["CR"1"B"] Informacije\n["CR"2"B"] Zakljucaj/Otkljucaj\n["CR"3"B"] Lociraj vozilo\n["CR"4"B"] Parkiraj vozilo\n["CR"5"B"] Promena boje\n["CR"6"B"] Prodaj vozilo\n["CR"7"B"] Ugradi radio\n["CR"8"B"] Radio\n["CR"9"B"] Prodaj vozilo igracu", "Odaberi", "Nazad");
return 1;
}


Tu unosis ID boje
if(dialogid == DIALOG_AUTO)
{
if(!response) return 1;
new i = PlayerInfo[playerid][pPosedovanjeAuta];
if(PlayerInfo[playerid][pPosedovanjeAuta] == -1) return SCM(playerid,-1,""CRVENA"Ne posedujes auto!");
switch(listitem)
{
case 0:
{
if(!IsPlayerInRangeOfPoint(playerid, 10.0, 1717.1356,-1772.8564,13.6500)) return SCM(playerid,-1,""B"Niste na mjesu gdje se farbaju vozila!");
if(GetPlayerVehicleID(playerid) != VoziloInfo[i][vID]) return SCM(playerid,-1,""B"Niste u svom vozilu!");
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SCM(playerid,-1,""B"Niste na mestu vozaca!");
SPD(playerid,DIALOG_AUTOBOJA,DIALOG_STYLE_INPUT,""B"Boja Auta",""ZELENA"Unesite ID boje "CR"1 "B"i "CR"2 "B"sa razmakom (Primer: "CR"5 1 "B")\n"B"Cena Boje: "ZE"300$","Promeni","Izlaz");
}


I na kraju zadnji Dialog
if(dialogid == DIALOG_AUTOBOJA)
{
if(!response) return 1;
if(PlayerInfo[playerid][pPosedovanjeAuta] == -1) return SCM(playerid,-1,""B"Ne posedujes auto!");
new i = PlayerInfo[playerid][pPosedovanjeAuta], boja[2];
if(response)
{
if(sscanf(inputtext,"ii",boja[0],boja[1])) return SPD(playerid,DIALOG_AUTOBOJA,DIALOG_STYLE_INPUT,""BELA"Boja Auta",""B"Unesite ID boje "CR"1 "B"i "CR"2 "B"sa razmakom (Primer: "CR"5 1 "B")\n"B"Cena Boje: "ZE"300$","Promeni","Izlaz");
if(PlayerInfo[playerid][pNovacDzep] < 300) return SCM(playerid,-1,""B"Nemate dovoljno novca ("ZE"300$"B")!");
VoziloInfo[i][vBoja1] = boja[0];
VoziloInfo[i][vBoja2] = boja[1];
g_NovacMinus(playerid,300);
ChangeVehicleColor(VoziloInfo[i][vID],boja[0],boja[1]);
SacuvajVozilo(i);
SCM(playerid,-1,""B"Uspesno ste ofarbali vase auto za "ZE"300$"B"!");
}
}

Ozrenac ne radi DP mogao si samo da izmenis prvi post i dodas sta si zeleo imas sad opomenu !

@Tema: Ako sam dobro razumeo ti bi nesto ovako ?
YCMD:komanda(playerid, params[], help)
{
	new text[20];
	if(sscanf(params, "s[20]", text))
	{
		// Napises sta moze da bira koje reci za sta
	}
	else
	{
	     if(strcmp(text, "kupi", true) == 0)
	     {
               // I ovde stavis sta da se desi ako bi igrac kucao /komanda kupi ...
			   // naravno kod sscanfa mozes dodavati jos stvari ako ti je potrebno
	     }
	}
	return 1;
}

Ovako, imam ja vec sve to

YCMD:v(playerid, params[], help)
{
	new command[16];
	if(sscanf(params, "s[16]", command))
	{
		SCM(playerid, BOJA_PLAVA, "KORISCENJE: /v(ehicle) [komanda]");
		SCM(playerid, BOJA_PLAVA, "Dostupne komande: buy, sell[1-3], park[1-3], lock[1-3], find[1-3], save[1-3], menu");
	}
	else
	{
		if(strcmp(command, "buy", true) == 0)
		{
            new sendername[32];
			GetPlayerName(playerid, sendername, sizeof(sendername));
			new vID = GetPlayerVehicleID(playerid);
			new vMDL = GetVehicleModel(vID);
			new vehicle = 1;
			if(!IsASalesVehicle(vID)) return SCM(playerid, BOJA_CRVENA, "GRESKA: Ovo vozilo nije na prodaju!");
			if(PlayerInfo[playerid][pVehicle1] != 9999 && PlayerInfo[playerid][pVehicle2] != 9999 && PlayerInfo[playerid][pVehicle3] != 9999) return SCM(playerid, BOJA_CRVENA, "GRESKA: Ne mozete kupiti vise vozila!");
			if(GetPlayerMoney(playerid) < GetVehiclePrice(vID)) return SCM(playerid, BOJA_CRVENA, "GRESKA: Nemate dovoljno novca da bi kupili ovo vozilo!");

			for(new v = 1; v < sizeof(VehicleInfo); v++)
			{
				if(VehicleInfo[v][vOwned] == 0 || VehicleInfo[v][vOwned] == 9999)
				{
					vehicle = v;
					break;
				}
			}

			if(PlayerInfo[playerid][pVehicle1] == 9999)
			{
				PlayerInfo[playerid][pVehicle1] = vMDL;
				PlayerInfo[playerid][pVehicle1ControlID] = vehicle;
			}
			else if(PlayerInfo[playerid][pVehicle2] == 9999)
			{
				PlayerInfo[playerid][pVehicle2] = vMDL;
				PlayerInfo[playerid][pVehicle2ControlID] = vehicle;

			}
			else if(PlayerInfo[playerid][pVehicle3] == 9999)
			{
				PlayerInfo[playerid][pVehicle3] = vMDL;
				PlayerInfo[playerid][pVehicle3ControlID] = vehicle;
			}
			else { return 1;}

			new model[64];
			GetVehicleName(vMDL, model, sizeof(model));

			VehicleInfo[vehicle][vOwned] = 1;
			strmid(VehicleInfo[vehicle][vOwner], sendername, 0, strlen(sendername), 999);
			VehicleInfo[vehicle][vModel] = vMDL;
			VehicleInfo[vehicle][vParkX] = 1590.3740;
			VehicleInfo[vehicle][vParkY] = -1026.0565;
			VehicleInfo[vehicle][vParkZ] = 30.9063;
			VehicleInfo[vehicle][vParkA] = 317.1649;
			VehicleInfo[vehicle][vColor1] = 1;
			VehicleInfo[vehicle][vColor2] = 1;
			VehicleInfo[vehicle][vPaintjob] = 9999;
			VehicleInfo[vehicle][vLocked] = 1;
			VehicleInfo[vehicle][vRegistration] = 0;
			VehicleInfo[vehicle][vControlID] = vehicle;
			SaveVehicle(vehicle);
			SavePlayer(playerid);
			DestroyVehicle(vehicle);
			OwnedVehicle[vehicle] = CreateVehicle(vMDL, VehicleInfo[vehicle][vParkX], VehicleInfo[vehicle][vParkY], VehicleInfo[vehicle][vParkZ], VehicleInfo[vehicle][vParkA], VehicleInfo[vehicle][vColor1], VehicleInfo[vehicle][vColor2], -1);
			SCM(playerid, BOJA_ZELENA, "Kupili ste vozilo. Vozilo je na parkingu, preuzmite ga.");
			GivePlayerMoney(playerid, -GetVehiclePrice(vID));
			return 1;
		}


Itd, ali mi treba, da unutar ovoga mogu da stavim i komandu color za koju je potrebno upisati color1 i color2...