Как сделать работу в павно

Обновлено: 07.07.2024

Ничего сложного в создание чата нету. И поэтому если вы решили сделать его, я думаю вы сделаете. Начнем?
1. Переменные
В первую очередь ко всем переменным добавим:
new realchat = 1;
new BigEar[MAX_PLAYERS];

В public OnPlayerText добавляем следующие элементы:


if(realchat)
<
new string[150];
new sendername[24];
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
<
ApplyAnimation(playerid, "PED", "IDLE_CHAT",4.1,0,1,1,1,1,1);
clearanim [playerid]= 7;
>
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "- %s[%d]: %s", sendername, playerid, text);
SetPlayerChatBubble(playerid, text, 0x6495EDFF, 20.0, 10000);
ProxDetector(20.0, playerid, string,CGRAY,CGRAY,CGRAY,CGRAY,CGRAY);
return false;
>

В конец мода добавим stock который будет удалять анимацию.
stock ClearAnim(playerid)
<
ApplyAnimation(playerid, "CARRY", "crry_prtial",4.0,0,0,0,0,0,1);
return true;
>

new razdel,kirplog;
new kirp1,kirp2,kirp3;
new Stroitel[MAX_PLAYERS];
new Kirp[MAX_PLAYERS];
new kirpzp[MAX_PLAYERS];
new penoblokzp[MAX_PLAYERS];

В OnGameModeInit

kirplog = CreatePickup(3798,23,-2041.1079,308.4821,35.1926);
razdel = CreatePickup(1275,23,-2098.7800,257.9827,36.1286);
kirp1 = CreatePickup(19197,23,-2126.9829,276.1057,35.4507);
kirp2 = CreatePickup(19197,23,-2131.0110,229.9198,35.6773);
kirp3 = CreatePickup(19197,23,-2104.3020,121.2063,35.3045);
//---- 3д тексты----//
CreateDynamic3DTextLabel( "Кирпичи", 0xFFFFFFFF, -2126.9829,276.1057,35.4507,10,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1, -1, -1);
CreateDynamic3DTextLabel( "Кирпичи", 0xFFFFFFFF, -2131.0110,229.9198,35.6773,10,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1, -1, -1);
CreateDynamic3DTextLabel( "Пеноблоки", 0xFFFFFFFF, -2104.3020,121.2063,35.3045,10,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1, -1, -1);

В Public OnPlayerPickUpPickup

if(pickupid == razdel)
<
if(Stroitel[playerid] == 0 && PlayerInfo[playerid][pMember] == 0)
<
ShowPlayerDialog(playerid,1118,DIALOG_STYLE_MSGBOX,"Раздевалка строителей","Хотите начать работу строителя?","Да","Нет");
return 1;
>
else
<
ShowPlayerDialog(playerid,1119,DIALOG_STYLE_MSGBOX,"Раздевалка строителей","Хотите завершить работу строителя?","Да","Нет");
return true;
>
>
if(pickupid == kirp1)
<
if(Stroitel[playerid] == 1)
<
if(Kirp[playerid] == 0)
<
Kirp[playerid] = 1;
ApplyAnimation(playerid, "CARRY", "liftup", 4.0, 0, 0, 0, 1, 1);
SetTimerEx("ClearAnimText2", 1000, false, "d", playerid);
SetPlayerAttachedObject(playerid, 4, 2936, 1, 0.184699, 0.426247, 0.000000, 259.531341, 80.949592, 0.000000, 0.476124, 0.468181, 0.470769);
return 1;
>
else
<
SendClientMessage(playerid,COLOR_GREY,"У вас уже есть кирпич");
>
>
else
<
SendClientMessage(playerid,COLOR_GREY,"Вы не можете взять кирпич, для начала работы переоденьтесь в одежду строителя.");
>
>
if(pickupid == kirp2)
<
if(Stroitel[playerid] == 1)
<
if(Kirp[playerid] == 0)
<
Kirp[playerid] = 1;
ApplyAnimation(playerid, "CARRY", "liftup", 4.0, 0, 0, 0, 1, 1);
SetTimerEx("ClearAnimText2", 1000, false, "d", playerid);
SetPlayerAttachedObject(playerid, 4, 2936, 1, 0.184699, 0.426247, 0.000000, 259.531341, 80.949592, 0.000000, 0.476124, 0.468181, 0.470769);
return 1;
>
else
<
SendClientMessage(playerid,COLOR_GREY,"У вас уже есть кирпич");
>
>
else
<
SendClientMessage(playerid,COLOR_GREY,"Вы не можете взять кирпич, для начала работы переоденьтесь в одежду строителя.");
>
>
if(pickupid == kirp3)
<
if(Stroitel[playerid] == 1)
<
if(Kirp[playerid] == 0)
<
Kirp[playerid] = 2;
ApplyAnimation(playerid, "CARRY", "liftup", 4.0, 0, 0, 0, 1, 1);
SetTimerEx("ClearAnimText2", 1000, false, "d", playerid);
SetPlayerAttachedObject(playerid, 4, 2936, 1, 0.184699, 0.426247, 0.000000, 259.531341, 80.949592, 0.000000, 0.476124, 0.468181, 0.470769);
return 1;
>
else
<
SendClientMessage(playerid,COLOR_GREY,"У вас уже есть пеноблок");
>
>
else
<
SendClientMessage(playerid,COLOR_GREY,"Вы не можете взять пеноблок, для начала работы переоденьтесь в одежду строителя.");
>
>
if(pickupid == kirplog)
<
if(Kirp[playerid] == 0)
<
SendClientMessage(playerid,COLOR_GREY,"У вас нет кирпича!");
return 1;
>
else
<
if(Kirp[playerid] == 1)
<
Kirp[playerid] = 0;
RemovePlayerAttachedObject(playerid, 4);
ApplyAnimation(playerid,"CARRY","putdwn",4.1,0,1,1,1,1);
SendClientMessage(playerid,COLOR_WHITE,"Вы принесли обычный кирпич");
SetTimerEx("ClearAnimText", 1400, false, "d", playerid);
kirpzp[playerid]++;

