Атач обьектов на скин
#1

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

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

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

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

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

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

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

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. Просто пример. Надеюсь, моя неудачная попытка реализации понята)
Reply
#8

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

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

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
Reply
#10

Параметры изучить, не?
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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)