shape1
shape2
shape3
shape4
shape7
shape8

Система рыбалки


Статус
Закрыто для дальнейших ответов.

Kostyaev

Магистр
Пользователь
19.07.2014
1 123
274
0
26
Система рыбалки,с помощью которой игроки смогут ловить и автоматически продавать рыбу.Также рыбка может срываться и порвать леску.

Ко всем new добавляем:

#define FISHING_ROD_ATTACHID 0 // если данный ID уже используется, смените на свой
#define DLG_FISH_MARKET 4095 // изменить на свой значение, если ID диалога уже используется

new fishing_market_pickup;
new fishing_info_pickup;
new fishing_rod_state[MAX_PLAYERS];
new fishing_busy[MAX_PLAYERS];
new fishing_bait[MAX_PLAYERS];
new fishing_line[MAX_PLAYERS];
new fishing_timer[MAX_PLAYERS];



После добавляем в OnGameModeInit:

Create3DTextLabel("{FFA500}Информация: {00BFFF}Рыбалка",0x00FFFFDD, 2825.8967,-2648.2358,2.0501,20.0,0,1);
fishing_info_pickup = CreatePickup(1239, 2, 2825.8967,-2648.2358,2.0501, -1);
Create3DTextLabel("{FFA500}Магазин: {00BFFF}Рыбный рынок",0x00FFFFDD, 2786.4055,-2684.2224,3.2554,20.0,0,1);
fishing_market_pickup = CreatePickup(1318, 2, 2786.4055,-2684.2224,3.2554, -1);
CreateDynamicMapIcon(3782.3491,-2685.3384,3.2554, 9, -1);



Далее идём в OnPlayerCommandText и добавляем:

if(strcmp("/fishinfo", cmdtext, true) == 0)
return ShowFishingInfo(playerid);
if(strcmp("/rod", cmdtext, true) == 0)
{
if(fishing_rod_state[playerid] == 0)
return SendClientMessage(playerid, -1, "У Вас нет удочки!");
if(fishing_rod_state[playerid] == 1)
{
fishing_rod_state[playerid] = 2;
return SetPlayerAttachedObject(playerid, FISHING_ROD_ATTACHID, 18632,6,0.079376,0.037070,0.007706,181.482910,0.000000,0.000000,1.000000,1.000000,1.000000);
}
if(fishing_busy[playerid])
return SendClientMessage(playerid, -1, "Вы ловите рыбу. Чтобы завершить рыбалку, используйте /fish");
fishing_rod_state[playerid] = 1;
return RemovePlayerAttachedObject(playerid, FISHING_ROD_ATTACHID);
}
if(strcmp("/fish", cmdtext, true) == 0)
{
if(fishing_busy[playerid])
{
KillTimer(fishing_timer[playerid]);
fishing_busy[playerid] = 0;
TogglePlayerControllable(playerid, 1);
ApplyAnimation(playerid, "CARRY", "crry_prtial", 2.0, 0, 0, 0, 0, 0);
GameTextForPlayer(playerid, "~w~Fishing ~r~stopped", 3000, 3);
return SendClientMessage(playerid, -1, "Рыбалка остановлена");
}
if(!VaildFishingPlace(playerid) || IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, -1, "В этом месте запрещена рыбалка!");
if(fishing_bait[playerid] < 1)
return SendClientMessage(playerid, -1, "У Вас нет приманок в запасе!");
if(fishing_line[playerid] < 1)
return SendClientMessage(playerid, -1, "У Вас нет лесок в запасе!");
if(fishing_rod_state[playerid] != 2)
return SendClientMessage(playerid, -1, "Возмите удочку в руки! (/rod)");
TogglePlayerControllable(playerid, 0);
ApplyAnimation(playerid, "SWORD", "sword_block", 50.0, 0, 1, 0, 1, 1);
fishing_busy[playerid] = 1;
KillTimer(fishing_timer[playerid]);
fishing_timer[playerid] = SetTimerEx("FishTimer", 50000, false, "i", playerid);
SendClientMessage(playerid, -1, "Вы начали рыбачить!");
GameTextForPlayer(playerid,"~w~Fishing ~g~started", 49000, 3);
}



