• Anmelden

1

Dienstag, 1. Mai 2007, 13:19

Shooter System problem

Sers,

Ich hab ein paar probs mit dem Shooter Script von Monsta. Für alle die den Link nimmer finden.. hier isser:
http://www.rmxp.de/forum/thread.php?thre…htuser=0&page=1

Erstma vornweg:

- Ich hab Munition, Restmunition, Ammopacks ( zum aufhaben ) und die Anzeige dazu eingebaut ( weile s wirklich gefehlt hat ). Man kann auch nachladen ( falls Amoo vorhanden oder Waffe nicht voll )


Zu meinem problem:
Ich will das man nicht durch mehrere Gegner auf einmal durchballern kann ( Etwas egoistisch der Monsta.. Ihm gefällts zwar das man des kann.. aber andren vielleicht ned XD ).

Bzw.:
Wenn das Event "Gegner" heißt, soll NUR das eine Event beschossen werden können ( ohne durchflug )
Wenn das Event "GegnerX" heißt, soll man durch es durch noch andere Treffen können ( wäre gut für Schleimviecher )


Zudem wäre endlich ma eine Terrainabfrage wichtig.. Also das man das terrain unter den Kugelkoordinaten abfrägt, und das dann bsp. Terrain "7" ein Hinderniss iss... Sonst bräuchte man für jede blöde Wand ein Event.


Wer mir da helfen kann.. nur raus mit der Sprache ^^ und schonmal thx im Vorraus.
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chaosgod Espér« (1. Mai 2007, 13:26)


2

Donnerstag, 3. Mai 2007, 20:04

Also das mit den verschiedenen Gegnern ist garnichtmal so schwer,
das hab ich sogar hingekriegt ^^

zuerst musst du das hier (ab Zeile 43) im Skript "Schuss" :

Quellcode

1
2
3
4
5
6
7
8
9
    for @event in 1..$game_map.map.events.size
     @event_name = $game_map.map.events[get_character(@event).id].name
      if @event_name == "Hindernis"
         @character = get_character(@event)
         $game_variables[1100 + @hindernisse]  = @character.x
         $game_variables[1200 + @hindernisse]  = @character.y
         @hindernisse += 1
     end
    end

mit diesem ersetzen :

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for @event in 1..$game_map.map.events.size
     @event_name = $game_map.map.events[get_character(@event).id].name
      if @event_name == "Hindernis"
         @character = get_character(@event)
         $game_variables[1100 + @hindernisse]  = @character.x
         $game_variables[1200 + @hindernisse]  = @character.y
         @hindernisse += 1
       elsif @event_name == "Gegner"
        if $game_self_switches[[$game_map.map_id, @event, "A"]] == false
            @character = get_character(@event)
             $game_variables[1100 + @hindernisse]  = @character.x
             $game_variables[1200 + @hindernisse]  = @character.y
            @hindernisse += 1
         end
     end
end

(du könntest nach "Hindernis" auch einfach
or @event_name == "Gegner"
schreiben, dann könntest du aber auch nicht durch die Leiche schießen)

danach ersetzt du noch das in Zeile 55

Quellcode

1
    if @event_name == "Gegner"        

durch

Quellcode

1
      if @event_name == "Gegner" or @event_name == "GegnerX"


An den terrain_tag hindernissen arbeite ich noch,
wird aber schwierig weil in dem skript gar keine kugel
berechnet wird, sondern ob alles auf einer linie liegt
und ob was dazwischen is...

(das terrain von bestimmten koordinaten lässt sich sonst einfach mit :
$variable = $game_map.terrain_tag(X, Y)
abfragen, die variable hat dann die nummer des terrain_tags...)

aber wie gesagt, ich werds trotzdem weiterversuchen ^^

edit :: mist, das hat nen fehler!
man kann jetzt auch hindernisse treffen >.<
Behoben!

2.Problem auch gelöst :

Ersetz einfach die Komplette Trefferabfrage

