Skocz do zawartości
Gargamel

limit czasowy po zadanym obrażeniu i mnóstwo pieniędzy na ziemi

Rekomendowane odpowiedzi

Witam.

Chciałbym się dowiedzieć, w jaki sposób zrobić limit czasowy po zadanych obrażeniach. Załóżmy że mam komendę "/spawn", która teleportuje gracza na spawn. Chciałbym aby tej komendy można było użyć dopiero po ośmiu sekundach od zadanych obrażeń.

Drugi problem: W miejscu spawnu jest masa pieniędzy, oraz chciałbym się ich pozbyć czy jest jakaś możliwość? Zapewne tworzą sięone po śmierci gracza, lecz nawet jak się je zbierze to nic nie dają.

Z góry dziękuję za pomoc.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

new zadaneObrazeniaCzas;


zadaneObrazeniaCzas=gettime(); // pobieramy czas w sekundach


// warunek sprawdzający, czy mineło 8 sekund

if (zadaneObrazeniaCzas>0 && ((gettime()-zadaneObrazeniaCzas) > 8))) {

// tutaj kod, gdy minie 8 sekund

}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Na początku komendy dajesz:

if(GetPVarInt(playerid, "SPAWNTIME") > gettime())

{

    SendClientMessage(playerid, -1, "Komendy mozesz uzywać co 8 sekund");

    return 1;

}

else

    SetPVarInt(playerid, "SPAWNTIME", gettime() + 8); // 8 skeund

Drugi problem: W miejscu spawnu jest masa pieniędzy, oraz chciałbym się ich pozbyć czy jest jakaś możliwość? Zapewne tworzą sięone po śmierci gracza, lecz nawet jak się je zbierze to nic nie dają.

Podaj kod który tworzy tą kasę, zapewne to CreatePickup lub AddStaticPickup

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Terminator, tak, ale jemu chodzi o zadane obrażenia.

A więc wykorzystujemy OnPlayerTakeDamage.



public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)

{

    SetPVarInt(playerid, "SPAWNTIME", gettime() + 8);

    return 1;

}
I w komendzie tak jak Terminator :


if(GetPVarInt(playerid, "SPAWNTIME") > gettime())

{

        SendClientMessage(playerid, -1, "Komendy mozesz uzywać co 8 sekund");

        return 1;

}

Korzystałem z twojego kodu, bo nie ma sensu pisać drugiego takiego ;)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Niestety nie działa :(

Wywala jeden warning: warning 235: public function lacks forward declaration (symbol "OnPlayerTakeDamage")

linijka:

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)

Edytowane przez Gargamel

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×