Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Создания Фракции "пожарники" - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ GF ]
Создания Фракции "пожарники"
Оценка: -----

#1
Пользователь офлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Раскрыть информацию
Вообщем, делал сам, если скажете баян, то делал, по скрипту но совсем по другому, сдесь не надо тупо стоять у огня и вводить команду, а сдесь просто тушите ;) Вообщем сообщается в чат Пожарникам если есть гдето пожар, потом ктото принимает его, ну и появляется чекпоинт, приезжаете тушите. Вообщем делал для своего сервера, вот решил поделиться. Начнем!

Ко всем forward'ам добавляем:
forward ActivateFire(); // сама функция создания пожара


Ко всем stock'ам добавляем:
stock CreateFire(Float:X1, Float:Y1, Float:Z1, Float:R1, Float:X2, Float:Y2, Float:Z2, Float:R2, Float:X3, Float:Y3, Float:Z3, Float:R3, Float:X4, Float:Y4, Float:Z4, Float:R4, Float:X5, Float:Y5, Float:Z5, Float:R5)
{
    fob[0] = CreateObject(18691, X1, Y1, Z1 - 1, 0, 0, R1, 1000.00);
    fob[1] = CreateObject(18691, X2, Y2, Z2 - 1, 0, 0, R2, 1000.00);
    fob[2] = CreateObject(18691, X3, Y3, Z3 - 1, 0, 0, R3, 1000.00);
    fob[3] = CreateObject(18691, X4, Y4, Z4 - 1, 0, 0, R4, 1000.00);
    fob[4] = CreateObject(18691, X5, Y5, Z5 - 1, 0, 0, R5, 1000.00);
    FireInProgress = true;
    FireStatus = 100;
    return 1;
}

stock KillFire()
{
    DestroyObject(fob[0]), DestroyObject(fob[1]), DestroyObject(fob[2]), DestroyObject(fob[3]), DestroyObject(fob[4]);
    FireInProgress = false;
    FireStatus = 0;
}




Ко всем define'ам:
#define CHECKPOINT_FIRE 10



Потом ко всем new добавляем:
new fob[5]; // обьекты огня
new timerfire; // таймер создания пожара
new bool:FireInProgress = false; // переменная показывающая есть ли сейчас пожар
new bool:bypahan[MAX_PLAYERS] = false; // переменная показывающая принял ли игрок пожар
new Float:cf[3]; // координаты куда будет ставиться чекпоинт
new FireStatus = 0; // статус пожара (из 100)


Переменные мы все создали теперь приступаем к основной части.

В public GameModeExitFunc() добавляем:
KillTimer(timerfire); // при отключении сервера убираем таймер


Потом в public OnGameModeInit():
timerfire = SetTimer("ActivateFire", 1200000, true); // 1200000 - это в милисекундах, через сколько начинается следующий пожар, в данном случае через 20 минут


Теперь Паблики, суем где нибудь xD, лучше где все паблики:
public ActivateFire()
{
    if(FireInProgress == true)
    {
        KillFire();
        return 1;
    }
 new fic[2] = {0,1}; // кол-во мест где случаются пожары, у меня их 2
 if(fic[random(sizeof(fic))] == 0) {cf[0] = 1328.3392; cf[1] = 374.2310; cf[2] = 22.2083; CreateFire(cf[0],cf[1],cf[2],17.0832, 1330.2943,373.6726,22.2083,342.6162, 1331.2371,373.4001,22.3450,342.6162, 1327.7349,374.5031,23.3252,357.3430, 1333.7506,373.8772,21.8448,35.8833);} // если пожар случился в 1 месте, то делаем там огонь
 else if(fic[random(sizeof(fic))] == 1) {cf[0] = 850.0212; cf[1] = -598.5781; cf[2] = 18.4219; CreateFire(cf[0],cf[1],cf[2],49.5991, 859.7880,-597.9085,18.4219,229.5991, 864.7535,-597.1085,18.3860,245.5447, 868.1580,-597.1082,18.3860,220.5228, 867.7120,-590.1864,17.9536,14.6138);}  // если пожар случился во 2 месте, то делаем там огонь 
    new string[90];
    format(string, sizeof(string), "Диспетчер: Случился пожар, вызываю на помощь (наберите /nofire чтобы принять вызов)");
SendFamilyMessage(23, TEAM_AZTECAS_COLOR, string); // ид моей фракции 23
    return 1;
}


Сама команда:
if(strcmp(cmd, "/nofire", true) == 0)
     {
    if(PlayerInfo[playerid][pMember] != 23 && PlayerInfo[playerid][pLeader] != 23) return SendClientMessage(playerid, COLOR_LIGHTRED, "Вы не пожарник!"); // 23 ид моей фракции
     if(FireInProgress == false) return SendClientMessage(playerid, COLOR_LIGHTRED, "Сейчас нету пожаров!");
     SetPlayerCheckpoint(playerid,xfire,yfire,zfire,10.0);
    gPlayerCheckpointStatus[playerid] = CHECKPOINT_FIRE; // присваиваем чекпоинт пожара
    bypahan[playerid] = true;
     format(string, sizeof(string), "Пожарник %s принял вызов, он едет на помощь.",Name(playerid));
 SendFamilyMessage(23, COLOR_LIGHTBLUE, string); // 23 ид моей фракции
     }


