SA-MP Forums Archive
Атач обьектов на скин - 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: Атач обьектов на скин (/showthread.php?tid=516065)



Атач обьектов на скин - Кирилл - 29.05.2014

Ребят затеялся сделать магазин барахла но есть но: при смерти объект отрывается (не сохраняется).
Скрипт выкладывать не буду так как прошу у вас варианта по сохранению объекта на скине после смерти. Буду так же использовать эдитор чтобы зафиксировать объект. Прошу дать пример если кто то уже делал или может помочь.

Хотелось бы посмотреть на варианты а то что то я не допонимаю. После выложу суда скрипт на всякий случай


Re: Атач обьектов на скин - SmileyCoder - 29.05.2014

При аттаче объекта запоминай его в переменную, а при спавне - надевай обратно.
Хотя, подозреваю, что при смерти у тебя он удаляется скриптом(OnPlayerDeath).
Редакторов полно в гугле, ищи.


Re: Атач обьектов на скин - Кирилл - 29.05.2014

нет конкретно выглядит действие так: 1 нажимаю команду - выводится объект и редактирование. 2 редактирую сохраняю. 3 нажимаю умереть я мертвый после спавна кепки нет предположим (ремувов нету в пабликах) вот именно поэтому хочу глянуть пример как можно избавиться от потерь атачей


Re: Атач обьектов на скин - SmileyCoder - 29.05.2014

Во втором пункте запоминай ID объекта и его координаты в переменную, а при спавне - надевай его.


Re: Атач обьектов на скин - Кирилл - 29.05.2014

дай пример переменной для записи а то что то не пойму тебя


Re: Атач обьектов на скин - Eims - 30.05.2014

Quote:
Originally Posted by Кирилл
Посмотреть сообщение
дай пример переменной для записи а то что то не пойму тебя
Обычная переменная (в данном случае массив, ибо игроков то много может быть), в которую записывается ID приаттаченного объекта. Если игрок умер - проверяем значение переменной. Если не равно нулю - опять аттачим объект на нужное место. Ну и когда снимает игрок объект, присваиваем нуль массиву нашему


Re: Атач обьектов на скин - mrfriz - 31.05.2014

PHP код:
new BarahloCount[MAX_PLAYERS], Barahlo[MAX_PLAYERS][4][8// допустим, всего будет 4 шмотки.
/*
    Barahlo[playerid][# шмотки][0] - модель
    Barahlo[playerid][# шмотки][1] - Смещение по оси X, относительно центра игрока.
    Barahlo[playerid][# шмотки][2] - Смещение по оси Y, относительно центра игрока.
    Barahlo[playerid][# шмотки][3] - Смещение по оси Z, относительно центра игрока.
    Barahlo[playerid][# шмотки][4] - Угол поворота объекта по оси X, относительно игрока.
    Barahlo[playerid][# шмотки][5] - Угол поворота объекта по оси Y, относительно игрока.
    Barahlo[playerid][# шмотки][6] - Угол поворота объекта по оси Z, относительно игрока.
    Barahlo[playerid][# шмотки][7] - id объекта
*/
OnPlayerSpawn(playerid){
    for(new 
i=BarahloCount[playerid]-1i!=-1; --i){
        
Barahlo[playerid][i][7] = CreateObject(Barahlo[playerid][i][0], ,00000100);
        
AttachObjectToPlayer(Barahlo[playerid][i][7], playeridBarahlo[playerid][i][1], Barahlo[playerid][i][2], Barahlo[playerid][i][3], Barahlo[playerid][i][4], Barahlo[playerid][i][5], Barahlo[playerid][i][6]);
    }
    return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason){
    for(new 
i=BarahloCount[playerid]-1i!=-1; --i){
        
DestroyObject(Barahlo[playerid][i][7]);
    }
    return 
1;
}
public 
OnPlayerCommandText(playeridcmdtext[]){
    new 
cmd[128], idx;
    
cmd strtok(cmdtextidx);
    if(
strcmp(cmd"/barahlo"true) == 0){
        
Barahlo[playerid][BarahloCount][0] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][1] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][2] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][3] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][4] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][5] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][6] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount[playerid]][7] = CreateObject(Barahlo[playerid][BarahloCount[playerid]][0], ,00000100);
        
AttachObjectToPlayer(Barahlo[playerid][BarahloCount[playerid]][7], playerid,
            
Barahlo[playerid][BarahloCount[playerid]][1],
            
Barahlo[playerid][BarahloCount[playerid]][2],
            
Barahlo[playerid][BarahloCount[playerid]][3],
            
Barahlo[playerid][BarahloCount[playerid]][4],
            
Barahlo[playerid][BarahloCount[playerid]][5],
            
Barahlo[playerid][BarahloCount[playerid]][6]
        );
    }
    return 
0;

Не компилировал, писал вслепую. Там явно будут варнинги потому что Barahlo - не Float. Просто пример. Надеюсь, моя неудачная попытка реализации понята)


Re: Атач обьектов на скин - Кирилл - 31.05.2014

ну и как себе это представлять особенно если полный атач идет через паблик эдитора
точнее алгоритм такой:
SetPlayerAttachedObject(playerid, 0, 1337, 2);
затем
EditAttachedObject(playerid, 0);
потом сохраняем по плану как тут
https://sampwiki.blast.hk/wiki/OnPlayerEditAttachedObject

ну и как мне переменную сделать с координатами?


Re: Атач обьектов на скин - Кирилл - 31.05.2014

Quote:
Originally Posted by mrfriz
Посмотреть сообщение
PHP код:
new BarahloCount[MAX_PLAYERS], Barahlo[MAX_PLAYERS][4][8// допустим, всего будет 4 шмотки.
/*
    Barahlo[playerid][# шмотки][0] - модель
    Barahlo[playerid][# шмотки][1] - Смещение по оси X, относительно центра игрока.
    Barahlo[playerid][# шмотки][2] - Смещение по оси Y, относительно центра игрока.
    Barahlo[playerid][# шмотки][3] - Смещение по оси Z, относительно центра игрока.
    Barahlo[playerid][# шмотки][4] - Угол поворота объекта по оси X, относительно игрока.
    Barahlo[playerid][# шмотки][5] - Угол поворота объекта по оси Y, относительно игрока.
    Barahlo[playerid][# шмотки][6] - Угол поворота объекта по оси Z, относительно игрока.
    Barahlo[playerid][# шмотки][7] - id объекта
*/
OnPlayerSpawn(playerid){
    for(new 
i=BarahloCount[playerid]-1i!=-1; --i){
        
Barahlo[playerid][i][7] = CreateObject(Barahlo[playerid][i][0], ,00000100);
        
AttachObjectToPlayer(Barahlo[playerid][i][7], playeridBarahlo[playerid][i][1], Barahlo[playerid][i][2], Barahlo[playerid][i][3], Barahlo[playerid][i][4], Barahlo[playerid][i][5], Barahlo[playerid][i][6]);
    }
    return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason){
    for(new 
i=BarahloCount[playerid]-1i!=-1; --i){
        
DestroyObject(Barahlo[playerid][i][7]);
    }
    return 
1;
}
public 
OnPlayerCommandText(playeridcmdtext[]){
    new 
cmd[128], idx;
    
cmd strtok(cmdtextidx);
    if(
strcmp(cmd"/barahlo"true) == 0){
        
Barahlo[playerid][BarahloCount][0] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][1] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][2] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][3] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][4] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][5] = strval(strtok(cmdtextidx));
        
Barahlo[playerid][BarahloCount][6] = strval(strtok(cmdtextidx));
    }
    return 
0;

Не компилировал, писал вслепую. Там явно будут варнинги потому что Barahlo - не Float. Просто пример. Надеюсь, моя неудачная попытка реализации понята)
нужно через эдитор https://sampwiki.blast.hk/wiki/OnPlayerEditAttachedObject


Re: Атач обьектов на скин - Eims - 31.05.2014

Параметры изучить, не?
Quote:

response 0 if they cancelled (ESC) or 1 if they clicked the save icon.
modelid The model of the attached object that was edited

Всю информацию, что вам нужна, хранят параметры данного коллбэка