[Pomoc] Delay pri izvrsavanju funkcija i problem pri izvrsavanju istih.


Započeo Elmedin Techo, Avgust 08, 2014, 19:30:45 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Skripta koju koristim:NBE
Detaljan opis problema:Eh ovako, znaci pravim posao rudar i sada pravim komadu /kopaj koja ce se izvrsavati, treba mi delay(timer ide valjda) izmedju njih a ne znam kako da napravim, kada dodem na neku lokaciju da mi se ukloni objekat, posalje poruka i dobijem 1 zlato.(Napravio sam ja ali ne radi)
Kod:
if(strcmp(cmd, "/kopaj", true) == 0)
	{
	        if(IsPlayerInRangeOfPoint(playerid, 5.0, -280.1637,2157.3110,-13.9278) || IsPlayerInRangeOfPoint(playerid, 5.0, -298.8161,2165.6951,-13.9278) || IsPlayerInRangeOfPoint(playerid, 5.0, -314.3528,2163.2004,-13.6020) || IsPlayerInRangeOfPoint(playerid, 5.0, -337.5083,2174.1167,-13.4593) || IsPlayerInRangeOfPoint(playerid, 5.0, -359.8916,2172.1741,-13.9028) && PlayerInfo[playerid][pJob] == 30)
			{
			    //===KADA KOPA
			    SendClientMessage(playerid, -1, "Poceo si da kopas, pricekaj 1 minut da dobijes rudu!"); 
			    new pajser = CreateObject(18634, 0,0,0,0,0,0);
			    AttachObjectToPlayer(pajser, playerid, 0.05,0.03,0.00,0.0,100.0,88.0);
			    ApplyAnimation(playerid, "CHAINSAW", "CSAW_1", 4.1, 1, 0, 0, 1, 1, 1);
                           //nakon sto mu posalje poruku i doda pajser da ceka 1 min pa da dobije kamen(rudu)
			    //===KADA ISKOPA
			    DestroyObject(pajser);
			    ClearAnimations(playerid);

			    SendClientMessage(playerid, -1, "Upravo si iskopao rudu, idi je preradi");
		        new kamen = CreateObject(3930, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
		        AttachObjectToPlayer(kamen, playerid, 0.100000, 0.9000, 0.000000, 0.000000, 0.000000, 0.000000);
		        ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.1, 1, 1, 1, 1, 1, 1);
        		if(IsPlayerInRangeOfPoint(playerid, 5.0,  -215.1245,2127.5347,-13.9028)) //OVO ne radi kako da fix?
				{
	 				ClearAnimations(playerid);
	 				DestroyObject(kamen);
				    SendClientMessage(playerid, -1, "Sacekaj 1 minut da se ruda preradi");
                               // OVDE ISTO DELAY OD 1 min
			        SendClientMessage(playerid, -1, "Ruda se upravo preradila i dobio si 1 zlato");
			        PlayerInfo[playerid][pZlato]++;
			        return 1;
  				}
    			return 1;
	    	}else{
	    	    SendClientMessage(playerid, 0xFFFFFFFF, "Niste na mjestu za kopanje/Niste rudar!");
    		}
		return 1;
	}

Neke slike/video za lakse dobivanje pomoci(neobavezno)::
Poslednja Izmena: Avgust 09, 2014, 02:07:08 PRE PODNE od Elmedin Techo


Citat: C++ poslato Avgust 08, 2014, 20:27:09 POSLE PODNE
Objasni ponovo nerazumem tacno sta ti treba.

Ovako znaci, kada kopa(kada kuca /kopaj) da se izvrsi ovaj deo:
SendClientMessage(playerid, -1, "Poceo si da kopas, pricekaj 1 minut da dobijes rudu!"); 
new pajser = CreateObject(18634, 0,0,0,0,0,0);
AttachObjectToPlayer(pajser, playerid, 0.05,0.03,0.00,0.0,100.0,88.0);
ApplyAnimation(playerid, "CHAINSAW", "CSAW_1", 4.1, 1, 0, 0, 1, 1, 1);

I da to izvrsava jedan minut(da se stvori kao loop), nakon jednog minuta da se izvrsi sljedeci,

DestroyObject(pajser);
ClearAnimations(playerid);
SendClientMessage(playerid, -1, "Upravo si iskopao rudu, idi je preradi");
new kamen = CreateObject(3930, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
AttachObjectToPlayer(kamen, playerid, 0.100000, 0.9000, 0.000000, 0.000000, 0.000000, 0.000000);
ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.1, 1, 1, 1, 1, 1, 1);


Eh sad kada dode na pickup(poziciju) if(IsPlayerInRangeOfPoint(playerid, 5.0,  -215.1245,2127.5347,-13.9028))  da mu taj kamen nestane i da ceka opet jedan minut i nakon jednog minuta da se izvrsi sljedeci kod:

