Просмотр полной версии : [Вопрос] Использование RemoveBuildingForPlayer в stock с объектами
KillStreak
06.03.2017, 08:58
Есть два стока, в одном хранятся удалённые объекты в другом созданные. Можно ли как то использовать RemoveBuildingForPlayer в стоке с созданными объектами притом что технически он находится в стоке с удалёнными но визуально располагается в стоке с созданными. Это вопрос оформления кода и его расположения для более лучшей навигации.
#include <a_samp>
#include <streamer>
public OnGameModeInit()
{
LoadObjects();
return 1;
}
public OnPlayerConnect(playerid)
{
LoadRemoveObjects(playerid);
return 1;
}
stock LoadObjects()
{
CreateDynamicObject(1111, 1000.39999, 2000.49999, 30.59999, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(1111, 1000.39999, 2000.49999, 30.59999, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(1111, 1000.39999, 2000.49999, 30.59999, 0.00000, 90.00000, 90.00000);
}
stock LoadRemoveObjects(playerid)
{
RemoveBuildingForPlayer(playerid, 2222, 1000.3999, -1999.3999, 10.8999, 0.20);
RemoveBuildingForPlayer(playerid, 2222, 1000.3999, -1999.3999, 10.8999, 0.20);
RemoveBuildingForPlayer(playerid, 2222, 1000.3999, -1999.3999, 10.8999, 0.20);
return 1;
}
Nash_Brigers
06.03.2017, 10:14
Если я верно понял вопрос, то нет, т.к. создаёшь ты объекты сразу для всех игроков (вызов один раз при загрузке мода), а удаляешь для каждого игрока индивидуально (вызов при каждом новом коннекте игрока).
В этом смысла мало, но вот:
#include <a_samp>
#include <streamer>
public OnGameModeInit()
{
LoadObjects();
return 1;
}
public OnPlayerConnect(playerid)
{
LoadObjects(playerid);
return 1;
}
stock LoadObjects(playerid = INVALID_PLAYER_ID)
{
if(playerid == INVALID_PLAYER_ID)
{
CreateDynamicObject(1111, 1000.39999, 2000.49999, 30.59999, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(1111, 1000.39999, 2000.49999, 30.59999, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(1111, 1000.39999, 2000.49999, 30.59999, 0.00000, 90.00000, 90.00000);
}
else
{
RemoveBuildingForPlayer(playerid, 2222, 1000.3999, -1999.3999, 10.8999, 0.20);
RemoveBuildingForPlayer(playerid, 2222, 1000.3999, -1999.3999, 10.8999, 0.20);
RemoveBuildingForPlayer(playerid, 2222, 1000.3999, -1999.3999, 10.8999, 0.20);
}
}
Гораздо лучше создать отдельную функцию для удаления объектов и дать ей название, по которому было бы понятно, что функция удаляет стандартные объекты
KillStreak
06.03.2017, 10:56
Если я верно понял вопрос, то нет, т.к. создаёшь ты объекты сразу для всех игроков (вызов один раз при загрузке мода), а удаляешь для каждого игрока индивидуально (вызов при каждом новом коннекте игрока).
Это я знал, просто думал как то визуально изменить код. А можно удалять объекты не для одного игрока индивидуально а сразу для всех удалить?
- - - Добавлено - - -
В этом смысла мало, но вот:
#include <a_samp>
#include <streamer>
public OnGameModeInit()
{
LoadObjects();
return 1;
}
public OnPlayerConnect(playerid)
{
LoadObjects(playerid);
return 1;
}
stock LoadObjects(playerid = INVALID_PLAYER_ID)
{
if(playerid == INVALID_PLAYER_ID)
{
CreateDynamicObject(1111, 1000.39999, 2000.49999, 30.59999, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(1111, 1000.39999, 2000.49999, 30.59999, 0.00000, 90.00000, 90.00000);
CreateDynamicObject(1111, 1000.39999, 2000.49999, 30.59999, 0.00000, 90.00000, 90.00000);
}
else
{
RemoveBuildingForPlayer(playerid, 2222, 1000.3999, -1999.3999, 10.8999, 0.20);
RemoveBuildingForPlayer(playerid, 2222, 1000.3999, -1999.3999, 10.8999, 0.20);
RemoveBuildingForPlayer(playerid, 2222, 1000.3999, -1999.3999, 10.8999, 0.20);
}
}
Гораздо лучше создать отдельную функцию для удаления объектов и дать ей название, по которому было бы понятно, что функция удаляет стандартные объекты
А что даст создание такой функции, внесёт ясность в код и всё? Буду придерживаться своих убеждений в этом деле, но твой вариант тоже не плохой, спасибо.
А можно удалять объекты не для одного игрока индивидуально а сразу для всех удалить?
Нет. Удаление объектов возможно только когда игрок подключён к серверу.
А что даст создание такой функции, внесёт ясность в код и всё? Буду придерживаться своих убеждений в этом деле, но твой вариант тоже не плохой, спасибо.
Да.
Помещение кода в одну функцию тоже ничего не изменит, кроме как нарушит читаемость кода (не считаешь странным то, что функция называется "загрузка объектов", но в ней происходит удаление?)
KillStreak
06.03.2017, 11:14
Помещение кода в одну функцию тоже ничего не изменит, кроме как нарушит читаемость кода (не считаешь странным то, что функция называется "загрузка объектов", но в ней происходит удаление?)
Вертим как хотим, переименование никто не отменял.
Вертим как хотим, переименование никто не отменял.
С таким "видением", в скрипте можно вообще одну функцию оставить, почему бы и нет?
KillStreak
07.03.2017, 08:02
С таким "видением", в скрипте можно вообще одну функцию оставить, почему бы и нет?
С таким не с таким, но это относится к маппингу и разве это так важно как называется его функция по большому счёту. Удаление там происходит или создание, тот кто сделал этот маппинг и поместил его туда сам задаёт название как удобно будет.
С таким не с таким, но это относится к маппингу и разве это так важно как называется его функция по большому счёту. Удаление там происходит или создание, тот кто сделал этот маппинг и поместил его туда сам задаёт название как удобно будет.
Читать код в последующем будет скриптер, а не маппер. И подобное название будет лишь вводить в заблуждение.
Представь, что ты приходишь в магазин и просишь продать тебе булку хлеба за 20 рублей. А тебе вместо хлеба дают палку колбасы за 120 рублей, на которой написано "булка хлеба". Не очень приятно будет, да?
KillStreak
07.03.2017, 11:17
Читать код в последующем будет скриптер, а не маппер. И подобное название будет лишь вводить в заблуждение.
Это только в том случае если маппинг передаётся скриптеру. А в другом маппер может работать индивидуально с маппингом в моде без помощи скриптера. Как ты мне сам еще и писал, закинул в инклуд и забыл.
Представь, что ты приходишь в магазин и просишь продать тебе булку хлеба за 20 рублей. А тебе вместо хлеба дают палку колбасы за 120 рублей, на которой написано "булка хлеба". Не очень приятно будет, да?
Я бы отнёс данный пример скорей к ошибочным запросам в той же БД, где на запрос получить хлеб за 20р мне выдаёт колбасу с названием хлеб за 120р. Этим примером ты скорей обозначил глупость маркетологов и производителей которые умудрились так назвать колбасу :)
В любом случае тебе придётся либо перехваты прописывать, либо скриптеру придётся вызов твоей функции в основном моде прописать.
Да и я всё ещё не понимаю почему ты так упёрто хочешь называть функции непонятными именами... Хотя твоё право.
Вопрос решён?
KillStreak
07.03.2017, 13:13
Давно уже решён.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot