Genau das gleiche habe ich geschrieben.
Nein, nicht genau das gleiche, du hast nur auch die Lösung gewusst 
Ich habe noch ergänzt, dass sein Code an sich keinen Sinn ergibt 
Er hat mich per PN angeschrieben wieso das so sei und aus diesem Grund schreibe ich es nochmal in diesem Thread:
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid == TownMenu)
{
SendClientMessage(playerid,COLOR_GREY,"Gib jetzt /Waffenschein ein um einen Waffenschein für 10k zu erwerben.");
SetPVarInt(playerid,"Waffen",1);
}
else if(GetPlayerScore(playerid) >3)
{
SendClientMessage(playerid,COLOR_RED,"Dein Level reicht nicht aus.");
}
return 1;
}
So, das hast du geschrieben, ich werde den Code jetzt mal vorlesen:
Wenn ein Spieler ein Pickup betritt, wenn die Pickup id == Towmenu ist, dann soll er eine Nachricht bekommen...wenn sie das nicht ist und das Level größer als 3 ist, soll die Nachricht kommen, "Dein Level reicht nicht aus"...
Da sind 2 Fehler drinnen:
1. müsste das so aussehen:
else if(GetPlayerScore(playerid) <3)
2. Darf diese Abfrage nicht direkt in dem Callback sein, wenn dann nur in der if-Abfrage, sonst bekommt er diese Nachricht sobald er irgendein Pickup betritt ! 
Ich hoffe du hast grob verstanden, was ich dir damit sagen will 
mfg. 