if(newkeys == KEY_FIRE && bypahan[playerid] == true)
{
new Float:X1, Float:Y1, Float:Z1, Float:X2, Float:Y2, Float:Z2, Float:X3, Float:Y3, Float:Z3, Float:X4, Float:Y4, Float:Z4, Float:X5, Float:Y5, Float:Z5;

    GetObjectPos(fob[0], X1, Y1, Z1);
GetObjectPos(fob[1], X2, Y2, Z2);
GetObjectPos(fob[2], X3, Y3, Z3);
GetObjectPos(fob[3], X4, Y4, Z4);
GetObjectPos(fob[4], X5, Y5, Z5);
    
if(!IsPlayerInRangeOfPoint(playerid, 20.0, X1, Y1, Z1) || !IsPlayerInRangeOfPoint(playerid, 20.0, X2, Y2, Z2) || !IsPlayerInRangeOfPoint(playerid, 20.0, X3, Y3, Z3) || !IsPlayerInRangeOfPoint(playerid, 20.0, X4, Y4, Z4) || !IsPlayerInRangeOfPoint(playerid, 20.0, X5, Y5, Z5)) return SendClientMessage(playerid, 0xFFFFFFFF, "Чтобы потушить пожар вы должны находиться рядом с ним!");
if(PlayerInfo[playerid][pMember] == 23 || PlayerInfo[playerid][pLeader] == 23) // 23 ид моей фракции
    {
        if(FireStatus <= 0)
        {
            KillFire();
            new string[40+MAX_PLAYER_NAME];
            format(string, sizeof(string), "%s потушил пожар, едет обратно на базу",Name(playerid));
            SendFamilyMessage(23, TEAM_AZTECAS_COLOR, string);
            SendClientMessage(playerid,COLOR_WHITE,"Поздравляем! Вы потушили пожар!");
            bypahan[playerid] = false;
            return 1;
        }
        if(FireStatus < 80)
        {
            DestroyObject(fob[0]);
            return 1;
        }
        if(FireStatus < 60)
        {
            DestroyObject(fob[1]);
            return 1;
        }
        if(FireStatus < 40)
        {
            DestroyObject(fob[2]);
            return 1;
        }
        if(FireStatus < 20)
        {
            DestroyObject(fob[3]);
            return 1;
        }
        if(IsPlayerInAnyVehicle(playerid) == 1)
        {
            if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 407)
            {
                FireStatus = FireStatus - 15;
            }
        }
        else if(GetPlayerWeapon(playerid) == 42)
        {
            FireStatus = FireStatus - 5;
        }
        else return 1;
    }
}


Потом ищите строку switch (gPlayerCheckpointStatus[playerid]) и найдите примерно такой код чуть ниже:
case CHECKPOINT_HOME:
            {
                PlayerPlaySound(playerid, 1058, 0.0, 0.0, 0.0);
                DisablePlayerCheckpoint(playerid);
                gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
                GameTextForPlayer(playerid, "~w~You are~n~~y~Home", 5000, 1);
            }


И вставьте после скобки это:
case CHECKPOINT_FIRE:
            {
                PlayerPlaySound(playerid, 1058, 0.0, 0.0, 0.0);
                DisablePlayerCheckpoint(playerid);
                gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
                SendClientMessage(playerid, COLOR_WHITE, "Теперь вы можете тушить пожар (( Огнетушителем или на Пожарной машине ))");
            }


На этом данный урок завершен ;)
Автор урока PaHaNjkee

p.s. Извените что название темы не соответстует) Фракцию думаю сможете создать сами, а то буду до вечера писать xD

Ну и на последок: если увидите примечание (// 23 ид фракции) то на этой строке измените 23 на ид своей фракции

Примечание: Код был оптимизирован
4

#2
Пользователь офлайн   Пашка 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
C:\Users\?????\Desktop\SAMP-BG\gamemodes\
BG.pwn(20597) : error 017: undefined symbol "xfire"
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(20600) : error 017: undefined symbol "Name"
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(20602) : error 017: undefined symbol "newkeys"
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(20618) : warning 219: local variable "string" shadows a variable at a preceding level
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(20619) : error 017: undefined symbol "Name"
Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


=( =( =( строки:
SetPlayerCheckpoint(playerid,xfire,yfire,zfire,10.0);

format(string, sizeof(string), "Пожарник %s принял вызов, он едет на помощь.",Name(playerid));

}if(newkeys == KEY_FIRE && bypahan[playerid] == true)

new string[40+MAX_PLAYER_NAME];

format(string, sizeof(string), "%s потушил пожар, едет обратно на базу",Name(playerid));
Помогите пожалуйста исправить..
0

#3
Пользователь офлайн   Санёк 

  • Няшка
  • Вставить ник
  • Раскрыть информацию
}if(newkeys == KEY_FIRE && bypahan[playerid] == true)

Убери } перед if
Вот так должно быть
if(newkeys == KEY_FIRE && bypahan[playerid] == true)]