>
if(Kirp[playerid] == 2)
<
Kirp[playerid] = 0;
RemovePlayerAttachedObject(playerid, 4);
ApplyAnimation(playerid,"CARRY","putdwn",4.1,0,1,1,1,1);
SendClientMessage(playerid,COLOR_WHITE,"Вы принесли пеноблок");
SetTimerEx("ClearAnimText", 1400, false, "d", playerid);
penoblokzp[playerid]++;
>
>
>

В OnPlayerConnect

В Public OnDialogResponse

case 1118:
<
if(response)
<
SetPlayerSkin(playerid,27);
Stroitel[playerid] = 1;
SendClientMessage(playerid,COLOR_WHITE,"Вы начали рабочий день строителя. Отправляйтесь за кирпичами");
return 1;
>
else
<
>
>
case 1119:
<
if(response)
<
new strings[256];
new stri[256];
new string[256];
new money = kirpzp[playerid]*60+penoblokzp[playerid]*80;
Kirp[playerid] = 0;
Stroitel[playerid] = 0;
RemovePlayerAttachedObject(playerid, 4);
ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 1);
if(PlayerInfo[playerid][pMember] >= 1 || PlayerInfo[playerid][pLeader] >= 1)
<
SetPlayerSkin(playerid,PlayerInfo[playerid][pChar]);
>
if(PlayerInfo[playerid][pMember] == 0 || PlayerInfo[playerid][pLeader] == 0)
<
SetPlayerSkin(playerid,PlayerInfo[playerid][pSkin]);
>
format(string, sizeof(string), "Вы закончили работу. Ваш заработок: $%d", money);
SendClientMessage(playerid, COLOR_WHITE, string);
format(stri, sizeof(stri), "Вы принесли %dобычных кирпичей и %dпеноблоков",kirpzp[playerid],penoblokzp[playerid]);
SendClientMessage(playerid, COLOR_WHITE, stri);
kirpzp[playerid] = 0;
penoblokzp[playerid] = 0;
GivePlayerMoney(playerid, money);
format(strings, sizeof(strings), "~g~+%d$", money);
GameTextForPlayer(playerid,strings,3000,1);
return 1;
>
else
<
>
>

В OnPlayerKeyStateChange

И в конец мода:

forward ClearAnimText2(playerid);
public ClearAnimText2(playerid)
<
//ClearAnimations(playerid);
ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 1, 1);
return 1;
>

forward ClearAnimText(playerid);
public ClearAnimText(playerid)
<
//ClearAnimations(playerid);
ApplyAnimation(playerid,"CARRY","crry_prtial",4.0,0,0,0,0,0);
return 1;
>

Pawn - язык программирования используемый в SA:MP для создания модов и фильтрскриптов(о них расскажу в одном из следующих уроков).
Для их написания используется программа pawno (или ее аналог) которая поставляется вместе с сервером.Свою работу в ней можно облегчить с помощью инклудов, которые добавляют дополнительные функции(о них тоже расскажу в одном из следующих уроков).

1.3 - Открываем pawno.

1.4 - Делаем первые шаги.

Вверху вы увидите панель на которой вам нужно нажать кнопку с белым листом, тем самым мы создадим новый файл.
Итак что вы видите? Куча непонятных слов и скобочек, так давайте разберемся что и зачем там нужно

Для примера возьмем вот этот код:

public OnPlayerCommandText(playerid, cmdtext[])
<
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
<
// Do something here
return 1;
>
return 0;
>

public OnPlayerCommandText(playerid, cmdtext[]) - это паблик. Они вызываются при определенном действии на сервере. Вот этот паблик вызывается если игрок введет какую нибудь команду.

< >- скобочки открытия и закрытия. Покажу еще пример:

Ваш код должен выглядеть так:

Теперь давайте сохраним этот файл с помощью кнопки в виде дискеты(лучше всего в папке сервера gamemodes, там все моды подключаемые к серверу и должны находиться) с именем test(можете назвать по другому только не ставьте пробелы в названии).Затем нажмем на кнопку в виде окна с шестеренкой которая напротив синей стрелочки, тем самым вы скомпилируете мод.
И если у вас вылезло окно с таким текстом "Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase" то значит все в порядке
Если вылезда какая нибудь ошибка или предупреждени то в ней будет написано в какой именно строке это произошло.

0

0

HostName: [State45-RP] Bonus, Liderki Helperki/Adminki za pi
Address: 46.38.57.172:7789
Mode: State45
Map: San Andreas

0

Я Предлагаю посетить наш сервер : . Reallife[RP]. [RUS] (0.3d)
Много всего интересного ip можно узнать в скайпе :pavlik8824
Ждём Всех)

0

Здравствуйте, хочу вам предложить новый RP сервер! Сервер недавно открылся, добрая администрация, заходите не пожалеете: 188.120.237.11:7701 Мы Вас Ждем!! И Приглашайте друзей будет Весело!) (Спасибо За Внимание)

Читайте также: