BlackDragon Geplaatst: 9 december 2009 Rapport Geplaatst: 9 december 2009 Hallo hallo, Ik ben weer es begonnen met het maken van een scriptpje voor gta2 voor in mijn eigen level. Ik ben echter op een probleempje gestuit met het "KILL_CHAR_ANY_MEANS".. Wanneer ik dit gebruik: SET_CHAR_THREAT_SEARCH ( guardstage01 , LINE_OF_SIGHT ) SET_CHAR_THREAT_REACTION ( guardstage01 , REACT_AS_NORMAL ) GIVE_WEAPON ( guardstage01, machine_gun , 50 ) SET_CHAR_TO_USE_CAR_WEAPON ( guardstage01 , ON ) IF ( HAS_CHAR_SPOTTED_PLAYER ( guardstage01 ) ) set guardstage01_spotted = 1 ENDIF IF ( guardstage01_spotted = 1 ) SET_CHAR_OBJECTIVE ( guardstage01 , KILL_CHAR_ANY_MEANS , shaft ) endif dan komt hij mij enigsinds achterna, maar als ik uit beeld ben, rent hij terug naar zijn start plaats. Dit doet ie ook als ik "LINE_OF_SIGHT" verander in "area" of iets dergelijks. - Wanneer ik dit gebruik, komt hij wel in een auto achter me aan, maar dan ook DIRECT en wacht dus niet tot ie mij gezien heeft of iets dergelijks. Dus als ik het level start, komt die direct achter me aan in een jagular xk... SET_CHAR_THREAT_SEARCH ( guardstage01 , LINE_OF_SIGHT ) SET_CHAR_THREAT_REACTION ( guardstage01 , REACT_AS_NORMAL ) SET_CHAR_OBJECTIVE ( guardstage01 , KILL_CHAR_ANY_MEANS , shaft ) GIVE_WEAPON ( guardstage01, machine_gun , 50 ) SET_CHAR_TO_USE_CAR_WEAPON ( guardstage01 , ON ) wie o wie kan mij helpen =) Reageren
Lantyz Geplaatst: 10 december 2009 Rapport Geplaatst: 10 december 2009 Uit je bericht maak ik op dat je een bot wil hebben die op een vast punt wacht totdat hij de speler ziet, en vanaf dat moment de speler te voet aanvalt totdat hij of de speler dood is. KILL_CHAR_ANY_MEANS is hier geen bruikbaar commando voor, aangezien de bot dan een voertuig zal gebruiken als je buiten zijn gezichtsveld bent (een Benson ipv een Jagular XK, overigens, tenzij je zelf een ander voertuig instelt). KILL_CHAR_ON_FOOT zorgt ervoor dat de bot altijd naar je toe loopt om je aan te vallen. Dat de bot weer naar zijn spawnplek terugloopt is een eigenschap van de char occupation "GUARD"; ik vermoed dat je deze occupation hebt gebruikt voor je bot. Door de THREAT_SEARCH LINE_OF_SIGHT en de THREAT_REACTION REACT_AS_NORMAL geef je de bot de opdracht zich naar zijn standaard AI te gedragen, wat in dit geval betekent dat hij iedere bedreiging moet aanvallen zolang hij deze kan zien en vervolgens terug te keren naar het punt dat hij moet bewaken. Om dit op te lossen kun je beter de THREAT_SEARCH NO_THREATS en THREAT_REACTION NO_REACTION gebruiken zodat de bot zich alleen met zijn OBJECTIVE bezig kan houden. Geef hem de occupation CRIMINAL. Als hij al rond begint te lopen voordat hij je gezien heeft kun je hem de OBJECTIVE WAIT_ON_FOOT geven en deze later naar KILL_CHAR_ON_FOOT wijzigen met HAS_CHAR_SPOTTED_PLAYER. Reageren
BlackDragon Geplaatst: 10 december 2009 Auteur Rapport Geplaatst: 10 december 2009 (bewerkt) Uit je bericht maak ik op dat je een bot wil hebben die op een vast punt wacht totdat hij de speler ziet, en vanaf dat moment de speler te voet aanvalt totdat hij of de speler dood is. KILL_CHAR_ANY_MEANS is hier geen bruikbaar commando voor, aangezien de bot dan een voertuig zal gebruiken als je buiten zijn gezichtsveld bent (een Benson ipv een Jagular XK, overigens, tenzij je zelf een ander voertuig instelt). KILL_CHAR_ON_FOOT zorgt ervoor dat de bot altijd naar je toe loopt om je aan te vallen. Dat de bot weer naar zijn spawnplek terugloopt is een eigenschap van de char occupation "GUARD"; ik vermoed dat je deze occupation hebt gebruikt voor je bot. Door de THREAT_SEARCH LINE_OF_SIGHT en de THREAT_REACTION REACT_AS_NORMAL geef je de bot de opdracht zich naar zijn standaard AI te gedragen, wat in dit geval betekent dat hij iedere bedreiging moet aanvallen zolang hij deze kan zien en vervolgens terug te keren naar het punt dat hij moet bewaken. Om dit op te lossen kun je beter de THREAT_SEARCH NO_THREATS en THREAT_REACTION NO_REACTION gebruiken zodat de bot zich alleen met zijn OBJECTIVE bezig kan houden. Geef hem de occupation CRIMINAL. Als hij al rond begint te lopen voordat hij je gezien heeft kun je hem de OBJECTIVE WAIT_ON_FOOT geven en deze later naar KILL_CHAR_ON_FOOT wijzigen met HAS_CHAR_SPOTTED_PLAYER. het was de bedoeling om hem mij achterna te laten komen met auto als ik zou vluchten, dat is juist wat ik zo raar vond, maar ik had inderdaad "GUARD_AGAINST_PLAYER" maar dat ga ik dan nu uitproberen ^^ EDIT: Nah, ik heb van alles uitgeprobeerd, maar hij weigert nu uberhaubt iets te doen met jou opties :O ik heb debot nu als CRIMINAL, en dan threat search en threat reaction op jou optie gezet, maar doet niets.. ik ga nu proberen wat gebeurd als ik daar wait_on_foot van maak... Bewerkt: 10 december 2009 door BlackDragon Reageren
Lantyz Geplaatst: 10 december 2009 Rapport Geplaatst: 10 december 2009 Dan kan je inderdaad KILL_CHAR_ANY_MEANS gebruiken, maar houd er rekening mee dat dit commando bedoeld is voor het vinden en achtervolgen over lange afstanden waarbij de bot altijd snel bij een weg kan komen. Wat voor situatie wil je eigenlijk maken? Reageren
BlackDragon Geplaatst: 10 december 2009 Auteur Rapport Geplaatst: 10 december 2009 (bewerkt) Dan kan je inderdaad KILL_CHAR_ANY_MEANS gebruiken, maar houd er rekening mee dat dit commando bedoeld is voor het vinden en achtervolgen over lange afstanden waarbij de bot altijd snel bij een weg kan komen. Wat voor situatie wil je eigenlijk maken? ik heb een klein podiumpje (met elvis mensjes ja xD) en daar kun je met de auto overheen echter staat er 1 guard (als test) die je achterna moet komen wanneer hij je ziet (die staat nu op het podium) Het moet een missie gaan worden, maar wil m eerst testen of het werkt, anders moet ik steeds de telefoon opnemen.. EDIT: ik krijg het nog steeds niet voor elkaar >< ik heb best wel wat geprobeerd... maar wat ik nu heb, is dat ie mij ziet, en kapot wilt schieten, alleen moet de search op "AREA_PLAYER_ONLY" staan, maar nu komt ie me alsnog niet achterna =( Bewerkt: 10 december 2009 door BlackDragon Reageren
Lantyz Geplaatst: 10 december 2009 Rapport Geplaatst: 10 december 2009 HAS_CHAR_SPOTTED_PLAYER blijkt een nogal kieskeurig commando: wellicht werkt het alleen in combinatie met een THREAT_SEARCH. Geeft niet, ik heb een andere oplossing. In onderstaand script wordt de OCCUPATION van de bot gewijzigd zodra hij jou ziet, waardoor hij niet meer vastzit aan zijn spawnlocatie. Ik heb dit script getest en het werkt als een trein. bot = CREATE_CHAR ( 127.5 , 128.5 , 2.0 ) 23 270 GUARD END GIVE_WEAPON ( bot , MACHINE_GUN ) SET_CHAR_THREAT_SEARCH ( bot , LINE_OF_SIGHT ) SET_CHAR_THREAT_REACTION ( bot , REACT_AS_NORMAL ) WHILE ( loop = 1 ) IF ( HAS_CHAR_SPOTTED_PLAYER ( bot ) ) SET_CHAR_OCCUPATION ( bot , CRIMINAL ) SET_CHAR_OBJECTIVE ( bot , KILL_CHAR_ANY_MEANS , player ) ENDIF ENDWHILE Reageren
BlackDragon Geplaatst: 12 december 2009 Auteur Rapport Geplaatst: 12 december 2009 oehhh harstikke mooi =D ik kan niet wachten om m morgen uit te proberen aaah, het is weer eens uitgelopen voordat ik het kon testen... ik hoop er vanmiddag eindelijk naar te kunnen kijken... Ik heb het bovenstaande gekopieerd maar ik krijg een compile error ;o ik heb de 'guardstage01' bij declarations veranderd in 'bot', maar ik krijg nu deze error: "Symbol loop has not been declared." EDIT: Ik heb de loop toegevoegd bij declarations, als "loop = 0", en ga het nu (eindelijk) testen . Er gaat ergens nog wat mis :O, ik heb geen compilation error meer Wat heb jij verder nog bij declarations staan? ;o want het ventje komt niet achter me aan, beter gezegd, hij rent zelfs weg >< Reageren
Lantyz Geplaatst: 20 december 2009 Rapport Geplaatst: 20 december 2009 Hoe ziet de rest van je script er uit? Reageren
BlackDragon Geplaatst: 21 december 2009 Auteur Rapport Geplaatst: 21 december 2009 (bewerkt) Hoe ziet de rest van je script er uit? Een beetje veel, maar ik zal het hieronder ff neerzetten // PLAYERS START POSITION PLAYER_PED shaft = ( 47.5 , 39.5 , 2.0 ) 25 0 // MAP ZONES MAP_ZONE aGANG = ( 100 , 15, 30 , 1 , 100 , 20 , 10 , 1, 50 , 1 , 40 ) MAP_ZONE zone2 = ( 1000 , 150, 300 , 10 , 1000 , 200 , 100 , 10, 500 , 10 , 400 ) // PARKEERPLAATS CHARACTERS CHAR_DATA guard01 = ( 51.5 , 33.0 , 2.0 ) 0 0 POLICE CHAR_DATA guard02 = ( 56.5 , 33.0 , 2.0 ) 0 0 POLICE char_data guard03 = ( 29.9 , 42.0 , 3.0) 0 90 POLICE // PODIUM char_data bot = ( 22.5 , 85.5 , 3.0 ) 12 180 CRIMINAL char_data elvisstage01 = ( 18.0 , 86.0 , 3.0 ) 12 180 ELVIS_LEADER char_data elvisstage02 = ( 19.0 , 86.0 , 3.0 ) 12 180 ELVIS char_data elvisstage03 = ( 20.0 , 86.0 , 3.0 ) 12 180 ELVIS char_data elvisstage04 = ( 21.0 , 86.0 , 3.0 ) 12 180 ELVIS char_data elvisstage05 = ( 22.0 , 86.0 , 3.0 ) 12 180 ELVIS char_data elvisstage06 = ( 23.0 , 86.0 , 3.0 ) 12 180 ELVIS char_data elvisstage07 = ( 24.0 , 86.0 , 3.0 ) 12 180 ELVIS char_data elvisstage08 = ( 25.0 , 86.0 , 3.0 ) 12 180 ELVIS char_data elvisstage09 = ( 26.0 , 86.0 , 3.0 ) 12 180 ELVIS // PARKED CAR DATA PARKED_CAR_DATA car1 = ( 38.5 , 41.5 , 2.0 ) 9 0 T2000GT PARKED_CAR_DATA car2 = ( 39.5 , 41.5 , 2.0 ) 0 0 COPCAR PARKED_CAR_DATA car3 = ( 40.5 , 41.5 , 2.0 ) 20 0 ISETTA PARKED_CAR_DATA car4 = ( 41.5 , 41.5 , 2.0 ) 0 0 VESPA PARKED_CAR_DATA car5 = ( 42.5 , 41.5 , 2.0 ) 0 0 EDSEL PARKED_CAR_DATA car6 = ( 43.5 , 41.5 , 2.0 ) 0 0 ZCX5 PARKED_CAR_DATA car7 = ( 44.5 , 41.5 , 2.0 ) 0 0 GT24640 PARKED_CAR_DATA car8 = ( 45.5 , 41.5 , 2.0 ) 0 0 STRIPETB // ferrari / hachura //GANGS SET_GANG_INFO ( aGANG , 13 , MACHINE_GUN , FLAME_THROWER , ELECTRO_GUN , 2 , 75.5 , 51.5 , 2.0 , 1 , AMDB4 , 14 ) // yakuza SET_GANG_INFO ( bGANG , 7 , PISTOL , DUAL_PISTOL , SHOTGUN , 5 , 50.5 , 180.5 , 2.0 , 1 , STRATOSB , 13 ) // russians SET_GANG_INFO ( cGANG , 8 , PISTOL , SILENCED_MACHINE_GUN , SHOTGUN , 3 , 185.5 , 187.5 , 2.0 , 1 , VTYPE , 2 ) // zaibatsu // PARKED GANG CARS CAR_DATA PARKED_GANG1_CAR1 CAR_DATA PARKED_GANG2_CAR1 CAR_DATA PARKED_GANG3_CAR1 // OBJECTS OBJ_DATA testphone1 = ( 75.5 , 51.5 , 2.0 ) 270 PHONE OBJ_DATA testphone2 = ( 50.5 , 180.5 , 2.0 ) 0 PHONE OBJ_DATA testphone3 = ( 185.5 , 187.5 , 2.0 ) 270 PHONE OBJ_DATA roadblock01 = ( 61.5 , 29.8 , 2.0 ) 0 ROADBLOCK OBJ_DATA roadblock02 = ( 61.5 , 30.2 , 2.0 ) 0 ROADBLOCK OBJ_DATA roadblock03 = ( 65.5 , 29.8 , 2.0 ) 0 ROADBLOCK OBJ_DATA roadblock04 = ( 65.5 , 30.2 , 2.0 ) 0 ROADBLOCK OBJ_DATA tyre01 = ( 51.0 , 30.0 , 2.0 ) 0 TYRE OBJ_DATA roadblock05 = ( 29.2 , 42.0 , 3.0 ) 90 ROADBLOCK OBJ_DATA roadblock06 = ( 28.6 , 42.0 , 3.0 ) 90 ROADBLOCK OBJ_DATA roadblock07 = ( 56.5 , 11.5 , 2.0 ) 0 ROADBLOCK OBJ_DATA roadblock08 = ( 172.5 , 17.5 , 2.0 ) 0 ROADBLOCK OBJ_DATA roadblock09 = ( 175.5 , 17.5 , 2.0 ) 0 ROADBLOCK OBJ_DATA roadblock10 = ( 245.5 , 196.5 , 2.0 ) 0 ROADBLOCK // SHOPS OBJ_DATA bomb_1 = ( 17.0 , 65.5 , 2.0 ) 0 car_shop bomb_shop OBJ_DATA gun_1 = ( 17.0 , 62.5 , 2.0 ) 0 car_shop machinegun_shop OBJ_DATA paint_1 = ( 17.0 , 59.5 , 2.0 ) 0 car_shop 5 OBJ_DATA mines_1 = ( 17.0 , 56.5 , 2.0 ) 0 car_shop mines_shop OBJ_DATA oil_1 = ( 17.0 , 53.5 , 2.0 ) 0 car_shop oilslick_shop OBJ_DATA paint_2 = ( 48.5 , 33.5 , 2.0 ) 0 car_shop 2 // finish score DECLARE_FINISH_SCORE ( 5000000 ) // counters counter loop = 0 LEVELSTART // GANG CARS SET_GANG_KILL_REACTION ( aGANG , bGANG , 1 ) SET_GANG_KILL_REACTION ( bGANG , cGANG , 1 ) SET_GANG_KILL_REACTION ( cGANG , aGANG , 1 ) PARKED_GANG1_CAR1 = CREATE_GANG_CAR ( 73.5, 51.5, 2.0 ) 14 0 AMDB4 END PARKED_GANG2_CAR1 = CREATE_GANG_CAR ( 50.5 , 181.5 , 2.0 ) 19 0 STRATOSB END PARKED_GANG3_CAR1 = CREATE_GANG_CAR ( 184.5 , 186.5 , 2.0 ) 2 0 VTYPE END // SET GUARDS SET_CHAR_THREAT_SEARCH ( guard01 , LINE_OF_SIGHT_PLAYER_ONLY ) SET_CHAR_THREAT_REACTION ( guard01 , REACT_AS_NORMAL ) SET_CHAR_OBJECTIVE ( guard01 , GUARD_SPOT ) GIVE_WEAPON ( guard01, pistol , 50 ) SET_CHAR_TO_USE_CAR_WEAPON ( guard01 , ON ) SET_CHAR_THREAT_SEARCH ( guard02 , LINE_OF_SIGHT_PLAYER_ONLY ) SET_CHAR_THREAT_REACTION ( guard02 , REACT_AS_NORMAL ) SET_CHAR_OBJECTIVE ( guard02 , GUARD_SPOT ) GIVE_WEAPON ( guard02, pistol , 50 ) SET_CHAR_TO_USE_CAR_WEAPON ( guard02 , ON ) SET_CHAR_THREAT_SEARCH ( guard03 , LINE_OF_SIGHT_PLAYER_ONLY ) SET_CHAR_THREAT_REACTION ( guard03 , REACT_AS_NORMAL ) SET_CHAR_OBJECTIVE ( guard03 , GUARD_SPOT ) GIVE_WEAPON ( guard03, pistol , 50 ) SET_CHAR_TO_USE_CAR_WEAPON ( guard03 , ON ) // stage elvis bot = CREATE_CHAR ( 127.5 , 128.5 , 2.0 ) 23 270 GUARD END GIVE_WEAPON ( bot , MACHINE_GUN ) SET_CHAR_THREAT_SEARCH ( bot , LINE_OF_SIGHT ) SET_CHAR_THREAT_REACTION ( bot , REACT_AS_NORMAL ) WHILE ( loop = 1 ) IF ( HAS_CHAR_SPOTTED_PLAYER ( bot ) ) SET_CHAR_OCCUPATION ( bot , CRIMINAL ) SET_CHAR_OBJECTIVE ( bot , KILL_CHAR_ANY_MEANS , shaft ) ENDIF ENDWHILE LEVELEND annnnd that's it alles werkt verder (heb herhalende stukken (auto's) en deuren uit het script gelaten, maar deze zorgen verder niet voor problemen. EDIT: behalve dat het poppetje achter me aan komt. Maar ik zie nergens een plaats waar dat de counter (loop) op 1 springt.. ik weet niet hoe jij dat verder hebt opgelost? Bewerkt: 21 december 2009 door BlackDragon Reageren
Lantyz Geplaatst: 21 december 2009 Rapport Geplaatst: 21 december 2009 Maar ik zie nergens een plaats waar dat de counter (loop) op 1 springt. Dat is gelijk het probleem: zolang de waarde van de COUNTER niet overeen komt met de vereiste waarde in de WHILE gebeurt er niets. Verander COUNTER loop = 0 in COUNTER loop = 1 en het probleem is opgelost. Reageren
BlackDragon Geplaatst: 21 december 2009 Auteur Rapport Geplaatst: 21 december 2009 aaaah kijk ik ga het morgen zo snel mogelijk testen ik ging er van uit dat je de counter op 1 liet zetten wanneer die mij gespot had ofzo =) (kan niet wachten) NICE =D Dankjewel het werkt nu inderdaad heerlijk =) Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.