Помощ за довършване на плъгин ResetScore за Zombie Plague

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Помощ за довършване на плъгин ResetScore за Zombie Plague

Мнение от User12 » 02 Фев 2018, 05:44

Добър вечер , захванах един ресет скор плъгин да го редактирам да работи на Zombie Plague 4.3 , работата е там , че не успявам да накарам командите

Код за потвърждение: Избери целия код

register_clcmd("say /rs", "reset_score")
register_clcmd("say_team /rs", "reset_score")
След като бъдат изписани в чата да купуват итема с аммо , резултата се рестартирва но не взима аммо а аз искам да го направя така :) Също забелязах че като купя друг итем от меню-то при хора и при зомбита ми показва съобщението от худа за реснат резултат , явно нещо съм написал грешно но не виждам какво , пък и може да съм изтрил . Ето го кода до където го написах , много ще се радвам ако ми окажете съдействие да довърша това което започнах .

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <zombieplague>

#define PLUGIN_VERSION "1.1"

new g_itemid
new pcvar_Display

public plugin_init()
{
	register_plugin("Reset Score", "1.1", "Make by:Silenttt, Edited by:Logitechz")
	g_itemid = zp_register_extra_item("Restart Score to 0/0", 4 , ZP_TEAM_ANY)
	register_clcmd("say /rs", "reset_score")
	register_clcmd("say_team /rs", "reset_score")
	
	pcvar_Display = register_cvar("sv_rsdisplay", "1")
}
public zp_extra_item_selected(id, itemid)
{
	if (itemid == g_itemid)
	reset_score(id)
        set_hudmessage(255, 0, 247, 0.8, 0.70, 2, 0.1, 5.0, 0.1, 0.1, -1)
        show_hudmessage(id, "Uspeshno restartira svoq rezultat")
}

public reset_score(id)
{

	cs_set_user_deaths(id, 0)
	set_user_frags(id, 0)
	cs_set_user_deaths(id, 0)
	set_user_frags(id, 0)
	
	if(get_pcvar_num(pcvar_Display) == 1)
	{
		new name[33]
		get_user_name(id, name, 32)
		client_print(0, print_chat, "[ZP] %s has just reset his score", name)
        set_hudmessage(255, 0, 247, 0.8, 0.70, 2, 0.1, 5.0, 0.1, 0.1, -1)
        show_hudmessage(id, "Uspeshno restartira svoq rezultat")
	
	return PLUGIN_HANDLED
}
}
Каналът ми в YouTube : Георги Пламенов

Изображение

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Помощ за довършване на плъгин ResetScore за Zombie Plague

Мнение от OciXCrom » 02 Фев 2018, 16:08

Код за потвърждение: Избери целия код

public zp_extra_item_selected(id, itemid)
{
	if (itemid == g_itemid)
	reset_score(id)
        set_hudmessage(255, 0, 247, 0.8, 0.70, 2, 0.1, 5.0, 0.1, 0.1, -1)
        show_hudmessage(id, "Uspeshno restartira svoq rezultat")
}
Това не е правилно. Липсват ти скоби.

Код за потвърждение: Избери целия код

public zp_extra_item_selected(id, itemid)
{
	if (itemid == g_itemid)
        {
	    reset_score(id)
            set_hudmessage(255, 0, 247, 0.8, 0.70, 2, 0.1, 5.0, 0.1, 0.1, -1)
            show_hudmessage(id, "Uspeshno restartira svoq rezultat")
        }
}
При написване на командата никъде не си добавил функция, която да взима ammo packs.

Код за потвърждение: Избери целия код

zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - 4)
Обаче, понеже ползваш функцията reset_score() в zp_extra_item_selected(), ще вземе паковете два пъти. Трябва да добавиш проверка дали функцията е извикана чрез менюто или командата, тъй като ако се извика от менюто, паковете автоматично биват взимани. Промени тялото на функцията да е така:

Код за потвърждение: Избери целия код

reset_score(id, bool:bCommand)
(без public префикс)

Сега в register_clcmd() ще направиш да извиква друга функция - reset_cmd():

Код за потвърждение: Избери целия код

public reset_cmd(id)
{
    reset_score(id, true)
    return PLUGIN_HANDLED
}
А, в zp_extra_item_selected() го променяш на reset_score(id, false). След това, в reset_score() функцията добавяш проверка преди кода, който дава паковете:

Код за потвърждение: Избери целия код

if(bCommand)
    zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - 4)
Също така, оправи си подреждането на кода:

Код за потвърждение: Избери целия код

if(get_pcvar_num(pcvar_Display) == 1)
	{
		new name[33]
		get_user_name(id, name, 32)
		client_print(0, print_chat, "[ZP] %s has just reset his score", name)
        set_hudmessage(255, 0, 247, 0.8, 0.70, 2, 0.1, 5.0, 0.1, 0.1, -1)
        show_hudmessage(id, "Uspeshno restartira svoq rezultat")
	
	return PLUGIN_HANDLED
}
Трябва да е така:

Код за потвърждение: Избери целия код

if(get_pcvar_num(pcvar_Display) == 1)
{
	new name[33]
	get_user_name(id, name, 32)
	client_print(0, print_chat, "[ZP] %s has just reset his score", name)
        set_hudmessage(255, 0, 247, 0.8, 0.70, 2, 0.1, 5.0, 0.1, 0.1, -1)
        show_hudmessage(id, "Uspeshno restartira svoq rezultat")
}
	
return PLUGIN_HANDLED

Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Помощ за довършване на плъгин ResetScore за Zombie Plague

Мнение от User12 » 03 Фев 2018, 02:50

До тук кода стана така :

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <zombieplague>

#define PLUGIN_VERSION "1.1"

new g_itemid
new pcvar_Display
new bool:bCommand

public plugin_init()
{
	register_plugin("Reset Score", "1.1", "Make by:Silenttt, Edited by:Logitechz")
	g_itemid = zp_register_extra_item("Restart Score to 0/0", 4 , ZP_TEAM_ANY)
	//You may type /resetscore or /restartscore
	register_clcmd("say /rs", "reset_cmd")
	register_clcmd("say_team /rs", "reset_cmd")
	
	//This command by default is also 0
	//Change it to 1 in server.cfg if you want
	//It to show who reset their scores when they do it
	pcvar_Display = register_cvar("sv_rsdisplay", "1")
}
public zp_extra_item_selected(id, itemid)
{
	if (itemid == g_itemid)
	{
		reset_score(id, false)
		set_hudmessage(255, 0, 247, 0.8, 0.70, 2, 0.1, 5.0, 0.1, 0.1, -1)
		show_hudmessage(id, "Uspeshno restartira svoq rezultat")
	}
}
reset_score(id, bool:bCommand)
{
	if(bCommand)
	zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - 4)
	//These both NEED to be done twice, otherwise your frags wont
	//until the next round
	cs_set_user_deaths(id, 0)
	set_user_frags(id, 0)
	cs_set_user_deaths(id, 0)
	set_user_frags(id, 0)
if(get_pcvar_num(pcvar_Display) == 1)
{
	new name[33]
	get_user_name(id, name, 32)
	client_print(0, print_chat, "[ZP] %s has just reset his score", name)
         set_hudmessage(255, 0, 247, 0.8, 0.70, 2, 0.1, 5.0, 0.1, 0.1, -1)
         show_hudmessage(id, "Uspeshno restartira svoq rezultat")
	}

	return PLUGIN_HANDLED
}
public reset_cmd(id)
{
	reset_score(id, true)
	return PLUGIN_HANDLED
}
Тествах работи плъгина но при компилиране ми дава 4 Warning съобщения .
Warning: Loose indentation on line 45 // if(get_pcvar_num(pcvar_Display) == 1)
Warning: Loose indentation on line 50 // set_hudmessage(255, 0, 247, 0.8, 0.70, 2, 0.1, 5.0, 0.1, 0.1, -1)
Warning: Loose indentation on line 54 // return PLUGIN_HANDLED
Warning: Symbol is never used: "bCommand" on line 61 // Тук вече е последния ред .
Не ми прави проблеми не забелязах да има лог с еррор в папката нито в конзолата да ми излзиа нещо , плъгина работи но предупреждава , дали да го оставя така или да го оправя ?
Каналът ми в YouTube : Георги Пламенов

Изображение

Аватар
deadlylord
Извън линия
Потребител
Потребител
Мнения: 572
Регистриран на: 04 Апр 2017, 16:35
Местоположение: Бургас, България
Получена благодарност: 2 пъти
Обратна връзка:

Помощ за довършване на плъгин ResetScore за Zombie Plague

Мнение от deadlylord » 03 Фев 2018, 04:02

Loose indentation = объркал отстоянията на редовете или на някой ред да има допълнителен space
Symbol is never used = имал си функционалност, която е използвала тази променлива, но вече не се използва ... тоест, вече можеш да я изтриеш от плъгина, тъй като не я използваш

Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Помощ за довършване на плъгин ResetScore за Zombie Plague

