Если я правильно понял, нужно создавать пикапы по названию в БД и по этому же имени обрабатывать?
Немного сложная система, но всё же:
PHP код:
enum db_pickup_info{
dbpName[31],// имя пикапа
dbpHandle // сам пикап
};
new db_pickups[][db_pickup_info] = {
{"RPICKUP0", 0}, // 0 означает, что пикап ещё не создан
{"RPICKUP1", 0},
{"RPICKUP2", 0},
{"RPICKUP3", 0}
};
Дальше в OnGameModeInit считываешь из БД свойства каждого пикапа и создаёшь эти пикапы. Точно сказать, как всё это считывать, я не могу, поскольку с базами данных не работал, но всё же вот примерный набросок:
PHP код:
for(new i=0,j,name[31],model, type,Float:x,Float:y,Float:z; i<sizeof(db_pickups); ++i)
{
// взять из таблицы строку с именем пикапа, моделью, типом и его координатами
// ... // какие-то манипуляции с чтением строки из БД
// по названию найти номер места под пикап
for(j=0; j<sizeof(db_pickups); ++j)
{
if(strcmp(name, db_pickups[j][dbpName]) == 0)
{
// если место найдено - создать пикап и выйти из цикла (прервать поиск)
db_pickups[j][dbpHandle] = CreatePickup(model, type, x, y, z, 0);
break;
}
}
}
И затем обрабатываешь пикапы в OnPlayerPickUpPickup:
PHP код:
for(new i=0; i<sizeof(db_pickups); ++i)
if(pickupid == db_pickups[i][dbpHandle])
{
if(strcmp(db_pickups[i][dbpName], "RPICKUP0") == 0)
{
// ...
}
else if(strcmp(db_pickups[i][dbpName], "RPICKUP1") == 0)
{
// ...
}
}
Система не самая простая и будет теряться много времени на strcmp, НО строковых операций можно избежать, используя y_stringhash. В ближайшее время попробую выложить мануал по этому инклуду.