После ищем OnPlayerPickUpPickup(playerid, pickupid) и вставляем:

if(pickupid == fishing_market_pickup)
return ShowPlayerDialog(playerid, DLG_FISH_MARKET, DIALOG_STYLE_LIST, "Рыбный рынок", "Удочка (50$)\nПриманка (35$)\nЛеска (15$)\nПолный комплект (100$)", "Купить", "Отмена");
if(pickupid == fishing_info_pickup)
return ShowFishingInfo(playerid);



Далее в OnDialogResponse:

if(dialogid == DLG_FISH_MARKET)
{
if(response == 0)
return 1;
switch(listitem)
{
case 0:
{
if(GetPlayerMoney(playerid) < 50)
return SendClientMessage(playerid, -1, "Недостаточно денег.");
if(fishing_rod_state[playerid])
return SendClientMessage(playerid, -1, "Вы уже купили удочку!");
fishing_rod_state[playerid] = 1;
SendClientMessage(playerid, -1, "Удочка куплена!");
GameTextForPlayer(playerid, "~r~-50$", 1200, 1);
return GivePlayerMoney(playerid, -50);
}
case 1:
{
if(GetPlayerMoney(playerid) < 35)
return SendClientMessage(playerid, -1, "Недостаточно денег.");
if(fishing_bait[playerid])
return SendClientMessage(playerid, -1, "Вы уже купили приманку!");
fishing_bait[playerid] = 1;
SendClientMessage(playerid, -1, "Приманка куплена!");
GameTextForPlayer(playerid, "~r~-35$", 1200, 1);
return GivePlayerMoney(playerid, -35);
}
case 2:
{
if(GetPlayerMoney(playerid) < 15)
return SendClientMessage(playerid, -1, "Недостаточно денег.");
if(fishing_line[playerid])
return SendClientMessage(playerid, -1, "Вы уже купили леску!");
fishing_line[playerid] = 1;
SendClientMessage(playerid, -1, "Леска куплена!");
GameTextForPlayer(playerid, "~r~-15$", 1200, 1);
return GivePlayerMoney(playerid, -15);
}
default: //case 3:
{
if(GetPlayerMoney(playerid) < 100)
return SendClientMessage(playerid, -1, "Недостаточно денег.");
if(fishing_line[playerid])
return SendClientMessage(playerid, -1, "Вы уже купили леску!");
if(fishing_bait[playerid])
return SendClientMessage(playerid, -1, "Вы уже купили приманку!");
if(fishing_rod_state[playerid] != 0)
return SendClientMessage(playerid, -1, "Вы уже купили удочку, приманку и леску!");
fishing_line[playerid] = 1;
fishing_bait[playerid] = 1;
fishing_rod_state[playerid] = 1;
GameTextForPlayer(playerid, "~r~-100$", 1200, 1);
GivePlayerMoney(playerid, -100);
return SendClientMessage(playerid, -1, "{00FF00}x{FFFFFF} Удочка, приманка и леска куплены!");
}
}
}



В самом конце мода мы вставляем это:

ShowFishingInfo(playerid)
{
SendClientMessage(playerid, 0xC0C0C0FF, "=================[ {FFFFFF}Рыбалка{C0C0C0} ]================");
SendClientMessage(playerid, 0xC0C0C0FF, "/rod {FFFFFF}- взять/убрать удочку");
return SendClientMessage(playerid, 0xC0C0C0FF, "/fish {FFFFFF}- начать/остановить рыбалку");
}

