Jump to content

Recommended Posts

Geplaatst:

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 :puh: =)

Geplaatst:

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.

Geplaatst: (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: door BlackDragon
Geplaatst:

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?

Geplaatst: (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: door BlackDragon
Geplaatst:

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

Geplaatst:

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 ><

Geplaatst: (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: door BlackDragon
Geplaatst:

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.

Geplaatst:

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 =)

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.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...