Мнение от User12 » 03 Фев 2018, 04:45

deadlylord написа: 03 Фев 2018, 04:02 Loose indentation = объркал отстоянията на редовете или на някой ред да има допълнителен space
Symbol is never used = имал си функционалност, която е използвала тази променлива, но вече не се използва ... тоест, вече можеш да я изтриеш от плъгина, тъй като не я използваш
Е мерси , видях грешките ми :) сега се компилира без Warning съобщения , забелязах само , че когато играча остане с 0 аммо и опитам да купя итема с команда взима аммо и изписва -4 , -8 и така назад си го дава . Утре ще погледна как мога да направя така , че да изписва съобщение когато нямаш аммо и да не ти дава да го купуваш .
Каналът ми в YouTube : Георги Пламенов

Изображение

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Помощ за довършване на плъгин ResetScore за Zombie Plague

Мнение от OciXCrom » 03 Фев 2018, 16:27

Добави проверка дали има достатъчно ammo:

Код за потвърждение: Избери целия код

if(zp_get_user_ammo_packs(id) < 4)
    return PLUGIN_HANDLED

Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Помощ за довършване на плъгин ResetScore за Zombie Plague

Мнение от User12 » 03 Фев 2018, 20:20

къде трябва да я добавя тази проверка , че нещо не става .
Каналът ми в YouTube : Георги Пламенов

Изображение

Аватар
Nikolow
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 196
Регистриран на: 27 Ное 2016, 13:02
Местоположение: Варна
Се отблагодари: 7 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Помощ за довършване на плъгин ResetScore за Zombie Plague

Мнение от Nikolow » 03 Фев 2018, 21:47

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <fun>
#include <zombieplague>

new g_itemid
new pcvar_Display

#define COST 4

public plugin_init()
{
	register_plugin("Reset Score", "1.1", "Make by:Silenttt, Edited by:Logitechz")
	
	g_itemid = zp_register_extra_item("Restart Score to 0/0", COST , ZP_TEAM_ANY)

	register_clcmd("say /rs", "reset_cmd")
	register_clcmd("say_team /rs", "reset_cmd")

	pcvar_Display = register_cvar("sv_rsdisplay", "1")
}
public zp_extra_item_selected(id, itemid)
{
	if (itemid == g_itemid)
	{
		reset_score(id, false)
		set_hudmessage(255, 0, 247, 0.8, 0.70, 2, 0.1, 5.0, 0.1, 0.1, -1)
		show_hudmessage(id, "Uspeshno restartira svoq rezultat")
	}
}
reset_score(id, bool:bCommand)
{
	if(bCommand)
	{
		if(zp_get_user_ammo_packs(id) < COST)
		{
			if(get_pcvar_num(pcvar_Display) == 1) 
				client_print(id, print_chat, "[ZP] You do not have enough ammo packs !")

			return PLUGIN_HANDLED;
		}
		zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - COST)
	}

	cs_set_user_deaths(id, 0)
	set_user_frags(id, 0)
	cs_set_user_deaths(id, 0)
	set_user_frags(id, 0)
	
	if(get_pcvar_num(pcvar_Display) == 1)
	{
		new name[33]
		get_user_name(id, name, 32)
		
		client_print(0, print_chat, "[ZP] %s has just reset his score", name)
		
		set_hudmessage(255, 0, 247, 0.8, 0.70, 2, 0.1, 5.0, 0.1, 0.1, -1)
		show_hudmessage(id, "Uspeshno restartira svoq rezultat")
	}

	return PLUGIN_HANDLED
}
public reset_cmd(id)
{
	reset_score(id, true)
	return PLUGIN_HANDLED
}
Прегледай промените, които са направени.
Научи се да подреждаш кода, за да го разбираш по-добре. По този начин се преглежда много по-лесно и не се бъркаш.
Tired and retired...

Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Помощ за довършване на плъгин ResetScore за Zombie Plague

Мнение от User12 » 03 Фев 2018, 23:00

Благодаря за отделеното време Nikolow , прегледах кода и го пренаписах с моя , заработи както трябва . Аз отначало когато OciXCrom ми написа да поставя тази функция в кода :

Код за потвърждение: Избери целия код

 zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - 4)
се чудех дали не може вместо да променям на 3 или повече различни места стойността за аммо-то , да се направи от една команда и видях , че ти така си го направил със
#define COST 4 което доста улеснява работата . Може да локвате темата постигнах каквото ми трябваше с ваша помощ разбира се :tnx:
Каналът ми в YouTube : Георги Пламенов

Изображение

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 10 госта