Unreal
Компетентный
Автор системы: Anril13
Автор доработки: Unreal
И так начнем:
Ко всем - forward
Ко все new
В enum Finfo вставляем:
Далее:
в public LoadBankFrac вставляем:
И в public SaveBankFrac
В enum pInfo
B public OnGameModeInit(playerid)
Вставляем:
В OnPlayerConnect
Далее: public ShowStats
Вставляем
И ниже в cаму статистику где у нас вся информация, вставляем:
Теперь идем в public OnGameModeInit()
и создаем там два таймера:
Теперь в OnPlayerRegister
в OnPlayerUpdateRL:
В OnPlayerLogin:
Теперь 2 паблика в конец мода:
Так сис-му + 3д тексты с обновлением сделали.
Теперь перейдем делать пикап + чекпоинт как на ARP чтоб когда становились на него нам давали патроны постепенно.
ко всем new
действие пикапа в OnPlayerPickUpPickup:
Ну теперь сам пикап:
Он у нас в интерьере(под землей) так же как и 3д текст.
Теперь создадим чекпоинт.
Ко всем new
В действие пикапа на вход в склад (pickupid == sklad[0] ) вставляем:
Теперь в действие пикапа на выход из склада:
Теперь действие самого чекпоинтa, не обязательно текст.
Дополнительно:
Тоже моя команда для того чтоб делать оружие из определенного кол-ва матов и своих патронов:
Cкрин:
Автор доработки: Unreal
И так начнем:
Ко всем - forward
PHP:
forward patron3dtextnow(); //форвард обновления 3д текста
forward spawnpatron(); //форвард спавна патронов
PHP:
new Text3D:patron3dtext;
PHP:
fpatron,
в public LoadBankFrac вставляем:
PHP:
ini_getInteger(iniFile,"FracBank[0][fpatron]",FracBank[0][fpatron]);
PHP:
ini_setInteger(iniFile, "FracBank[0][fpatron]",FracBank[0][fpatron]);
PHP:
pPatron,
Вставляем:
PHP:
new str[256];
new patroni1 = FracBank[0][fpatron];
format(str, sizeof(str), "Склад патронов\n-{FFFFFF} На складу армии\n{FFA500} %d патрон(ов).",patroni1);
patron3dtext = Create3DTextLabel( str, 0xFF0000FF,312.6434,-165.7492,999.6010,20.0,0,0 );
PHP:
PlayerInfo[playerid][pPatron] = 0;
Вставляем
PHP:
new patron = PlayerInfo[targetid][pPatron];
PHP:
format(str,sizeof(str),"\t{ffffff}Патроны при себе: \t\t\t{ffffff}%d \n",patron);
strcat(string,str);
Теперь идем в public OnGameModeInit()
и создаем там два таймера:
PHP:
SetTimer("patron3dtextnow",3000,true); // где 3000 - 3 секунды (обновялем 3д текст раз в 3 сек)
SetTimer("spawnpatron",100000,true); // спавн патронов на зоне 51
PHP:
ini_setInteger(File,"Patron",PlayerInfo[playerid][pPatron]);
PHP:
ini_setInteger(File,"Patron",PlayerInfo[playerid][pPatron]);
PHP:
ini_getInteger(File,"Patron",PlayerInfo[playerid][pPatron]);
PHP:
//------------обновление 3д текста патронов----
public patron3dtextnow()
{
new stringers[256];
new patroni = FracBank[0][fpatron];
format(stringers, sizeof(stringers), "Склад патронов\n-{FFFFFF} На складу армии\n{FFA500} %d патрон(ов).",patroni);
Update3DTextLabelText(patron3dtext, 0xFF0000FF, stringers);
}
//----паблик спавна патронов------
public spawnpatron()
{
if(FracBank[0][fpatron] <= 10000)
{
new ammo;
ammo = random(20);
FracBank[0][fpatron] +=ammo;
return 1;
}
return 0;
}
Теперь перейдем делать пикап + чекпоинт как на ARP чтоб когда становились на него нам давали патроны постепенно.
ко всем new
PHP:
new patrons;
PHP:
if(pickupid == patrons)
{
new string[64];
if(PlayerInfo[playerid][pPatron] >= 150) return GameTextForPlayer(playerid, "~r~full", 1000, 1);
PlayerInfo[playerid][pPatron] += 3; // Можно создать рандом new rand = random(6) и вставить сюда
FracBank[0][fpatron] -= 3;
format(string,sizeof(string),"~g~+%d",PlayerInfo[playerid][pPatron]);
GameTextForPlayer(playerid, string, 500, 3); // ...
}
PHP:
patrons = CreatePickup(1238,23,312.6635, -165.6983, 998.0000);
Теперь создадим чекпоинт.
Ко всем new
PHP:
new checkis[MAX_PLAYERS];
В действие пикапа на вход в склад (pickupid == sklad[0] ) вставляем:
PHP:
SetPlayerCheckpoint(playerid,312.6434,-165.7492,999.6010,1.0);
checkis[playerid] = 555;
PHP:
DisablePlayerCheckpoint(playerid);
checkis[playerid] = 0;
PHP:
if(checkis[playerid] == 555)
{
SendClientMessage(playerid,COLOR_BLUE,"By unreal специально для P-I");
return true;
}
Дополнительно:
Тоже моя команда для того чтоб делать оружие из определенного кол-ва матов и своих патронов:
PHP:
if(strcmp(cmd,"/makegun",true)==0)
{
if(IsPlayerConnected(playerid))
{
if(!IsAGang(playerid))
{
SendClientMessage(playerid,COLOR_GREY,"Âû íå ñîñòîèòå â áàíäå!");
return 1;
}
new x_weapon[256],weapon[MAX_PLAYERS],ammo[MAX_PLAYERS],price[MAX_PLAYERS];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD1, " {ffa200}[INFO]:{ffffff} /makegun [ID ïåðñîíàæà/Èìÿ ïåðñîíàæà] [Íîìåð îðóæèÿ]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if (IsPlayerConnected(giveplayerid))
{
if(giveplayerid != INVALID_PLAYER_ID)
{
x_weapon = strtok(cmdtext, idx);
if(!strlen(x_weapon))
{
SendClientMessage(playerid, COLOR_GREEN, "________________________________________________");
SendClientMessage(playerid, COLOR_GREY, "{ffffff} {ffa200}[INFO]:{ffffff} /makegun [ID/Имя игрока] [Номер оружия.] [Патроны]");
SendClientMessage(playerid, COLOR_GREEN, "________________________________________________");
return 1;
}
}
tmp = strtok(cmdtext, idx); //aaeaai i?iaae
ammo[playerid] = strval(tmp);
//if(strcmp(x_weapon,"knife",true) == 0) { if(PlayerInfo[playerid][pMats] > 99) { weapon[playerid] = 4; price[playerid] = 100; ammo[playerid] = 1; PlayerInfo[giveplayerid][pGun1] = 4; PlayerInfo[giveplayerid][pAmmo1] = 1; } else { SendClientMessage(playerid,COLOR_GREY," Not enough Materials for that Weapon!"); return 1; } }
if(strcmp(x_weapon,"1",true) == 0) { if(PlayerInfo[playerid][pMats] > 5) { weapon[playerid] = 23; price[playerid] = 5; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 23; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
else if(strcmp(x_weapon,"2",true) == 0) { if(PlayerInfo[playerid][pMats] > 3) { weapon[playerid] = 4; price[playerid] = 30; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 14; PlayerInfo[giveplayerid][pAmmo1] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
else if(strcmp(x_weapon,"3",true) == 0) { if(PlayerInfo[playerid][pMats] > 7) { weapon[playerid] = 24; price[playerid] = 110; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 24; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY," Недостаточно металла или патронов для этого оружия!"); return 1; } }
else if(strcmp(x_weapon,"4",true) == 0) { if(PlayerInfo[playerid][pMats] > 9) { weapon[playerid] = 29; price[playerid] = 9; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 29; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
else if(strcmp(x_weapon,"5",true) == 0) { if(PlayerInfo[playerid][pMats] > 11) { weapon[playerid] = 25; price[playerid] = 11; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 25; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!!"); return 1; } }
//else if(strcmp(x_weapon,"spas12",true) == 0) { if(PlayerInfo[playerid][pMats] > 599) { weapon[playerid] = 27; price[playerid1] = 600; ammo[playerid] = 50; PlayerInfo[giveplayerid][pGun2] = 27; PlayerInfo[giveplayerid][pAmmo2] = 50; } else { SendClientMessage(playerid,COLOR_GREY," Not enough Materials for that Weapon!"); return 1; } }
else if(strcmp(x_weapon,"6",true) == 0) { if(PlayerInfo[playerid][pMats] > 13) { weapon[playerid] = 30; price[playerid] = 13; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 30; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
else if(strcmp(x_weapon,"7",true) == 0) { if(PlayerInfo[playerid][pMats] > 14) { weapon[playerid] = 31; price[playerid] = 14; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 31; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
else if(strcmp(x_weapon,"8",true) == 0) { if(PlayerInfo[playerid][pMats] > 16) { weapon[playerid] = 33; price[playerid] = 16; PlayerInfo[playerid][pAmmo2] = ammo[playerid]; PlayerInfo[giveplayerid][pGun2] = 33; PlayerInfo[giveplayerid][pAmmo2] = ammo[playerid]; PlayerInfo[playerid][pPatron]-=ammo[playerid]; } else { SendClientMessage(playerid,COLOR_GREY,"Недостаточно металла или патронов для этого оружия!"); return 1; } }
else { SendClientMessage(playerid,COLOR_GREY,"Неверный номер оружия!"); return 1; }
if (ProetectorS(5.0, playerid, giveplayerid))
{
ConsumingMoney[playerid] = 1;
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "%s изготовил оружие из %s кг. металла ",sendername,price[playerid], giveplayer,x_weapon, ammo[playerid], price[playerid]);
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
SendClientMessage(playerid, COLOR_GRAD1, string);
format(string, sizeof(string), " Вы получили оружие с %d боеприпасами от %s.", ammo[playerid], sendername);
SendClientMessage(giveplayerid, COLOR_GRAD1, string);
PlayerPlaySound(giveplayerid, 1052, 0.0, 0.0, 0.0);
Proetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
GiveFreemanGun(giveplayerid,weapon[playerid],ammo[playerid]);
PlayerInfo[playerid][pMats] -= price[playerid];
}
}
else
{
format(string, sizeof(string), "%d не активный игрок", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
}
Cкрин:
Последнее редактирование модератором:
