- Регистрация
- 2 Авг 2022
- Сообщения
- 18
- Автор темы
- #1
Постарался привести примеры фич которые можно использовать в пабликах, основатель перечня не я, нашел тему 2013 года решил немного подробнее расписать и привести примеры.
public OnGameModeInit - паблик автоматически вызывается при запуске сервера. Например вы записали в сток какую либо функцию ( не касающуюся игроков), например это будет логотип. Этот сток вы обязательно прописываете в данный паблик.
C++:
SendRconCommand("hostname "#HostName"")
или рассмотрим ситуацию со стоками про которую говорили, допустим вы создали сток
Код:
stock Logotipe(){
тут текстдравы
}
C++:
stock Logotipe();
public OnGameModeExit - Данный паблик отвечает за все действия которые происходят при завершении работы мода, например выгрузка данных, или же одно из самых важных действий - удаление таймеров.
C++:
KillTimer(onesecondtimerr);
Так же давайте уберем всех загруженных актеров.
Код:
DestroyActor(magazactors[0]),DestroyActor(magazactors[1]),DestroyActor(magazactors[2]);
public OnPlayerRequestClass(playerid, classid) - Данный паблик вызывается при выборе игроком скина, сюда же вы вставляете красивый полет камеры, использование инты для выбора скина и прочие функции которые вы возможно видел на других серверах при этом действии.
C++:
PlayAudioStreamForPlayer(playerid, "muzon.mp3")
Ну и покажем что игрок успешно присоединился к игре.
C++:
PI[playerid][Connect]=true;
public OnPlayerConnect(playerid) -Этот паблик вызывается когда игрок подключается к серверу, в него можно вставить все загрузку данных об игроке и прочее.
Код:
SetTimerEx("UpdatePlayer", 1000, true, "d", playerid);
Зафиксируемся с какого IP игрок зашел на сервер
Код:
GetPlayerIp(playerid,PI[playerid][pIP],16);
Покажем игроку определенную зону на карте.
GangZoneShowForPlayer(playerid,zona_id, 0x00ff00AA);
public OnPlayerDisconnect(playerid, reason) -Вызывается когда игрок покидает сервер, сюда можно прописать сохранение аккаунта, координат игрока и прочую информацию.
C++:
SavePlayerWeapon(playerid),SaveAccount(playerid);
Уберем 3д текст
Код:
Delete3DTextLabel(3DText[playerid]);
Обнулим переменные
C++:
PlayerSpawned[playerid] = 0
public OnPlayerSpawn(playerid) -Данный паблик отвечает за действия с игроком во время его спавна, например можно указать где заспавниться игрок, вывести ему сообщение, прогрузить ТекстДрав, надеть объекты и так далее.
Код:
StopAudioStreamForPlayer(playerid)
Покажем ему ТекстДрав
C++:
TextDrawShowForPlayer(playerid,Connect[0]);
Или же дадим ему скиллов
C++:
SetPlayerSkillLevel(playerid, 31, 1000)
public OnPlayerDeath(playerid, killerid, reason) - Паблик вызывается когда погибает игрок, в него можно вставить например чтобы убийца получал какой-либо бонус, полиция получала сообщение или же данные выводились в лог администрации. А так же можно добавить объекты на месте смерти. Все ограничения в вашем воображении.
C++:
PI[killerid][pKill] ++,SetPlayerScore(killerid, PI[killerid][pKill]);
public OnVehicleSpawn(vehicleid) - Вызывается когда спавнится транспорт. Можно повесить объекты, изменить цвет, накинуть 3д текст и прочее.
C++:
ToggleVehicleEngine(vehicleid, false);
public OnPlayerText(playerid, text[]) - вызывается когда игрок пишет в чат. Можно установить префикс, установить внешний вид чата, а так же добавлять анимации диалога.
C++:
ApplyAnimation(playerid,"PED","IDLE_chat",4.1,0,1,1,1,1);
public OnPlayerCommandText(playerid, cmdtext[]) -Паблик вызывается когда игрок использует команды, тут уж только ваше воображение.
C++:
CMD:pravila(playerid, params[]){
ShowPlayerDialog(playerid,56611110,DIALOG_STYLE_LIST, "Общие правила сервера","Игровой процесс\nЧат сервера\nТорговля", "Выбрать", "Назад");
}
public OnPlayerStateChange(playerid, newstate, oldstate) - Паблик вызывается когда игрок садится в машину. Можно высветить спидометр, изменить параметры машины, поставить фракционную проверку.
C++:
SetTimerEx("UpdateVehiclePos", 10000, false, "ii", GetPVarInt(playerid,"VehID")
public OnPlayerPickUpPickup(playerid, pickupid) - Вызывается когда игрок находится на пикапе, можно сделать например вход в инту или же просто поставить пикап с аптечкой на спавне,применений много.
C++:
if(pickupid == gos_pic[0])
{
SetPlayerPos(playerid, -2365.742676, 2728.150146, 21.090750); // дядя вошел
SetPlayerFacingAngle(playerid, 2.3383);
SetPlayerVirtualWorld(playerid, 1);
SetPlayerInterior(playerid, 6);
SetCameraBehindPlayer(playerid);
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) - Паблик приходит в действие когда игрок нажимает на определенную кнопку, можно использовать например для открытия инвентaря.
C++:
if(newkeys == KEY_NO)
{
if(IsPlayerInAnyVehicle(playerid)) {
if(CVEHPL[playerid] != -1) {
if(l[playerid][adminka] < 3) return true;
DestroyVehicle(VehID[playerid]);
SendClientMessage(playerid,-1,"{696969}[!] {1E90FF}Транспорт удалён.");
return true;
}
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) - Используется когда игрок нажимает на определенную кнопку в диалоговом окне.
C++:
case DIALOG_ANIMATION:
{
if(!response) return true;
SelectAnimation(playerid, listitem);
return true;
}
Последнее редактирование: