Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcje w grze RPG
Forum PHP.pl > Forum > PHP
ReeV
Tworząc panel rejestracji i logowania robiłem to z myślą o stworzeniu gry RPG. I teraz staje przed pewnym problemem. Każdy user ma przypisane określone wartości w tabeli mysql. $login, $energia. $mana, $zycie (pomijam pole $haslo bo to jest raczej nie przydatne).

Następnie pobieram dane o userach który wyświetla mi wszystkich zarejestrowanych w systemie. I chcem aby userzy mogli toczyć walki między sobą czyli po zalogowaniu dany user ma dostęp do bazy zarejestrowanych osób i obok każdego widocznego usera (oprócz siebie samego) będzie widniał mu przycisk walcz.

Po jego naciśnięciu w przycisk walcz nie wiem jak wykonać kilka rzeczy.

- sprawić aby porównane zostały dane userów (czyli moje zaczynającego walkę oraz atakowanego)
- chcem aby posiadana energia byłą przeliczana na ilość zadanych obrażeń czyli im więcej energi posiadam tym większe obrażenia zadaje więc w tym przypadku jeśli posiadam 1000 energii a przeciwnik 100 wygram walkę lecz także otrzymam obrażenia bo chcem aby polecenie było wykonane tak po naciśnięciu walcz

ON OTRZYMUJE OBRAŻENIA
JA OTRZYMUJE OBRAŻENIA
(i tak na zmianę aż do spradku $zycia do zera)
bela
Jak chcesz tworzyć RPGa to najpierw stwórz tak jakbyś pisał zwykły system, a potem przenieś to na kod winksmiley.jpg
ReeV
Za bardzo to mi niestety nie pomogłeś. Konkretnie to mi chodzi o taką rzecz. Jak zrobić aby pobrać dane innego usera gdy ja jestem zalogowany czyli przykłądowo porównać je do moich.

How?
emitra
$query="SELECT * WHERE imie_wojownika='$przeciwnik_name'";
$result=mysql_query($query);
$row=mysql_fetch_array($result);

$poziom_przeciwnika=$row["poziom"];
itd..
$roznica_poziomow=$twoj_poziom-$poziom_przeciwnika;

a potem
if ($roznica_poziomow>1000)
{
print "Dzieli was zbyt duza roznica poziomow...";
}
else
{
print "walczymny";
}

o To Ci chodzilo czy ... jajeczka wielkanocne pozbawily mnie swiadomosci smile.gif?


;p?

Wesolego lanego poniedzialku smile.gif
ActivePlayer
  1. <?php
  2. $atakuje = 'ja';
  3. while ($your_life > 0 or $his_life > 0)
  4. {
  5. if($atakuje=='ja')
  6. {
  7. $jego_zycie -= ($Twoja_sila-Jego_obrona)*($jakis_element_losowy);
  8. echo 'Pozostało Mu: '.$jego_zycie;
  9. $atakuje = 'on';
  10. }
  11. else
  12. {
  13. $twoje_zycie -= ($jego_sila-twoja_obrona)*($jakis_element_losowy);
  14. echo 'Pozostało Ci: '.$twoje_zycie;
  15. $atakuje = 'ja';
  16. }
  17. }
  18. if($your_life>0)
  19. {
  20. $your_experience += 2/10*$jego_experience;
  21. echo 'Wygrales';
  22. }
  23. else
  24. {
  25. echo 'Przegrales';
  26. $jego_experience += 1/10*$towj_experience;
  27. }
  28.  
  29.  
  30. ?>


z reki pisane. 'twoj' zaznaczam osobe atakującą, jego - osobe zaatakowaną. otobe ?
ReeV
Niby problem z tworzeniem funkcji stał się banalny lecz teraz pojawił się kolejny z którym nie bardzo wiem jak sobie poradzić... Wszysttko to wygląda mniej więcej tak:

Wacek
Siła: 20
Energia: 10
Cos tam jeszcze: 5
WALCZ!

Stefan
Siła: 20
Energia: 10
Cos tam jeszcze: 5
WALCZ

I właśnie przykładowo wybieran sobie Stefana (czyt. atakuje go) no i nie bardzo wiem jak zrobić aby po kliku w odnośnik WALCZ zrobić aby rozpoznało z kim ja walcze bo przecież jak dam url do pliku z funkcjami tak jak powyżej będę walczył sam z sobą. Nie bardzo wiem jak sprawić aby rozpoznawało mi osobę/wroga z która bede walczyl i od której beda pobierane statystyki do walki.
M4chu
ladujesz to do funkcji, np
  1. <?php
  2.  
  3. // attack.php
  4. define( 'PLAYER_ID', 1 ) // id aktualnie zalogowanego gracza
  5.  
  6. function attack( $attacker, $defender )
  7. {
  8.  //(...)
  9. }
  10.  
  11. attack( PLAYER_ID, $_GET['id'] ); // url np attack.php?id=10
  12.  
  13. ?>

