Unfortunately, I get the same error with your code.
when reading the errorcode MySQL documentations i read this:
You cannot use the same table (in this case, table t1) for both the subquery's FROM clause and the update target.
So, my solution will be:
not as effective, but working. (sqlquery is a homemade query-function)
$troop = sqlquery("select t.id as tid from wolfs_troop t, wolfs_x_world x where t.vid=x.vid and t.uid <> x.uid");
while ($tdata = mysql_fetch_array($troop)) {
sqlquery("delete from wolfs_troop where id=".$tdata['tid']);
}