VaildFishingPlace(playerid)
{
if(!IsPlayerConnected(playerid))
return 0;
if(IsPlayerInRangeOfPoint(playerid, 4,2831.4604,-2636.3359,-0.0730) || IsPlayerInRangeOfPoint(playerid, 4,2831.7871,-2631.2314,-0.1977))
return 1;
if(IsPlayerInRangeOfPoint(playerid, 4,2830.9807,-2653.2632,0.1101) || IsPlayerInRangeOfPoint(playerid, 4,2830.9807,-2653.2632,0.1101))
return 1;
if(IsPlayerInRangeOfPoint(playerid, 4,2832.6909,-2631.6292,-0.4161) || IsPlayerInRangeOfPoint(playerid, 4,2829.2515,-2632.8232,0.7699))
return 1;
if(IsPlayerInRangeOfPoint(playerid, 4,2833.6775,-2607.7927,-0.4106) || IsPlayerInRangeOfPoint(playerid, 4,2831.5396,-2628.5422,-0.1032))
return 1;
if(IsPlayerInRangeOfPoint(playerid, 4,2831.9790,-2642.9463,-0.2709) || IsPlayerInRangeOfPoint(playerid, 4,2834.5115,-2631.4868,-0.6972))
return 1;
return 0;
}

forward FishTimer(playerid);
public FishTimer(playerid)
{
if(!VaildFishingPlace(playerid))
{
fishing_busy[playerid] = 0;
SetCameraBehindPlayer(playerid);
return ApplyAnimation(playerid, "CARRY", "crry_prtial", 2.0, 0, 0, 0, 0, 0);
}
static const FishNames[][8] =
{
{"Ерша"},
{"Окуня"},
{"Карася"},
{"Щуку"},
{"Белугу"},
{"Кету"},
{"Горбушу"},
{"Семгу"},
{"Нерку"},
{"Лосося"}
};
TogglePlayerControllable(playerid, 1);
fishing_busy[playerid] = 0;
new fish = random(sizeof(FishNames)+1)-1;
if(fish == -1)
return fishing_line[playerid] = 0, SendClientMessage(playerid, -1, "Рыба сорвалась и порвала леску!");
static const fmt_str[] = "{00FF00}х {FFFFFF}Вы поймали {88AA88}%s {FFFFFF}и продали на рынке за {88AA88}%d${FFFFFF}!";
new string[sizeof(fmt_str)-2+sizeof(FishNames[])-2+11];
new money = fish*3+1;
GivePlayerMoney(playerid, money);
format(string, sizeof(string), "~g~+%d$", money);
GameTextForPlayer(playerid, string, 1200, 1);
format(string, sizeof(string), fmt_str, FishNames[fish], money);
return SendClientMessage(playerid, -1, string);
}



Вот и всё.

Автор: Dron_Turbo

Переделывал: Kostyaev

eqBq7oL5GS.jpg




a5E2qYOHms.jpg




S0qpnilJ2G.jpg




SYkMSdU32P.jpg




2F9KoDgeZ5.jpg
 
Последнее редактирование модератором:

MADDD

Освоившийся
Пользователь
02.03.2015
181
25
0
27
Какой смысл вырезать команды с мода или копировать с других источников ? 

 

MotoSport

Pawno-Crmp.Ru || Живи вечно!
Пользователь
08.03.2015
921
168
0
23
Какой смысл вырезать команды с мода или копировать с других источников ? 
Многим понадобится.

Система рыбалки,с помощью которой игроки смогут ловить и автоматически продавать рыбу.Также рыбка может срываться и порвать леску.
 Хорошая система. Держи плюс 

 
A

Amfy

Гость
Гость
Какой смысл вырезать команды с мода или копировать с других источников ?
Какой смысл твоего поста? Будь форум пустой ты бы тут сидел? Плюс, как уже ответили, кому-то может понадобиться.

 

MADDD

