Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Teleport peta game 2089.


YouAreMPC

Rekomendowane odpowiedzi

Opublikowano

Siemka, macie kawałek questa. Teleportuje on nam peta gdy w ciągu kilku sekund zrobimy więcej niż 30 kordów x/y.

(Dz. kwiatmix)

Po co takie coś? Na game 2089 można zgubić peta gdy szybko się oddalimy od niego.

when teleport_peta.timer begin
x = pc.get_x()
y = pc.get_y() 
timer("sprawdz_odleglosc", 5)
end 
when sprawdz_odleglosc.timer begin
local x1 = x
local y1 = y
n_x = pc.get_x()
n_y = pc.get_y() 
if x1+30 < n_x or y1+30 < n_y or x1-30 > n_x or y1-30 > n_y then
-- Tu dajecie przywołanie swojego peta. Gdy w ciągu kilku sekund zrobimy więcej niż 30 kordów x/y
-- to pet się zrestartuje.
else
end
timer("teleport_peta", 0.1) 
end 

Z tabami:

http://wklej.to/h1B5r

Jak będziecie p pomocy gdzie to dodać czy coś to pisać tu.

Opublikowano

Oczywiśćie fajna sprawa ale łątwa do wykonania ^^.

To "(Dz. kwiatmix)" mogłeś dać większe xD

Już mu dziękowałem na pw bo on wpadł na takie rozwiązanie. 

Ja miałem inne z vid ale niestety, działa tylko po kliknięciu na npc.. 

Opublikowano

Działa, jak to napisałem to sprawdzałem ^^ 

To jak ty to myślisz dodać do questa jak to nigdzie nie pasuje ?

+ skąd ten quest co ma do siebie przenieść ^<^

Opublikowano

To było testowe, nie raz się buguje :D

Nie buguje xD bo poprawiłem ;pp Zobacz że jest inaczej niż ty podałeś xDD

Bo wtedy co ty mi podałeś to się bugowało właśnie ;p i to poprawiłem ^^

 

 

@down: dodajesz np: timer("teleport_peta",1)

To jak ty to myślisz dodać do questa jak to nigdzie nie pasuje ?
+ skąd ten quest co ma do siebie przenieść ^<^
Opublikowano

Nadal będzie bug, bo globalne zmienne.

PS: Nie udzieliłem pozwolenia na udostępnienie, no, ale już niech będzie...(proste jak drut)

A no sorka ;c co do buga to go nie ma ;p testowałem z 50 razy (każda okoliczność) biegałem w prawo lewo drzewo i działa świetnie ^^

To może powiedz gdzie ten bug bo mogłem przegapić ;p

Opublikowano

"Kurwa chuje pewnie ddosują serwer bo takie jebane lagi z tym petem" - myśli typowego gracza.

A no masz rację xD ale chuj tam, dla ludzi co mają peta tylko dla bonusu a nie system na 2k linijek w lua ;p

zresztą wiadomo, timer jest wiec lipa ;p ale inaczej questowo to chyba się nie da zrobić teleportu xD

Opublikowano

U mnie w sumie wyszło koło 500 linijek do petów, mountów i koniów. Mysql'a używałem tylko do zmiany nicku peta, i jeden timer dla sprawności. Wątpię, że to zmniejszy wydajność serwera, szczególnie tych co teraz są.

Opublikowano

Tak z ciekawości, ktoś wie jak jest przeliczana ta wartość?:

chodzi mi o :

float RESPAWN_DISTANCE = 4500.f;

 

float START_FOLLOW_DISTANCE = 300.0f; // ŔĚ °Ĺ¸® ŔĚ»ó ¶łľîÁö¸é ÂѾưˇ±â ˝ĂŔŰÇÔ
float START_RUN_DISTANCE = 900.0f; // ŔĚ °Ĺ¸® ŔĚ»ó ¶łľîÁö¸é ¶ŮľîĽ­ ÂѾư¨.
 
float RESPAWN_DISTANCE = 4500.f; // ŔĚ °Ĺ¸® ŔĚ»ó ¸ÖľîÁö¸é ÁÖŔÎ ż·Ŕ¸·Î ĽŇČŻÇÔ.
int APPROACH = 200; // Á˘±Ů °Ĺ¸®
 
bool bDoMoveAlone = true; // Äł¸ŻĹÍżÍ °ˇ±îŔĚ ŔÖŔ» ¶§ ČĄŔÚ ż©±âŔú±â żňÁ÷ŔϰÇÁö ż©şÎ -_-;
bool bRun = false; // ¶Ůľîľß ÇĎłŞ?
 
DWORD currentTime = get_dword_time();
 
long ownerX = m_pkOwner->GetX(); long ownerY = m_pkOwner->GetY();
long charX = m_pkChar->GetX(); long charY = m_pkChar->GetY();
 
float fDist = DISTANCE_APPROX(charX - ownerX, charY - ownerY);
 
