Pretraga

Pritisnite Enter za pretragu ili Escape za zatvaranje

Zaključano

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

pre 11 godina
407
pregleda
15
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
Elmedin Techo
Shot Caller
pre 11 godina
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 == 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++;
        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)::
James_SmithXDl
OG Legend
pre 11 godina
Objasni ponovo nerazumem tacno sta ti treba.
Elmedin Techo
Shot Caller
pre 11 godina
C++ wrote on August 8, 2014, 6:27 pm:
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.902😎)  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++;


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++;
        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)
James_SmithXDl
OG Legend
pre 11 godina
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.
Elmedin Techo
Shot Caller
pre 11 godina
C++ wrote on August 8, 2014, 7:03 pm:
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 ?
James_SmithXDl
OG Legend
pre 11 godina
Pa sta tacno da ti objasnim ovo sto sam napisao u prethodnom postu?
Elmedin Techo
Shot Caller
pre 11 godina
C++ wrote on August 8, 2014, 7:28 pm:
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;
}
James_SmithXDl
OG Legend
pre 11 godina
 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.
Elmedin Techo
Shot Caller
pre 11 godina
C++ wrote on August 8, 2014, 7:52 pm:
 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 ?
James_SmithXDl
OG Legend
pre 11 godina
Pa OnPlayerCommandText jer OnGamemodeInit nema player parametar.
Elmedin Techo
Shot Caller
pre 11 godina
C++ wrote on August 8, 2014, 8:00 pm:
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 == 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++;
        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"
James_SmithXDl
OG Legend
pre 11 godina
Pa nemozes tako naravno...

moras ovako dodaj na vrh,,,
new Pajaser [ MAX_PLAYERS ];

Pajaser [ playerid ] = Create....

DestroyObject(Pajaser [ playerid ]);
Elmedin Techo
Shot Caller
pre 11 godina
C++ wrote on August 8, 2014, 9:02 pm:
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)

Quote
forward AddPajser(playerid);
public AddPajser(playerid){
    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);
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);
Kamen = CreateObject(3930, 0, 0, 0, 0, 0, 0);
AttachObjectToPlayer(Kamen, 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;
}
James_SmithXDl
OG Legend
pre 11 godina
Pre koristenja same animacije uradi preload iste..
Elmedin Techo
Shot Caller
pre 11 godina
SLUCAJ RIJESEN LOCK!

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava