Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Funkcje w grze RPG, Walka
ReeV
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 14.12.2004

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
bela
post
Post #2


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

Ostrzeżenie: (0%)
-----


Jak chcesz tworzyć RPGa to najpierw stwórz tak jakbyś pisał zwykły system, a potem przenieś to na kod (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
ReeV
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 14.12.2004

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
emitra
post
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 23.06.2002
Skąd: Opole

Ostrzeżenie: (0%)
-----


$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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ?


;p?

Wesolego lanego poniedzialku (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował emitra 28.03.2005, 09:21:33
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

Ostrzeżenie: (0%)
-----


  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 ?

Ten post edytował ActivePlayer 28.03.2005, 11:29:11
Go to the top of the page
+Quote Post
ReeV
post
Post #6





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 14.12.2004

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
M4chu
post
Post #7





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 28.09.2003
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
zbig13
post
Post #8





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
ReeV
post
Post #9





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 14.12.2004

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
MagnuM
post
Post #10





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 7.05.2004
Skąd: Jelenia Góra

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
M4chu
post
Post #11





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 28.09.2003
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


@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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 10:05