Citadin Lv.7
Age : 35 Inscrit le : 18/07/2008 Messages : 203
| Sujet: IA (Intelligence Artificielle) Jeu 7 Aoû 2008 - 18:42 | |
| Bonjour, moi je cherche un système D'IA (Intelligence artificielle)
Au cas ou toujours personne ne sais ce que sait, je m'explique.
Disont qu'arriver super loin dans le jeu tu doit revenir à la première ville, hors les monstres sont très très nul à la premiere ville. De là le besoin de L'IA qui fera en sorte que les monstre monterons de niveau et qu'il ne seront pas nul lorsque tu reviendra à la premiere ville.
J'espère que je ne vous ai pas perdu avec mes explication ^^ |
|
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: IA (Intelligence Artificielle) Jeu 7 Aoû 2008 - 19:33 | |
| Ce n'est pas vraiment de l'IA (crois en mon expérience, c'est là dedans que j'étudie). Il me semble qu'en plus, il y a déjà quelque chose par rapport à ça sur le forum. |
|
Citadin Lv.7
Age : 35 Inscrit le : 18/07/2008 Messages : 203
| Sujet: Re: IA (Intelligence Artificielle) Jeu 7 Aoû 2008 - 19:37 | |
| |
|
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
| Sujet: Re: IA (Intelligence Artificielle) Jeu 7 Aoû 2008 - 19:43 | |
| Ouais, bon. L'intelligence artificielle est usurpé par des scripteurs qui ne savent pas trop ce qu'est l'intelligence artificiel. L'intelligence artificiel, ce sont des réseaux de neuronne, de la logique flou, des algorithme génétique, de la LPO. Il n'y a rien de ça dans VX . Mais ce n'est pas grave. C'est une erreur courrante. Le bon terme, tu pourras lui dire, c'est "système adaptatif". |
|
Citadin Lv.7
Age : 35 Inscrit le : 18/07/2008 Messages : 203
| Sujet: Re: IA (Intelligence Artificielle) Jeu 7 Aoû 2008 - 20:15 | |
| D'accord ^^ Dernière question. Justement mon scripteur m'a fourni un IA pour XP (car je cherche en même temps pour mon chum, car pour l'instant il n'a pas internet) et il m'a fourni celà. Je vous le met ici. - Citation :
ATTENTION : ce scrïpt implique de revoir TOUS les monstres que vous avez déjà créé pour votre jeu, car les valeurs de HP, SP, etc. ne sont pas des valeurs réelle, mais des vecteurs d'adaptation.
Voilà les choses qui changeront : dans la création d'un monstre vous aviez : PV max PM max* Force Defence* Agilité * Intelligence* Attaque Def physique Def magique Esquive *
Les données qui ont un * devant restent inchangées, vous choisissez ce que vous voulez, elles resteront stables tout au long au jeu.
Maintenant voilà ce que deviennent les autres valeurs :
PV max : c'est le pourcentage de la somme des PV max de l'équipe.
Je m'explique : vous avez 2 héros de PV maximums 450 et 500. La somme est 950. Si vous mettez 10 dans les champ "PV max" du monstre" ça donnera : 950*10/100 (10% de la somme) = 95
Rien de vous empèche de mettre des grands nombres comme 200% pour un boss, mais je vous préviens : 80% cest déjà du gros monstre dure à battre !
Force : cette fois c'est le pourcentage de la moyenne des forces de l'équipe. Exemple : 2 héros de forces 30 et 50. Moyenne : 40 Vous placez par exemple 50 dans le champ "Force" du monstre, vous obtenez 40*50/100 = 20
L'attaque, la défence physique et la défence magique fonctionnent sur le même principe que la force, avec une moyenne des données de l'équipe, et non pas une somme comme pour les PVmax.
Maintenant voici le scrïpt, il fonctionne théoriquement avec tous les scrïpts de combat vu qu'il ne touche qu'à Game_Enemy.
Donc remplacez le scrïpt Game_Enemy par celui ci :
- Spoiler:
#============================================================================== # ¦ Game_Enemy #------------------------------------------------------------------------------ # scrïpt créé par SunMat, les monstres s'adaptent aux données du héro # #==============================================================================
class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # fonction d'initialisation #-------------------------------------------------------------------------- def initialize(troop_id, member_index) super() @troop_id = troop_id @member_index = member_index troop = $data_troops[@troop_id] @enemy_id = troop.members[@member_index].enemy_id enemy = $data_enemies[@enemy_id] @battler_name = enemy.battler_name @battler_hue = enemy.battler_hue @hp = maxhp @sp = maxsp @hidden = troop.members[@member_index].hidden @immortal = troop.members[@member_index].immortal end #-------------------------------------------------------------------------- # ID #-------------------------------------------------------------------------- def id return @enemy_id end #-------------------------------------------------------------------------- # Index #-------------------------------------------------------------------------- def index return @member_index end #-------------------------------------------------------------------------- # Nom du monstre #-------------------------------------------------------------------------- def name return $data_enemies[@enemy_id].name end #-------------------------------------------------------------------------- # Max Hp = somme des maxHp des héros dans l'équipe # multiplié par le pourcentage défini #-------------------------------------------------------------------------- def base_maxhp hp = $game_actors[1].maxhp if $game_actors[2].hp != 0 hp += $game_actors[2].maxhp end if $game_actors[3].hp != 0 hp += $game_actors[3].maxhp end if $game_actors[4].hp != 0 hp += $game_actors[4].maxhp end hp *= $data_enemies[@enemy_id].maxhp hp /= 100 return hp end #-------------------------------------------------------------------------- # Max Sp définis dans l'absolue #-------------------------------------------------------------------------- def base_maxsp return $data_enemies[@enemy_id].maxsp end #-------------------------------------------------------------------------- # Force en fonction du pourcentage de la somme de la force de l'équipe #-------------------------------------------------------------------------- def base_str a = 1 frc = $game_actors[1].str if $game_actors[2].hp != 0 frc += $game_actors[2].str a +=1 end if $game_actors[3].hp != 0 frc += $game_actors[3].str a += 1 end if $game_actors[4].hp != 0 frc += $game_actors[4].str a += 1 end frc *= $data_enemies[@enemy_id].str frc /= (100*a) return frc end #-------------------------------------------------------------------------- # dextérité définie dans l'absolue #-------------------------------------------------------------------------- def base_dex return $data_enemies[@enemy_id].dex end #-------------------------------------------------------------------------- # agilité définie dans l'absolue #-------------------------------------------------------------------------- def base_agi return $data_enemies[@enemy_id].agi end #-------------------------------------------------------------------------- # intelligence définie dans l'absolue #-------------------------------------------------------------------------- def base_int return $data_enemies[@enemy_id].int end #-------------------------------------------------------------------------- # attaque définie en fonction de l'attaque de l'équipe et du pourcentage #-------------------------------------------------------------------------- def base_atk at = $game_actors[1].atk a = 1 if $game_actors[2].hp != 0 at += $game_actors[2].atk a += 1 end if $game_actors[3].hp != 0 at += $game_actors[3].atk a += 1 end if $game_actors[4].hp != 0 a += 1 at += $game_actors[4].atk end at *= $data_enemies[@enemy_id].atk at /= (100*a ) return at end #-------------------------------------------------------------------------- # défence définie en fonction du pourcentage moyen de la défence de l'équipe #-------------------------------------------------------------------------- def base_pdef df = $game_actors[1].pdef a = 1 if $game_actors[2].hp != 0 df += $game_actors[2].pdef a += 1 end if $game_actors[3].hp != 0 df += $game_actors[3].pdef a += 1 end if $game_actors[4].hp != 0 df += $game_actors[4].pdef a += 1 end df *= $data_enemies[@enemy_id].pdef df /= (100*a) return df end #-------------------------------------------------------------------------- # défence magique en fonction de la défence de l'équipe #-------------------------------------------------------------------------- def base_mdef mdf = $game_actors[1].mdef a = 1 if $game_actors[2].hp != 0 mdf += $game_actors[2].mdef a += 1 end if $game_actors[3].hp != 0 mdf += $game_actors[3].mdef a += 1 end if $game_actors[4].hp != 0 mdf += $game_actors[4].mdef a += 1 end mdf *= $data_enemies[@enemy_id].mdef mdf /= (100*a) return mdf end #-------------------------------------------------------------------------- # evasion non changée #-------------------------------------------------------------------------- def base_eva return $data_enemies[@enemy_id].eva end #-------------------------------------------------------------------------- #animation non changée #-------------------------------------------------------------------------- def animation1_id return $data_enemies[@enemy_id].animation1_id end #-------------------------------------------------------------------------- # animation non changée #-------------------------------------------------------------------------- def animation2_id return $data_enemies[@enemy_id].animation2_id end #-------------------------------------------------------------------------- # element_rate non changé #-------------------------------------------------------------------------- def element_rate(element_id) # ??????????????? table = [0,200,150,100,50,0,-100] result = table[$data_enemies[@enemy_id].element_ranks[element_id]] # ?????????????????????? for i in @states if $data_states[i].guard_element_set.include?(element_id) result /= 2 end end # ?????? return result end #-------------------------------------------------------------------------- # state_rank non changé #-------------------------------------------------------------------------- def state_ranks return $data_enemies[@enemy_id].state_ranks end #-------------------------------------------------------------------------- #state_guard non changé #-------------------------------------------------------------------------- def state_guard?(state_id) return false end #-------------------------------------------------------------------------- # element_set non changé #-------------------------------------------------------------------------- def element_set return [] end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def plus_state_set return [] end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def minus_state_set return [] end #-------------------------------------------------------------------------- # action non changé #-------------------------------------------------------------------------- def actions return $data_enemies[@enemy_id].actions end #-------------------------------------------------------------------------- # expérience donnée par une formule modifiable au gré du Maker # ici la formule est le produit de l'exp du monstre par le niveau du joueur 1 #-------------------------------------------------------------------------- def exp expe = $game_actors[1].level * $data_enemies[@enemy_id].exp return expe end #-------------------------------------------------------------------------- # ? ??????? #-------------------------------------------------------------------------- def gold return $data_enemies[@enemy_id].gold end #-------------------------------------------------------------------------- # ? ???? ID ??? #-------------------------------------------------------------------------- def item_id return $data_enemies[@enemy_id].item_id end #-------------------------------------------------------------------------- # ? ?? ID ??? #-------------------------------------------------------------------------- def weapon_id return $data_enemies[@enemy_id].weapon_id end #-------------------------------------------------------------------------- # ? ?? ID ??? #-------------------------------------------------------------------------- def armor_id return $data_enemies[@enemy_id].armor_id end #-------------------------------------------------------------------------- # ? ??????????? #-------------------------------------------------------------------------- def treasure_prob return $data_enemies[@enemy_id].treasure_prob end #-------------------------------------------------------------------------- # ? ????? X ????? #-------------------------------------------------------------------------- def screen_x return $data_troops[@troop_id].members[@member_index].x end #-------------------------------------------------------------------------- # ? ????? Y ????? #-------------------------------------------------------------------------- def screen_y return $data_troops[@troop_id].members[@member_index].y end #-------------------------------------------------------------------------- # ? ????? Z ????? #-------------------------------------------------------------------------- def screen_z return screen_y end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def escape # ??????????? @hidden = true # ????????????? self.current_action.clear end #-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- def transform(enemy_id) # ???? ID ??? @enemy_id = enemy_id # ???? ????????? @battler_name = $data_enemies[@enemy_id].battler_name @battler_hue = $data_enemies[@enemy_id].battler_hue # ???????? make_action end
Dernière édition par Bella Angel le Jeu 7 Aoû 2008 - 21:33, édité 1 fois |
|
Citadin Lv.7
Age : 35 Inscrit le : 18/07/2008 Messages : 203
| Sujet: Re: IA (Intelligence Artificielle) Jeu 7 Aoû 2008 - 21:33 | |
| - Citation :
- Spoiler:
#-------------------------------------------------------------------------- # #-------------------------------------------------------------------------- #scrïpt amélioré par RPG Advocate
def make_action self.current_action.clear unless self.movable? return end available_actions = [] rating_max = 0 for action in self.actions n = $game_temp.battle_turn a = action.condition_turn_a b = action.condition_turn_b if (b == 0 and n != a) or (b > 0 and (n < 1 or n < a or n % b != a % b)) next end if self.hp * 100.0 / self.maxhp > action.condition_hp next end if $game_party.max_level < action.condition_level next end switch_id = action.condition_switch_id if switch_id > 0 and $game_switches[switch_id] == false next end if exclude_pointless_actions(action) next end available_actions.push(action) if action.rating > rating_max rating_max = action.rating end end ratings_total = 0 for action in available_actions ratings_total += action.rating end if ratings_total > 0 choose_action = [] for action in available_actions for j in 1..action.rating choose_action.push(action) end end enemy_action = choose_action[rand(choose_action.size - 1)] self.current_action.kind = enemy_action.kind self.current_action.basic = enemy_action.basic self.current_action.skill_id = enemy_action.skill_id self.current_action.decide_random_target_for_enemy end end # -------------------------------- def exclude_pointless_actions(action) if action.kind == 0 return false end if action.kind == 1 s = action.skill_id if self.sp < $data_skills[s].sp_cost return true end if $data_skills[s].common_event_id > 0 return false end if $data_skills[s].scope == 0 || $data_skills[s].scope == 1 || $data_skills[s].scope == 2 return false end if $data_skills[s].scope == 3 || $data_skills[s].scope == 4 if $game_troop != nil fullhpflag = true statusflag = true for i in $game_troop.enemies if i.hp < i.maxhp && i.exist? fullhpflag = false end for j in $data_skills[s].plus_state_set if not i.state?(j) && i.exist? statusflag = false end end for j in $data_skills[s].minus_state_set if i.state?(j) && i.exist? statusflag = false end end end end if $data_skills[s].power == 0 && statusflag return true end if $data_skills[s].power < 0 && statusflag && fullhpflag return true end end if $data_skills[s].scope == 5 || $data_skills[s].scope == 6 nonedeadflag = true if $game_troop != nil for i in $game_troop.enemies if i.dead? and not i.hidden nonedeadflag = false end end end if nonedeadflag return true end end if $data_skills[s].scope == 7 if $game_troop != nil fullhpflag = true statusflag = true if self.hp < self.maxhp fullhpflag = false end for j in $data_skills[s].plus_state_set if not self.state?(j) statusflag = false end end for j in $data_skills[s].minus_state_set if self.state?(j) statusflag = false end end end if $data_skills[s].power == 0 && statusflag return true end if $data_skills[s].power < 0 && statusflag && fullhpflag return true end end end return false end end
Précision : pour l'expérience donnée par le monstre, elle est égale au produit de l'expérience que vous avez inscrit dans le champs "expérience" du monstre, et du niveau du héro n°1 (uniquement). Mais cette relation est modifiables, si elle ne vous plait pas demandez moi je vous la modifierai. Exemple : un héro de level 34 combat un monstre censé donne 10 en exp, ça donne un total de 10*34 = 340 pts d'expérience.
Ne mettez donc pas de trop grand nombre, de toute façon, puisqu'il s'adapte : au niveau 1 : le héro tue le monstre et gagne 10 pts au niveau 34 : le héro tu le monstre et gagne 340 pts ça parait normal, puisque plus le niveau monte, plus il faut de points pour passer au suivant. Désolé pour le double post, mais c'est pour la suite du script. |
|
| Sujet: Re: IA (Intelligence Artificielle) | |
| |
|