SA-MP Forums Archive
Смещение ID пикапа - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Смещение ID пикапа (/showthread.php?tid=414680)



Смещение ID пикапа - Frapsy - 10.02.2013

Такая ситуация. На сервере стоит система пикапов для входов/выходов. Происходит, так сказать, смещение ID пикапа. То есть, создается он с идом 150, OnPlayerPickUpPickup срабатывает несколько раз возвращая 150 ид, а затем ид смещается и коллбэк возвращает уже 22. Что может способствовать такому поведению идов?

PHP код:
public OnPlayerPickUpPickup(playeridpickupid) { 
    for(new 
1sizeof(pInfo); i++) { 
        if(
pickupid == pInfo[i][pID]) { 
            
SetPlayerInterior(playerid,pInfo[i][Interior]); 
            
SetPlayerPos(playerid,pInfo[i][ExX],pInfo[i][ExY],pInfo[i][ExZ]); 
            
SetPlayerFacingAngle(playerid,pInfo[i][ExA]); 
            
SetPlayerVirtualWorld(playerid,pInfo[i][World]); 
            switch(
pInfo[i][ShopName]) { 
                case 
1SetPlayerShopName(playerid,"FDPIZA"); 
                case 
2SetPlayerShopName(playerid,"FDBURG"); 
                case 
3SetPlayerShopName(playerid,"FDCHICK"); 
            } 
            
SetCameraBehindPlayer(playerid); 
            return 
1
        } 
    } 
    return 
1

// создание 
        
pInfo[i][pID] = CreatePickup(pInfo[i][PickupID],23,pInfo[i][PosX],pInfo[i][PosY],pInfo[i][PosZ],pInfo[i][pWorld]); 



Re: Смещение ID пикапа - stabker - 10.02.2013

Это все зависит от правильности работы вашей динамической системы


Re: Смещение ID пикапа - Frapsy - 10.02.2013

Она наверно не динамическая, слово не верное подобрал

Вот массив и загрузка данных.
PHP код:
enum EnterExit {
    
PickupID,
    
pWorld,
    
Float:PosX,
    
Float:PosY,
    
Float:PosZ,
    
Float:ExX,
    
Float:ExY,
    
Float:ExZ,
    
Float:ExA,
    
Interior,
    
World,
    
ShopName,
    
pID
}
new 
pInfo[MAX_EE][EnterExit];
//***************
public OnGameModeInit() {
   
mysql_function_query(mysqlid,"SELECT * FROM `enterexit`",true,"LoadEnterExit","d",mysqlid);
   
// ....
}
forward LoadEnterExit();
public 
LoadEnterExit() {
    
cache_get_data(rows,fields);
    
printf("ROWS: %d",rows);
    for(new 
1rows+1i++) {
        
cache_get_row(i,1,qResult); sscanf(qResult,"i",pInfo[i][PickupID]);
        
cache_get_row(i,2,qResult); sscanf(qResult,"i",pInfo[i][pWorld]);
        
cache_get_row(i,3,qResult); sscanf(qResult,"f",pInfo[i][PosX]);
        
cache_get_row(i,4,qResult); sscanf(qResult,"f",pInfo[i][PosY]);
        
cache_get_row(i,5,qResult); sscanf(qResult,"f",pInfo[i][PosZ]);
        
cache_get_row(i,6,qResult); sscanf(qResult,"f",pInfo[i][ExX]);
        
cache_get_row(i,7,qResult); sscanf(qResult,"f",pInfo[i][ExY]);
        
cache_get_row(i,8,qResult); sscanf(qResult,"f",pInfo[i][ExZ]);
        
cache_get_row(i,9,qResult); sscanf(qResult,"f",pInfo[i][ExA]);
        
cache_get_row(i,10,qResult); sscanf(qResult,"i",pInfo[i][Interior]);
        
cache_get_row(i,11,qResult); sscanf(qResult,"i",pInfo[i][World]);
        
cache_get_row(i,12,qResult); sscanf(qResult,"i",pInfo[i][ShopName]);
        
pInfo[i][pID] = CreatePickup(pInfo[i][PickupID],23,pInfo[i][PosX],pInfo[i][PosY],pInfo[i][PosZ],pInfo[i][pWorld]);
        
printf("NewID: %d",pInfo[i][pID]);
        
pickups++;
    }
    return 
1;




Re: Смещение ID пикапа - eakwarp - 10.02.2013

Явно что-то кроме этого кода работает с пикапами, причем видимо криво.


Re: Смещение ID пикапа - Frapsy - 10.02.2013

Именно работа с пикапами только на входах/выходах, пикап смены одежды и информационный. Остальные стоят просто как показатели (дома,бизнесы).


Re: Смещение ID пикапа - DrSlett - 10.02.2013

Пикапы входа/выхода создаются первее чем пикапы домов, смены одежды и т.д.?


Re: Смещение ID пикапа - Frapsy - 10.02.2013

Да, должно быть так, но создаваться они начинают только с 55 ида. Наверное из-за запроса и обращения к стоку.


Re: Смещение ID пикапа - stabker - 10.02.2013

Если один из пикапов, ид которого хранится для входа в бизы, дома, удаляется, а потом снова создается, вы обновляете значение переменной на текущий ид пикапа? Кроме этого, если вы просто удаляете пикап, ид которого сохранен, не забывайте присваивать переменной невалидное значение, т.к. при создании какого-то другого пикапа, исходя из вашего скрипта входа в биз, он будет работать не так, как нужно.