(von
#===Treffer Abfrage Start===#
bis
#===Treffer Abfrage Ende===#)

mit dieser version :

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
       #===Treffer Abfrage Start===#
      if @hero_d == 2 # Nach Unten Schauen
        if @hero_x == @enemy_x
          if @hero_y < @enemy_y
 
#:::Bullet_Position_Check ::: Start
            $blocker        = false
             @Count_X    = @hero_x
             @Count_Y    = @hero_y 
             @actual_pos = @Count_Y
             @Ziel           = @enemy_y
             while @actual_pos < @Ziel
               @actual_pos += 1
                @terrain_tagg = $game_map.terrain_tag(@Count_X, @actual_pos)
                if @terrain_tagg == 7
                  $blocker = true
                end
              end
#:::Bullet_Position_Check ::: End
          if $blocker == false #Zusatz-Bedingung
            if  @hindernisse != 0
             for @hinderniss in 0...@hindernisse
              if $game_variables[1100 + @hinderniss] == @hero_x
               if  $game_variables[1200 + @hinderniss] < @enemy_y
                 if  $game_variables[1200 + @hinderniss] > @hero_y
                 break
                end
               end
              end
             getroffen if @hinderniss == @hindernisse - 1
            end
           end
          getroffen if @hindernisse == 0
         end
       end
     end
    end  #Zusatz-End
      if @hero_d == 4 # Nach Links Schauen
        if @hero_y == @enemy_y
          if @hero_x > @enemy_x
#:::Bullet_Position_Check ::: Start
            $blocker        = false
             @Count_X    = @hero_x
             @Count_Y    = @hero_y 
             @actual_pos = @Count_X
             @Ziel           = @enemy_x
             while @actual_pos > @Ziel
               @actual_pos -= 1
                @terrain_tagg = $game_map.terrain_tag(@actual_pos, @Count_Y)
                if @terrain_tagg == 7
                  $blocker = true
                end
              end
#:::Bullet_Position_Check ::: End
          if $blocker == false #Zusatz-Bedingung
            if  @hindernisse != 0
             for @hinderniss in 0...@hindernisse
              if $game_variables[1200 + @hinderniss] == @hero_y
               if  $game_variables[1100 + @hinderniss] > @enemy_x
                 if  $game_variables[1100 + @hinderniss] < @hero_x
                 break
                end
               end
              end
             getroffen if @hinderniss == @hindernisse - 1
            end
           end
          getroffen if @hindernisse == 0
        end
      end
    end
  end
      if @hero_d == 6 # Nach Rechts Schauen
        if @hero_y == @enemy_y
          if @hero_x < @enemy_x
#:::Bullet_Position_Check ::: Start
            $blocker        = false
             @Count_X    = @hero_x
             @Count_Y    = @hero_y 
             @actual_pos = @Count_X
             @Ziel           = @enemy_x
             while @actual_pos < @Ziel
               @actual_pos += 1
                @terrain_tagg = $game_map.terrain_tag(@actual_pos, @Count_Y)
                if @terrain_tagg == 7
                  $blocker = true
                end
              end
#:::Bullet_Position_Check ::: End
          if $blocker == false #Zusatz-Bedingung
            if  @hindernisse != 0
             for @hinderniss in 0...@hindernisse
              if $game_variables[1200 + @hinderniss] == @hero_y
               if  $game_variables[1100 + @hinderniss] < @enemy_x
                 if  $game_variables[1100 + @hinderniss] > @hero_x
                 break
                end
               end
              end
             getroffen if @hinderniss == @hindernisse - 1
            end
           end
          getroffen if @hindernisse == 0
        end
      end
    end
    end
      if @hero_d == 8 # Nach Oben Schauen
        if @hero_x == @enemy_x
          if @hero_y > @enemy_y
#:::Bullet_Position_Check ::: Start
            $blocker        = false
             @Count_X    = @hero_x
             @Count_Y    = @hero_y 
             @actual_pos = @Count_Y
             @Ziel           = @enemy_y
             while @actual_pos > @Ziel
               @actual_pos -= 1
                @terrain_tagg = $game_map.terrain_tag(@Count_X, @actual_pos)
                if @terrain_tagg == 7
                  $blocker = true
                end
              end
#:::Bullet_Position_Check ::: End
if $blocker == false #Zusatz-Bedingung
            if  @hindernisse != 0
             for @hinderniss in 0...@hindernisse
              if $game_variables[1100 + @hinderniss] == @hero_x
               if  $game_variables[1200 + @hinderniss] > @enemy_y
                 if  $game_variables[1200 + @hinderniss] < @hero_y
                 break
                end
               end
              end
             getroffen if @hinderniss == @hindernisse - 1
            end
           end
          getroffen if @hindernisse == 0
        end
      end
    end 
    end
   #===Treffer Abfrage Ende===#

also das hindernis terrain_tag is jetz das 7.
ich hoff dass das nich zu verbuggt is o.O

hoffe dass ich dir helfen konnte ^^

mfg, Nökö
PLEASE DON'T CLIP MY WINGS.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »neko« (3. Mai 2007, 21:00)


3

Donnerstag, 3. Mai 2007, 21:25

Yeah, das isses.. thx....

Wenn ich des Ding fertig habe, werd ich alles zusammen als Edit von Monsta seinem posten ( also mit Munition, Ammo, komplettem HUD..etc )


thx,thx,thx nochma *kann geclosed werden*
There was a Cave,
below a Silent's Grave.
Tunnels, extending far, running wide,
going deep into the World on the other Side.
Poor little Child, that was to brave,
died painfully deep down, in the Devil's Cave.

Social Bookmarks