Освоившийся
Пользователь
02.03.2015
181
25
0
27
Какой смысл твоего поста? Будь форум пустой ты бы тут сидел? Плюс, как уже ответили, кому-то может понадобиться.
Смысл я думаю понятен "Интерес". По твоему мнению, лучше пусть форум закидают всяким гавном, нежели ничего не было бы ? Я не против того чтобы выкладывали подобное, но охота чтоб перед тем как автор подобного сообщения, как то редактировал свой код. Было бы приятно и смотреть, и действительно ценная тема была бы, эксклюзив как бы сказать, и вывод был бы что не на ВАШ форум копируют, а с ВАШЕГО...

Если так то я щас начну темы мутить с подобным оформлением, и содержанием к утру у меня будет уже около 300-400 постов... Это ни есть правильно.

 
Последнее редактирование модератором:
A

Amfy

Гость
Гость
qpuJlocoqp, 

но охота чтоб перед тем как автор подобного сообщения, как то редактировал свой код.
Что ты имеешь ввиду? Чтобы он копировал и менял переменные? Дабы на каком-то другом форуме кричали что скопировали с нашего форума? Или что?

 

MADDD

Освоившийся
Пользователь
02.03.2015
181
25
0
27
qpuJlocoqp, 

Что ты имеешь ввиду? Чтобы он копировал и менял переменные? Дабы на каком-то другом форуме кричали что скопировали с нашего форума? Или что?
Причем тут переменные, саму функцию проще было бы использовать на PVarkah и т.д тут многое можно убрать с этого кода лишнего... Прост меня напрягает как этот тип посты набивает, наверно если это разрешено я тоже этим займусь.. Про форум он бы у вас стал источников каких либо качественных систем... А не тупо быдло кода с пабла.

 
A

Amfy

Гость
Гость
Причем тут переменные, саму функцию проще было бы использовать на PVarkah и т.д тут многое можно убрать с этого кода лишнего...
Согласен, система убогая, но нельзя это удалять если кому-то не нравится. Система, как я уже сказал - убогая, но вполне рабочая.

Про форум он бы у вас стал источников каких либо качественных систем... А не тупо быдло кода с пабла.
Пользователи, которые могут написать систему или ещё что-то с нуля или просто что-то свое, можно посчитать по пальцам.

Основная сфера CRMP - нубы, грустно, но правда.

 
Последнее редактирование:

djuice

Освоившийся
Пользователь
02.05.2014
86
18
0
33
Согласен, система убогая, но нельзя это удалять если кому-то не нравится. Система, как я уже сказал - убогая, но вполне рабочая.

Пользователи, которые могут написать систему или ещё что-то с нуля или просто что-то свое, можно посчитать по пальцам.

Основная сфера CRMP - нубы, грустно, но правда.
Если чесно мне вас так жаль, Модеров и Админов. На каждом форуме находится несколько недовольных типов которые орут - Скопировано,автор не ты,Взято с другого портала ну и тд и тп.И как правильно подмечено тобой, умельцев написать что то новое можно посчитать на пальцах, я бы добавил "пальцах одной руки" Я бы казнил всех таких ярых правозащитников и критиков =)

 

Kostyaev

Магистр
Пользователь
19.07.2014
1 123
274
0
26
Причем тут переменные, саму функцию проще было бы использовать на PVarkah и т.д тут многое можно убрать с этого кода лишнего... Прост меня напрягает как этот тип посты набивает, наверно если это разрешено я тоже этим займусь.. Про форум он бы у вас стал источников каких либо качественных систем... А не тупо быдло кода с пабла.
Если тебя так напрягает,то что я выкладываю,то напиши что-то своё, уникальное и качественное и без лишнего кода....

 

djuice

Освоившийся
Пользователь
02.05.2014
86
18
0
33
Если тебя так напрягает,то что я выкладываю,то напиши что-то своё, уникальное и качественное и без лишнего кода....
Да не обращай ты на него внемания=) Глянь что он выкладывает, ему указуют на ошибки, он говорит нелепые отмазки xd

Вот например вот ,вот прям вот ЭТОТ пост =) А если ещо точнее то вот прям, вот ЭТО сообщение ^^

 
Статус
Закрыто для дальнейших ответов.