ClearAnimations(playerid);
DestroyObject(kamen);
SendClientMessage(playerid, -1, "Sacekaj 1 minut da se ruda preradi");
SendClientMessage(playerid, -1, "Ruda se upravo preradila i dobio si 1 zlato"); //OVO TREBA KAD SE PRERADI
PlayerInfo[playerid][pZlato]++;


A ovaj kod mi ne radi, valjda sto sam stavio IsPlayerInRangeOfPoint u IsPlayerInRangeOfPoint(pogledaj skriptu bolje):
if(IsPlayerInRangeOfPoint(playerid, 5.0,  -215.1245,2127.5347,-13.9028)) //OVO ne radi kako da fix?
				{
	 				ClearAnimations(playerid);
	 				DestroyObject(kamen);
				    SendClientMessage(playerid, -1, "Sacekaj 1 minut da se ruda preradi");
                               // OVDE ISTO DELAY OD 1 min
			        SendClientMessage(playerid, -1, "Ruda se upravo preradila i dobio si 1 zlato");
			        PlayerInfo[playerid][pZlato]++;
			        return 1;
  				}

Kada bih ovo gore nekako moga da napravim kada dode na poziciju i pritisne LMB da mu nesta kamen i onda se izvrsava)

Ovo za nestajanje znaci pod OnPlayerKeyStateChange samo proveris jeli kliknuo tipku koju zelis i dali je na mestu na kojem zelis da bude i das mu response. i pokrenes timer i kad prodje timer od 1 min ispises mu ono sto si hteo.
69

Citat: C++ poslato Avgust 08, 2014, 21:03:41 POSLE PODNE
Ovo za nestajanje znaci pod OnPlayerKeyStateChange samo proveris jeli kliknuo tipku koju zelis i dali je na mestu na kojem zelis da bude i das mu response. i pokrenes timer i kad prodje timer od 1 min ispises mu ono sto si hteo.
Pa brate, pokusao sam stavim ovo dole sto kad iskopa al pise undefined symbol kamen( pa sam ga vratio gore) a za timer mi je veliki problem, kako mogu da napravim to ? pokusavao sa timerom ali nista(SetTimerEx) Mozes li da napises ti nekoliko linija koda na brzinu i da kazes gdje sta da stavim ?

Pa sta tacno da ti objasnim ovo sto sam napisao u prethodnom postu?
69

Citat: C++ poslato Avgust 08, 2014, 21:28:07 POSLE PODNE
Pa sta tacno da ti objasnim ovo sto sam napisao u prethodnom postu?
Kako da napravim timer da ima delaya izmedju funkcija, evo za Primjer uzmi:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp(cmdtext, "/help", true))
    {
        SendClientMessage(playerid, -1, "Sacekajte 1 minut da bi dobili novac");
       GivePlayerMoney(killerid, 1000);
      SendClientMessage(playerid, -1, "Prosla je 1 minuta a vi ste upravo dobili novac!");
        return 1;
    }
    return 0;
}

SetTimerEx("ImeTimera", vreme, false, "i", playerid);


forward ImeTimera ( playerid );
public ImeTimera(playerid)
{
GivePlayerMoney(killerid, 1000);
      SendClientMessage(playerid, -1, "Prosla je 1 minuta a vi ste upravo dobili novac!");
return true;
}


to ti je primer izvrsavanja.
Poslednja Izmena: Avgust 08, 2014, 21:55:00 POSLE PODNE od C++
69

Citat: C++ poslato Avgust 08, 2014, 21:52:52 POSLE PODNE
SetTimerEx("ImeTimera", vreme, false, "i", playerid);


forward ImeTimera ( playerid );
public ImeTimera(playerid)
{
GivePlayerMoney(killerid, 1000);
      SendClientMessage(playerid, -1, "Prosla je 1 minuta a vi ste upravo dobili novac!");
return true;
}


to ti je primer izvrsavanja.

SetTimerEx("ImeTimera", vreme, false, "i", playerid); da stavim u ongamemodeinit ili u OnPlayerCommandText , komanda /kopaj ?


Citat: C++ poslato Avgust 08, 2014, 22:00:09 POSLE PODNE
Pa OnPlayerCommandText jer OnGamemodeInit nema player parametar.
Evo nesto sam uradio ali error sam dobio,

