Работа "Пасека" v.2

Уроки по скриптингу

Moderator: SJplayer

Avatar
Topic author
SJplayer M
Модератор
Модератор
Posts: 191
With us: 7 years 5 months

Работа "Пасека" v.2

Post #1by SJplayer » 24 Dec 2013, 21:39

phpBB [media]


Скрины
Image

Image

Image

Что изменил:
*Теперь 6 ульев
*Маппинг более красивый
*Поставил рандом на сбор(не по колличеству, а "Вы собрали 1 литр мёда" и "Неудачно: Вас укусила пчела"
*Если удачно собран мёд - то собранный мёд в плюс, а если неудачно - то не меняется
*Так же если удачно собран мёд - то мёд в улье в минус, а если неудачно - то не меняется
*И по мелочи (Например: убрал несколько лишних строк и т.д.)

В начало мода:

Code: Select all

#define COLOR_LEV             0xFF0000AA//Цвет 
new PasekaVhodPickup;//Вход 
new PasekaVihodPickup;//Выход 
new Pas[6] = {5, ...}, Text3Dlabel[6], bool:UseMed[MAX_PLAYERS], string[128]; 
new 
PasekaVhodPickup
new 
PasekaVihodPickup
new 
Pas[6] = {5, ...}, Text3Dlabel[6], bool:UseMed[MAX_PLAYERS], string[128]; 
new 
Float:MedPos[6][6] = {{-919.29260, -540.5717225.77649},{-933.18579, -539.1677225.77649},{-946.25000, -538.8380125.77649},{-945.16180, -524.0996125.77649},{-931.83514, -524.8029225.77649}, 


В public OnFilterScriptInit() или в public OnGameModeInit()

Code: Select all

    PasekaVhodPickup CreatePickup(1913323, -907.5894,-489.7473,25.9541, -1);//Вход 
    
PasekaVihodPickup CreatePickup(1913323, -908.1568,-492.4808,25.9609, -1);//Выход 
    
Create3DTextLabel("Склад\nИспользуйте {FF0000}/сложить",COLOR_LEV,-935.9482,-491.3717,25.9609,10.0,0,1);//3dtext 
    
SetTimer("MedsUpdate" 10 1000true);//Таймер 

    
CreateObject(10828, -920.65002, -488.8200136.38000,   0.000000.00000, -10.20000); 
    
CreateObject(10828, -905.70001, -508.5000036.38000,   0.000000.00000, -94.20000); 
    
CreateObject(10828, -937.78998, -485.7800036.38000,   0.000000.00000, -10.20000); 
    
CreateObject(10828, -955.35999, -499.1499936.38000,   0.000000.00000, -94.20000); 
    
CreateObject(10828, -957.41998, -528.0900336.38000,   0.000000.00000, -94.20000); 
    
CreateObject(10828, -907.52002, -531.5999836.38000,   0.000000.00000, -94.20000); 
    
CreateObject(10828, -942.23999, -545.6599736.38000,   0.000000.00000, -4.56000); 
    
CreateObject(10828, -924.98999, -546.8700036.38000,   0.000000.00000, -4.56000); 
    
CreateObject(1557, -908.60999, -490.2800025.08000,   0.000000.00000351.00000); 
    
CreateObject(1557, -908.91998, -491.7900125.08000,   0.000000.00000351.00000); 
    
CreateObject(19381, -914.14093, -542.1918924.99235,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -924.62140, -541.6000424.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -934.86481, -540.9771124.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -944.65656, -540.4495824.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -952.63287, -540.0380924.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -913.51013, -532.6439824.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -923.98120, -532.0567624.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -934.44952, -531.4428124.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -943.42792, -530.9169324.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -952.27533, -530.4328624.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -912.74481, -523.0925924.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -912.15973, -513.5850824.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -922.94153, -522.5139224.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -933.21606, -522.0381524.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -943.43939, -521.4639324.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -951.28937, -521.0316224.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -922.52600, -513.0184324.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -932.89642, -512.4509324.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -943.36853, -511.8479024.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -951.35223, -511.4056424.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -949.71649, -502.0125724.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -939.32220, -502.5511524.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -928.95587, -503.1864024.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -919.74524, -503.6935424.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -911.16382, -504.2017224.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -949.47125, -495.4801924.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -939.10272, -496.1336124.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -910.34357, -495.9050324.93719,   0.0000090.00000, -9.30000); 
    
CreateObject(19381, -920.48352, -494.6946424.93719,   0.0000090.00000, -9.30000); 
    
CreateObject(19381, -929.41595, -496.6770024.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -948.84058, -488.9290524.93719,   0.0000090.00000, -3.24000); 
    
CreateObject(19381, -930.48285, -492.1847524.93719,   0.0000090.00000, -9.30000); 
    
CreateObject(19381, -939.60614, -490.7366024.93719,   0.0000090.00000, -9.30000); 
    
CreateObject(1451, -919.29260, -540.5717225.77649,   0.000000.00000, -182.82004); 
    
CreateObject(1451, -933.18579, -539.1677225.77649,   0.000000.00000, -185.33998); 
    
CreateObject(17324, -941.22601, -494.2455424.73405,   0.000000.0000081.48004); 
    
CreateObject(2991, -951.66846, -496.5135826.67117,   0.000000.0000083.88001); 
    
CreateObject(2991, -951.69098, -496.5307025.47943,   0.000000.0000083.88001); 
    
CreateObject(2912, -936.54901, -489.2888225.00863,   0.000000.000000.00000); 
    
CreateObject(2912, -935.71814, -489.0543525.00863,   0.000000.000000.00000); 
    
CreateObject(2912, -936.20447, -490.0213025.00863,   0.000000.000000.00000); 
    
CreateObject(2912, -936.09143, -489.5676325.65084,   0.000000.000000.00000); 
    
CreateObject(2991, -947.54694, -492.4487925.47943,   0.000000.0000083.88001); 
    
CreateObject(1451, -946.25000, -538.8380125.77649,   0.000000.00000, -185.33998); 
    
CreateObject(1451, -945.16180, -524.0996125.77649,   0.000000.00000, -185.33998); 
    
CreateObject(1451, -931.83514, -524.8029225.77649,   0.000000.00000, -185.33998); 
    
CreateObject(1451, -918.13953, -526.1461825.77649,   0.000000.00000, -185.33998); 
     
    for(new 
0x0!= sizeof(MedPos); i++) 
    { 
    
label[i] = Create3DTextLabel("{00FF00}Мёд в улье {FF0000}5 литров\nЧтобы собрать используте {FFA500}ЛКМ"0xFFFFFFMedPos[i][0], MedPos[i][1], MedPos[i][2], 40.00);//3dtext 
    
}  


В public OnPlayerConnect(playerid)

Code: Select all

    SendClientMessage(playerid,-1"{FFA500}Пасека by Lev_Popov"); 
    
UseMed[playerid] = false
    
RemoveBuildingForPlayer(playerid1413, -969.6172, -544.625026.25000.25); 
    
RemoveBuildingForPlayer(playerid1447, -970.2031, -539.328126.32810.25); 
    
RemoveBuildingForPlayer(playerid1447, -971.1875, -529.132826.24220.25); 
    
RemoveBuildingForPlayer(playerid1413, -970.9609, -534.195326.16410.25); 
    
RemoveBuildingForPlayer(playerid1447, -966.7188, -547.562526.24220.25); 
    
RemoveBuildingForPlayer(playerid727, -964.3359, -535.390624.54690.25); 
    
RemoveBuildingForPlayer(playerid1412, -971.4297, -518.820326.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -971.1953, -523.867226.24220.25); 
    
RemoveBuildingForPlayer(playerid1447, -970.9609, -513.789126.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -969.7813, -508.656326.24220.25); 
    
RemoveBuildingForPlayer(playerid1447, -968.3750, -503.648426.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -967.3359, -498.640626.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -964.6719, -488.492226.24220.25); 
    
RemoveBuildingForPlayer(playerid1447, -966.0234, -493.585926.24220.25); 
    
RemoveBuildingForPlayer(playerid1413, -946.3672, -550.093826.16410.25); 
    
RemoveBuildingForPlayer(playerid1447, -951.3984, -549.507826.24220.25); 
    
RemoveBuildingForPlayer(playerid1413, -935.8281, -549.960926.16410.25); 
    
RemoveBuildingForPlayer(playerid1447, -941.1328, -550.359426.24220.25); 
    
RemoveBuildingForPlayer(playerid1447, -930.5469, -549.296926.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -956.5938, -548.671926.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -961.6094, -548.085926.24220.25); 
    
RemoveBuildingForPlayer(playerid3167, -953.7500, -533.671925.23440.25); 
    
RemoveBuildingForPlayer(playerid1370, -945.3594, -536.062525.50780.25); 
    
RemoveBuildingForPlayer(playerid1451, -960.5391, -533.671925.70310.25); 
    
RemoveBuildingForPlayer(playerid1462, -949.2734, -531.039124.97660.25); 
    
RemoveBuildingForPlayer(playerid1451, -960.5391, -530.562525.70310.25); 
    
RemoveBuildingForPlayer(playerid3168, -940.0078, -538.671924.91410.25); 
    
RemoveBuildingForPlayer(playerid1470, -943.0703, -535.585925.35160.25); 
    
RemoveBuildingForPlayer(playerid1471, -941.6016, -535.945325.35160.25); 
    
RemoveBuildingForPlayer(playerid1472, -940.0469, -535.945325.35160.25); 
    
RemoveBuildingForPlayer(playerid1473, -940.1328, -536.296928.20310.25); 
    
RemoveBuildingForPlayer(playerid1474, -941.5859, -535.937527.23440.25); 
    
RemoveBuildingForPlayer(playerid1475, -943.0391, -535.585927.23440.25); 
    
RemoveBuildingForPlayer(playerid1476, -938.6875, -536.664125.35160.25); 
    
RemoveBuildingForPlayer(playerid1477, -938.6875, -536.656327.23440.25); 
    
RemoveBuildingForPlayer(playerid1438, -936.4141, -537.164124.96880.25); 
    
RemoveBuildingForPlayer(playerid1457, -954.0156, -523.843826.66410.25); 
    
RemoveBuildingForPlayer(playerid3171, -927.9609, -520.421924.92970.25); 
    
RemoveBuildingForPlayer(playerid1370, -951.9922, -527.000025.50780.25); 
    
RemoveBuildingForPlayer(playerid1451, -960.5391, -527.460925.70310.25); 
    
RemoveBuildingForPlayer(playerid1451, -960.5391, -524.359425.70310.25); 
    
RemoveBuildingForPlayer(playerid1452, -946.1406, -512.945326.05470.25); 
    
RemoveBuildingForPlayer(playerid1462, -935.9922, -514.859424.97660.25); 
    
RemoveBuildingForPlayer(playerid3168, -938.9688, -516.078124.89840.25); 
    
RemoveBuildingForPlayer(playerid1370, -934.2266, -515.664125.50780.25); 
    
RemoveBuildingForPlayer(playerid1438, -940.7031, -513.007824.96880.25); 
    
RemoveBuildingForPlayer(playerid1438, -958.8516, -512.781324.96880.25); 
    
RemoveBuildingForPlayer(playerid727, -929.3125, -514.242224.82030.25); 
    
RemoveBuildingForPlayer(playerid3169, -941.3750, -493.164124.91410.25); 
    
RemoveBuildingForPlayer(playerid3170, -962.8359, -507.468824.78910.25); 
    
RemoveBuildingForPlayer(playerid1457, -953.3672, -494.515626.66410.25); 
    
RemoveBuildingForPlayer(playerid1370, -960.6406, -502.039125.50780.25); 
    
RemoveBuildingForPlayer(playerid1370, -937.7422, -491.664125.50780.25); 
    
RemoveBuildingForPlayer(playerid727, -959.3672, -496.828124.92970.25); 
    
RemoveBuildingForPlayer(playerid1412, -926.9609, -485.742226.24220.25); 
    
RemoveBuildingForPlayer(playerid1413, -937.3047, -484.218826.16410.25); 
    
RemoveBuildingForPlayer(playerid1447, -942.5547, -483.320326.24220.25); 
    
RemoveBuildingForPlayer(playerid1447, -932.0234, -484.859426.24220.25); 
    
RemoveBuildingForPlayer(playerid1447, -961.2578, -485.671926.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -956.2969, -484.468826.24220.25); 
    
RemoveBuildingForPlayer(playerid1447, -951.1641, -483.484426.24220.25); 
    
RemoveBuildingForPlayer(playerid1413, -946.9219, -483.171926.16410.25); 
    
RemoveBuildingForPlayer(playerid3171, -923.2813, -537.546924.94530.25); 
    
RemoveBuildingForPlayer(playerid1412, -920.3906, -548.648426.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -925.4297, -548.937526.24220.25); 
    
RemoveBuildingForPlayer(playerid1447, -915.1250, -548.570326.24220.25); 
    
RemoveBuildingForPlayer(playerid1413, -910.0625, -548.281326.16410.25); 
    
RemoveBuildingForPlayer(playerid1412, -906.6328, -540.343826.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -907.2109, -545.351626.24220.25); 
    
RemoveBuildingForPlayer(playerid727, -911.2578, -541.570324.92970.25); 
    
RemoveBuildingForPlayer(playerid3172, -912.6016, -532.320324.88280.25); 
    
RemoveBuildingForPlayer(playerid1370, -921.3516, -534.710925.50780.25); 
    
RemoveBuildingForPlayer(playerid1462, -925.4453, -536.585924.97660.25); 
    
RemoveBuildingForPlayer(playerid1438, -913.2188, -519.351624.96880.25); 
    
RemoveBuildingForPlayer(playerid1457, -913.6797, -522.859426.66410.25); 
    
RemoveBuildingForPlayer(playerid1370, -915.1797, -526.304725.50780.25); 
    
RemoveBuildingForPlayer(playerid1370, -926.0313, -517.992225.50780.25); 
    
RemoveBuildingForPlayer(playerid1438, -907.5859, -499.406324.96880.25); 
    
RemoveBuildingForPlayer(playerid1475, -920.9141, -498.296927.23440.25); 
    
RemoveBuildingForPlayer(playerid1470, -920.8828, -498.296925.35160.25); 
    
RemoveBuildingForPlayer(playerid1472, -923.9063, -497.921925.35160.25); 
    
RemoveBuildingForPlayer(playerid1471, -922.3516, -497.929725.35160.25); 
    
RemoveBuildingForPlayer(playerid1474, -922.3672, -497.937527.23440.25); 
    
RemoveBuildingForPlayer(playerid727, -906.5547, -503.703124.92970.25); 
    
RemoveBuildingForPlayer(playerid3168, -923.8281, -495.140624.86720.25); 
    
RemoveBuildingForPlayer(playerid1370, -918.2031, -495.742225.50780.25); 
    
RemoveBuildingForPlayer(playerid1438, -915.1406, -494.531324.96880.25); 
    
RemoveBuildingForPlayer(playerid1476, -925.2578, -497.203125.35160.25); 
    
RemoveBuildingForPlayer(playerid1477, -925.2578, -497.210927.23440.25); 
    
RemoveBuildingForPlayer(playerid1473, -923.8125, -497.570328.20310.25); 
    
RemoveBuildingForPlayer(playerid1447, -916.8828, -487.890626.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -922.0078, -486.687526.24220.25); 
    
RemoveBuildingForPlayer(playerid1413, -912.6484, -490.429726.16410.25); 
    
RemoveBuildingForPlayer(playerid1462, -926.3438, -492.437524.97660.25); 
    
RemoveBuildingForPlayer(playerid1413, -905.2266, -530.101626.16410.25); 
    
RemoveBuildingForPlayer(playerid1447, -905.8047, -535.140626.24220.25); 
    
RemoveBuildingForPlayer(playerid1447, -903.2891, -514.585926.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -904.1094, -519.789126.24220.25); 
    
RemoveBuildingForPlayer(playerid1412, -904.6875, -524.804726.24220.25); 
    
RemoveBuildingForPlayer(playerid1413, -902.7109, -509.554726.16410.25); 
    
RemoveBuildingForPlayer(playerid1413, -904.3359, -499.625026.16410.25); 
    
RemoveBuildingForPlayer(playerid1447, -902.7578, -504.257826.24220.25);  


В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

Code: Select all

    if(newkeys KEY_FIRE
    { 
        if(
UseMed[playerid]) return SendClientMessage(playerid,-1"{00FF00}У вас уже есть 1 литр мёда. Отнесите мёд на склад."); 
        for(new 
0x0!= sizeof(MedPos); i++) 
        { 
            if(
IsPlayerInRangeOfPoint(playerid,2.0,MedPos[i][0], MedPos[i][1], MedPos[i][2])) 
            { 
                
ApplyAnimation(playerid"BOMBER""BOM_Plant"4.000000);//Анимка 
                
switch(random(3))  
                { 
                case 
0UseMed[playerid] = !UseMed[playerid], Pas[i]--, SendClientMessage(playerid,-1" {FFA500}Вы собрали 1 литр мёда.");//Удачно 
                
case 1UseMed[playerid] = !UseMed[playerid], Pas[i]--, SendClientMessage(playerid,-1" {FFA500}Вы собрали 1 литр мёда.");//Удачно 
                
case 2SendClientMessage(playerid,-1" {FFA500}Неудача: Вас укусила пчела.");//Неудачно 
                

                if(
Pas[i] == 0) return SendClientMessage(playerid,-1"{FFA500}В этом улье нет{00FF00}мёда.");//Если мёд закончился 
                
format(string,sizeof(string),"{00FF00}Мёд в улье {FF0000}%d литров\nЧтобы сбрать используте {FFA500}ЛКМ",Pas[i]); 
                
Update3DTextLabelText(label[i], 0xFFFFFFFFstring);//3dtext 
                
break; 
            } 
        } 
    }  


В public OnPlayerCommandText(playerid, cmdtext[])

Code: Select all

   if (!strcmp("/сложить"cmdtexttrue)) 
    { 
        if(!
IsPlayerInRangeOfPoint(playerid,5.0,-935.9482,-491.3717,25.9609)) return SendClientMessage(playerid,0xFF444499,"Отнеси мёд на склад.");//Если игрок не на складе 
        
if(!UseMed[playerid]) return SendClientMessage(playerid,-1"{FFA500}У вас нет {00FF00}мёда");//Если у игрока нет мёда 
        
GivePlayerMoney(playerid100);//Даём деньги игроку 
        
SendClientMessage(playerid,-1"{FFA500}Ты отнёс мёд на склад и получил 100$ за литр мёда.");//Выводим сообщение 
        
UseMed[playerid] = !UseMed[playerid];//Забераем 
        
ApplyAnimation(playerid"BOMBER""BOM_Plant"4.000000);//Анимка 
        
return 1
    }  


Добавляем:

Code: Select all

forward MedsUpdate(); 
public 
MedsUpdate() 

    for(new 
0x0!= sizeof(MedPos); i++) 
    { 
        if(
Pas[i] == 5) continue; 
        
Pas[i]++; 
        
format(string,sizeof(string),"{00FF00}Мёд в улье {FF0000}%d\nЧтобы собрать используте {FFA500}ЛКМ",Pas[i]); 
        
Update3DTextLabelText(label[i], 0xFFFFFFFFstring); 
    } 
}  


И в public OnPlayerPickUpPickup(playerid, pickupid)

Code: Select all

    if(pickupid == PasekaVhodPickup
    { 
         
SetPlayerPos(playerid,-908.6468,-493.8161,25.9609);//тпшим 
      
SendClientMessage(playerid,-1"{FFA500}Ты устроился работать пасичником.");//Выводим сообщение игроку 
    

    if(
pickupid == PasekaVihodPickup
    { 
         
SetPlayerPos(playerid,-907.3027,-488.0810,25.9435);//тпшим 
      
SendClientMessage(playerid,-1"{FFA500}Ты уволился с работы пасичника.");//Выводим сообщение игроку 
    
}  


Автор видео - Mr.Benitto
Автор идеи и воплощения в виртуальную реальность - Lev_Popov

P.S. Если вас не устраивает скорость восстановления мёда в ульях то вместо

Code: Select all

SetTimer("MedsUpdate" 10 1000true); 


Вставьте

Code: Select all

SetTimer("MedsUpdate" 500 60true); 

! ! !


Return to “Уроки”

Who is online

Users browsing this forum: 1 guest