yeah you are right, while_exec helped a lot. you don't even have to check if the palyer is in a car. strange
[syntax=mis]PLAYER_PED p1 = (120.1, 120.5, 255.0) 19 0
MAP_ZONE copgang = ( 1000 , 0 , 0 , 0 , 1000 , 0 , 0 , 0 , 1000 , 0 , 1000 )
MAP_ZONE redgang = ( 1000 , 0 , 0 , 0 , 1000 , 0 , 0 , 0 , 1000 , 0 , 1000 )
CHAR_DATA char
ONSCREEN_COUNTER onscreen
counter stage=1
counter bots = 1
counter died = 0
counter wait=9
counter botwait=0
CHAR_DATA botgroup
wait_short:
DELAY_HERE ( 100 )
RETURN
LEVELSTART
ADD_ONSCREEN_COUNTER (onscreen, botwait)
ADD_ONSCREEN_COUNTER (onscreen, bots)
SET_AMBIENT_LEVEL ( 0.3, 3 )
SET_CHAR_MAX_RUNSPEED(p1, -0.06)
SET_GANG_INFO (copgang,-2,ELECTRO_GUN,ELECTRO_GUN,ELECTRO_GUN,
3, 0.0,0.0,0.0,
10,TANK,24)
SET_GANG_INFO (redgang, -1,ROCKET_LAUNCHER,ROCKET_LAUNCHER,ROCKET_LAUNCHER,
1, 0.0,0.0,0.0,
10,FIRETRUK,-1)
SET_GANG_KILL_REACTION (redgang, copgang, 10)
SET_GANG_KILL_REACTION (copgang, redgang, 10)
ADD_GROUP_TO_CHARACTER(p1, 0)
SET_GROUP_TYPE(p1,CHAIN)
WHILE_EXEC(stage=1)
IF ( CHECK_CHARACTER_HEALTH ( p1 , 0 ))
//IF( ( (HAS_CHARACTER_DIED(p1)) OR (CHECK_WEAPON_TYPE_HIT_CHAR(p1,BY_ELECTRO_WEAPON)) )
// OR ( (IS_CHARACTER_IN_ANY_CAR(p1)) OR (CHECK_WEAPON_TYPE_HIT_CHAR(p1,BY_ROCKET_LAUNCHER)))
// )
IF(HAS_CHARACTER_DIED(p1))
//IF(died=0)
SET died=1
SET bots=0
SET botwait=0
//ENDIF
ELSE
IF(died=1)
// DESTROY_GROUP(p1)
ADD_GROUP_TO_CHARACTER(p1, 0)
SET died=0
SET bots=1
//GOSUB wait_short:
ENDIF
ENDIF
IF(bots=1)
++botwait
ENDIF
IF(botwait>=30)
IF(NOT(CHECK_NUMBER_ALIVE_IN_GROUP (p1,10)) )
botgroup = CREATE_CHAR ( 125.1, 120.5, 255.0 ) 12 90 PSYCHO END
GIVE_WEAPON(botgroup,PISTOL)
//ADD_GROUP_TO_CHARACTER (botgroup,0)
ADD_EXISTING_CHAR_TO_GROUP (p1, botgroup)
ENDIF
SET botwait=0
ENDIF
ENDIF
ENDWHILE
LEVELEND[/syntax]
now some multiplayer testing
edit:
here is the updated (final) version. tested with two players, seems to work well so far.
[syntax=mis]PLAYER_PED p1 = (119.5, 116.5, 2.0) 0 0
PLAYER_PED p2 = (119.5, 117.5, 2.0) 1 0
PLAYER_PED p3 = (119.5, 118.5, 2.0) 2 0
PLAYER_PED p4 = (119.5, 119.5, 2.0) 3 0
PLAYER_PED p5 = (119.5, 120.5, 2.0) 4 0
PLAYER_PED p6 = (119.5, 121.5, 2.0) 5 0
MAP_ZONE copgang = ( 1000 , 0 , 0 , 0 , 1000 , 0 , 0 , 0 , 1000 , 0 , 1000 )
MAP_ZONE redgang = ( 1000 , 0 , 0 , 0 , 1000 , 0 , 0 , 0 , 1000 , 0 , 1000 )
CHAR_DATA p
CHAR_DATA char
counter stage=1
counter current_player =1
counter p_died = 0
counter p_botSpawnTime=0
counter p1_died = 0
counter p1_botSpawnTime=0
counter p2_died = 0
counter p2_botSpawnTime=0
counter p3_died = 0
counter p3_botSpawnTime=0
counter p4_died = 0
counter p4_botSpawnTime=0
counter p5_died = 0
counter p5_botSpawnTime=0
counter p6_died = 0
counter p6_botSpawnTime=0
CHAR_DATA botgroup
LEVELSTART
SET_AMBIENT_LEVEL (0.25,0)
SET_SHADING_LEVEL (20)
SET_GANG_INFO (copgang,1,ELECTRO_GUN,ELECTRO_GUN,ELECTRO_GUN,
3, 0.0,0.0,0.0,
10,TANK,20)
SET_GANG_INFO (redgang, 26,ROCKET_LAUNCHER,ROCKET_LAUNCHER,ROCKET_LAUNCHER,
1, 0.0,0.0,0.0,
10,FIRETRUK,11)
SET_GANG_KILL_REACTION (redgang, copgang, 10)
SET_GANG_KILL_REACTION (copgang, redgang, 10)
IF ( CHECK_CHARACTER_HEALTH ( p1 , 0 ))
ADD_GROUP_TO_CHARACTER(p1, 0)
ENDIF
IF ( CHECK_CHARACTER_HEALTH ( p2 , 0 ))
ADD_GROUP_TO_CHARACTER(p2, 0)
ENDIF
IF ( CHECK_CHARACTER_HEALTH ( p3 , 0 ))
ADD_GROUP_TO_CHARACTER(p3, 0)
ENDIF
IF ( CHECK_CHARACTER_HEALTH ( p4 , 0 ))
ADD_GROUP_TO_CHARACTER(p4, 0)
ENDIF
IF ( CHECK_CHARACTER_HEALTH ( p5 , 0 ))
ADD_GROUP_TO_CHARACTER(p5, 0)
ENDIF
IF ( CHECK_CHARACTER_HEALTH ( p6 , 0 ))
ADD_GROUP_TO_CHARACTER(p6, 0)
ENDIF
WHILE_EXEC(stage=1)
SET current_player=1
WHILE(current_player<7)
IF(current_player=1)
SET p=(p1+0)
SET p_died=(p1_died+0)
SET p_botSpawnTime=(p1_botSpawnTime+0)
ENDIF
IF(current_player=2)
SET p=(p2+0)
SET p_died=(p2_died+0)
SET p_botSpawnTime=(p2_botSpawnTime+0)
ENDIF
IF(current_player=3)
SET p=(p3+0)
SET p_died=(p3_died+0)
SET p_botSpawnTime=(p3_botSpawnTime+0)
ENDIF
IF(current_player=4)
SET p=(p4+0)
SET p_died=(p4_died+0)
SET p_botSpawnTime=(p4_botSpawnTime+0)
ENDIF
IF(current_player=5)
SET p=(p5+0)
SET p_died=(p5_died+0)
SET p_botSpawnTime=(p5_botSpawnTime+0)
ENDIF
IF(current_player=6)
SET p=(p6+0)
SET p_died=(p6_died+0)
SET p_botSpawnTime=(p6_botSpawnTime+0)
ENDIF
IF ( CHECK_CHARACTER_HEALTH ( p , 0 ))
IF(HAS_CHARACTER_DIED(p))
SET p_died=1
SET p_botSpawnTime=0
ELSE
IF(p_died=1)
ADD_GROUP_TO_CHARACTER(p, 0)
SET p_died=0
ENDIF
IF(p_died=0)
++p_botSpawnTime
ENDIF
IF(p_botSpawnTime>=30)
IF(NOT(CHECK_NUMBER_ALIVE_IN_GROUP (p,10)) )
IF(current_player=1)
botgroup = CREATE_CHAR ( 122.5, 114.5, 2.0 ) 0 90 PSYCHO END
ENDIF
IF(current_player=2)
botgroup = CREATE_CHAR ( 123.5, 114.5, 2.0 ) 1 90 PSYCHO END
ENDIF
IF(current_player=3)
botgroup = CREATE_CHAR ( 124.5, 114.5, 2.0 ) 2 90 PSYCHO END
ENDIF
IF(current_player=4)
botgroup = CREATE_CHAR ( 125.5, 114.5, 2.0 ) 3 90 PSYCHO END
ENDIF
IF(current_player=5)
botgroup = CREATE_CHAR ( 126.5, 114.5, 2.0 ) 4 90 PSYCHO END
ENDIF
IF(current_player=6)
botgroup = CREATE_CHAR ( 127.1, 114.5, 2.0 ) 5 90 PSYCHO END
ENDIF
GIVE_WEAPON(botgroup,PISTOL)
ADD_EXISTING_CHAR_TO_GROUP (p, botgroup)
ENDIF
SET p_botSpawnTime=0
ENDIF
ENDIF
ENDIF
IF(current_player=1)
SET p1_died=(p_died+0)
SET p1_botSpawnTime=(p_botSpawnTime+0)
ENDIF
IF(current_player=2)
SET p2_died=(p_died+0)
SET p2_botSpawnTime=(p_botSpawnTime+0)
ENDIF
IF(current_player=3)
SET p3_died=(p_died+0)
SET p3_botSpawnTime=(p_botSpawnTime+0)
ENDIF
IF(current_player=4)
SET p4_died=(p_died+0)
SET p4_botSpawnTime=(p_botSpawnTime+0)
ENDIF
IF(current_player=5)
SET p5_died=(p_died+0)
SET p5_botSpawnTime=(p_botSpawnTime+0)
ENDIF
IF(current_player=6)
SET p6_died=(p_died+0)
SET p6_botSpawnTime=(p_botSpawnTime+0)
ENDIF
++current_player
ENDWHILE
ENDWHILE
LEVELEND[/syntax]