if(strcmp(cmd, "/kopaj", true) == 0)
	{
//	    new kamen = CreateDynamicObject(3930, 0, 0, 0, 0, 0, 0);
	        if(IsPlayerInRangeOfPoint(playerid, 5.0, -280.1637,2157.3110,-13.9278) || IsPlayerInRangeOfPoint(playerid, 5.0, -298.8161,2165.6951,-13.9278) || IsPlayerInRangeOfPoint(playerid, 5.0, -314.3528,2163.2004,-13.6020) || IsPlayerInRangeOfPoint(playerid, 5.0, -337.5083,2174.1167,-13.4593) || IsPlayerInRangeOfPoint(playerid, 5.0, -359.8916,2172.1741,-13.9028) && PlayerInfo[playerid][pJob] == 30)
			{
			    //===KADA KOPA
			    SendClientMessage(playerid, -1, "Poceo si da kopas, pricekaj 1 minut da dobijes rudu!");
			    SetTimerEx("AddPajser", 1000, false, "i", playerid);
			    SetTimerEx("RemovePajser", 60000, false, "i", playerid)
			    //SetTimerEx("Kopanjerude", 60000, false, "i", playerid)
        	/*	if(IsPlayerInRangeOfPoint(playerid, 5.0,  -215.1245,2127.5347,-13.9028))
				{
	 				ClearAnimations(playerid);
	 				DestroyObject(kamen);
				    SendClientMessage(playerid, -1, "Sacekaj 1 minut da se ruda preradi");
			        SendClientMessage(playerid, -1, "Ruda se upravo preradila i dobio si 1 zlato");
			        PlayerInfo[playerid][pZlato]++;
			        return 1;
  				}*/
    			return 1;
	    	}else{
	    	    SendClientMessage(playerid, 0xFFFFFFFF, "Niste na mjestu za kopanje/Niste rudar!");
    		}
		return 1;
	}



forward AddPajser(playerid);
public AddPajser(playerid){
        new pajser = CreateDynamicObject(18634, 0, 0, 0, 0, 0, 0);
	AttachObjectToPlayer(pajser, playerid, 0.05,0.03,0.00,0.0,100.0,88.0);
	ApplyAnimation(playerid, "CHAINSAW", "CSAW_1", 4.1, 1, 0, 0, 1, 1, 1);
	ApplyAnimation(playerid, "CHAINSAW", "CSAW_1", 4.1, 1, 0, 0, 1, 1, 1);
	return 1;
}
forward RemovePajser(playerid);
public RemovePajser(playerid){
	DestroyObject(pajser);
   	ClearAnimations(playerid);
	ClearAnimations(playerid);
 	SendClientMessage(playerid, -1, "Upravo si iskopao rudu, idi je preradi");
	ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.1, 1, 1, 1, 1, 1, 1);
	return 1;
}

Undefined symbol pajser -(DestroyObject(pajser);),
Sta da radim?  a kad ga stavim pod OnGameModeInit
C:\Users\ActioN\Desktop\NBE GM\gamemodes\NBE.pwn(16733) : warning 204: symbol is assigned a value that is never used: "pajser"
C:\Users\ActioN\Desktop\NBE GM\gamemodes\NBE.pwn(100809) : error 017: undefined symbol "pajser"
C:\Users\ActioN\Desktop\NBE GM\gamemodes\NBE.pwn(100816) : error 017: undefined symbol "pajser"

Pa nemozes tako naravno...

moras ovako dodaj na vrh,,,

new Pajaser [ MAX_PLAYERS ];


Pajaser [ playerid ] = Create....


DestroyObject(Pajaser [ playerid ]);
69

Citat: C++ poslato Avgust 08, 2014, 23:02:59 POSLE PODNE
Pa nemozes tako naravno...

moras ovako dodaj na vrh,,,

new Pajaser [ MAX_PLAYERS ];


Pajaser [ playerid ] = Create....


DestroyObject(Pajaser [ playerid ]);


Hvala, sredio sam, ali sada je novi problem tj u Animacija mi se ne apply (moram dva puta kucati /kopaj da bih pocela iako sam dodao dve iste, takode ni ne zaustavi se)

Citat
forward AddPajser(playerid);
public AddPajser(playerid){
    Pajser[playerid] = CreateObject(18634, 0, 0, 0, 0, 0, 0);
   AttachObjectToPlayer(Pajser[playerid], playerid, 0.05,0.03,0.00,0.0,100.0,88.0);
   ApplyAnimation(playerid, "CHAINSAW", "CSAW_1", 4.1, 1, 0, 0, 1, 1, 1);
   ApplyAnimation(playerid, "CHAINSAW", "CSAW_1", 4.1, 1, 0, 0, 1, 1, 1);
   return 1;
}
forward RemovePajser(playerid);
public RemovePajser(playerid){
   DestroyObject(Pajser[playerid]);
      ClearAnimations(playerid);
   ClearAnimations(playerid);
   Kamen[playerid] = CreateObject(3930, 0, 0, 0, 0, 0, 0);
   AttachObjectToPlayer(Kamen[playerid], playerid, 0.05,0.03,0.00,0.0,100.0,88.0);
   SendClientMessage(playerid, -1, "Upravo si iskopao rudu, idi je preradi");
   ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.1, 1, 1, 1, 1, 1, 1);
   ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.1, 1, 1, 1, 1, 1, 1);
   return 1;
}


SLUCAJ RIJESEN LOCK!
Poslednja Izmena: Avgust 09, 2014, 02:06:55 PRE PODNE od Elmedin Techo