Если не ошибасю вот так
new string[MAX_PLAYER_NAME][40];
или просто new string[MAX_PLAYER_NAME];

Сообщение отредактировал Санёк: 15 Февраль 2012 - 20:19

0

#4
Пользователь офлайн   Пашка 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
Убрал и впал в шок =(
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.
pwn(3069) : error 017: undefined symbol "PlayerMuteMessage"
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3388) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3392) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3451) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3455) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3459) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3463) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3467) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3471) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3475) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3479) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3483) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3487) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3499) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3503) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3507) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3511) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3515) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3527) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3531) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3535) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3548) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3552) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3556) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3569) : error 004: function "PlayerToPoint" is not implemented
C:\Users\Павел\Desktop\SAMP-BG\gamemodes\BG.pwn(3574) : error 004: function "PlayerToPoint" is not implemented

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


26 Errors.


Сообщение отредактировал ReLium: 16 Февраль 2012 - 09:23

0

#5
Пользователь офлайн   Пашка 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
Терь вот так вот =(
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(10875) : error 001: expected token: "{", but found "case"
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(20621) : error 017: undefined symbol "xfire"
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(20624) : error 017: undefined symbol "Name"
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(20627) : error 017: undefined symbol "newkeys"
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(20643) : warning 219: local variable "string" shadows a variable at a preceding level
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(20644) : error 017: undefined symbol "Name"

	case CHECKPOINT_HOME:

 SetPlayerCheckpoint(playerid,xfire,yfire,zfire,10.0);

format(string, sizeof(string), "Пожарник %s принял вызов, он едет на помощь.",Name(playerid));

if(newkeys == KEY_FIRE && bypahan[playerid] == true)

new string[MAX_PLAYER_NAME];

format(string, sizeof(string), "%s потушил пожар, едет обратно на базу",Name(playerid));
10 плюсов обеспечу =)
0

#6
Пользователь офлайн   Пашка 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
1 ерор исправил, но появился такой вот ещё =(
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(10873 -- 10874) : warning 215: expression has no effect

	}
		switch (gPlayerCheckpointStatus[playerid]);

0

#7
Пользователь офлайн   SwipoStyle 

  • Благодетель
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияReLium (16 Февраль 2012 - 10:09) писал:

1 ерор исправил, но появился такой вот ещё =(
C:\Users\?????\Desktop\SAMP-BG\gamemodes\BG.pwn(10873 -- 10874) : warning 215: expression has no effect

	}
		switch (gPlayerCheckpointStatus[playerid]);



Без знака ;
switch(gPlayerCheckpointStatus[playerid])

0

#8
Пользователь офлайн   Yatakoi 

  • Местный
  • Вставить ник
  • Раскрыть информацию
new string[MAX_PLAYER_NAME]

уберай!
new name[MAX_PLAYER_NAME];

Добавляй

if(newkeys == KEY_FIRE && bypahan[playerid] == true)
Куда сунул?
0

#9
Пользователь офлайн   tochaa 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
если бы ктонибудь такой на crmp добавил былобы супер)
+ не мешал бы скрипт огня от колёс на samp 0.3b :rolleyes:
0

#10
Пользователь офлайн   Zverek 

  • Пользователь
  • Вставить ник
  • Раскрыть информацию
Вот error:

C:\....\gf.pwn(18037) : error 017: undefined symbol "xfire"


вот строки :

if(strcmp(cmd, "/nofire", true) == 0)
 	{
    	if(PlayerInfo[playerid][pMember] != 23 && PlayerInfo[playerid][pLeader] != 26) return SendClientMessage(playerid,   COLOR_LIGHTRED, "Вы не пожарник!");
     	if(FireInProgress == false) return SendClientMessage(playerid, COLOR_LIGHTRED, "Сейчас нет пожаров!");
     	SetPlayerCheckpoint(playerid,xfire,yfire,zfire,10.0);
    	gPlayerCheckpointStatus[playerid] = CHECKPOINT_FIRE;
    	bypahan[playerid] = true;
     	format(string, sizeof(string), "Пожарник %s Принял вызов!.",Name(playerid));
 		SendFamilyMessage(26, COLOR_LIGHTBLUE, string);
   }


Можете подсказать ) вроде все сделал по образцу . :D :rolleyes:
Буду ждать)

Сообщение отредактировал Zverek: 01 Июнь 2012 - 11:39

0

Поделиться темой:


  • (3 Страниц) +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей