• Anmelden

1

Dienstag, 30. Juni 2009, 07:23

Str, Atk, Def usw...

Hi Leute

Hat hier vielleicht jemand ne Ahnung wie Str, Dex, Int, Agi, Atk, Def, usw berechnen muss damit man halt weiß mit was für einer warscheinlichkeit man trifft odeer wieviel man den gegner abzieht, ...

Also ich meine jetzt besonders wenn man beispielsweise 5 Str hat. Die Waffe hat dann 12 Atk und der Gegner hat 10 Def. Wie berechnet man das da mit man weiß wie viel man so ca den Gegner schaden hinzufügt ?

Hoffe ihr versteht wie ich das meine ...

Danke schonmal im vorhinaus .. MfG Lukas ;)
  • Signatur

    ...
  • Mein Projekt

    Fortschritt: 14%

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

2

Dienstag, 30. Juni 2009, 07:35

Hier der Code der die Berechnungen macht:
Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  #--------------------------------------------------------------------------
  # * Applying Normal Attack Effects
  # 	attacker : battler
  #--------------------------------------------------------------------------
  def attack_effect(attacker)
	# Clear critical flag
	self.critical = false
	# Check if the attack hits (using hit rate)
	hit_result = (rand(100) < attacker.hit)
	# If hit occurs
	if hit_result == true
  	# Calculate basic damage
  	atk = [attacker.atk - self.pdef / 2, 0].max
  	self.damage = atk * (20 + attacker.str) / 20
  	# Element correction
  	self.damage *= elements_correct(attacker.element_set)
  	self.damage /= 100
  	# If damage value is strictly positive
  	if self.damage > 0
    	# Random chance of critical
    	if rand(100) < 4 * attacker.dex / self.agi
      	self.damage *= 2
      	self.critical = true
    	end
    	# Divide damage by 2 if guarding
    	if self.guarding?
      	self.damage /= 2
    	end
  	end
  	# Randomize damage a bit (15% in each direction)
  	if self.damage.abs > 0
    	amp = [self.damage.abs * 15 / 100, 1].max
    	self.damage += rand(amp+1) + rand(amp+1) - amp
  	end
  	# Check of a hit occurs based on evasion
  	eva = 8 * self.agi / attacker.dex + self.eva
  	hit = self.damage < 0 ? 100 : 100 - eva
  	hit = self.cant_evade? ? 100 : hit
  	hit_result = (rand(100) < hit)
	end
	# If a hit did occur
	if hit_result == true
  	# Try to remove states by shock
  	remove_states_shock
  	# Substract damage from HP
  	self.hp -= self.damage
  	# State change
  	@state_changed = false
  	states_plus(attacker.plus_state_set)
  	states_minus(attacker.minus_state_set)
	# Seems like we missed
	else
  	# Set damage to "Miss"
  	self.damage = "Miss"
  	# Clear critical flag
  	self.critical = false
	end
	# End Method
	return true
  end
zum Lesen den Text mit der Maus markieren

Dürfte auch ohne Ruby-Kentnisse verständlich sein ;)
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

3

Dienstag, 30. Juni 2009, 07:46

Hmm ..
Kann mir das vieleicht einer zu gut Deutsch erklären ...
Bin nicht gerade das englich genie !! xd
*peinlich sei*

Danke
MfG Lukas
  • Signatur

    ...
  • Mein Projekt

    Fortschritt: 14%

sorata

Champion

Motto: Eines Tages werden auch Schildkröten fliegen, jawohl! Und wenn es nur wie bei Gamera ist! °^°

  • Nachricht senden

4

Dienstag, 30. Juni 2009, 12:58

Das ist doch simples Englisch...
Nen durchschnittliches Wörterbuch wird dir da schon helfen können.
  • Projekte

    Bild

    Vollversion:
    Fortschritt: 50%

5

Dienstag, 30. Juni 2009, 14:33

das wichtigste sind diese zeilen->

Ruby Quellcode

1
2
3
# Calculate basic damage
  atk = [attacker.atk - self.pdef / 2, 0].max
  self.damage = atk * (20 + attacker.str) / 20

zuerst wird von deinem atk wert, die halbe pdef deines feindes abgezogen.
dann wird der atk wert mit deiner (stärke+20) mal genommen und anschließend
alles nochmal durch 20 geteilt.

in zahlen heißt das
200atk - (100pdef / 2) => 150
(150atk * ( 20+100str)) / 20 => 900 dmg
dazu kommt +-1-15% des dmgs.. aber das is vernachlässigbar.

6

Dienstag, 30. Juni 2009, 15:38

stimmt schon sorata ..

Achja supaiku vielen dank .. ich habe es verstanden ...

Also bedeutet self. immer das ziel des angrefers und attacker. ist ja klar der angreifer ..

Vielen dank an alle ihr habt mir sehr geholfen !! =)

MfG Lukas
  • Signatur

    ...
  • Mein Projekt

    Fortschritt: 14%

Evrey

Oberschurke im Ruhestand

Motto: "Satzzeichen sind keine Rudeltiere." - Chesra

  • Nachricht senden

7

Dienstag, 30. Juni 2009, 15:56

*hust*
In dem Fall ja. "self" ist eigentlich das letzte Überbleibsel an Zeigern in Ruby. Tatsächlich zeigt der nur auf die momentane Klasse/das momentane Modul und dessen Attribute/Fähigkeiten.
Klingt erstmal kompliziert, ist es ohne Programmierkenntnis vielleicht auch, aber ich habe das mal hinzugefügt, damit du dir nichts Falsches anlernst ;)
  • :medal: Werbung

    Bild

    Cpp Quellcode

    1
    
    #define TRUE FALSE //Happy debugging suckers
    (Einfach nur wundervoll.)
  • :palette: 1plus3 :cake:

    Bild
  • :fires: Nuuuhminaaah

    Bild
  • :medal: compétences

    mes compétences
    :heart_full: :heart_full: :heart_full: :heart_full: :heart_full: max.
    :ruler-triangle: Maps machen :heart_full: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :media-player: Musik machen :heart_full: :heart-half: :heart-empty: :heart-empty: :heart-empty:
    :cup: Scripts machen :heart_full: :heart_full: :heart_full: :heart_full: :heart-break:
    :paper: Story ausdenken :heart_full: :heart_full: :heart_full: :heart-empty: :heart-empty:
    :cut: Pixeln und so :heart-empty: :heart-empty: :heart-empty: :heart-empty: :heart-empty:
    :game: Events proggen :heart_full: :heart_full: :heart_full: :heart_full: :heart_full:
    (Dieser Tab ist rein satirisch.)
  • :folder-open: mes projets

    • :addressbook: Silentium
      :book: Name: Silentium
      :rmxp: Maker: Eigenbau (C++, x86-SSE/AVX-Assembly, Ruby/Lua)

      :paper: Story
      :game: NPCs
      :cup: Scripts
      :drill: Ressis
      :ruler-triangle: Maps
      :compile: Gesamt
      (3+4)% 42 69% 0815 -17.438 103.38% ± 6.3mm²

      (Die Tabelle erfüllt lediglich satirische Zwecke.)
    • :compile: Onyx
      Eine in C++ implementierte, modulare, plattformunabhängige, virtuelle Maschine. Die Test-Version ist bereits halb fertig. Ab dann gibt es vielleicht mehr Infos. Sie soll die auf dem ersten Blick LISP-artige und eigens dafür konstruierte Sprache Obsidian ausführen können. Experimentell wird auch ein Lua-Compiler für Onyx gebaut. Ziel ist eine leistungsfähige, virtuelle Maschine für beliebige Scriptsprachen. Theoretisch gesehen müsste man bloß noch einen kompatiblen Compiler schreiben, der Quellcode jener Sprache in Onyx-Assembly, oder direkt in Onyx-Bytecode übersetzt. Ob die jemand nutzen wird, ist eine andere Frage und nur ein sekundäres... nein, eher tertiäres Ziel dieser VM. Primär dient es mir lediglich dazu, mein Verständnis von Hardware, ISA, und Assembly zu vertiefen, sowie eigene Grenzen auszutesten.

      :exclamation: Warnung!
      Das Entwickeln einer virtuellen Maschine oder Programmiersprache (im wahnsinnigsten Fall beides) ist eine höchst komplizierte Tätigkeit, aus der viel Frust und Hirnmatsche hervor gehen. Sollte sich dennoch ein ähnlich wahnsinniger finden, der sowas zusammen schustern will, so lege ich ihm/ihr die folgenden Bücher ans Herz:
      • Compiler - Das Drachenbuch [978-3-8273-7097-6]
        Dieses Buch schlachtet ausführlich und leicht verständlich die Grundlagen bis hoch zu den Experten-Techniken des Compilerbaus aus. Es fängt mit der Automaten-Theorie und formalen Sprachen an, arbeitet sich durch Analysetechniken vor, und landet schließlich bei Techniken wie Optimierung und Register-Zuweisung. Das Buch wiegt 3Kg oder 4Kg. Hab's mal gewogen. Ist also nicht gerade die Lektüre für unterwegs.

      • Computerarchitektur [3-8273-7016-7]
        Hier werden leicht verständlich die wichtigsten Entwicklungen der Rechnerarchitekturen erklärt (Gut, das Buch ist in die Jahre gekommen, aber der Weg zu heute ist ein winziger Schritt, den man sich nach diesem Buch selbst erdenken kann). Hauptbestandteil des Buchs ist eine relativ umfassende Betrachtung der Funktionsweise dreier gänzlich unterschiedlicher, aber dominierender Prozessor-Typen am Beispiel des Pentium II, UltraSPARC II, sowie picoJava. Die meisten Elemente dieses Buchs sind zwar für die Konstruktion einer virtuellen Maschine irrelevant, oder aufgrund der Tatsache, dass die VM Software ist und z.B. Byte-Grenzen hat, sogar zu Leistungseinbußen führen kann, doch ist ein hinreichendes Verständnis dieser Maschinen, mit denen wir arbeiten, äußerst hilfreich für die Überlegungen, wie die VM arbeiten soll.

      Es kann sehr hilfreich und inspirierend sein, den Code quelloffener, virtueller Maschinen anderer Sprachen zu überfliegen. Meine Lieblings-Quelle war und ist stets die VM von Lua. Sie ist schlank, verständlich, in C implementiert, und basiert im Gegensatz zu vielen anderen Scriptsprachen-VMs auf einer Register-Maschine statt einer Stapelmaschine. Es wäre natürlich vorteilhaft, die entsprechende Sprache zu verstehen, in der man auch die eigene VM implementieren will. Weiterhin ist es äußerst vorteilhaft, eine leistungsstarke und bequeme Sprache wie C++ zu beherrschen, um die VM zu implementieren. Und bevor irgendwer auf die Idee kommt: Assembly ist NICHT als dominierende Sprache für den Bau einer VM geeignet. Wer die Frage des "Warum?" nicht beantworten kann, sollte zunächst die gewählte Sprache und Assembly hinreichend verstehen lernen, und es dann erneut mit der Frage versuchen. Es lohnt sich dennoch, Assembly zu lernen. Allein schon, um erneut das Verständnis zu vertiefen, zumal ihr mehr oder weniger gezwungen seid, auch für eure VM eine Assembler-Sprache zu entwickeln (Außer natürlich ihr schreibt eure Test-Programme Bit für Bit ;3).
  • :locale: enfin

    Je ne peux pas parler français.
    C'est tout ce que Goodle et les restes de cours de français.
Signaturstand: 24.07.2013

8

Dienstag, 30. Juni 2009, 17:38

ok Danke für die Info

Und danke nochmal an alle =)

MfG Lukas
  • Signatur

    ...
  • Mein Projekt

    Fortschritt: 14%

Social Bookmarks