W takim razie najprawdopodobniej używasz jakiejś starej wersji Skripta, w której 'contains' nie działało dobrze (albo w ogóle nie działa, a powinno).
Skoro to nie działa, rozbij sobie ten warunek na dwa warunki. W pierwszym sprawdzasz czy zawiera grupę "vip", natomiast w drugim sprawdzasz czy zawiera grupę "vip+".
Jeżeli planujesz dodać sprawdzanie dla większej ilości rang (4 i więcej), tutaj zainteresowałbym się zapętleniem listy.
# Tworzymy listę z naszymi grupami
set {_groups::*} to "vip", "vip+", "vip++", "svip", "svip+" and "svip++"
# Zapętlamy naszą listę
loop {_groups::*}:
# Sprawdzamy czy gracz nie jest w zapętlanej grupie
player's groups doesn't contain loop-value
# Jeżeli nie jest w tej grupie, ustawiamy zmienną
set {_noGroup} to true
# Sprawdzamy czy zmienna nie jest ustawiona i tylko
# jeżeli nie jest ustawiona, kod może się wykonywać dalej
{_noGroup} is not set
# Gdy zmienna {_noGroup} nie jest ustawiona, wiemy że gracz posiada
# wszystkie wymagane przez nas grupy
Zamiast ustawiania zmiennej możemy równie dobrze zwiększać sobie jakąś zmienną o 1, a w warunku na końcu sprawdzamy czy wartość naszej zmiennej jest równa wielkości listy {_groups::*}.
{_zmienna} is (size of {_groups::*})