if (fDist >= RESPAWN_DISTANCE)
{
float fOwnerRot = m_pkOwner->GetRotation() * 3.141592f / 180.f;
float fx = -APPROACH * cos(fOwnerRot);
float fy = -APPROACH * sin(fOwnerRot);
if (m_pkChar->Show(m_pkOwner->GetMapIndex(), ownerX + fx, ownerY + fy))
{
return true;
}
}
Opublikowano
timer("teleport_peta", 0.1)
timer("sprawdz_odleglosc", 5)

Wrzuciłeś to tutaj chyba tylko po to, aby zaszkodzić ludziom.

 

 

 

Tak z ciekawości, ktoś wie jak jest przeliczana ta wartość?:

chodzi mi o :

float RESPAWN_DISTANCE = 4500.f;

 

 

float START_FOLLOW_DISTANCE = 300.0f; // ŔĚ °Ĺ¸® ŔĚ»ó ¶łľîÁö¸é ÂѾưˇ±â ˝ĂŔŰÇÔ
float START_RUN_DISTANCE = 900.0f; // ŔĚ °Ĺ¸® ŔĚ»ó ¶łľîÁö¸é ¶ŮľîĽ­ ÂѾư¨.
 
float RESPAWN_DISTANCE = 4500.f; // ŔĚ °Ĺ¸® ŔĚ»ó ¸ÖľîÁö¸é ÁÖŔÎ ż·Ŕ¸·Î ĽŇČŻÇÔ.
int APPROACH = 200; // Á˘±Ů °Ĺ¸®
 
bool bDoMoveAlone = true; // Äł¸ŻĹÍżÍ °ˇ±îŔĚ ŔÖŔ» ¶§ ČĄŔÚ ż©±âŔú±â żňÁ÷ŔϰÇÁö ż©şÎ -_-;
bool bRun = false; // ¶Ůľîľß ÇĎłŞ?
 
DWORD currentTime = get_dword_time();
 
long ownerX = m_pkOwner->GetX(); long ownerY = m_pkOwner->GetY();
long charX = m_pkChar->GetX(); long charY = m_pkChar->GetY();
 
float fDist = DISTANCE_APPROX(charX - ownerX, charY - ownerY);
 
if (fDist >= RESPAWN_DISTANCE)
{
float fOwnerRot = m_pkOwner->GetRotation() * 3.141592f / 180.f;
float fx = -APPROACH * cos(fOwnerRot);
float fy = -APPROACH * sin(fOwnerRot);
if (m_pkChar->Show(m_pkOwner->GetMapIndex(), ownerX + fx, ownerY + fy))
{
return true;
}
}

 

 

Wystarczy sprawdzić od jakiej odległości zaczyna biec i będziesz miał mniej więcej orientacje.

Opublikowano

Troche sprawdzałem ten system :)

Jest 1 bug.

-Zwierzakowi odejmuje bonusy wtedy kiedy znika na pare sec(podczas teleportacji)

Opublikowano

Troche sprawdzałem ten system :)

Jest 1 bug.

-Zwierzakowi odejmuje bonusy wtedy kiedy znika na pare sec(podczas teleportacji)

Bo źle ci dodałem ;p masz inny system i musisz dodać tam gdzie sprawdza żeby odwołało całego peta wraz z bonusami i potem znów go przywołało tak jak pieczęcią.

 

@up: bo ja jest dużo ludzi i ciągle działają timery to mogą być lagi. Nie mówię o 300 osobach ale np 1000. Zresztą ja nie wiem bo nigdy nie miałem serwa ale ludzie tak piszą a oni chyba mieli.

 

@ lopescio

chyba nie wiesz jak ten timer działa ;p najpierw jest 5 sekund a potem 0.1 nie że ciągle działa na 0.1 ....

te 0.1 to tylko szybkie wznowienie poprzedniego timera który działa 5 sekund ;p

Opublikowano

Wiem jak to działa.

Ps. 

if x1+30 < n_x or y1+30 < n_y or x1-30 > n_x or y1-30 > n_y then
-- Tu dajecie przywołanie swojego peta. Gdy w ciągu kilku sekund zrobimy więcej niż 30 kordów x/y
-- to pet się zrestartuje.
else
end

Co to ma być?

Opublikowano

Bo źle ci dodałem ;p masz inny system i musisz dodać tam gdzie sprawdza żeby odwołało całego peta wraz z bonusami i potem znów go przywołało tak jak pieczęcią.

 

@up: bo ja jest dużo ludzi i ciągle działają timery to mogą być lagi. Nie mówię o 300 osobach ale np 1000. Zresztą ja nie wiem bo nigdy nie miałem serwa ale ludzie tak piszą a oni chyba mieli.

 

@ lopescio

chyba nie wiesz jak ten timer działa ;p najpierw jest 5 sekund a potem 0.1 nie że ciągle działa na 0.1 ....

te 0.1 to tylko szybkie wznowienie poprzedniego timera który działa 5 sekund ;p

A nie lepiej po prostu loop_timer?

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...