i w funkcji sprawdzasz to co chcesz, majac ID atakujacego (zalogowanego gracza) i broniacego sie (przeciwnika) jestes w stanie sprawdzic czy przypadkiem nie sa ta sama osoba, pobrac ich statystyki, przeprowadzic walke itp.
zbig13
Możesz przekazywać imie wroga w pasku adresu. Dajesz np. odnośnik typu walcz.php?wrog=Stefan. Potem w skrypcie pobierasz je metodą $_GET i wyszukujesz z bazy informacje o wrogu, który ma nick $_GET['wrog']. Jak to ci nie pasuje do reszty do pokombinuj z sesjami albo cookie.
ReeV
Cytat(M4chu @ 2005-04-03 22:03:43)
ladujesz to do funkcji, np
  1. <?php
  2.  
  3. // attack.php
  4. define( 'PLAYER_ID', 1 ) // id aktualnie zalogowanego gracza
  5.  
  6. function attack( $attacker, $defender )
  7. {
  8.    //(...)
  9. }
  10.  
  11. attack( PLAYER_ID, $_GET['id'] ); // url np attack.php?id=10
  12.  
  13. ?>

i w funkcji sprawdzasz to co chcesz, majac ID atakujacego (zalogowanego gracza) i broniacego sie (przeciwnika) jestes w stanie sprawdzic czy przypadkiem nie sa ta sama osoba, pobrac ich statystyki, przeprowadzic walke itp.

Niby wszystko jest ok bo twoje zastosowanie jest najtrafniejsze. Lecz nie bardzo wiem jak wczytać (czyt. wyciągnąć je z bazy mysql) a następnie porównać statystyki moje i walczącego ze mną i doprowadzić do rostrzygnięcia pojedynku w którym wygra lepszy.

Link u mnie ma taką postać : <a href=index.php?page=$id> czyli widoczna postać linku: index.php?page=1 (gdzie w tym wypadku cyferka 1 jest numerem id gracza)

Więc pobieram już id gracza. Lecz nie bardzo wiem co i jak zrobić by dane były poprawnie pobierane do porównania (aby moje dane czyli energia życie siła były porównywanego współczynników wroga) czy swoje dane mam pobierać tylko przez $dane, a dane wroga wyciągać przez GET?

Przepraszam za te 'dziwne' pytania lecz niestety po raz pierwszy mam do czynienia z porównywaniem dancyh z bazy oraz wykonywaniem na nich operacji i nie bardzo wiem jak to zrobić... Prosze o wyrozumiałość i o pomoc...
MagnuM
Gdy pisałem swoją grę to zrobiłem tak, że była zmienna w url typu $walcz. i teraz każdy link WALCZ musi zawierać przekierowanie z nickiem potwora. W pliku w którym były wszystkie funkcje zrobiłem tak:

  1. <?php
  2. switch($_GET['walcz'])
  3. {
  4. case &#092;"zdzislaw\":
  5.  
  6. $sqlQuery = mysql_query(&#092;"SELECT * FROM moby WHERE nick = 'zdzislaw'\");
  7. $sqlArray = mysql_fetch_array($sqlQuery);
  8.  
  9. $mob_nick = $sqlArray['nick'];
  10. $mob_sila = $sqlArray['sila'];
  11. $mob_zrecznosc = $sqlArray['zrecznosc'];
  12. $mob_wytrz = $sqlArray['wytrz'];
  13. // itd. parametry
  14.  
  15. $page = 'walka_mob';
  16.  
  17. break;
  18. }
  19. ?>


wiadomo, page to strona na która jestes przekierowywany już z tymi zmiennymi (czyli strona to walka_mob.php), w niej masz cały kod związany z walka

pozdrawiam.
M4chu
@ReeV: pasowaloby zrobc pare podstawowych funkcji np do wyciagania wlasnie danych o graczu (nie wazne czy jestes nim Ty czy Twoj przeciwnik - funkcja ma byc uniwersalna) niech bedzie getPlayerStats( $playerId ), w tej funkcji pobierasz statystyki gracza o zadanym id (przyklad masz w poscie przedmowcy) i zwracasz w postaci tablicy. Pozniej np kozystasz z funkcji z mojego poprzedniego posta, a w niej np $attackerStats = getPlayerStats( $attacker ); i analogicznie dla $defendera. Masz teraz dane graczy w postaci dwoch tablic, porownywanie statystyk jest teraz banalne.

pozdro
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.